mirror of
https://git.k-space.ee/arti/vt1200.git
synced 2026-10-30 12:03:54 +02:00
32492 lines
1.8 MiB
Plaintext
32492 lines
1.8 MiB
Plaintext
~TEXAS
|
|
INSTRUMENTS
|
|
|
|
|
|
TItfS34010
|
|
|
|
|
|
|
|
|
|
1988 Graphics Products
|
|
TMS34010 User's Guide
|
|
|
|
|
|
|
|
|
|
."
|
|
TEXAS
|
|
INSTRUMENTS
|
|
IMPORTANT NOTICE
|
|
|
|
Texas Instruments (TI) reserves the right to make changes to or to discontinue
|
|
any semiconductor product or service identified in this publication without
|
|
notice. TI advises its customers to obtain the latest version of the relevant in-
|
|
formation to verify, before placing orders, that the information being relied
|
|
upon is current.
|
|
|
|
TI warrants performance of its semiconductor products to current specifica-
|
|
tions in accordance with TI's standard warranty. Testing and other quality
|
|
control techniques are utilized to the extent TI deems necessary to support this
|
|
warranty. Unless mandated by government requirements, specific testing of
|
|
all parameters of each device is not necessarily performed.
|
|
|
|
TI assumes no liability for TI applications assistance, customer product design,
|
|
software performance, or infringement of patents or services described herein.
|
|
Nor does TI warrant or represent that license, either express or implied, is
|
|
granted under any patent right, copyright, mask work right, or other intellec-
|
|
tual property right of TI covering or relating to any combination, machine, or
|
|
process in which such semiconductor products or services might be or are
|
|
used.
|
|
|
|
|
|
|
|
|
|
Copyright © 1988, Texas Instruments Incorporated
|
|
Contents
|
|
|
|
|
|
Section Page
|
|
1 Introduction 1-1
|
|
1.1 TMS34010 Overview . . . . . 1-2
|
|
1 .2 Key Features 1-3
|
|
1.3 Architectural Overview 1-4
|
|
1.3.1 TMS34010 Block Diagram 1-5
|
|
1.3.2 Other Special Processing Hardware 1-7
|
|
1.4 Typical Applications ........ . 1-8
|
|
1.5 Manual Organization . . . . . . . . . 1-9
|
|
1 .6 Related Documentation, References, and Suggested Reading 1 -11
|
|
|
|
2 Pin Functions 2-1
|
|
2.1 Pinout and Pin Descriptions 2-2
|
|
2.2 Host Interface Bus Signals 2-5
|
|
2.3 Local Memory Interface Signals 2-7
|
|
2.4 Video Timing Signals . . . . . . . 2-9
|
|
2.5 Hold and Emulator Interface Signals 2-10
|
|
2.6 Power, Ground, and Reset Signals 2-11
|
|
|
|
3 Memory Organization 3-1
|
|
3.1 Memory Addressing 3-2
|
|
3.2 Memory Map 3-4
|
|
3.3 Stacks . . . . . . . 3-6
|
|
3.3.1 System Stack 3-6
|
|
3.3.2 Auxiliary Stacks 3-9
|
|
|
|
4 Hardware-Supported Data Structures 4-1
|
|
4.1 Fields . . . . . . . . . 4-2
|
|
4.2 Pixels . . . . . . . . . 4-6
|
|
4.2.1 Pixels in Memory 4-6
|
|
4.2.2 Pixels on the Screen 4-7
|
|
4.2.3 Display Pitch 4-10
|
|
4.3 XY Addressing . . 4-11
|
|
4.3.1 XY -to- Linear Conversion 4-12
|
|
4.4 Pixel Arrays . . . . . . . . . 4-15
|
|
|
|
5 CPU Registers and Instruction Cache 5-1
|
|
5.1 General-Purpose Registers 5-2
|
|
5.1.1 Register File A ..... . 5-2
|
|
5.1.2 Register File B ..... . 5-3
|
|
5.1.3 Stack Pointer ..... . 5-4
|
|
5.1.4 Implied Graphics Operands 5-5
|
|
5.2 Status Register 5-18
|
|
5.3 Program Counter . . . . . . . 5-19
|
|
5.4 Instruction Cache . . . . . . . 5-20
|
|
5.4.1 Cache Hardware .... . 5-20
|
|
5.4.2 Cache Replacement Algorithm 5-21
|
|
5.4.3 Cache Operation ...... . 5-22
|
|
|
|
|
|
iii
|
|
5.4.4 Self-Modifying Code . . . . . . . . . . . . . . . . . . . 5-23
|
|
5.4.5 Flushing the Cache .................. . 5-23
|
|
5.4.6 Cache Disable . . . . . . . . . . . . . . . . . . . . . . . 5-24
|
|
5.4.7 Performance with Cache Enabled versus Cache Disabled 5-24
|
|
5.5 Internal Parallelism . . . . . . . . . . . . . . . . . . . . . . 5-25
|
|
|
|
6 I/O Registers 6-1
|
|
6.1 I/O Register Addressing ..... 6-2
|
|
6.2 Latency of Writes to I/O Registers 6-4
|
|
6.3 I/O Registers Summary . . . . . . 6-5
|
|
6.3.1 Host Interface Registers 6-7
|
|
6.3.2 Local Memory Interface Registers 6-8
|
|
6.3.3 Interrupt Interface Registers 6-8
|
|
6.3.4 Video Timing and Screen Refresh Registers 6-9
|
|
6.4 Alphabetical Listing of I/O Registers .. . . . 6-10
|
|
|
|
7 Graphics Operations 7-1
|
|
7.1 Graphics Operations Overview 7-2
|
|
7.2 Pixel Block Transfers . . . . . 7-4
|
|
7.2.1 Color- Expand Operation 7-5
|
|
7.2.2 Starting Corner Selection . 7-7
|
|
7.2.3 Interrupting PixBlts and Fills 7-8
|
|
7.3 Pixel Transfers ....... . 7-10
|
|
7.4 Incremental Algorithm Support 7-10
|
|
7.5 Transparency . . . . . . . . 7 -11
|
|
7.6 Plane Masking ....... . 7-12
|
|
7.7 Pixel Processing ...... . 7-15
|
|
7.8 Boolean Processing Examples .. 7-17
|
|
7.8.1 Replace Destination with Source 7-18
|
|
7.8.2 Logical OR of Source with Destination 7-18
|
|
7.8.3 Logical AND of NOT Source with Destination 7-18
|
|
7.8.4 Exclusive OR of Source with Destination 7-18
|
|
7.9 Multiple-Bit Pixel Operations ......... . 7-19
|
|
7.9.1 Examples of Boolean and Arithmetic Operations 7-19
|
|
7.9.2 Operations on Pixel Intensity . . . . . 7-22
|
|
7.10 Window Checking ........... . 7-25
|
|
7.10.1 W=1 Mode - Window Hit Detection . 7-26
|
|
7.10.2 W=2 Mode - Window Miss Detection • 7-27
|
|
7.10.3 W=3 Mode - Window Clipping 7-27
|
|
7.10.4 Specifying Window Limits 7-28
|
|
7.10.5 Window Violation Interrupt 7-29
|
|
7.10.6 Line Clipping . . . . . . . 7-29
|
|
|
|
8 Interrupts, Traps, and Reset 8-1
|
|
8.1 Interrupt Priorities and Vector Addresses 8-2
|
|
8.2 Interrupt Interface Registers 8-3
|
|
8.3 External Interrupts 8-3
|
|
8.4 Internal Interrupts .. 8-5
|
|
8.5 Interrupt Processing 8-6
|
|
8.5.1 Interrupt Latency 8-7
|
|
8.6 Traps ....... . 8-9
|
|
8.7 Illegal Opcode Interrupts 8-9
|
|
8.8 Reset . . . . . . . . . . 8-10
|
|
8.8.1 Asserting Reset 8-10
|
|
8.8.2 Suspension of DRAM-Refresh Cycles During Reset 8-11
|
|
|
|
|
|
iv
|
|
8.8.3 State of VCLK During Reset 8-11
|
|
8.8.4 Initial State Following Reset 8-11
|
|
8.8.5 Activity Following Reset 8-12
|
|
|
|
9 Screen Refresh and Video Timing 9-1
|
|
9.1 Screen Sizes ........................ . 9-2
|
|
9.2 Video Timing Signals . . . . . . . . . . . . . . . . . . . . . 9-3
|
|
9.3 Video Timing Registers . . . . . . . . . . . . . . . . . . . . 9-4
|
|
9.4 Relationship Between Horizontal and Vertical Timing Signals 9-5
|
|
9.5 Horizontal Video Timing 9-6
|
|
9.6 Vertical Video Timing . . . . . 9-8
|
|
9.6.1 Noninterlaced Video Timing 9-9
|
|
9.7 Display Interrupt 9-13
|
|
9.8 Dot Rate ......... . 9-14
|
|
9.9 External Sync Mode 9-15
|
|
9.9.1 A Two-GSP System I •• 9-15
|
|
9.9.2 External Interlaced Video 9-17
|
|
9.10 Video RAM Control . . . . . 9-18
|
|
9.10.1 Screen Refresh ..... 9-18
|
|
9.10.2 Video Memory Bulk Initialization 9-26
|
|
|
|
10 Host Interface Bus 10-1
|
|
10.1 Host Interface Bus Pins 10-2
|
|
10.2 Host Interface Registers 10-2
|
|
10.3 Host Register Reads and Writes 10-4
|
|
10.3.1 Functional Timing Examples 10-5
|
|
10.3.2 Ready Signal to Host . . . 10-8
|
|
10.3.3 Indirect Accesses of Local Memory 10-11
|
|
10.3.4 Halt Latency ........... . 10-19
|
|
10.3.5 Accommodating Host Byte-Addressing Conventions 10-20
|
|
10.4 Bandwidth 10-22
|
|
10.5 Worst-Case Delay 10-23
|
|
|
|
11 local Memory Interface 11-1
|
|
11.1 Local Memory Interface Pins 11-2
|
|
11.2 Local Memory Interface Registers 11-3
|
|
11.3 Memory Bus Request Priorities . 11-4
|
|
11.4 Local Memory Interface Timing 11-5
|
|
11.4.1 Local Memory Write Cycle Timing 11-7
|
|
11.4.2 Local Memory Read Cycle Timing 11-8
|
|
11.4.3 Local Register-to- Memory Cycle Timing 11 -9
|
|
11.4.4 Local Memory-to-Register Cycle Timing 11 -10
|
|
11.4.5 Local Memory RAS-Only DRAM Refresh Cycle Timing 11 -11
|
|
11.4.6 Local Memory CAS-before-RAS DRAM Refresh Cycle Timing 11 -12
|
|
11.4.7 Local Memory Internal Cycles 11 -13
|
|
11.4.8 I/O Register Access Cycles .. 11 -13
|
|
11.4'.9 Read-Modify-Write Operations .. 11 -15
|
|
11.4.10 Local Memory Wait States 11 -16
|
|
11.4.11 Hold Interface Timing . . . . . . . 11 -18
|
|
11.4.12 Local Bus Timing Following Reset 11 -22
|
|
11.5 Addressing Mechanisms . . . . . . . 11-23
|
|
11.5.1 Display Memory Hardware Requirements 11-24
|
|
11.5.2 Memory Organization and Bank Selecting 11-25
|
|
11.5.3 Dynamic RAM Refresh Addresses 11-25
|
|
11.5.4 An Example - Memory Organization and Decoding 11-28
|
|
|
|
|
|
v
|
|
12 TMS34010 Instruction Set 12-1
|
|
12.1 Style and Symbol Conventions .. . . . 12-2
|
|
12.2 Addressing Modes and Operand Formats 12-4
|
|
12.2.1 Immediate Values and Constants 12-4
|
|
12.2.2 Absolute Addresses . . . . . 12-5
|
|
12.2.3 Register- Direct Operands . . . . . . 12-6
|
|
12.2.4 Register-Indirect Operands . . . . . 12-7
|
|
12.2.5 Register-Indirect with Offset 12-8
|
|
12.2.6 Register-Indirect with Postincrement 12-9
|
|
12.2.7 Register-Indirect with Predecrement 12-10
|
|
12.2.8 Register-Indirect in XY Mode 12-11
|
|
12.3 Instruction Set Summary Table . . . . . 12-12
|
|
12.4 Arithmetic, Logical, and Compare Instructions 12-19
|
|
12.5 Move Instructions Summary 12-20
|
|
12.5.1 Register-to- Register Moves 12-20
|
|
12.5.2 Value-to-Register Moves 12-20
|
|
12.5.3 XY Moves . . . . . . . . 12-20
|
|
12.5.4 Multiple-Register Moves 12-21
|
|
12.5.5 Byte Moves . . . . . . . 12-21
|
|
12.5.6 Field Moves . . . . . . . 12-22
|
|
12.S Graphics Instructions Summary 12-26
|
|
12.S.1 Comparing a Point to a Window 12-26
|
|
12.S.2 Converting an XY Address to a Linear Address 12-26
|
|
12.6.3 Drawing a Pixel and Advancing to the Next Pixel Address 12-26
|
|
1 2.S.4 Draw a Line . . . . . . . . . . . . . . . . . 12-26
|
|
12.S.5 Filling a Pixel Block . . . . . . . . . . . . . 12-26
|
|
12.S.6 Moving a Single Pixel .......... . 12-27
|
|
12.6.7 Moving a Two- Dimensional Block of Pixels 12-27
|
|
12.6.8 Implied Operands . . . . . . . . . . . . . . 12-28
|
|
12.7 Program Control and Context Switching Instructions 12-29
|
|
12.7.1 Subroutine Calls and Returns ......... . 12-29
|
|
12.7.2 Interrupt Handling ............... . 12-29
|
|
12.7.3 Setting, Saving, and Restoring Status Information 12-29
|
|
12.7.4 Jump Instructions ....... . 12-30
|
|
12.8 Shift Instructions . . . . . . . . . . . 12-32
|
|
12.9 XY Instructions . . . . . . . . . . . . 12-33
|
|
12.10 Alphabetical Reference of Instructions 12-34
|
|
|
|
13 Instruction Timings 13-1
|
|
13.1 General Instructions .............. . 13-2
|
|
13.1.1 Best Case Timing - Considering Hidden States 13-2
|
|
13.1 .2 Other Effects on Instruction Timing 13-3
|
|
13.2 MOVE and MOVB Instructions . . . . . . 13-4
|
|
13.2.1 Moves Between Registers and Memory 13-5
|
|
13.2.2 Memory-to- Memory Moves 13-S
|
|
13.2.3 MOVE Timing Example 13-8
|
|
13.3 FILL Instructions 13-10
|
|
13.3.1 FILL Setup Time 13-10
|
|
13.3.2 FI LL Transfer Timing 13-11
|
|
13.3.3 FILL Timing Examples 13-14
|
|
13.3.4 Interrupt Effects on FILL Timing 13-17
|
|
13.4 PIXBLT Instructions 13-18
|
|
13.4.1 PIXBLT Setup Time .. 13-18
|
|
13.4.2 PIXBLT Transfer Timing 13-20
|
|
|
|
|
|
vi
|
|
13.4.3 PIXBLT Timing Examples . . . . . . . . . . . . 13-26
|
|
13.4.4 The Effect of Interrupts on PIXBLT Instructions 13-30
|
|
13.5 PIXBLT Expand Instructions 13-31
|
|
13.5.1 PIXBLT Setup Time . . . 13-31
|
|
13.5.2 PIXBLT Transfer Timing 13-32
|
|
13.5.3 PIXBLT Timing Examples 13-37
|
|
13.5.4 The Effect of Interrupts 13-40
|
|
|
|
A TMS34010 Data Sheet A-1
|
|
B System Design Considerations B-1
|
|
C Software Compatibility with Future GSPs C-1
|
|
o Glossary 0-1
|
|
|
|
|
|
|
|
|
|
vii
|
|
Illustrations
|
|
|
|
|
|
Figure Page
|
|
|
|
1 -1 System Block Diagram ....................................... . 1-4
|
|
1-2 Internal Architecture Block Diagram ............................. . 1-5
|
|
2-1 TMS34010 Pinout (Top View) " ............................... . 2-2
|
|
2-2 TMS34010 Major Interfaces ................................... . 2-3
|
|
3-1 Logical Memory Address Space ................................ . 3-2
|
|
3-2 Physical Memory Addressing .................................. . 3-3
|
|
3-3 TMS34010 Memory Map ..................................... . 3-4
|
|
3-4 System Stack ............................................... . 3-7
|
|
3-5 Stack Operations ............................................ . 3-8
|
|
3-6 An Auxiliary Stack that Grows Toward Lower Addresses ............. . 3-10
|
|
3-7 An Auxiliary Stack that Grows Toward Higher Addresses ............ . 3-11
|
|
4-1 Field Storage in External Memory ............................... . 4-2
|
|
4-2 Field Alignment in Memory .................................... . 4-3
|
|
4-3 Field Insertion .............................................. . 4-5
|
|
4-4 Pixel Storage in External Memory ............................... . 4-7
|
|
4-5 Mapping of Pixels to Monitor Screen ............................ . 4-7
|
|
4-6 Configurable Screen Origin .................................... . 4-8
|
|
4-7 Display Memory Dimensions ................................... . 4-9
|
|
4-8 Display Memory Coordinates .................................. . 4-9
|
|
4-9 Pixel Addressing in Terms of XY Coordinates ...................... . 4-11
|
|
4-10 Concatenation of XY Coordinates in Address ...................... . 4-12
|
|
4-11 Conversion from XY Coordinates to Memory Address ............... . 4-13
|
|
4-12 Pixel Array ................................................. . 4-15
|
|
5-1 Register File A .............................................. . 5-2
|
|
5-2 Register File B .............................................. . 5-3
|
|
5-3 Stack Pointer Register ........................................ . 5-4
|
|
5-4 Status Register ............................................. . 5-18
|
|
5-5 Program Counter ............................................ . 5-19
|
|
5-6 TMS34010 Instruction Cache .................................. . 5-20
|
|
5-7 Segment Start Address ....................................... . 5-21
|
|
5-8 Internal Data Paths .......................................... . 5-25
|
|
5-9 Parallel Operation of Cache, Execution Unit, and Memory Interface 5-26
|
|
6-1 I/O Register Memory Map .................................... . 6-2
|
|
6-2 Correlation Between SRFADR and Logical Address Bits ............. . 6-18
|
|
6-3 Correlation Between DPYADR Bits and Row/Column Addresses ...... . 6-18
|
|
7 -1 Color- Expand Operation ...................................... . 7-6
|
|
7-2 Starting Corner Selection ..................................... . 7-7
|
|
7-3 Transparency ............................................... . 7 -11
|
|
7-4 Read Cycle With Plane Masking ................................ . 7-13
|
|
7-5 Write Cycle With Transparency and Plane Masking ................. . 7-14
|
|
7-6 Graphics Operations Interaction ................................ . 7 -16
|
|
7-7 Examples of Operations on Single- Bit Pixels ...................... . 7 -17
|
|
7-8 Examples of Boolean and Arithmetic Operations ................... . 7-19
|
|
7-9 Examples of Operations on Pixel Intensity ........................ . 7-22
|
|
7-10 Specifying Window Limits .................................... . 7-28
|
|
7 -11 Outcodes for Line Endpoints ................................... . 7-30
|
|
7-12 Midpoint Subdivision Method ................................. . 7-31
|
|
8-1 Vector Address Map ......................................... . 8-2
|
|
9-1 Horizontal and Vertical Timing Relationship ....................... . 9-5
|
|
|
|
viii
|
|
9-2 Horizontal Timing ........................................... . 9-6
|
|
9-3 Horizontal Timing Logic - Equivalent Circuit ...................... . 9-7
|
|
9-4 Example of Horizontal Signal Generation ......................... . 9-7
|
|
9-5 Vertical Timing for Noninterlaced Display ......................... . 9-8
|
|
9-6 Vertical Timing Logic - Equivalent Circuit ......................... . 9-9
|
|
9-7 Electron Beam Pattern for Noninterlaced Video .................... . 9-9
|
|
9-8 Noninterlaced Video Timing Waveform Example .................... . 9-10
|
|
9-9 Electron Beam Pattern for Interlaced Video ........................ . 9-11
|
|
9-10 Interlaced Video Timing Waveform Example ....................... . 9-12
|
|
9-11 External Sync Timing - Two GSP Chips .......................... . 9-16
|
|
9-12 Screen-Refresh Address Registers ............................... . 9-19
|
|
9-13 Logical Pixel Address ........................................ . -9-21
|
|
9-14 Screen-Refresh Address Generation ............................. . 9-22
|
|
10-1 Equivalent Circuit of Host Interlace Control Signals ................. . 10-4
|
|
10-2 Host 8- Bit Write with HCS Used as Strobe ....................... . 10-5
|
|
10-3 Host 8- Bit Read with HCS Used as Strobe ....................... . 10-6
|
|
10-4 Host 16- Bit Read with FfREAi) Used as Strobe .................... . 10-6
|
|
10-5 Host 16-Bit Write with HWRITE Used as Strobe ................... . 10-7
|
|
10-6 Host 16-Bit Write with HLDS, HUDS Used as Strobes .............. . 10-7
|
|
10-7 Host 16-Bit Read with HLDS, HUDS Used as Strobes .............. . 10-8
|
|
10-8 Host Interface Timing - Write Cycle With Wait ..................... . 10-10
|
|
10-9 Host Interface Timing - Read Cycle With Wait ..................... . 10-10
|
|
10-10 Host Indirect Read from Local Memory (INCR=1) .................. . 10-13
|
|
10-11 Host Indirect Write to Local Memory (INCW=1) ................... . 10-15
|
|
10-12 Indirect Write Followed by Two Indirect Reads (INCW=1, INCR=O) 10-16
|
|
10-13 Calculation of Worst-Case Host Interface Delay .................... . 10-23
|
|
11-1 Triple Multiplexing of Addresses and Data ., ...................... . 11-5
|
|
11 -2 Rowand Column Address Phases of Memory Cycle ................ . 11-6
|
|
11 -3 Local Bus Write Cycle Timing .................................. . 11-7
|
|
11 -4 Local Bus Read Cycle Timing .................................. . 11-8
|
|
11 -5 Local Bus Register-to- Memory Cycle Timing ...................... . 11-9
|
|
11 -6 Local Bus Memory-to- Register Cycle Timing ...................... . 11 -10
|
|
11-7 Local Bus RAS-Only DRAM-Refresh Cycle Timing ................. . 11 -11
|
|
11-8 Local Bus CAS-before-RAS DRAM-Refresh Cycle Timing ........... . 11 -12
|
|
11 -9 Local Bus Internal Cycles Back to Back .......................... . 11 -13
|
|
11 -10 I/O Register Read Cycle Timing ................................ . 11-14
|
|
11 -11 I/O Register Write Cycle Timing ................................ . 11 -15
|
|
11 -12 Local Bus Read Cycle with One Wait State ....................... . 11 -16
|
|
11-13 Local Bus Write Cycle with One Wait State ....................... . 11 -17
|
|
11 -14 Local Bus Register-to- Memory Cycle with One Wait State ........... . 11 -18
|
|
11 -15 TMS34010 Releases Control of Local Bus ........................ . 11-19
|
|
11 -16 TMS34010 Resumes Control of Local Bus ........................ . 11 -21
|
|
11 -17 Local Bus Timing Following Reset .............................. . 11-22
|
|
11 -18 External Address Format ...................................... . 11-23
|
|
11-19 Row Address for DRAM-Refresh Cycle .......................... . 11-27
|
|
11 -20 Address Decode for Example System ............................ . 11-28
|
|
11 -21 Display Memory Dimensions for the Example ...................... . 11-29
|
|
12-1 An Example of Immediate Addressing ............................ . 12-4
|
|
12-2 An Example of Absolute Addressing ............................. . 12-5
|
|
12-3 An Example of Register- Direct Addressing ........................ . 12-6
|
|
12-4 An Example of Register-Indirect Addressing ....................... . 12-7
|
|
12-5 An Example of Register-Indirect with Offset Addressing ............. . 12-8
|
|
12-6 An Example of Register-Indirect with Postincrement Addressing ....... . 12-9
|
|
12-7 An Example of Register-Indirect with Predecrement Addressing ....... . 12-10
|
|
12-8 Register-to- Memory Moves ................................... . 12-23
|
|
12-9 Memory-to- Register Moves ................................... . 12-24
|
|
|
|
|
|
ix
|
|
12-10 Memory-to-Memory Moves .................................... 12-25
|
|
12-11 Implied Operand Setup for LINE Timing Example .................... 12-10
|
|
12-12 LINE Timing Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 12-10
|
|
12-13 LINE Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 12-10
|
|
13-1 Field Alignments in Memory .................................... 13-4
|
|
13-2 Source Data, Alignment G ...................................... 13-8
|
|
13-3 Destination Location, Alignment E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13-8
|
|
13-4 Pixel Block Alignment in X .................................... , 13-11
|
|
13-5 Pixel Block Alignments ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13-12
|
|
13-6 Implied Operand Setup for FILL Example ................ . . . . . . . . .. 13-14
|
|
13-7 FILL XY Timing Example ....................................... 13-15
|
|
13-8 Pixel Block Alignment in X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13-21
|
|
13-9 Pixel Block Alignments ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13-22
|
|
13-10 Source to Destination Alignments ................................ 13-23
|
|
13-11 Implied Operand Setup for PIXBLT Timing Examples ................. 13-26
|
|
13-12 PIXBLT XY,L Timing Example ................................... 13-27
|
|
13-13 Pixel Block Alignment in X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13-33
|
|
13-14 Pixel Block Row Alignments .................................... 13-34
|
|
13-15 Implied Operand Setup for PIXBLT - Expand Examples ... . . . . . . . . . . . .. 13-37
|
|
13-16 PIXBLT B,XY Timing Example ................................... 13-38
|
|
|
|
|
|
Tables
|
|
|
|
|
|
Table Page
|
|
|
|
1 -1 Typical Applications of the TMS3401 0 ........................... . 1-8
|
|
2-1 Pin Descriptions ............................................ . 2-3
|
|
2-2 Host Interface Signals ........................................ . 2-5
|
|
2-3 Local Bus Interface Signals .................................... . 2-7
|
|
2-4 Video Timing Signals ........................................ . 2-9
|
|
2-5 Hold and Emulator Interface Signals ............................. . 2-10
|
|
2-6 Power, Ground, and Reset Signals .............................. . 2-11
|
|
5-1 B-File Registers Summary ..................................... . 5-5
|
|
5-2 Definition of Bits in Status Register ............................. . 5-18
|
|
5-3 Decoding of Field-Size Bits in Status Register ..................... . 5-19
|
|
5-4 Instruction Effects on the PC .................................. . 5-19
|
|
6-1 I/O Registers Summary ....................................... . 6-5
|
|
7-1 Boolean Pixel Processing Options .............................. . 7-15
|
|
7-2 Arithmetic (or Color) Pixel Processing Options .................... . 7-15
|
|
8-1 Interrupt Priorities ........................................... . 8-2
|
|
8-2 External Interrupt Vectors ..................................... . 8-4
|
|
8-3 Interrupts Associated with Internal Events ........................ . 8-5
|
|
8-4 Six Sources of Interrupt Delay ................................. . 8-8
|
|
8-5 Sample Instruction Completion Times ............................ . 8-8
|
|
8-6 Illegal Opcodes Ranges ....................................... . 8-9
|
|
8-7 State of Pins During a Reset ................................... . 8-11
|
|
9-1 Programming GSP #2 For External Sync Mode .................... . 9-16
|
|
9-2 Screen - Refresh Latency ...................................... . 9-25
|
|
10-1 Host Interface Register Selection ............................... . 10-2
|
|
10-2 Five Sources of Halt Delay .................................... . 10-20
|
|
10-3 Sample Instruction Completion Times ............................ . 10-20
|
|
10-4 Host Interface Estimated Bandwidth ............................. . 10-22
|
|
11 -1 Priorities for Memory Cycle Requests ............................ . 11-4
|
|
|
|
|
|
x
|
|
12-1 Instruction Set Symbol and Abbreviation Definitions ............... .. 12-2
|
|
12-2 Summary of Move Instructions ................................ .. 12-20
|
|
12-3 Summary of Operand Formats for the MOVB Instruction .. . . . . . . . . . . .. 12-21
|
|
12-4 Summary of Operand Formats for the MOVE Instruction . . . . . . . . . . . . .. 12-22
|
|
12-5 Summary of Operand Formats for the PIXT Instruction . . . . . . . . . . . . . .. 12-27
|
|
12-6 Summary of Array Types for the PIXBLT Instruction . . . . . . . . . . . . . . . .. 12-27
|
|
12-7 Implied Operands Used by Graphics Instructions .................... 12-28
|
|
12-8 Condition Codes for J Rcc and JAcc Instructions .................... 12-31
|
|
12-9 Summary of XY Instructions .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 12-33
|
|
12-10 LINE Transfer Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 12-10
|
|
12-11 Per-Word Timing Values for Pixel Processing (P) . . . . . . . . . . . . . . . . . .. 12-10
|
|
13-1 MOVE and MOVB Memory-to-Register Timings . . . . . . . . . . . . . . . . . . .. 13-5
|
|
13-2 MOVE and MOVB Register-to-Memory Timings . . . . . . . . . . . . . . . . . . .. 13-6
|
|
13-3 Alignment Indices for Memory-to-Memory Moves ................... 13-6
|
|
13-4 MOVE Memory-to-Memory Timings .............................. 13-7
|
|
13-5 FILL Setup Time . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13-10
|
|
13-6 FILL Transfer Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13-11
|
|
13-7 Timing Values per Word for Graphics Operations (G) . . . . . . . . . . . . . . .. 13-13
|
|
13-8 PIXBLT Setup Time ........................................... 13-18
|
|
13-9 PIXBLT Transfer Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13-20
|
|
13-10 Timing Values per Word for Graphics Operations (G) . . . . . . . . . . . . . . .. 13-24
|
|
13-11 PIXBLT Expand Setup Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13-32
|
|
13-12 PIXBLT Expand Transfer Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13-32
|
|
13-13 Timing Values per Word for Graphics Operations (G) . . . . . . . . . . . . . . .. 13-36
|
|
B-1 Loading .................................................. .. B-2
|
|
|
|
|
|
|
|
|
|
xi
|
|
xii
|
|
Section 1
|
|
Introduction
|
|
|
|
|
|
The TMS34010 Graphics System Processor (GSP) is an advanced 32-bit
|
|
microprocessor, optimized for graphics systems. The TMS3401 0 is a member
|
|
of the TMS340 family of computer graphics products from Texas Instruments.
|
|
A single TMS3401 0 provides a cost-effective solution in applications that re-
|
|
quire efficient data manipulation. The TMS3401 0 can be configured to serve
|
|
in either a host-based or a stand-alone environment. Systems based on mul-
|
|
tiple TMS34010 devices are implemented using special features of the
|
|
TMS34010's local and host interfaces.
|
|
The TMS3401 0 is well supported by a full set of hardware and software de-
|
|
velopment tools, including a full-speed emulator, a software simulator, an
|
|
IBM-PC development board, a C compiler, predeveloped software libraries,
|
|
and assembly language tools.
|
|
Topics covered in this introductory section include:
|
|
Section Page
|
|
1.1 TMS34010 Overview ................................................................................ 1 -2
|
|
1.2 Key Features ............................................................................................... 1 -3
|
|
1.3 Architectural Overview .............................................................................. 1 -4
|
|
1.4 Typical Applications .................................................................................. 1 -8
|
|
1.5 Manual Organization ................................................................................. 1 -9
|
|
1.6 Related Documentation, References, and Suggested Reading ......... 1 -11
|
|
|
|
|
|
|
|
|
|
1 -1
|
|
Introduction - TMS3401 0 Overview
|
|
|
|
|
|
|
|
1.1 TMS34010 Overview
|
|
The TMS3401 0 combines the best features of general-purpose processors and
|
|
graphics controllers to create a powerful and flexible Graphics System Pro-
|
|
cessor. Key features of the TMS34010 are its speed, high degree of pro-
|
|
grammability, and efficient manipulation of hardware-supported data types
|
|
such as pixels and two-dimensional pixel arrays.
|
|
The TMS34010's unique memory interface reduces the time needed to per-
|
|
form tasks such as bit alignment and masking. The 32-bit architecture sup-
|
|
plies the large blocks of continuously-addressable memory that are necessary
|
|
in graphics applications. TMS34010 system designs can take advantage of
|
|
video RAM (such as the TMS4461 ) technology to facilitate applications such
|
|
as high-bandwidth frame buffers; this circumvents the bottleneck often en-
|
|
countered when using conventional D RAMs in graphics systems.
|
|
The TMS3401 0 instruction set includes a full complement of general-purpose
|
|
instructions, as well as graphics functions, from which you can construct ef-
|
|
ficient high-level functions. The instructions support arithmetic and Boolean
|
|
operations, data moves, conditional jumps, and subroutine calls and returns.
|
|
The TMS34010 architecture supports a variety of pixel sizes, frame buffer
|
|
sizes, and screen sizes. On-chip functions have been carefully selected so that
|
|
no functions tie the TMS3401 0 to a particular display resolution. This en-
|
|
hances the portability of graphics software, and allows the TMS34010 to
|
|
adapt to graphics standards such as MIT's X, CGljCGM, GKS, NAPLPS,
|
|
PHIGS, and evolving industry and display management standards.
|
|
|
|
|
|
|
|
|
|
1-2
|
|
Introduction - Key Features
|
|
|
|
|
|
|
|
1.2 Key Features
|
|
• Fully programmable 32-bit general-purpose processor
|
|
|
|
• 128-megabyte address range
|
|
|
|
• Instruction cycle times:
|
|
132 ns (TMS34010-60)
|
|
160 ns (TMS34010-50)
|
|
200 ns (TMS34010-40)
|
|
|
|
• On-chip peripheral functions include:
|
|
Programmable CRT control (horizontal sync, vertical sync, and
|
|
blanking)
|
|
Direct interfacing to conventional DRAMs and multiport video
|
|
RAMs
|
|
Automatic CRT display refresh
|
|
Direct communications with an external (host) processor
|
|
|
|
• Instruction set includes special graphics functions such as pixel
|
|
processing, XY addressing, and window clip/hit
|
|
|
|
• Programmable 1, 2, 4, 8, or 16-bit pixel size with 16 Boolean and
|
|
6 arithmetic pixel-processing options
|
|
|
|
• 30 general-purpose 32-bit registers
|
|
|
|
• 256-byte on-chip instruction cache
|
|
|
|
• Dedicated 8/16-bit host-processor interface and HOLD/HLDA interface
|
|
|
|
• 32-bit and 64-bit integer arithmetic
|
|
|
|
• High-level language support
|
|
|
|
• Full line of hardware and software development tools including:
|
|
C compiler
|
|
Macro assembler
|
|
Linker
|
|
Archiver
|
|
Software application libraries
|
|
XDS (Extended Development Support) in-circuit emulator
|
|
Software development board (SDB)
|
|
ROM utility
|
|
Simulator
|
|
Symbolic debugger
|
|
|
|
• 68-pin PLCC package
|
|
|
|
• 5-V CMOS technology
|
|
|
|
|
|
|
|
1-3
|
|
Introduction - Architectural Overview
|
|
|
|
|
|
|
|
1.3 Architectural Overview
|
|
Figure 1 -1 illustrates the TMS34010's major internal functions and its inter-
|
|
faces to external devices. The on-chip processor executes both graphics in-
|
|
structions and general-purpose instructions. The TMS3401 0 is a true 32-bit
|
|
processor, with 32-bit internal data paths, a 32-bit ALU, and a large address
|
|
space. Thirty 32-bit general-purpose registers, a 32-bit stack pointer, and a
|
|
256-byte instruction cache increase performance. Nonprocessor functions
|
|
included on the chip include CRT timing, screen refresh, and DRAM refresh.
|
|
Separate physical interfaces are provided for communicating with a host pro-
|
|
cessor, for providing the video timing signals necessary to control a CRT
|
|
monitor, and for connecting directly to dynamic RAMs (like the TMS4256 or
|
|
TMS4C1024) and video RAMs (such as the TMS4461).
|
|
|
|
|
|
|
|
|
|
Host
|
|
~
|
|
Prooeaeor
|
|
{
|
|
I
|
|
~_~_~~..c:~_~~
|
|
|
|
.:.:.: Host Bus :.:.:. Holt-Graphics
|
|
Interfaoe
|
|
pGroraphoa~r
|
|
v.vv
|
|
___LI
|
|
I.
|
|
I
|
|
I ,f c-r
|
|
Conventional
|
|
DRAMa
|
|
|
|
|
|
|
|
il~
|
|
~:::::::::::::::,:::::::::::::::::::::::::::::::,,::}:::: eraphlOl
|
|
l
|
|
:!i!!!
|
|
Memory BU8 ;:;;;:;:;:;;::;;;;;:;:::::;;;;;:;:;:;:;:::;:,:;:::;:;:;;;;;:;;;})
|
|
|
|
II ::~t~ :~ r---"----. . .
|
|
i I::::::
|
|
I .~(..I.
|
|
Frame BUffer
|
|
|
|
|
|
.~ ~ Lo.
|
|
,..
|
|
ORAM-
|
|
Refresh
|
|
Control
|
|
____________________ ~~-_-_J________~__~
|
|
5,; ~ J5~ lie = ~;~>=or
|
|
...
|
|
Figure 1-1. System Block Diagram
|
|
|
|
|
|
|
|
|
|
1-4
|
|
Introduction - Architectural Overview
|
|
|
|
|
|
|
|
1.3.1 TMS34010 Block Diagram
|
|
Figure 1 -2 illustrates the internal architecture of the TMS3401 0; the following
|
|
subsections describe the individual blocks shown in Figure 1 -2.
|
|
|
|
Ir----------------------------------,
|
|
VO Register.
|
|
External Instruction Instruction
|
|
Interrupt Interrupt Cache Decode
|
|
Requests Registers
|
|
Reset
|
|
|
|
Host Host
|
|
Interface Interface
|
|
Bus Registers
|
|
---::'I
|
|
|
|
|
|
Program
|
|
Counter
|
|
Sync and Video Timing
|
|
Blanking Registers
|
|
status Register
|
|
Mlorocontrol
|
|
ALU ROM
|
|
8arrel Shifter
|
|
Register File A
|
|
Local Memory
|
|
Control Register File 8
|
|
Registers
|
|
stack Pointer
|
|
|
|
Clock
|
|
Outputs
|
|
Internal Clock
|
|
Clroultry Clock
|
|
Inputs
|
|
|
|
Local Memory
|
|
Interface Bus
|
|
|
|
Figure 1-2. Internal Architecture Block Diagram
|
|
|
|
|
|
|
|
1.3.1.1 CPU Internal Functions
|
|
|
|
The center portion of Figure 1-2 highlights the main internal functions of the
|
|
TMS34010:
|
|
|
|
• The 32-bit program counter (PC) points to the next instruction word
|
|
to be fetched. The PC's four LSBs are always O. Section 5.3 (page
|
|
5-18) discusses the program counter.
|
|
|
|
• The 32-bit status register (ST) specifies the status of the TMS3401 0
|
|
processor. It contains the sign, carry, zero, overflow, interrupt enable,
|
|
and PixBlt execution status bits. It also specifies the lengths and field
|
|
extension modes of fields 0 and 1. Section 5.2 (page 5-17) discusses
|
|
the status register.
|
|
|
|
1-5
|
|
Introduction - Architectural Overview
|
|
|
|
|
|
|
|
• Register files A and B each contain 15 general-purpose registers,
|
|
Ao-A14 and Bo-B14, respectively. The B-file registers are also used as
|
|
implied operands for the graphics instructions. Section 5.1 (page 5-2)
|
|
discusses the register files.
|
|
The general-purpose register files are dual ported to support parallel data
|
|
movement. Two separate internal buses route data from the registers to
|
|
the ALU, and a third bus routes results back to the registers.
|
|
|
|
• The stack pointer, or SP, is available to instructions that operate on
|
|
either reg ister fi Ie.
|
|
|
|
• The 32-bit barrel shifter shifts or rotates 32-bit operands from 1 to
|
|
32 bit positions in a single machine state.
|
|
|
|
• The 32-bit ALU is connected to the other CPU components by 32-bit
|
|
data paths. This allows most register-to-register operations to be per-
|
|
formed in a single machine state. (Accessing external memory requires
|
|
a minimum of two states.) The following actions occur in parallel during
|
|
a single state:
|
|
1) Two operands are transferred from the selected general-purpose
|
|
register file to the ALU.
|
|
2) The ALU performs the specified operation on the operands.
|
|
3) The result is routed back to the general-purpose register file.
|
|
|
|
1.3.1.2 Instruction Cache
|
|
The TMS3401 0 contains a 256-byte instruction cache that can contain up to
|
|
128 instruction words (an instruction word may be an entire single-word in-
|
|
struction or 16 bits of a multiple-word instruction). Section 5.4 (page 5-19)
|
|
describes instruction cache operation.
|
|
|
|
1.3.1.3 I/O Registers
|
|
Twenty-eight 16-bit, on-chip I/O registers are dedicated to peripheral control
|
|
functions. The I/O registers are divided into four categories:
|
|
|
|
• Seven local memory interface registers are dedicated to memory
|
|
interface control and configure the memory controller.
|
|
|
|
• Fourteen video timing and screen refresh registers generate the
|
|
sync and blanking signals used to drive a CRT, and schedule screen-
|
|
refresh cycles.
|
|
|
|
• Five host interface registers are accessible to external host process-
|
|
ors as well as to the TMS3401 O. Status information can be communi-
|
|
cated directly through these registers. Large blocks of data in
|
|
TMS34010 memory can be accessed indirectly through pointer registers.
|
|
|
|
• Two interrupt control registers provide status information about
|
|
interrupt requests.
|
|
Section 6 provides individual descriptions of each I/O register.
|
|
|
|
1-6
|
|
Introduction - Architectural Overview
|
|
|
|
|
|
|
|
1.3.1.4 Microcontrol ROM
|
|
The TMS34010 transfers decoded instructions to the microcontrol ROM for
|
|
interpretation. The microcontrol ROM has 166 control outputs and 808 mic-
|
|
rostates.
|
|
|
|
1.3.1.5 Clock Timing Logic
|
|
The clock timing logic converts the clock input signals to internal timing sig-
|
|
nals and generates the clock output signals, LCLK1 and LCLK2, used by ex-
|
|
ternal devices. The machine state is a fundamental time unit of the graphics
|
|
processor in the TMS3401 0; it is the time interval during which the processor
|
|
is in a particular microinstruction state. The instruction timing for each as-
|
|
sembly language instruction is specified in multiples of machine states. The
|
|
TMS34010's machine state is a single local clock period (the time from one
|
|
LCLK1 low-to-high transition to the next) in duration.
|
|
|
|
1.3.2 Other Special Processing Hardware
|
|
The TMS3401 0 CPU also supports the following special processing functions
|
|
in hardware:
|
|
|
|
• Detecting whether a pixel lies within a specified display window
|
|
• Detecting the leftmost one in a 32-bit register
|
|
• Expanding a black-and-white pattern to a variable pixel-depth pattern
|
|
|
|
|
|
|
|
|
|
1-7
|
|
Introduction - Typical Applications
|
|
|
|
|
|
|
|
1.4 Typical Applications
|
|
The TMS34010's 32-bit processing power and its ability to handle complex
|
|
data structures make it well suited for a variety of applications. These include
|
|
display systems, imaging systems, mass storage, communications, high-speed
|
|
controllers, and peripheral processing. The TMS3401 O's efficient bit manip-
|
|
ulation facilitates demanding tasks such as high-quality, proportionally-
|
|
spaced text; this capability makes it especially useful in applications such as
|
|
desktop publishing. In graphics display systems, the TMS34010 provides
|
|
cost-effective performance for color or black-and-white bit-mapped displays.
|
|
Table 1-1 lists typical end uses of the TMS3401 O.
|
|
Table 1-1. Typical Applications of the TMS3401 0
|
|
|
|
|
|
Computers Industrial Control
|
|
- Terminals and CRTs - Robotics
|
|
- Windowing systems - Process control
|
|
- Electronic publishing - Instrumentation
|
|
- Laser printers - Motor control
|
|
- Personal computers - Navigation
|
|
- Printers and plotters
|
|
- Engineering workstations
|
|
- Copiers Telecommunications
|
|
- Document readers
|
|
- FAX - Video phones
|
|
- Imaging - PBX
|
|
- Data processing
|
|
Consumer Electronics
|
|
- Automotive displays
|
|
- Information terminals
|
|
- Cable TV
|
|
- Home control
|
|
- Video games
|
|
|
|
|
|
|
|
|
|
1-8
|
|
Introduction - Manual Organization
|
|
|
|
|
|
|
|
1.5 Manual Organization
|
|
The TMS34010 User's Guide describes TMS3401 0 operation, focusing on the
|
|
TMS34010's role in applications that involve CRT -based, bit-mapped, graph-
|
|
ics systems. The user's guide is divided into four major sections:
|
|
1) General information (Section 1 )
|
|
2) Architecture (Sections 2-8)
|
|
3) Timing (Sections 9-11 )
|
|
4) Instruction set (Sections 7, 12, and 13)
|
|
|
|
A glossary, an index, and a reference card are also provided.
|
|
|
|
Section 1 Introduction
|
|
Provides an overview of the TMS3401 0 and TMS3401 0 architecture, includ-
|
|
ing key features, a block diagram, and typical applications. Discusses manual
|
|
organization and lists suggested reading.
|
|
|
|
Section 2 Pin Functions
|
|
Illustrates the TMS3401 0 pinout and contains general pin descriptions. Also
|
|
describes specific pin functions regarding the host interface, the local bus in-
|
|
terface, video timing signals, hold and emulator interface pins, and power,
|
|
ground, and reset pins.
|
|
|
|
Section 3 Memory Organization
|
|
Discusses 32-bit addressing methods, the TMS3401 0 memory map, and the
|
|
stack.
|
|
|
|
Section 4 Hardware-Supported Data Structures
|
|
Discusses hardware-supported data structures (such as fields and pixels) and
|
|
XY addressing.
|
|
|
|
Section 5 CPU Registers and Instruction Cache
|
|
Describes general-purpose register files A and B (including a reference of the
|
|
B registers' graphics functions), the status register, the program counter, and
|
|
the instruction cache.
|
|
|
|
Section 6 I/O Registers
|
|
Provides a detailed discussion of host interface registers, memory-interface
|
|
control registers, video timing and screen refresh registers, interrupt interface
|
|
registers, and I/O register addressing. Includes an alphabetical reference of
|
|
the I/O registers.
|
|
Section 7 Graphics Operations
|
|
Discusses graphics instructions such as PixBlts, PIXTs, and related topics such
|
|
as 2-dimensional arrays of pixels, window checking, XY -to-linear conversion,
|
|
and plane masking.
|
|
|
|
Section 8 Interrupts, Traps, and Reset
|
|
Describes external and internal interrupts, interrupt processing, and reset.
|
|
|
|
1-9
|
|
Introduction - Manual Organization
|
|
|
|
|
|
Section 9 Screen Refresh and Video Timing
|
|
Describes the horizontal sync, vertical sync, and blanking signals, horizontal
|
|
and vertical timing, and video RAM control.
|
|
Section 10 Host Interface Bus
|
|
Discusses host interface pins, registers, and timing.
|
|
Section 11 Local Memory Interface Bus
|
|
Discusses local memory interface timing, addressing mechanisms, and data
|
|
manipulation at the local memory interface.
|
|
Section 12 Assembly Language Instruction Set
|
|
Discusses addressing modes, summarizes MOVE, PIXBLT, and PIXT in-
|
|
struction variations, and presents the entire TMS34010 assembly language
|
|
instruction set in alphabetical order.
|
|
Section 13 Instruction Timings
|
|
Contains an overview of timing for general instructions, and specific timing
|
|
information for move and graphics instructions.
|
|
Appendix A TMS34010 Data Sheet
|
|
Appendix B Emulation Guidelines for Prototyping
|
|
Appendix C Software Compatibility with Future GSPs
|
|
Appendix D Glossary
|
|
|
|
|
|
|
|
|
|
1-10
|
|
Introduction - Related Documentation, References, and Suggested Reading
|
|
|
|
|
|
|
|
1.6 Related Documentation, References, and Suggested Reading
|
|
The following books and articles provide further background in graphics and
|
|
system concepts associated with graphics.
|
|
Artwick, Bruce A. Applied Concepts in Microcomputer Graphics. Englewood
|
|
Cliffs, New Jersey: Prentice- Hall, 1984.
|
|
Asal, Short, Preston, Simpson, Roskell, and Guttag. "The Texas Instruments
|
|
34010 Graphics System Processor." IEEE Computer Graphics and Appli-
|
|
cations voL6 no.10, pp. 24-39.
|
|
|
|
Bresenham, J.E. "Algorithm for Computer Control of a Digital Plotter." IBM
|
|
Systems Journal 4 No.1 (1965): 25-30.
|
|
|
|
Bresenham, J.E. "A Linear Algorithm for Incremental Display of Digital Arcs."
|
|
Communications of the ACM 20 (Feb. 1977): 100-106.
|
|
|
|
Cody, William J. Jr., and William Waite. Software Manual for the Elementary
|
|
Functions. Englewood Cliffs, New Jersey: Prentice- Hall, 1980.
|
|
Foley, James, and Andries van Dam. Fundamentals of Interactive Computer
|
|
Graphics. Reading, Massachussetts: Addison-Wesley, 1982.
|
|
|
|
Gupta, Satish. "Architectures and Algorithms for Parallel Updates of Raster
|
|
Scan Displays." Tech. Report CMU-CS-82-111, Computer Science Dept.,
|
|
Carnegie Mellon University, 1981.
|
|
Ingalls, D.H. "The Smalltalk Graphics KerneL" Spec:al issue on Smalltalk,
|
|
Byte, August 1981, pp. 168-194.
|
|
|
|
Kernighan, B., and D. Ritchie The "c" Programming Language. Englewood
|
|
Cliffs, New Jersey: Prentice- Hall, 1978.
|
|
Killebrew, C.R. Jr., "The TMS3401 0 Graphics System Processor." BYTE, De-
|
|
cember 1986, pp. 193-204.
|
|
|
|
Kochan, Stephen G. Programming in C. Hasbrouck Heights, New Jersey:
|
|
Hayden Book Company, 1983.
|
|
Newman, W.M., and R.F. Sproull. Principles of Interactive Computer
|
|
Graphics. 2nd ed. New York: McGraw-Hili, 1979.
|
|
|
|
Pike, Rob. "Graphics in Overlapping Bitmap Layers." ACM Transactions On
|
|
Graphics 2 (April 1983): 135-160.
|
|
|
|
Pinkham, R., M. Novak, and K. Guttag. "Video RAM Excels at Fast Graphics."
|
|
Electronic Design, August 18, 1983, pp. 161-168.
|
|
|
|
Pitteway, M.L.V. "Algorithm for Drawing Ellipses or Hyperbolae with a Digital
|
|
Plotter." Computer Journal 1 0 (November 1967): 24-35.
|
|
|
|
Porter, T. and T. Duff. "Composing Digital Images." Computer Graphics, July
|
|
1984, pp. 253-259.
|
|
|
|
Sproull, R.F. and I.E. Sutherland. "A Clipping Divider." Fall Joint Computer
|
|
Conference Washington, DC: Thompson Books, 1968.
|
|
|
|
1-11
|
|
Introduction - Related Documentation, References, and Suggested Reading
|
|
|
|
|
|
|
|
Van Aken, Jerry R. "An Efficient Ellipse-Drawing Algorithm." IEEE Computer
|
|
Graphics & Applications 4 (Sept. 1984): 24-35.
|
|
Wientjes, Guttag, and Roskell. "First Graphics Processor Takes Complex Or-
|
|
ders to Run Bit-Mapped Displays." Electronic Design Vol. 34, No.2
|
|
(January 23, 1986): 73-80.
|
|
The following TMS34010 documents are available from Texas Instruments.
|
|
To obtain a copy of any of the TI documents listed below, please call the Texas
|
|
Instruments Customer Response Center (CRC) at 1 -800-232-3200.
|
|
|
|
• The TMS34010 Application Guide (literature number SPVA007) is a
|
|
collection of individual application reports. Each application report dis-
|
|
cusses a specific TMS34010 application; for example, using a
|
|
TMS34010 in a 512 x 512-pixel minimum-chip system, designing
|
|
TMS34010-based systems that are compatible with various graphics
|
|
standards, and interfacing the TMS3401 0 to a variety of host processors.
|
|
|
|
• The TMS34010 Assembly Language Tools User's Guide (literature
|
|
number SPVU004) tells you how to use the TMS34010 assembler,
|
|
linker, archiver, object format converter, and simulator.
|
|
|
|
• The TMS34010 C Compiler User's Guide (literature number
|
|
SPVU005) tells you how to use the TMS34010 C compiler. This C
|
|
compiler accepts standard Kernighan and Ritchie C source code and
|
|
produces TMS3401 0 assembly language source code. We suggest that
|
|
you use The C Programming Language (written by Brian W. Kernighan
|
|
and Dennis M. Ritchie, published by Prentice- Hall) as a companion to
|
|
the TMS34010 C Compiler User's Guide.
|
|
|
|
• The TMS34010 Math/Graphics Function Library User's Guide
|
|
(literature number SPVS006) describes a collection of mathematics and
|
|
graphics functions that can be called from C programs.
|
|
|
|
• The TMS34010 Software Development Board User's Guide (lit-
|
|
erature number SPVU002) describes using the TMS3401 0 software de-
|
|
velopment board (a high-performance, PC-based graphics card) for
|
|
testing and developing TMS3401 O-based graphics systems.
|
|
|
|
• The TMS34010 Software Development Board Schematics (liter-
|
|
ature number SPVU003) is a companion to the TMS34010 Software
|
|
Development Board User's Guide.
|
|
|
|
• The TMS34010 Font Library User's Guide (literature number
|
|
SPVU007) describes a set of fonts that are available for use in a
|
|
TMS3401 O-based graphics system.
|
|
|
|
|
|
|
|
|
|
1 -12
|
|
Section 2
|
|
Pin Functions
|
|
|
|
|
|
This section discusses the TMS3401 0 pin functions. Section 2.1 contains a
|
|
TMS34010 pinout, summarizes the pin functions, and categorizes the signals
|
|
by function; Section 2.2 through Section 2.6 describe the functional catego-
|
|
ries.
|
|
Topics in this section include:
|
|
Section Page
|
|
2.1 Pinout and Pin Descriptions .................................................................... 2-2
|
|
2.2 Host Interface Bus Signals ....................................................................... 2-5
|
|
2.3 Local Memory Interface Signals .............................................................. 2-7
|
|
2.4 Video Timing Signals ................................................................................ 2-9
|
|
2.5 Hold and Emulator Interface Signals .................................................... 2-10
|
|
2.6 Power, Ground, and Reset Signals ....................................................... 2-11
|
|
|
|
|
|
|
|
|
|
2-1
|
|
Pin Functions - Pinout and Pin Descriptions
|
|
|
|
|
|
|
|
2.1 Pinout and Pin Descriptions
|
|
The TMS3401 0 is packaged as a 68-pin plastic leaded chip carrier (PLCC).
|
|
Figure 2-1 shows a pinout of the TMS3401 0 processor, and Table 2-1 sum-
|
|
marizes the pin functions at each interface. Appendix A contains mechanical
|
|
information.
|
|
|
|
|
|
|
|
|
|
9 8 7 6 5 4 3 2 1 6867666564 63 6261
|
|
|
|
LAD1
|
|
|
|
|
|
|
|
|
|
LAD11
|
|
LAD12
|
|
|
|
|
|
|
|
44
|
|
27 28 29 3031 32 33 34 35 36 37 38 394041 42 43
|
|
|
|
U. . N lUlU I~ I<t: 1. .1 V) ~ IZ IV) IV) I~ IWI~
|
|
u~~zzz~<t:V)~w<t:<t: ozo>-
|
|
> d d >- >- <t: ~ ...J > 0 Cl a: U Iii I a:
|
|
...J...I~~ffi~ g ~ I
|
|
I<t:
|
|
I~
|
|
Figure 2-1. TMS34010 Pinout (Top View)
|
|
|
|
|
|
As Figure 2-2 shows, the TMS3401 O's 68 pins are divided among several in-
|
|
terfaces:
|
|
|
|
Host interface 25 pins
|
|
Local memory interface 29 pins
|
|
Video timing interface 4 pins
|
|
Hold and emulator interfaces 3 pins
|
|
Power and reset 7 pins
|
|
Total: 68 pins
|
|
|
|
|
|
|
|
|
|
2-2
|
|
Pin Functions - Pinout and Pin Descriptions
|
|
|
|
|
|
|
|
|
|
Host Interface ---
|
|
|
|
+-----tmIt
|
|
..
|
|
( x l a . a HDO-HD15
|
|
|
|
':x,' ,.; ;•..:,";?;"""; HF8O-HFS1
|
|
|
|
|
|
|
|
|
|
- - -.... RCDS
|
|
- - -.... ~y
|
|
LADO-LAD15 ~LZim~
|
|
|
|
|
|
t)ER 1-----+
|
|
DDO~I--_ _'"
|
|
~I-----+
|
|
~I------'"
|
|
|
|
'mIcI
|
|
t----+ r
|
|
Looal Memory
|
|
Interface
|
|
|
|
LRDYM----
|
|
|
|
Video TIming
|
|
{ -----MVCLK
|
|
a UN'f1-L1Nf21(1_ _
|
|
LCLK1t---.......
|
|
LCLK2t---.......
|
|
w ibidi2iXfT@ VCC INCLKM----
|
|
Power, Ground
|
|
{ ~-±l,':ii~';V88
|
|
and Reset ~M----} Hold and
|
|
RUNJ§.ID Emulator
|
|
- - -.... mET ~ Interfaoes
|
|
|
|
|
|
Figure 2-2. TMS34010 Major Interfaces
|
|
|
|
|
|
|
|
|
|
Table 2-1. Pin Descriptions
|
|
|
|
Host Interface Bus Pins
|
|
Name Pin I/O Description
|
|
'RCS 66 I Host chip select
|
|
HDo-HD15 44-51,53-60 I/O Host bidirectional data bus
|
|
HFSO,HFS1 67,68 I Host function select
|
|
'FITNT 42 0 Host interrupt request
|
|
FITI5'S" 63 I Host lower data select
|
|
~ 62 I Host upper data select
|
|
HRDY 43 0 Host ready
|
|
'Rlm\l') 64 I Host read strobe
|
|
HWm'IT 65 I Host write strobe
|
|
|
|
|
|
|
|
|
|
2-3
|
|
Pin Functions - Pinout and Pin Descriptions
|
|
|
|
|
|
Table 2-1. Pin Descriptions (Concluded)
|
|
|
|
Locsllnterfsce Bus Pins
|
|
Name Pin I/O Description
|
|
~ 38 0 Local row-address strobe
|
|
~ 39 0 Local column-address strobe
|
|
DDOUT 36 0 Local data direction out
|
|
lrEN 37 0 Local data enable
|
|
LADo-LAD15 10-17,19-26 I/O Local address/data bus
|
|
IA[ 34 0 Local address latched
|
|
LCLK1,LCLK2 28,29 0 Local output clocks
|
|
'[I'NT1 ,Lfl\JT2 6,7 I Local interrupt request pins
|
|
LRDY 9 I Local ready
|
|
TR/M 41 0 Local shift-register transfer or output enable
|
|
W 40 0 Local write strobe
|
|
INCLK 5 I Input clock
|
|
Hold snd Emulation
|
|
Name Pin I/O Description
|
|
HOll) 8 I Hold request
|
|
RUN/E'M'U 2 I Run/Emulate
|
|
H'D5A/mTI'A 33 0 Hold acknowledge or emulate acknowledge
|
|
Video Timing Signals
|
|
Name Pin I/O Description
|
|
lITANl( 32 0 Blanking
|
|
~ 30 I/O Horizontal sync
|
|
VCLK 4 I Video clock
|
|
~ 31 I/O Vertical sync
|
|
Power, Ground, snd Reset Signals
|
|
Name Pin I/O Description
|
|
~ 3 I Device reset
|
|
Vee 27,61 I Nominal 5-volt power supply
|
|
VSS 1,18,35,52 I Ground
|
|
|
|
|
|
|
|
|
|
2-4
|
|
Pin Functions - Host Interface Bus Signals
|
|
|
|
|
|
|
|
2.2 Host Interface Bus Signals
|
|
The host interface pins are used for communication between the TMS3401 0
|
|
and a host processor. Signals output on these pins are assumed to be asyn-
|
|
chronous with respect to local clocks LCLK1 and LCLK2. To software running
|
|
on a host processor, the TMS34010's host interface appears as a peripheral
|
|
device containing a block of four 16-bit registers. Table 2-2 describes the
|
|
host interface pins. Section 6 describes the host interface registers, and Sec-
|
|
tion 10 discusses host interface operation.
|
|
|
|
Table 2-2. Host Interface Signals
|
|
|
|
Signal I/O Description
|
|
HCS I Host Chip Select. HCS is driven active low to enable access to the 16-bit host
|
|
interface register that is selected by H FSO and H FS1. During the low-to-high
|
|
transition of RESET, the level on the HCS input determines whether the
|
|
TMS34010 is halted (if ReS is high), or begins immediately executing its reset
|
|
service routine (if ReS is low). In the second case, the ReS and RESE'i" pins
|
|
may be tied directly together.
|
|
HFSO, HFS1 I Host Function Select. HFSO and HFS1 determine which of the four 16-bit
|
|
host interface registers is selected during a read or write cycle that is initiated
|
|
by the host processor.
|
|
|
|
HFS1 HFSO Register Description
|
|
0 0 HSTADRL LSBs of pointer address
|
|
0 1 HSTADRH MSBs of pointer address
|
|
1 0 HSTDATA Data buffer register
|
|
1 1 HSTCTL Control register
|
|
|
|
HREAD I Host Read Strobe. HREAD is driven active low during a read cycle that is
|
|
initiated by the host processor. This enables the contents of the selected host
|
|
interface register to be output on H Do-H 015. 'R'RtAD should not be active low
|
|
at the same time that HWRITE is active low.
|
|
HWRITE I Host Write Strobe. HWRITE is driven active low during a write cycle that is
|
|
initiated by the host processor. This enables the contents of HDo-HD15 to be
|
|
written to the selected host interface register. HWRITE should not be active low
|
|
at the same time that HREAD is active low.
|
|
HLDS I Host Lower Data Select. H LDS is driven active low during a read or write
|
|
cycle that is initiated by the host. This enables the lower byte (bits 0-7) of the
|
|
selected host interface register to be accessed.
|
|
'RUiJS I Host Upper Data Select. 'RUiJS is driven active low during a read or write
|
|
cycle that is initiated by the host processor. This enables the upper byte (bits
|
|
8-15) of the selected host interface register to be accessed.
|
|
t In systems that do not use the host interface, it may be desirable to pull these inputs up to the +Vcc
|
|
level.
|
|
|
|
|
|
|
|
|
|
2-5
|
|
Pin Functions - Host Interface Bus Signals
|
|
|
|
|
|
|
|
Table 2-2. Host Interface Signals (Concluded)
|
|
|
|
Signal I/O Description
|
|
HROY 0 Host Ready. HROY indicates when the TMS3401 0 is ready to complete a read
|
|
or write cycle that is initiated by the host. Except during an access of a host
|
|
interface register, HROY is always high. H ROY is driven low if the host pro-
|
|
cessor attempts to initiate an access of a host interface register before the
|
|
TMS34010 has had sufficient time to complete all processing resulting from an
|
|
access initiated previously by the host. H RDY always goes low briefly at the
|
|
start of a HSTCTL register access. When HRDY is driven low, the host must
|
|
wait to complete the access until HRDY is again driven high. While'RCS is high,
|
|
H RDY is driven high.
|
|
HiNT 0 Host Interrupt Request. HINT follows the INTOUT bit in the HSTCTL reg-
|
|
ister; it is typically used to transmit interrupt requests from the TMS3401 0 to the
|
|
host processor. When INTOUT is set to 1 by the TMS34010, 'RTNT is driven
|
|
active low. HiNT remains active low until the host writes a 0 to INTOUT, at
|
|
which time 'RTNT becomes inactive high.
|
|
HOQ-H015 I/O Host Bidirectional Data Bus. The host data pins, HDQ-HD15, form a bidi-
|
|
rectional 16-bit bus which is used to transfer data between the selected 16-bit
|
|
host interface register and the host processor. H DO is the LS Band H 015 is the
|
|
MSB.
|
|
|
|
|
|
|
|
|
|
2-6
|
|
Pin Functions - Local Memory Interface Signals
|
|
|
|
|
|
|
|
2.3 Local Memory Interface Signals
|
|
The TMS3401 0 uses the local bus interface pins to communicate with external
|
|
memory and with memory-mapped I/O devices. The signals at this interface
|
|
are used directly to control DRAMs (dynamic RAMs) and VRAMs (video
|
|
RAMs). Section 11 discusses local memory interface operation.
|
|
|
|
Table 2-3. Local Bus Interface Signals
|
|
|
|
Signal I/O Description
|
|
DEN 0 Local Data Enable. DEN is an active-low output; it drives the active-low
|
|
output-enable inputs on the bidirectional transceivers (such as the
|
|
74ALS245) which are used to buffer data input and output on the
|
|
LADo-LAD15 pins. External buffering may be required on the LADo-LAD15
|
|
pins when the TMS34010 is interfaced to a large number of local memory
|
|
devices.
|
|
DDOUT 0 Local Data Direction Out. DDOUT drives the direction control inputs on
|
|
the bidirectional transceivers (such as the 74ALS245) which are used to buf-
|
|
fer data input and output on the LADo-LAD15 pins. External buffering may
|
|
be required on the LADo-LAD15 pins when the TMS3401 0 is interfaced to a
|
|
large number of local memory devices. During write cycles, DDOUT is driven
|
|
high to enable data to be output from the LADo-LAD15 pins while DEN is
|
|
driven active low. During read cycles, DDOUT goes low to enable data to be
|
|
input to the LADo-LAD15 pins while DEN is driven active low. At all other
|
|
times, DDOUT remains driven to the default high level.
|
|
LAL 0 Local Address Latched. An external latch can use the high-to-Iow transi-
|
|
tion of LA[ to capture the column address from the LADo-LAD15 pins. When
|
|
a transparent latch such as a 74ALS373 is used, the address remains latched
|
|
as long as LAL remains active low.
|
|
RAS 0 Local Row Address Strobe. The RAS output drives the RAS inputs of
|
|
DRAMs and VRAMs.
|
|
~ 0 Local Column Address Strobe. The Ct\S output drives the Ct\S inputs of
|
|
DRAMs and VRAMs.
|
|
W 0 Local Write Strobe. The active-low W output drives the W inputs of
|
|
DRAMs and VRAMs. W can also be used as the active-low write enable to
|
|
static memories and other devices connected to the TMS3401 0 local interface.
|
|
During a local memory read cycle, W remains inactive high while CA:S is
|
|
strobed active low. During a local memory write cycle, W is strobed active low
|
|
while Ct\S is low. During shift-register-transfer cycles, the state of W indicates
|
|
whether the transfer is from shift register to memory (W is low) or memory to
|
|
shift register (W is high). At all other times, W is driven to the default high
|
|
level.
|
|
TR/ITE 0 Local Shift Register Transfer or Output Enable. This pin connects di-
|
|
rectly to a VRAM's TR/OE (or DT/Ot) pin. During local memory read cycles,
|
|
the TR/ITE pin functions as an active-low output enable to gate data from
|
|
memory to the LADo-LAD15 pins. During VRAM shift-register-transfer cy-
|
|
cles, TR/M is driven active low during the high-to-Iow transition of RAS.
|
|
INCLK I Input Clock. I NCLK is the input clock used to generate the LCLK1 and
|
|
LCLK2 outputs, to which all processor functions in the TMS3401 0 are syn-
|
|
chronous. A separate input clock, VCLK, controls the video timing registers.
|
|
|
|
|
|
2-7
|
|
Pin Functions - Local Memory Interface Signals
|
|
|
|
|
|
|
|
Table 2-3. Local Bus Interface Signals (Concluded)
|
|
|
|
Signal I/O Description
|
|
LCLK1,LCLK2 0 Local Output Clocks. These two output clocks, 90 degrees out of phase with
|
|
each other, provide convenient synchronous control of external circuitry to the
|
|
TMS34010's internal timing. All clocked signals output from the TMS34010,
|
|
with the exception of the CRT timing signals, are synchronous to these clocks.
|
|
LRDY I Local Ready. LRDY is driven low by external circuitry to inhibit the
|
|
TMS34010 from completing a local memory cycle it has initiated. While LRDY
|
|
remains low, the TMS34010 continues to wait. When LRDY is again driven
|
|
high, the TMS3401 0 completes the cycle. While LRDY is low, the TMS3401 0
|
|
generates internal wait states in increments of one full LCLK1 cycle in duration.
|
|
LRDY can be driven low to extend local memory read and write cycles, shift-
|
|
register-transfer cycles, and DRAM refresh cycles. During internal cycles, the
|
|
TMS34010 ignores LRDY.
|
|
"[ff\ff1,iJNi2 I Local Interrupt Request Pins. Interrupt requests from external devices are
|
|
transmitted to the TMS3401 0 on the 1:TN'F1 and LlNT2 pins. Each pin activates
|
|
the request for one of two external interrupt request levels. An external device
|
|
generates an interrupt request by driving the appropriate interrupt request pin
|
|
to its active-low state. The pin should remain active low until the TMS34010
|
|
has recognized the request.
|
|
|
|
Transitions on the two interrupt request pins are assumed to be asynchronous
|
|
with respect to local clocks LCLK1 and LCLK2; the signals on these pins are
|
|
synchronized internally before being used internally.
|
|
LADo-LAD15 I/O Local Address/Data Bus. LADo-LAD15 form the local multiplexed
|
|
address/data bus. At the start of a memory cycle, two addresses (row and col-
|
|
umn) are output on LADo-LAD15. During a read cycle, data are input on
|
|
LADo-LAD15 during the latter part of the cycle. During a write cycle, data are
|
|
output on LADo-LAD15 during the latter part of the cycle. LADO is the LSB,
|
|
and LAD15 is the MSB. During the time the row address is output on
|
|
LADo-LAD14, status bit RF is output on LAD15. RF is active low at the start
|
|
of a DRAM-refresh cycle (either 'liAS-only or CAS-before-RAS"). During the time
|
|
that the column address is output on LADo-LAD13, status bits TR and lAO are
|
|
output on LAD15 and LAD14, respectively. lAO is active high during a read
|
|
cycle in which the TMS3401 0 fetches an instruction word from the local me-
|
|
mory. During all other cycles, lAO is inactive low. TR is active low during
|
|
shift-register-transfer cycles. (The level output on LAD14 during the high-
|
|
to-low transition of CAS is always the same as the level output on TR/GE during
|
|
the high-to-Iow transition of'R'AS.)
|
|
Notes: 1) The system designer must ensure that LRDY is not held low for so long that the TMS3401 0
|
|
is prevented from performing the necessary number of DRAM refresh cycles or is prevented
|
|
from refreshing the display by performing a VRAM memory-to-shift-register cycle during
|
|
horizontal retrace.
|
|
2) The operation of LlNT1 and LlNT2 is affected by the RUN/EMU pin. Make sure this pin is in
|
|
the proper state.
|
|
|
|
|
|
|
|
|
|
2-8
|
|
Pin Functions - Video Timing Signals
|
|
|
|
|
|
|
|
2.4 Video Timing Signals
|
|
The video timing signals (BLANK, HSYNC, and VSYNC) control the horizontal
|
|
and vertical sweep rates of the video monitor. They also synchronize the dis-
|
|
play on the monitor to video data that is output from the VRAMs. Section 9
|
|
discusses video timing and screen refresh operations.
|
|
Table 2-4. Video Timing Signals
|
|
|
|
Signal I/O Description
|
|
~ I/O Horizontal Sync. 'RSY"NC is the horizontal sync Signal used to control external
|
|
video circuitry. It is programmed as either an input or an output by means of
|
|
two control bits in the DPYCTL register. When configured as an output, the
|
|
active-low horizontal sync signal is generated by the TMS3401 O's on-chip vi-
|
|
deo timers. When configured as an input, the TMS3401 0 synchronizes its video
|
|
timers to externally-generated horizontal sync pulses. Immediately following
|
|
reset, ~ is configured as an input.
|
|
\7'SVNC I/O Vertical Sync. \7'SVNC is the vertical sync signal used to control external video
|
|
circuitry. It is programmed as either an input or an output by means of a control
|
|
bit in the DPYCTL register. When configured as an output, the active-low ver-
|
|
tical sync signal is generated by the TMS3401 O's on-chip video timers. When
|
|
configured as an input, the TMS34010 synchronizes its video timers to exter-
|
|
nally-generated vertical sync pulses. Immediately following reset, VSYNC is
|
|
configured as an input.
|
|
BLANK 0 Blanking. BLANK is a composite blanking signal used to turn off the electron
|
|
beam of a CRT during both horizontal and vertical retrace intervals. This signal
|
|
may also be used to control the starting and stopping of the VRAM shift regis-
|
|
ters.
|
|
VCLK I Video Clock. VCLK is derived from the dot clock of the external video system
|
|
and is used internally to drive the TMS3401 O's video timing logic. The signals
|
|
output at the BLANK, ~, and VSYNC pins are synchronous to VCLK. VCLK
|
|
is not required to have any timing relationship with respect to I NCLK; that is,
|
|
VCLK and I NCLK can be asynchronous. In order to read HCOUNT and
|
|
VCOUNT registers reliably, VCLK should be held high during the read. In sys-
|
|
tems which do not use the video timing registers or require automatic screen
|
|
refreshing, VCLK can be strapped high.
|
|
Note: The operation of HSYNC and - -- - - pin. Make sure this pin is in the
|
|
VSYNC is affected by the RUN/EMU
|
|
proper state.
|
|
|
|
|
|
|
|
|
|
2-9
|
|
Pin Functions - Hold and Emulator Interface Signals
|
|
|
|
|
|
|
|
2.5 Hold and Emulator Interface Signals
|
|
The TMS3401 0 hold interface permits other devices to request and be granted
|
|
control of the local interface bus.
|
|
The emulator interface is used to control the TMS34010 when it is used for
|
|
emulation. The RUN/EMU pin may remain unconnected in nonemulation ap-
|
|
plications.
|
|
Table 2-5. Hold and Emulator Interface Signals
|
|
|
|
Signal I/O Description
|
|
I Hold Request. The HOLD pin is driven active low by an external device to
|
|
signal a request that the TMS3401 0 release ownership of the local memory bus.
|
|
Once the TMS3401 0 has acknowledged the hold request via a hold acknowl-
|
|
edge signal, the external device assumes ownership of the bus. The device must
|
|
continue to assert its hold request until it has released the bus.
|
|
o Hold Acknowledge and Emulate Acknowledge. The HLDA/E1iii'OA pin is
|
|
multiplexed between two functions: (1) acknowledgment of hold requests and
|
|
(2) acknowledgment of emulation requests.
|
|
|
|
The hold acknowledge signal (FITI5A) is output during phases 03 and 04 of the
|
|
local clock cycle. The emulate acknowledge signal (rnoA) is output during
|
|
phases 01 and 02. HLDA is driven active low in response to a hold request from
|
|
an external device. but not until the TMS3401 0 has released the bus to the re-
|
|
questing device. The device must delay taking possession of the bus until it
|
|
has received an active HLDA signal. Once an active-low hold acknowledge
|
|
signal has been transmitted during 03-04. it will continue to be transmitted
|
|
during 03-04 of each local clock period until the external device ceases to as-
|
|
sert its hold request.
|
|
|
|
EMUA is driven active low to indicate to external circuitry that the TMS34010
|
|
has halted in response to an EMU command input on the RUN/EMU pin.
|
|
HLDA/EMUA is also driven low when an EMU opcode is executed by the
|
|
TMS34010. but only during phases 01 and 02 of a single LCLK1 cycle. Exe-
|
|
cution of an EMU opcode causes an active-low signal to be output at the
|
|
HLDA/EMUA pin during phases 01 and 02. so external devices that generate
|
|
hold requests should avoid interpreting these signals as hold acknowledgment.
|
|
RUN/EMU Run/Emulate. This pin is defined as a no-connect during normal system op-
|
|
eration. The RUN/EMU pin should not be pulled low except during factor
|
|
testing or chip emulation. An internal pull-up load permits RUN/EMU to remain
|
|
unconnected during normal use.
|
|
|
|
If RUN/EMU is pulled low. RESET. LlNT1. LlNT2. 'R"'S'Y"NC. and \lS'YNC are recon-
|
|
figured to perform special functions used only during emulation and factory
|
|
testing.
|
|
|
|
|
|
|
|
|
|
2-10
|
|
Pin Functions - Power, Ground, and Reset Signals
|
|
|
|
|
|
|
|
2.6 Power, Ground, and Reset Signals
|
|
Six TMS34010 pins are dedicated to ground and power supply. Section 8
|
|
provides more details about RESET.
|
|
Table 2-6. Power, Ground, and Reset Signals
|
|
|
|
Signal I/O Description
|
|
Vee I Vee (2 pins). Two +5-volt power supply inputs.
|
|
|
|
VSS I VSS (4 pins). Four electrical ground inputs.
|
|
RESET I Reset. RESET is pulled low to reset the device during normal operation.
|
|
While RESET is asserted low, the internal registers of the TMS3401 0 are set
|
|
to an initial known state, and all output and bidirectional pins are driven ei-
|
|
ther to inactive levels or to high impedance. The behavior of the TMS3401 0
|
|
chip following reset depends on the level of the HCS input just prior to the
|
|
low-to-high transition of RESET. If HCS is low, the TMS3401 0 begins exe-
|
|
cuting the instructions pointed to by the reset vector. If HCS is high, the
|
|
TMS34010 is halted until a host processor writes a 0 to the H LT bit in the
|
|
HSTCTL register.
|
|
|
|
Transitions on the RES"ET pin are assumed to be asynchronous with respect
|
|
to local clocks LCLK1 and LCLK2; the signal input on this pin is synchro-
|
|
nized internally before it is used internally.
|
|
|
|
|
|
|
|
|
|
2-11
|
|
Pin Functions
|
|
|
|
|
|
|
|
|
|
2-12
|
|
Section 3
|
|
Memory Organization
|
|
|
|
|
|
This section presents details of physical and logical addresses, illustrates the
|
|
TMS34010 memory map, and describes stack operation.
|
|
Section Page
|
|
3.1 Memory Addressing .................................................................................. 3-2
|
|
3.2 Memory Map .............................................................................................. 3-4
|
|
3.3 Stacks .......................................................................................................... 3-6
|
|
|
|
|
|
|
|
|
|
3-1
|
|
Memory Organization - Memory Addressing
|
|
|
|
|
|
|
|
3.1 Memory Addressing
|
|
The TMS3401 0 is a bit-addressable machine with a 32-bit internal memory
|
|
address. The total memory capacity is four gigabits (or 512 megabytes); the
|
|
TMS34010 supports external addressing of 128 megabytes.
|
|
|
|
Memory is accessed as a continuously addressable string of bits. Each 32-bit
|
|
address points to an individual bit within memory. Groups of adjacent bits
|
|
form data structures called fields. A field is specified by its starting bit ad-
|
|
dress and its length. The TMS3401 0 supports field lengths from 1 to 32 bits.
|
|
Bit addresses range from OOOOOOOOh to OFFFFFFFFh.
|
|
|
|
Figure 3-1 illustrates the logical memory structure.
|
|
|
|
32-B1t
|
|
Logical Addreas
|
|
|
|
N
|
|
|
|
|
|
|
|
|
|
Figure 3-1. Logical Memory Address Space
|
|
|
|
|
|
Figure 3-2 illustrates physical memory organization. The TMS34010 com-
|
|
municates with memory over a 16-bit data bus, and always reads or writes a
|
|
complete 16-bit word from or to memory. A word accessed during a memory
|
|
cycle always begins on an even 16-bit boundary; thus, the four LSBs of the
|
|
32-bit starting address of the word are Os. Bits within a word are numbered
|
|
from 0 to 15; bit 15 is the MSB and bit 0 is the LSB. A word is identified by
|
|
the address of its LSB. In this document, the LSB of a memory word is de-
|
|
picted as the rightmost bit in the word.
|
|
|
|
|
|
|
|
|
|
3-2
|
|
Memory Organization - Memory Addressing
|
|
|
|
|
|
32-B1t Logical Addre88
|
|
2 ~
|
|
MSBs J 26-BIt J LSBs r
|
|
"I' Phyaloal Addreaa T
|
|
31 30129 N ~13 0
|
|
|
|
~
|
|
~
|
|
|
|
|
|
Externally
|
|
I Select BIt Boundary
|
|
WIthin Word
|
|
!
|
|
Memory /1 Word N+1 I Word N I Word N-1 l/
|
|
|
|
15 14 13 12 11 10 Q Q 7 e 5 j; 3 2 1
|
|
I I I I I I I I I I I I I I I I I
|
|
f
|
|
T
|
|
MSB LSB
|
|
|
|
Figure 3-2. Physical Memory Addressing
|
|
|
|
|
|
The four LSBs of the 32-bit logical address in Figure 3-2 do not appear on the
|
|
local memory bus. When the TMS3401 0 extracts a data structure that does
|
|
not begin and end on even word boundaries, these four LSBs are used inter-
|
|
nally to indicate a bit boundary within an accessed word. Control logic at the
|
|
local memory interface automatically performs the bit alignment and masking
|
|
necessary to extract a data structure from physical memory; this is completely
|
|
transparent to software. If the data structure being extracted straddles word
|
|
boundaries, multiple read cycles are required. Similarly, inserting a data
|
|
structure into memory may require a series of read and write cycles, accom-
|
|
panied by the internal masking and shifting of data to properly align the data
|
|
structure within memory. The memory-control logic performs these tasks au-
|
|
tomatically.
|
|
The two MSBs of the 32-bit logical address are not output. The TMS3401 0
|
|
supports an external address range of 128 megabytes of physical memory.
|
|
|
|
|
|
|
|
|
|
3-3
|
|
Memory Organization - Memory Map
|
|
|
|
|
|
|
|
3.2 Memory Map
|
|
Figure 3-3 illustrates the TMS34010 memory map. Memory is logically or-
|
|
ganized as four gigabits, but is physically accessed 16 bits at a time. Locations
|
|
are shown as 16-bit words, identified by 32-bit addresses whose four LSBs
|
|
are Os. Word addresses range from OOOOOOOOh to FFFFFFFOh (bit address
|
|
OOOOOOOOh is the rightmost bit in the word at the bottom of Figure 3-3, and
|
|
bit address FFFFFFFFh is the leftmost bit in the word at the top.) Reading
|
|
or writing to an address in the range COOOOOOOh to C00001 FOh accesses an
|
|
internal I/O register. Reading or writing to any address outside this range
|
|
accesses off-chip memory (or a memory-mapped device) external to the
|
|
TMS34010.
|
|
|
|
|
|
Address
|
|
FFFF FFFO
|
|
|
|
FFFF FCOO
|
|
FFFF FBFO P"I,-+..,..,...,.....,....,....,...,.....,.~,-t
|
|
|
|
FFFF EOOO
|
|
FFFF DFFO I"-"'-+-~""'""'--'-"--"""t
|
|
|
|
|
|
|
|
|
|
C0002000
|
|
COOO 1 FFO ~..-+..,....,...,.....,..,...,.....,.....,....,...,....
|
|
|
|
COOO0200
|
|
COOO 01 FO 1-"-"-4'--""""-"","",--~"'-'~
|
|
|
|
COOO 0000 1---+---------10..--1
|
|
BFFF FFFO
|
|
|
|
3 X 2 26 words
|
|
|
|
0000 0000 ~.....&.._ _ _ _ _ _............
|
|
Bit 0
|
|
l---16 bits~ (first bit in memory)
|
|
|
|
|
|
Figure 3-3. TMS34010 Memory Map
|
|
|
|
|
|
As Figure 3-3 shows, memory is divided into several regions:
|
|
|
|
• General use
|
|
Addresses ranges Oh-BFFFFFFOh and C0002000h-FFFFDFFOh are for
|
|
general use (executable code, data tables, etc.).
|
|
|
|
• I/O registers
|
|
Addresses COOOOOOOh-COOOO1 FOh are reserved for the 16-bit I/O reg-
|
|
isters. Section 6 discusses the I/O registers; it contains a map of this
|
|
|
|
3-4
|
|
Memory Organization - Memory Map
|
|
|
|
|
|
memory area which associates each I/O register with the appropriate
|
|
address.
|
|
|
|
|
|
• Interrupt, Reset, and Trap Vectors
|
|
Addresses FFFFFCOOh-FFFFFFEOh are reserved for 32 interrupt, reset,
|
|
and trap vectors. A vector is a 32-bit address that points to the starting
|
|
location in memory of the appropriate interrupt, reset, or trap service
|
|
routine. Each address is stored in physical memory as two consecutive
|
|
16-bit words, with the 16 LSBs at the lower address. Section 8 contains
|
|
more information about interrupts and traps.
|
|
|
|
• Reserved memory
|
|
Addresses C0000200h-C0001 FFOh are reserved for future expansion of
|
|
the I/O registers.
|
|
Addresses FFFFEOOOh-FFFFFBFOh are reserved for future expansion of
|
|
the interrupt vectors.
|
|
|
|
|
|
|
|
|
|
3-5
|
|
Memory Organization - Stacks
|
|
|
|
|
|
|
|
3.3 Stacks
|
|
The TMS3401 O's system stack is implemented in local memory and managed
|
|
in hardware. The stack is used to store return addresses and processor status
|
|
information during interrupts, traps, and subroutine calls. The contents of
|
|
general-purpose registers can be pushed onto the stack and popped off the
|
|
stack. The system stack can also be used for dynamically allocated data stor-
|
|
age.
|
|
|
|
The stack is accessed through a dedicated 32-bit internal register, called the
|
|
stack pointer, or SP. The SP points to the top of the system stack; it can be
|
|
accessed as register 15 in either register file.
|
|
|
|
In addition to the system stack, you can define your own auxiliary stacks. The
|
|
system stack always grows toward lower memory addresses; an auxiliary stack
|
|
can be defined to grow toward either lower or higher addresses. The MOVE
|
|
and MOVB instructions, combined with the automatic predecrement and
|
|
postincrement addressing modes, facilitate pushing and popping auxiliary
|
|
stack data. One or more registers in the A or B files can be used by software
|
|
as auxiliary stack pointers and frame pointers. The indexed addressing modes
|
|
can be used in conjunction with a frame pointer to access variables embedded
|
|
within the stack.
|
|
|
|
3.3.1 System Stack
|
|
Figure 3-4 shows the structure of the system stack, which grows in the di-
|
|
rection of lower memory addresses.
|
|
|
|
The SP points to the top of the stack; it contains the 32-bit address of the LSB
|
|
(bit 0) of the value on top of the stack. The SP can contain any 32-bit ad-
|
|
dress; however, stack operations execute more efficiently when the four LSBs
|
|
of the SP are Os. This aligns the SP to word boundaries in memory, reducing
|
|
the number of memory cycles necessary to push values onto the stack or pop
|
|
values off the stack.
|
|
|
|
Any instruction that manipulates general-purpose registers (Ao-A14 or
|
|
Bo-B14) can also be used to manipulate the SP. The SP can be specified as
|
|
the source or destination operand in any instruction that operates on the
|
|
general-purpose registers. Instructions that manipulate the SP include:
|
|
|
|
Instructions that Push Instructions that Pop
|
|
Values on the Stack Values from the Stack
|
|
MMTM SP, register list M M FM S P, register list
|
|
CALL Rs RETI
|
|
CALLA absolute address RETS
|
|
CALLR relative address POPST
|
|
TRAP number MOVE *SP+, Rd
|
|
PUSHST
|
|
MOVE Rs, -*SP
|
|
|
|
|
|
|
|
3-6
|
|
Memory Organization - Stacks
|
|
|
|
|
|
|
|
Memory
|
|
,,---..1"'---'""1,
|
|
~16~
|
|
Highest Address
|
|
|
|
|
|
|
|
|
|
Stack Bottom
|
|
|
|
|
|
System
|
|
Stack
|
|
Area
|
|
}
|
|
|
|
SP
|
|
|
|
|
|
|
|
|
|
Lowest Address
|
|
|
|
|
|
Figure 3-4. System Stack
|
|
|
|
|
|
|
|
3.3.1.1 Saving Registers on the System Stack
|
|
Register information can be stored on the stack during an interrupt or a sub-
|
|
routine call. This frees up the register for use by an interrupt routine or a su-
|
|
broutine, and allows you to restore the original register values from the stack
|
|
when the routine finishes executing.
|
|
|
|
During an interrupt, the contents of the PC and ST are automatically saved
|
|
on the stack; if you want to save values that are in general-purpose registers,
|
|
you can use the MMTM and MMFM instructions. MMTM pushes multiple
|
|
general-purpose registers onto the stack, and MMFM pops multiple gener-
|
|
al-purpose registers from the stack.
|
|
|
|
When the contents of a 32-bit register are pushed onto the stack, they are
|
|
stored in two consecutive 16-bit words. The 16 MSBs are stored at the higher
|
|
memory address, and the 16 LSBs are stored at the lower address. This is
|
|
shown in Figure 3-5, which demonstrates the effects of the following in-
|
|
struction sequence:
|
|
MMTM SP, AO Push register AO onto stack
|
|
MMFM SP, Al Pop stack into register Al
|
|
|
|
|
|
|
|
|
|
3-7
|
|
Memory Organization - Stacks
|
|
|
|
|
|
|
|
• Figure 3-5 a shows the original state of the stack and registers.
|
|
• Figure 3-5 b illustrates the state after AO is pushed onto the stack.
|
|
• Figure 3-5 c shows the result of popping the top of the stack into A1.
|
|
|
|
|
|
|
|
(a)
|
|
|
|
|
|
................
|
|
................
|
|
Stack Bottom ................
|
|
................
|
|
................
|
|
................
|
|
Stack
|
|
--OFE2h-- N
|
|
...................
|
|
SP N
|
|
: .. : ....:::::::::.
|
|
................
|
|
................
|
|
Lowest Address .:::::::::: ........ :.
|
|
................................. 0
|
|
|
|
|
|
Memory
|
|
~
|
|
(b)
|
|
1'--16---1
|
|
................
|
|
................
|
|
AO
|
|
A11-~~~-i
|
|
................
|
|
................
|
|
................
|
|
................
|
|
Stack Bottom
|
|
Stack
|
|
--oFr~-- N
|
|
--O'i23h-- N-16
|
|
.:.:.~~~::. N-32
|
|
................
|
|
|
|
|
|
|
|
|
|
(c)
|
|
|
|
................
|
|
................
|
|
Stack Bottom ................
|
|
0°:::::::::::::::
|
|
................
|
|
................
|
|
Stack
|
|
SP '--__N"--~ --OFEih-- N
|
|
,,"11""'""'"
|
|
, •• , •• " , , " , • • 11
|
|
|
|
|
|
|
|
................
|
|
""""","1'"
|
|
"","111"'"1"
|
|
• f",""" ••• , ••••
|
|
Lowest Address --~--_...'.;..'.;.'.....'_''_'_"_"_'"","
|
|
|
|
|
|
|
|
Figure 3-5. Stack Operations
|
|
|
|
The TMS3401 0 performs two steps to push the contents of a 32-bit register
|
|
onto the top of the stack:
|
|
|
|
1) Decrement the PC by 32.
|
|
2) Push the register contents onto the stack.
|
|
|
|
The TMS3401 0 performs two steps to pop the top of stack into a 32-bit reg-
|
|
ister:
|
|
|
|
1) Pop the 32 bits at the top of the stack into the register,
|
|
2) Increment the SP by 32.
|
|
|
|
|
|
|
|
|
|
3-8
|
|
Memory Organization - Stacks
|
|
|
|
|
|
3.3.1.2 Saving Information On the System Stack During an Interrupt
|
|
|
|
During an interrupt, the TMS3401 0 pushes the PC and ST onto the stack; this
|
|
allows the interrupted routine to resume execution when the interrupt proc-
|
|
essing is completed. An interrupt routine performs the following actions:
|
|
|
|
1) Decrement the SP by 32.
|
|
2) Push the PC onto the stack.
|
|
3) Decrement the SP again by 32.
|
|
4) Push the ST onto the stack.
|
|
|
|
During a return from an interrupt:
|
|
|
|
1) Pop the 32 bits at the top of the stack into the ST.
|
|
2) Increment the SP by 32.
|
|
3) Pop the 32 bits at the top of the stack into the PC.
|
|
4) Increment the SP again by 32.
|
|
|
|
3.3.1.3 Saving Information On the System Stack During a Subroutine Call
|
|
|
|
A subroutine call saves the state of the calling routine on the stack; this allows
|
|
the routine to resume execution when the subroutine completes. A subroutine
|
|
call performs the following actions:
|
|
|
|
1) Decrement the SP by 32.
|
|
2) Push the PC onto the stack.
|
|
|
|
During a return from a subroutine:
|
|
|
|
1) Pop the 32 bits at the top of the stack into the PC.
|
|
2) Increment the SP by 32.
|
|
|
|
3.3.2 Auxiliary Stacks
|
|
Auxiliary stacks can be managed in software. Any A- or B-file register, except
|
|
the SP, can be used as the auxiliary stack pointer. Auxiliary stacks are typically
|
|
used to contain dynamically allocated data storage.
|
|
|
|
In the following discussion, STK represents the auxiliary stack pointer. STK
|
|
is a symbol that must be equated to one of the general-purpose registers; for
|
|
example:
|
|
STK .set AO
|
|
|
|
The STK may contain any 32-bit value; however, stack operations execute
|
|
more efficiently when the four LSBs of the STK are Os. This aligns the STK
|
|
to word boundaries in memory, reducing the number of memory cycles nec-
|
|
essary to push values onto the stack or pop values off the stack.
|
|
|
|
As Figure 3-6 and Figure 3-7 show, the auxiliary stack can be configured to
|
|
grow in either direction in memory. The memory is shown in these figures as
|
|
a string of continuously addressable bits.
|
|
|
|
|
|
3-9
|
|
Memory Organization - Stacks
|
|
|
|
|
|
|
|
3.3.2.1 An Auxiliary Stack that Grows Toward Lower Addresses
|
|
Figure 3-6 shows a stack that grows toward lower memory addresses:
|
|
|
|
• Figure 3-6 a shows the original stack.
|
|
|
|
• In Figure 3-6 b, a field of arbitrary size is pushed onto the stack with this
|
|
instruction:
|
|
|
|
MOVE Rs, * -STK
|
|
|
|
(Rs and STK represent general-purpose registers.)
|
|
|
|
• In Figure 3-6 c, the field is popped off the stack with this instruction:
|
|
|
|
MOVE *STK-, Rd
|
|
|
|
(Rd and STK represent general-purpose registers.)
|
|
|
|
Between instructions, the STK always points to the lowest bit address in the
|
|
stack - th is corresponds to the very top of the stack. You can use the M MTM
|
|
STK,register list instruction to save mUltiple registers on the stack in Figure
|
|
3-6. Later, you can restore the registers to their former values with an
|
|
MMFM STK,register list instruction.
|
|
|
|
stack
|
|
, A ,
|
|
|
|
|
|
(a)
|
|
+-HIQh Low
|
|
s
|
|
Addreaa Addreaa-+
|
|
ST!(
|
|
|
|
|
|
|
|
|
|
(b) Field i s
|
|
T
|
|
ST!(
|
|
|
|
Staok
|
|
A
|
|
|
|
|
|
|
|
(0)
|
|
s
|
|
t
|
|
ST!(
|
|
|
|
|
|
Figure 3-6. An Auxiliary Stack that Grows Toward Lower
|
|
Addresses
|
|
|
|
|
|
|
|
|
|
3-10
|
|
Memory Organization - Stacks
|
|
|
|
|
|
|
|
3.3.2.2 An Auxiliary Stack that Grows Toward Higher Addresses
|
|
Figure 3-7 shows a stack that grows toward higher memory addresses:
|
|
|
|
• Figure 3-7 a shows the original stack.
|
|
|
|
• In Figure 3-7 b, a field of arbitrary size is pushed onto the stack using
|
|
the following instruction:
|
|
|
|
MOVE Rs, * STK+
|
|
|
|
• In Figure 3-7 c, the field is popped off the stack with this instruction:
|
|
MOVE * -STK, Rd
|
|
Between instructions, the STK always points to one plus the highest bit ad-
|
|
dress in the stack - this location is one bit beyond the very top of the stack.
|
|
Staok
|
|
A
|
|
I ,
|
|
|
|
(a) sHigh
|
|
+- Addresses T Addr~: ---+
|
|
STK
|
|
|
|
|
|
|
|
(b) s Reid
|
|
|
|
T
|
|
STK
|
|
Stack
|
|
A
|
|
|
|
|
|
(0) s
|
|
t
|
|
STK
|
|
|
|
Figure 3-7. An Auxiliary Stack that Grows Toward Higher
|
|
Addresses
|
|
|
|
|
|
|
|
|
|
3-11
|
|
Memory Organization
|
|
|
|
|
|
|
|
|
|
3-12
|
|
Section 4
|
|
Hardware-Supported Data Structures
|
|
|
|
|
|
The TMS3401 0 supports several data structures at the machine level:
|
|
|
|
• Fields are configurable data structures whose length can be defined
|
|
within the range 1 to 32 bits. Two field sizes can be defined simul-
|
|
taneously. A field can begin and end at arbitrary bit addresses.
|
|
|
|
• Bytes are a special case of field in which the field length is fixed at eight
|
|
bits and is sign extended. Bytes can begin on any bit boundary within
|
|
a word.
|
|
|
|
• Pixels are configurable data structures; pixel length can be programmed
|
|
to be 1, 2, 4, 8, or 16 bits (always a power of two). Pixels are aligned
|
|
so that they do not cross word boundaries in memory.
|
|
|
|
• Two-dimensional pixel arrays, or pixel blocks, are rectangular groups
|
|
of pixels that are manipulated using the PIXBLT (pixel block transfer)
|
|
and FILL (pixel block fill) instructions. A pixel array can be moved from
|
|
one area of memory to another in a single PixBlt operation. It can be
|
|
combined with another array of the same size by performing Boolean or
|
|
arithmetic operations on the corresponding pixels of the two arrays.
|
|
The number of bits in a pixel, field, or array is programmable, but byte length
|
|
is fixed. Two field sizes and one pixel size can be specified simultaneously.
|
|
The size and starting addresses of the pixel arrays that are manipulated during
|
|
a PixBlt operation are specified by the values loaded into dedicated hardware
|
|
registers.
|
|
Topics in this section include:
|
|
Section Page
|
|
4.1 Fields ........................................................................................................... 4-2
|
|
4.2 Pixels ........................................................................................................... 4-6
|
|
4.3 XY Addressing ......................................................................................... 4-11
|
|
4.4 Pixel Arrays ............................................................................................... 4-15
|
|
|
|
|
|
|
|
|
|
4-1
|
|
Hardware-Supported Data Structures - Fields
|
|
|
|
|
|
|
|
4.1 Fields
|
|
The TMS3401 0 supports two software-configurable field types, field 0 and
|
|
field 1. A field in memory is defined by two parameters:
|
|
|
|
• Starting address and
|
|
• Field size (1 to 32 bits)
|
|
A field's starting address is the address of the field's LSB. A field can begin
|
|
at an arbitrary bit address in memory. When a field is moved from memory to
|
|
a general-purpose register, the field is right justified within the register; that
|
|
is, the field's LSB coincides with the register's rightmost bit (bit 0). The reg-
|
|
ister bits to the left of the field are all 1 s or all Os, depending on the values of
|
|
both the appropriate FE (field extension) bit in the status register, and the sign
|
|
bit (MSB) of the field. If FE=1, the field is sign extended; if FE=O, the field
|
|
is zero extended.
|
|
|
|
Field size can range from 1 to 32 bits. The lengths of fields 0 and 1 are defined
|
|
by two 5-bit fields in the status register, FSO and FS1.
|
|
|
|
Figure 4-1 illustrates a field in memory. In this example, the field straddles the
|
|
boundary between words Nand N+ 1 in memory. Field extraction and in-
|
|
sertion is performed by on -chip hardware:
|
|
|
|
• To move the field to a general-purpose register, the TMS3401 0 extracts
|
|
the field from memory by reading word N and word N+ 1 in separate
|
|
cycles.
|
|
|
|
• To move the field from a general-purpose register, the TMS3401 0 inserts
|
|
the field into memory by reading and writing word N, and reading and
|
|
writing word N+ 1.
|
|
|
|
The memory operations necessary to insert or extract a field are performed
|
|
automatically by special hardware, and are transparent to software.
|
|
|
|
I f - - - - - - - - - 32-B1t Logical Address ------~
|
|
28-B1t
|
|
Physloal Address
|
|
|
|
|
|
|
|
|
|
Memory
|
|
|
|
|
|
|
|
L
|
|
r-- Slze----'.1
|
|
Reid
|
|
|
|
|
|
|
|
Figure 4-1. Field Storage in External Memory
|
|
|
|
4-2
|
|
Hardware-Supported Data Structures - Fields
|
|
|
|
|
|
|
|
In Figure 4-1, word N is pointed to by a 26-bit physical address output by the
|
|
TMS34010 to memory. This 26-bit address corresponds to bits 4-29 of the
|
|
field's 32-bit logical address. The four LSBs of the logical address point to the
|
|
beginning of the field within word N.
|
|
|
|
The number of memory cycles required to extract or insert a field depends on
|
|
how the field is aligned in memory. Field manipulation is more rapid when
|
|
fields are stored in memory so that they do not cross word boundaries. Figure
|
|
4-2 illustrates various cases of alignment and nonalignment of fields to word
|
|
boundaries in memory. Given a field starting address and field length, the
|
|
memory controller will recognize the specified field alignment as one of the
|
|
seven cases in Figure 4-2. Field extraction and field insertion are performed
|
|
in a manner that requires the minimum number of memory cycles.
|
|
|
|
Case A
|
|
|
|
|
|
|
|
|
|
CaseB
|
|
|
|
|
|
|
|
|
|
CaseC , Word N+1 I Word N
|
|
~,
|
|
- 32-BIt Reid
|
|
|
|
Case 0 [±i N+1 ;r;:;zord N
|
|
Reid
|
|
|
|
Case E Word N+i:=[ wor!:![;j
|
|
Reid
|
|
|
|
Case F Word N+1 I Word N
|
|
it===- Reid ::::::::::;j
|
|
Case G Word N+2 Word N+1 Word N
|
|
k Reid ~I
|
|
|
|
Figure 4-2. Field Alignment in Memory
|
|
|
|
Case A A 16-bit field is aligned on word boundaries. Field extraction requires a single
|
|
read cycle, and field insertion requires a single write cycle.
|
|
Cases
|
|
81-83 The field length is less than 1 6 bits.
|
|
• In Case 81, the field starting address is not aligned to a word bou ndary,
|
|
although the end of the field coincides with the end of the word.
|
|
• In Case 82, the field starting address is aligned to a word boundary, but
|
|
the end of the field does not coincide with the end of the word.
|
|
• In Case 83, the field length is 14 bits or less, and neither the start nor the
|
|
end of the field is aligned to a word boundary.
|
|
|
|
4-3
|
|
Hardware-Supported Data Structures - Fields
|
|
|
|
|
|
|
|
For Cases 81-83, a field extraction requires a single read cycle. A field in-
|
|
sertion requires the following sequence of memory cycles:
|
|
1) Read word N
|
|
2) Write word N
|
|
Case C A 32-bit field is aligned on word boundaries. A field extraction requires the
|
|
following sequence of memory cycles:
|
|
1) Read word N
|
|
2) Read word N+ 1
|
|
A field insertion requires the following sequence of memory cycles:
|
|
1 ) Write word N
|
|
2) Write word N+ 1
|
|
Case 0 The field size is greater than 16 bits. The field starting address is not aligned
|
|
to a word boundary, but the end of the field coincides with the end of the
|
|
word. A field extraction requires the following sequence of memory cycles:
|
|
1) Read word N
|
|
2) Read word N+ 1
|
|
A field insertion requires the following sequence of memory cycles:
|
|
1) Read word N
|
|
2) Write word N
|
|
3) Write word N+ 1
|
|
Case E The field size is greater than 16 bits. The field starting address is aligned to a
|
|
word boundary, but the end of the field does not coincide with the end of the
|
|
word. A field extraction requires the following sequence of memory cycles:
|
|
1) Read word N
|
|
2) Read word N+ 1
|
|
A field insertion requires the following sequence of memory cycles:
|
|
1 ) Write word N
|
|
2) Read word. N+ 1
|
|
3) Write word N+ 1
|
|
Case F The field straddles the boundary between two words. Neither the start nor the
|
|
end of the field is aligned to a word boundary. A field extraction requires the
|
|
following sequence of memory cycles:
|
|
1) Read word N
|
|
2) Read word N+ 1
|
|
A field insertion requires the following sequence of memory cycles:
|
|
1) Read word N
|
|
2) Write word N
|
|
3) Read word N+ 1
|
|
4) Write word N+ 1
|
|
Case G The field size ranges from 18 to 32 bits, and the field straddles two word
|
|
boundaries. Neither the start nor the end of the field is aligned to a word
|
|
boundary. A field extraction requires the following sequence of memory cy-
|
|
cles:
|
|
1) Read word N
|
|
2) Read word N+ 1
|
|
3) Read word N+2
|
|
|
|
4-4
|
|
Hardware-Supported Data Structures - Fields
|
|
|
|
|
|
|
|
A field insertion requires the following sequence of memory cycles:
|
|
1) Read word N
|
|
2) Write word N
|
|
3) Write word N+ 1
|
|
4) Read word N+2
|
|
5) Write word N+2
|
|
A field insertion modifies only the portion of a word that lies within a field.
|
|
The TMS34010 memory controller must perform a read-modify-write opera-
|
|
tion when a field that does not begin and end on even 16-bit word boundaries
|
|
is to be written to memory. This occurs when the four LSBs of the address
|
|
are not 0, or when the specified field size is a value other than 16 or 32. The
|
|
memory controller uses these two parameters (address LSBs and field size) to
|
|
produce a mask that identifies the bits in the word corresponding to the field.
|
|
Hardware uses the mask to perform the read-modify-write cycle. The
|
|
TMS34010's local memory control logic automatically generates the mask and
|
|
executes the read-modify-write operation; this is transparent to software.
|
|
Figure 4-3 shows an example of inserting a 5-bit field stored in a register to
|
|
logical address OOOOOOOBh.
|
|
|
|
• In Figure 4-3 a, the field to be inserted is shown right-justified in the
|
|
16 LSBs of the designated general-purpose register.
|
|
• In b, memory controller hardware has rotated the field to align it with the
|
|
destination in memory.
|
|
• In c, the TMS3401 0 reads the original word from the destination in me-
|
|
mory.
|
|
• In d, the mask is generated to designate the bits to be modified.
|
|
• In e, the field is inserted into the word from memory, and the result is
|
|
written back to the destination address in memory.
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
(a) Field to be Inserted X X X X X X X X X X X F F F F F
|
|
|
|
(b) Rotate to align to bit 8 X X X F F F F F X X X X X X X X
|
|
|
|
(0) Initial destination data A A A A A A A A A A A A A A A A
|
|
|
|
|
|
(d) Mask generated 0 0 0 0 0 0 0 0 0 0 0
|
|
|
|
(e) Final destination data A A A F F F F F A A A A A A A A
|
|
|
|
|
|
Figure 4-3. Field Insertion
|
|
|
|
In the more complex case in which a field straddles one or two word bound-
|
|
aries in memory, the portion of the field lying within each word is inserted into
|
|
that word using the methods described above.
|
|
|
|
|
|
|
|
|
|
4-5
|
|
Hardware-Supported Data Structures - Pixels
|
|
|
|
|
|
|
|
4.2 Pixels
|
|
The term pixel has two meanings in the context of a TMS34010-based
|
|
graphics system. Outside the TMS34010, a pixel is a picture element on a
|
|
display surface. Inside the TMS34010, a logical pixel is a software-
|
|
configurable data structure supported by the TMS3401 0 instruction set. The
|
|
logical pixel data structure in TMS34010 memory contains the information
|
|
needed to specify the attributes of a picture element visible on a screen. The
|
|
information for a horizontal line of pixels on the screen is usually stored in
|
|
consecutive words in memory.
|
|
|
|
4.2.1 Pixels in Memory
|
|
Within TMS3401 0 memory, the pixel data structure is defined by two param-
|
|
eters:
|
|
|
|
• Starting address and
|
|
• Pixel size
|
|
|
|
A pixel's starting address is the address of the LSB of the pixel.
|
|
|
|
Pixel size (the number of bits per pixel) is defined in the PSIZE register. A
|
|
pixel can be 1, 2, 4, 8, or 16 bits long. The TMS3401 0 treats pixels as a spe-
|
|
cial case of a field in which the field size is constrained to be a power of two.
|
|
However, pixels do not cross word boundaries within memory; they are
|
|
aligned within memory so that an integral number of pixels is contained within
|
|
the boundaries of a memory word. For example, a 2-bit pixel should begin at
|
|
an even bit address whose LSB is 0, a 4-bit pixel should begin at a bit address
|
|
whose two LSBs are Os, and so forth.
|
|
|
|
When a pixel is moved from memory to a general-purpose register, the pixel
|
|
is right justified within the register. That is, the LSB of the pixel coincides
|
|
with the rightmost bit (bit 0) of the register. Register bits to the left of the
|
|
pixel are loaded with Os.
|
|
|
|
Figure 4-4 illustrates pixel storage in memory. The pixel is located within the
|
|
word pointed to by the 26-bit physical address corresponding to bits 4-29 of
|
|
the 32-bit logical address of the pixel. The four LSBs of the logical address
|
|
specify the displacement of the pixel within the word. When the pixel length
|
|
is less than 16, each word contains two or more pixels.
|
|
|
|
Pixel extraction and insertion is performed by on-chip hardware in a manner
|
|
that requires the minimum number of memory cycles. (The operations are
|
|
transparent to the programmer.) In the worst case, two memory cycles (a read
|
|
followed by a write) are required to insert a pixel of less than 16 bits. Inserting
|
|
a 16-bit pixel requires a single write cycle, and extracting a pixel (1 to 16 bits)
|
|
requires a single read cycle.
|
|
|
|
|
|
|
|
|
|
4-6
|
|
Hardware-Supported Data Structures - Pixels
|
|
|
|
|
|
|
|
It--------- 32-BIt Logical Address -------~
|
|
2
|
|
MSBs 28-BIt
|
|
Physical Address
|
|
|
|
|
|
|
|
|
|
Memory
|
|
|
|
|
|
Pixel Size
|
|
|
|
|
|
~---Word -----.,~I
|
|
|
|
|
|
|
|
Figure 4-4. Pixel Storage in External Memory
|
|
|
|
|
|
|
|
4.2.2 Pixels on the Screen
|
|
Figure 4-5 illustrates the mapping of pixels from memory to a display screen.
|
|
The screen refresh function outputs pixels in the sequence of ascending pixel
|
|
addresses. However, the electron beam sweeps from the left edge of the
|
|
screen to the right edge during each horizontal scan interval, so pixels appear
|
|
on the screen in the opposite order of their representation in memory. That is,
|
|
the least significant pixel (in terms of bit address) appears on the left, and the
|
|
most significant pixel appears on the right.
|
|
Video Monitor Screen
|
|
|
|
Word Word Word
|
|
N-1 N N+1
|
|
|
|
i====r:f==i
|
|
L
|
|
r--
|
|
'--
|
|
|
|
|
|
|
|
|
|
I IPixel Pixel Pixel PixelI I
|
|
I I I I I I I I I
|
|
Memory I I I I I I I I I
|
|
I I I I I I I I I
|
|
|
|
|
|
4N+34N+2 4N+1 4N
|
|
|
|
~wordN+1 ~I. Word N + Word N-1----..j
|
|
|
|
|
|
Figure 4-5. Mapping of Pixels to Monitor Screen
|
|
|
|
|
|
|
|
|
|
4-7
|
|
Hardware-Supported Data Structures - Pixels
|
|
|
|
|
|
|
|
The TMS3401 0 allows a pixel to be identified either in terms of its XY coor-
|
|
dinates on the screen, or in terms of the address of. the logical pixel in memory.
|
|
These two methods are called XV addressing and linear addressing, re-
|
|
spectively.
|
|
When XY addressing is used, the origin can be selected to lie in either the
|
|
upper left or lower left corner of the screen. The position of the origin is
|
|
controlled by the ORG bit in the DPYCTL register. Figure 4-6 a illustrates the
|
|
default coordinate system (ORG=O), in which the origin of the two coordinate
|
|
axes is located in the upper left corner of the screen. Figure 4-6 b shows the
|
|
alternate coordinate system (ORG =1) in which the origin is located in the
|
|
lower left corner of the screen.
|
|
x
|
|
(a) Monitor
|
|
~Default Soreen
|
|
|
|
|
|
|
|
y
|
|
Soreen
|
|
Origin
|
|
I
|
|
(b)
|
|
|
|
|
|
|
|
y
|
|
Alternate
|
|
Screen
|
|
V Origin
|
|
|
|
L.-.----+X
|
|
|
|
Figure 4-6. Configurable Screen Origin
|
|
|
|
Using the default screen origin, Figure 4-7 illustrates the mapping of pixels
|
|
from memory to the screen. In Figure 4-7, horizontal movement represents
|
|
travel in the X direction on the screen. Vertical movement represents travel in
|
|
the Y direction. The depth of the buffer represents the pixel size. The "on-
|
|
screen memory" contains the pixels that appear on the screen.
|
|
The display memory shown in Figure 4-7 is shown in terms of a "screen for-
|
|
mat" rather than the "memory format" used in the memory map shown in
|
|
Figure 3-3 on page 3-4. The screen format places the lowest pixel address
|
|
at the upper left corner of the memory map. This is the same relative orien-
|
|
tation in which pixels appear on the screen. Compare this to the memory
|
|
format shown in Figure 3-3, which places the lowest bit address at the lower
|
|
right corner of the memory map. This convention is frequently used in in-
|
|
dustry to represent the relative location of addresses in memory. In this doc-
|
|
ument, assume the standard memory format is used unless the screen format
|
|
is indicated.
|
|
Figure 4-8 illustrates the mapping of XY coordinates to the on-screen memory.
|
|
For simplicity, assume that the screen origin coincides with the upper left
|
|
|
|
4-8
|
|
Hardware-Supported Data Structures - Pixels
|
|
|
|
|
|
corner of the display memory. P represents the X extent of the display memory
|
|
and N represents the Y extent. Each box represents a pixel within the memory.
|
|
The number within the box represents the pixel's memory location, relative to
|
|
the beginning of the on-screen memory. The number in the box is multiplied
|
|
by the number of bits per pixel to produce the address offset of the pixel from
|
|
the start of the display memory. Since the pixel size is constrained to be a
|
|
power of two, the multiply can be replaced by a simple shift operation.
|
|
Display Memory
|
|
r-------+X I
|
|
./
|
|
|
|
,----------,
|
|
, ,
|
|
, ,
|
|
Y I
|
|
,
|
|
On-8oreen
|
|
Memory
|
|
I
|
|
,
|
|
|
|
,I
|
|
L. _ _ _ _ _ _ _ _ _ _ ,
|
|
,,
|
|
|
|
|
|
Figure 4-7. Display Memory Dimensions
|
|
|
|
|
|
|
|
~ Inore,rng
|
|
|
|
|
|
|
|
1
|
|
Inoreaslng
|
|
. x=o
|
|
0
|
|
X=1
|
|
1
|
|
X=2
|
|
2
|
|
X=3
|
|
3 I
|
|
X=P-2
|
|
P-2
|
|
X=P-1
|
|
P-1
|
|
Y Y=O
|
|
Y=1 P P+1 P+2 P+3 \ 2P-2 2P-1
|
|
|
|
Y=2 2P 2P+1 2P+2 2P+3 11 3P-2 3P-1
|
|
|
|
, Display Memory
|
|
=
|
|
P X Extent
|
|
=
|
|
N Y Extent
|
|
(N:~)P (N-1}P
|
|
-1
|
|
|
|
l NP-2 NP-1
|
|
|
|
Each box oontalns a pixel.
|
|
The number Inside the box
|
|
Is the pixel's XV address.
|
|
|
|
Display Pitch (X extent) x (pixel size)
|
|
Differences in 32-bit memory addresses
|
|
of two vertically adjacent pixels
|
|
|
|
Figure 4-8. Display Memory Coordinates
|
|
|
|
|
|
|
|
4-9
|
|
Hardware-Supported Data Structures - Pixels
|
|
|
|
|
|
|
|
4.2.3 Display Pitch
|
|
The term display pitch refers to the difference in memory addresses between
|
|
two pixels that appear in vertically adjacent positions (one directly above the
|
|
other) on the screen. In Figure 4-8, the pitch is calculated as P times the pixel
|
|
size, where P is the X extent of the display memory.
|
|
The display pitch must be a power of two in order to support XY addressing
|
|
of pixels on the screen. Linear addressing of pixels on the screen imposes
|
|
fewer restrictions. In particular, the display pitch for linear addressing may be
|
|
any value that is a multiple of 16; that is, the four LSBs of the address must
|
|
be Os. Features such as automatic window checking are available with XY
|
|
addressing, but are not available with linear addressing.
|
|
The pitch of a pixel array is the difference in memory addresses of two verti-
|
|
cally adjacent pixels in the array. If the array occupies a rectangular area of the
|
|
screen, the array pitch is the same as the display pitch.
|
|
During a pixel operation such as a PixBlt, the source and destination array
|
|
pitches are specified in separate dedicated hardware registers. This facilitates
|
|
the transfer of pixel arrays between on-screen and off-screen memory, which
|
|
may have different pitches.
|
|
A sample display pitch calculation is shown below. In this example, the pixel
|
|
size is four bits and the X extent of the pixel display is 640 pixels. However,
|
|
since XY addressing and windowing are to be used, the physical memory is
|
|
organized so that there are 1024 pixels between successive scan lines. Thus,
|
|
the X extent of physical display memory is 1024, and the display pitch is:
|
|
Display Pitch (1024 pixels/line) x (4 bits/pixel)
|
|
= 4096 (which is 212)
|
|
|
|
|
|
|
|
|
|
4-10
|
|
Hardware-Supported Data Structures - XV Addressing
|
|
|
|
|
|
|
|
4.3 XV Addressing
|
|
The TMS34010 allows pixel addresses to be specified in terms of two-
|
|
dimensional XY coordinates that correspond to locations on the screen. This
|
|
is referred to as XY addressing. XY addressing has several benefits:
|
|
|
|
• TMS34010 software can be easily ported from one display configuration
|
|
to another. System-dependent details such as the number of bits per
|
|
pixel and the X extent of the display memory are transparent to the
|
|
software, but are used by the machine to automatically convert the XY
|
|
coordinates to the address of a pixel in memory.
|
|
|
|
• XY addressing allows you to think in terms of the high-level concept of
|
|
XY coordinates rather than in terms of the machine-level mapping of
|
|
pixels into memory.
|
|
|
|
• XY addressing facilitates such functions as window clipping.
|
|
|
|
Figure 4-9 illustrates XY addressing format. The XY address is stored in a
|
|
32-bit general-purpose register. The X and Y components are each treated
|
|
as 16-bit signed integers. The X component resides in the 16 LSBs of the
|
|
register, and is right justified to bit 0 of the register. The Y component occu-
|
|
pies the 16 MS Bs of the register, and is right justified to bit 16 of the register.
|
|
XY coordinates in the range (-32768,-32768) to (+32767,+32767) can be
|
|
represented. The clipping window, which identifies the pixels that can be al-
|
|
tered during drawing operations, is restricted to positive X and Y coordinate
|
|
values, (0,0) to (+32767, +32767). Thus, pixels identified by negative X or
|
|
Y coordinates must always lie outside the window.
|
|
|
|
~ ----.J
|
|
j.--S24 18
|
|
r-- MSBs
|
|
18
|
|
LSBs~
|
|
|
|
|
|
|
|
|
|
I----~~------~--.X
|
|
B..ATIVE I
|
|
ORIGIN I
|
|
'---_.... ______ ...+--PIX8.. AT
|
|
(X,V)
|
|
|
|
y
|
|
|
|
Figure 4-9. Pixel Addressing in Terms of XV Coordinates
|
|
|
|
|
|
|
|
|
|
4-11
|
|
Hardware-Supported Data Structures - XV Addressing
|
|
|
|
|
|
|
|
4.3.1 XV-to-Linear Conversion
|
|
The TMS3401 0 automatically converts a pixel's XY address to a 32-bit logical
|
|
address (linear address) for all instructions that use XY addressing. Three
|
|
parameters are used to perform XY -to-linear conversion:
|
|
|
|
• The logical pixel size (stored in the PSIZE register)
|
|
• A pitch conversion factor (stored in the CONVSP or CONVDP registers)
|
|
• An offset defining the XY origin (stored in the OFFSET register)
|
|
|
|
The TMS3401 0 uses the following formula to calculate the physical address
|
|
associated with the XY address:
|
|
|
|
Address = [(V x display pitch) OR (X x pixel size)] + offset
|
|
|
|
Since the display pitch and pixel size are both powers of two, the calculation
|
|
is performed using only shift, OR, and add operations. Window clipping may
|
|
be used to detect out-of-bounds (negative) X or Y values before this calcu-
|
|
lation is performed.
|
|
|
|
Linear addresses are formed from XY addresses by simply concatenating the
|
|
binary numbers that represent the X and Y coordinate values, as shown in
|
|
Figure 4-10. The number of Os to the right of the X component of the address
|
|
depends on the number of bits per pixel, and equals 1092(pixel size). The
|
|
displacement of the Y component within the 32-bit logical address in Figure
|
|
4-10 is equal to 1092(display pitch). Finally, a 32-bit offset is added to the
|
|
address in Figure 4-10 to calculate the address in memory of the pixel at co-
|
|
ordinates (X,Y). The offset corresponds to the linear address in memory of the
|
|
pixel at (0,0).
|
|
|
|
o 0 ... 0 o 0 ... 0
|
|
y X
|
|
MSBs are 08 Component Component LSBs are Os
|
|
|
|
Note: The shift value for the Y component is contained in
|
|
CONVSP or CONVDP register, depending on the in-
|
|
struction being executed.
|
|
|
|
Figure 4-10. Concatenation of XV Coordinates in Address
|
|
|
|
|
|
The TMS34010 uses the pitch conversion factors CONVSP and CONVDP
|
|
to compute the displacement of the Y component within the address, as
|
|
shown in Figure 4-10. The Y component is displaced from bit 0 of the address
|
|
by an amount equal to 1092(pitch), which the hardware obtains by inverting
|
|
the five LSBs of the appropriate CONVSP or CONVDP register. These values
|
|
must be loaded through software before executing an instruction that uses
|
|
XY addressing. CONVSP (source address pitch) is used if the XY address
|
|
points to a source pixel or pixel array; CONVDP (destination address pitch) is
|
|
used if the XY address points to a destination pixel or pixel array. The pixel
|
|
size stored in the PSIZE register is used similarly to determine the displace-
|
|
ment of the X component, as shown in Figure 4-10.
|
|
|
|
4-12
|
|
Hardware-Supported Data Structures - XV Addressing
|
|
|
|
|
|
|
|
The OFFSET register contains the linear memory address of the pixel located
|
|
at coordinates (0,0) on the monitor screen. The OFFSET register is used in
|
|
translating XV coordinates into linear addresses, but does not control which
|
|
region of the display memory is output to refresh the video screen. It is a vir-
|
|
tual screen origin. It allows the coordinate axes of the XV address to be
|
|
translated to an arbitrary position in memory. The OFFSET register supports
|
|
the use of "window relative" addressing in which the X and V coordinates are
|
|
specified relative to coordinate offsets in the display memory. The position
|
|
and size of a window can be specified arbitrarily. A new offset specified in
|
|
terms of XV coordinates can be converted to a linear address using the CVXVL
|
|
instruction. CVXVL converts an XV address to a linear address for the purpose
|
|
of absolute memory addressing, or to use special features available to in-
|
|
structions that use linear addressing. Figure 4-11 illustrates the XV -to-linear
|
|
conversion process.
|
|
31 16 15 0
|
|
(a) Original XV address
|
|
|
|
(b) Extract 16 LSBs and
|
|
I V 10000001 X
|
|
|
|
|
|
extend with Os 100000000000000000000001 X
|
|
(c) Rotate X left by
|
|
1092 (pixel size) 100000000000000000000 I X
|
|
1
|
|
00
|
|
(d) Extract 16 MSBs from
|
|
original XV address V 10000000000000000
|
|
|
|
|
|
I:~g~ 1
|
|
(e) Rotate V left by
|
|
16 + 1092 (vertical pitch)
|
|
V 1000000000000
|
|
|
|
|
|
(f) Bitwise logical-OR together I I
|
|
sign
|
|
shifted X and V components of y
|
|
V X 00 I I
|
|
(g) Add offset from B4 to ~--~----------~------------~--~
|
|
displacement above to Memory Address
|
|
get final memory address
|
|
|
|
Figure 4-11. Conversion from XV Coordinates to Memory Address
|
|
|
|
|
|
|
|
• Step a shows the original XV address.
|
|
• The X component is extracted in step b.
|
|
• In step c, the X component is shifted left by 1092(pixel size). The result
|
|
of step c represents the product of the X component and the pixel size.
|
|
• The Y component is extracted in step d.
|
|
• In step e, the V component is rotated left by 16+1092(display pitCh).
|
|
The result of step e is V multiplied by the display pitch.
|
|
• In step f, the results of steps c and e are bitwise-ORed to form the dis-
|
|
placement in memory of the pixel at (X,V) from the pixel at the origin.
|
|
• In step G, the offset is added to produce the final memory address.
|
|
The example of Figure 4-11 corresponds to a pixel size of four bits and a pitch
|
|
of 4,096. The six MSBs of the X half of the XV address (bits 10-15) in Figure
|
|
4-11 must be Os to produce a valid memory address. For this example, the
|
|
|
|
4-13
|
|
Hardware-Supported Data Structures - XV Addressing
|
|
|
|
|
|
clipping window should be set to disable writes to pixels having X coordinate
|
|
values outside the range 0 to +1023.
|
|
Generally, given a display with a pitch of 2n, a valid memory address is pro-
|
|
duced by the XY translation process shown in Figure 4-11 when only the n
|
|
LSBs of the X half of the XY address are nonzero (that is, when the 16-n
|
|
MSBs are 0). X values may be in the range -32768 to +32767 before clip-
|
|
ping. However, after clipping, the X value should be a positive number in the
|
|
range 0 to (Xextent -1), where Xextent = pitch/pixel size. The TMS34010's
|
|
automatic window clipping can be configured to clip pixels lying outside the
|
|
window; hence, no software overhead is incurred in clipping. Y values lying
|
|
outside the window are clipped in a similar fashion.
|
|
|
|
|
|
|
|
|
|
4-14
|
|
Graphics Operations - Pixel Arrays
|
|
|
|
|
|
|
|
4.4 Pixel Arrays
|
|
A rectangular area of the screen that is DX pixels wide and DY pixels high is
|
|
an example of a data structure called a two-dimensional pixel array. The
|
|
array contains DX x DY pixels, but can be manipulated by the TMS3401 0 as
|
|
one structure. The TMS34010's instruction set includes a powerful set of
|
|
raster operations, called PixBlts, that manipulate pixel arrays on the screen and
|
|
elsewhere in memory.
|
|
|
|
Figure 4-12 shows a pixel array occupying a rectangular region in display
|
|
memory. The DX pixels in each row of the array are packed together into ad-
|
|
jacent cells in the display memory. Rows do not generally occupy adjacent
|
|
areas of memory, but are separated from each other by a constant displace-
|
|
ment called the array pitch. The array pitch is the difference in memory ad-
|
|
dresses between the start of one row and the start of the row directly beneath
|
|
it. In the Figure 4-12 example, the array pitch is equal to the display pitch.
|
|
The product of the array width DX and the pixel size must be less than or equal
|
|
to the pitch.
|
|
Display Memory
|
|
r-------+x
|
|
Default
|
|
starting 2-D1mensionaJ
|
|
Address Pixel Array
|
|
,
|
|
L-.' "
|
|
Y
|
|
|
|
I l:l.Y
|
|
|
|
|
|
|
|
1
|
|
l:l.X = Pixels per row of array
|
|
l:l.Y = Pixels per oolumn of array
|
|
|
|
Figure 4-12. Pixel Array
|
|
|
|
|
|
A pixel array is specified in terms of its width, height, pitch, and starting ad-
|
|
dress. The starting address is the address of the first pixel to be moved during
|
|
a PixBlt. The default starting address is simply the base address of the array;
|
|
that is, the address of the pixel that has the lowest address in the array.
|
|
|
|
In Figure 4-12, the XY origin is located in its default position at the upper left
|
|
corner of the screen. The default starting address is the address of the pixel
|
|
located in the upper left corner of the array. When a PixBlt operation moves
|
|
the pixels from a source pixel array to a destination array, the pixels in each
|
|
row are moved in sequence from left to right, and the rows are moved in se-
|
|
quence from top to bottom.
|
|
|
|
4-15
|
|
Graphics Operations - Pixel Arrays
|
|
|
|
|
|
|
|
Certain PixBlt operations allow the starting pixel to be specified as one of the
|
|
pixels in the other three corners of the array. This feature is provided so that
|
|
when the source and destination arrays overlap, the appropriate starting corner
|
|
can be selected to ensure that no data is lost by being overwritten during
|
|
PixBlt execution. The order in which pixels in the array are moved can be al-
|
|
tered to be from right to left or from bottom to top as appropriate to accom-
|
|
modate the change in starting corner.
|
|
|
|
The starting address of a pixel array can be specified either in terms of the XY
|
|
coordinates of the starting pixel (XY address), or the memory address of the
|
|
starting pixel (linear address):
|
|
|
|
• An array whose starting location is specified as an XY address is referred
|
|
to as an XY array. In this format, the starting location of the array is
|
|
identified by the XY coordinates of the first pixel in the array.
|
|
|
|
• A pixel array whose starting location is specified as a memory address
|
|
is referred to as a linear array. In this format, the location of the array is
|
|
identified by the memory address of the first pixel (the pixel that has the
|
|
lowest bit address) in the array.
|
|
|
|
The XY array format has two advantages. First, the starting location of the
|
|
array is specified in system-independent Cartesian coordinates rather than as
|
|
a system-dependent memory address. Second, the TMS34010's window
|
|
checking (which allows it to automatically detect an attempt to write a pixel
|
|
inside or outside a specified window) can only be used in conjunction with
|
|
XY addressing.
|
|
|
|
The linear format's main advantage is that the array pitch does not have to be
|
|
a power of two. This supports a wider variety of memory organizations. Using
|
|
XY format, the array pitch is constrained to be a power of two.
|
|
|
|
The general rules governing array pitch are as follows. When an array is spe-
|
|
cified in XY format, the pitch must be a power of two. The pitch for an array
|
|
specified in linear format may be any multiple of 16; that is, the four lSBs of
|
|
the pitch must be Os. There are a few important exceptions to the second rule
|
|
which are discussed below.
|
|
|
|
For the special case of a PIXBlT B,XY or PIXBlT B,l instruction, the source
|
|
pitch may be any value. This feature supports efficient use of memory by al-
|
|
lowing adjacent rows of the source array to be packed together with no in-
|
|
tervening gaps. The destination pitch must still be a multiple of 16.
|
|
|
|
Under certain conditions the linear source array specified for a PIXBlT l,XY
|
|
or PIXBlT B,XY must have a pitch that is a power of two. This is necessary
|
|
when the linear start address for the array has to be adjusted in the Y direction
|
|
due to one of the following conditions:
|
|
|
|
• The source array is automatically preclipped to lie within a rectangular
|
|
window.
|
|
|
|
• One of the lower two corners of the source array (refer to Figure 4-12)
|
|
is sele::;ted to be the start address.
|
|
|
|
4-16
|
|
Graphics Operations - Pixel Arrays
|
|
|
|
|
|
In either case, the start addresses specified for both the source and destination
|
|
arrays are automatically adjusted, and for this purpose the conversion factors
|
|
specified in the CONVSP and CONVDP registers must be valid.
|
|
While PixBlts are useful for moving arrays from one area of the screen to an-
|
|
other, they can also be used to move arrays to the screen from other parts of
|
|
memory, and vice versa. The pitch for the off-screen pixel array can be spec-
|
|
ified independently of the pitch for the on-screen array. This permits off-
|
|
screen data to make efficient use of storage, regardless of the display pitch.
|
|
On-screen objects may be defined as XV arrays but may be more efficiently
|
|
stored as linear arrays in off-screen memory. The PIXBLT instructions support
|
|
the transfer of a linear array to an XV array, and vice versa. PIXBLT in-
|
|
structions can also be used to rapidly move blocks of non-pixel data (ASCII
|
|
characters, for example) from one location in memory to another.
|
|
|
|
|
|
|
|
|
|
4-17
|
|
Hardware-Supported Data Structures
|
|
|
|
|
|
|
|
|
|
4-18
|
|
Section 5
|
|
CPU Registers and Instruction Cache
|
|
|
|
|
|
The TMS3401 0 has two on-chip general-purpose register files, file A and file
|
|
B. Each register file contains 15 32-bit registers. The two files share a 32-bit
|
|
hardware stack pointer (SP) that automatically manages the system stack
|
|
during interrupts and subroutine calls. The TMS3401 0 also has two dedicated
|
|
32-bit registers - a program counter and a status register. An on-chip cache
|
|
holds up to 128 instruction words, and is transparent to software. The CPU
|
|
registers and instruction cache are discussed in the following sections:
|
|
Section Page
|
|
5.1 General-Purpose Registers ....................................................................... 5-2
|
|
5.2 Status Register ......................................................................................... 5-18
|
|
5.3 Program Counter ..................................................................................... 5-19
|
|
5.4 Instruction Cache .................................................................................... 5-20
|
|
5.5 Internal Parallelism .................................................................................. 5-25
|
|
In addition to the CPU registers, the TMS3401 0 contains 28 memory-mapped
|
|
registers that are dedicated to I/O functions; Section 6 discusses the I/O reg-
|
|
isters.
|
|
|
|
|
|
|
|
|
|
5-1
|
|
CPU Registers and Instruction Cache - General-Purpose Registers
|
|
|
|
|
|
|
|
5.1 General-Purpose Registers
|
|
The TMS3401 0 has 30 32-bit general-purpose registers, divided into register
|
|
files A and B. In addition, a single stack pointer (SP) is common to both regis-
|
|
ter files.
|
|
|
|
The multiple internal data paths that link the ALU and general-purpose regis-
|
|
ters provide single machine state execution of most register-to-register in-
|
|
structions. Single-state instructions include add, subtract, Boolean
|
|
operations, and shifts (1 to 32 bits). During a single-state instruction, the
|
|
following actions occur:
|
|
|
|
1) Two 32-bit operands are read in parallel from the general-purpose
|
|
registers.
|
|
2} The ALU performs the specified operation.
|
|
3) The 32-bit result is stored in the specified general-purpose register.
|
|
|
|
The general-purpose registers are dual-ported to permit operands to be read
|
|
from two independent registers at the same time.
|
|
|
|
5.1.1 Register File A
|
|
Fifteen of the 30 general-purpose registers, Ao-A14, form register file A.
|
|
These registers can be used for data storage and manipulation. No hard-
|
|
ware-dedicated functions are associated with these general-purpose registers.
|
|
|
|
All register-to-register instructions (except MOVE Rs, Rd) require both regis-
|
|
ters to be in the same file. Instructions that manipulate registers AO-A14 can
|
|
also manipulate the stack pointer. The SP can be specified in place of an A-
|
|
file register in any of these instructions. Figure 5-1 illustrates register file A.
|
|
MSB LSB
|
|
bit 31 bit 0
|
|
AO
|
|
A1
|
|
A2
|
|
A3
|
|
A4
|
|
A5
|
|
AS
|
|
A7
|
|
AS
|
|
A9
|
|
A10
|
|
A1"
|
|
A12
|
|
A13
|
|
A14
|
|
SP Stack Pointer
|
|
|
|
|
|
Figure 5-1. Register File A
|
|
|
|
|
|
5-2
|
|
CPU Registers and Instruction Cache - General-Purpose Registers
|
|
|
|
|
|
|
|
5.1.2 Register File B
|
|
Register file B consists of 15 general-purpose registers, BO-B14. All regis-
|
|
ter-to-register instructions (except MOVE Rs,Rd) require both registers to be
|
|
in the same file. Instructions that manipulate registers Bo-B14 can also ma-
|
|
nipulate the stack pointer. The SP can be specified in place of a B-file register
|
|
in any of these instructions.
|
|
|
|
Registers Bo-B14 can be used for general-purpose functions such as data
|
|
storage and manipulation. During PixBlt and other pixel operations, however,
|
|
these registers are assigned hardware-dedicated functions.
|
|
MSB LSB
|
|
bit 31 bit 0
|
|
BO SADDR Source address
|
|
B1 SPTCH Source pitch
|
|
B2 DADDR Destination address
|
|
B3 DPTCH Destination pitch
|
|
B4 OFFSET Offset
|
|
B5 WSTART Window start address
|
|
B6 WEND Window end address
|
|
B7 DYDX Delta Y /Delta X
|
|
B8 COLORa Color 0
|
|
B9 COLOR1 Color 1
|
|
B10 TEMP or COUNT
|
|
B11 TEMP or INC1
|
|
B12 TEMP or INC2
|
|
B13 TEMP or PATTRN
|
|
B14 TEMP
|
|
SP Stack Pointer
|
|
|
|
|
|
Figure 5-2. Register File B
|
|
|
|
|
|
As Figure 5-2 shows, registers Bo-B9 are used as special-purpose registers
|
|
during pixel operations. These registers must be loaded with specific param-
|
|
eters before execution of pixel operations. Registers B1 o-B14 are used as
|
|
special-purpose registers for the LINE instruction. During pixel operations,
|
|
registers B1 0-B14 are used for temporary storage; their previous contents are
|
|
destroyed. Register functions may vary for individual instructions.
|
|
|
|
Section 5.1.4 describes the B-file registers in detail.
|
|
|
|
|
|
|
|
|
|
5-3
|
|
CPU Registers and Instruction Cache - General-Purpose Registers
|
|
|
|
|
|
|
|
5.1.3 Stack Pointer
|
|
The stack pointer (SP) is a 32-bit register that contains the bit address of the
|
|
top of the system stack. The TMS34010 contains only a single SP. However,
|
|
this SP can be addressed as a member of either register file, as register A15
|
|
or register B15. Any instruction that uses a general-purpose register as an
|
|
operand can also use the SP as an operand.
|
|
|
|
Figure 5-3 illustrates the stack pointer; Section 3.3 (page 3-6) describes stack
|
|
operation in detail.
|
|
|
|
31 43 o
|
|
I Word Address I Bit Addr I
|
|
~14- - - 28 bits ----t.IiI4- 4 blts-+l
|
|
Figure 5-3. Stack Pointer Register
|
|
|
|
The system stack grows in the direction of smaller addresses. During an in-
|
|
terrupt, the PC and ST are pushed onto the stack to permit the interrupted
|
|
routine to resume execution when interrupt processing is completed. A sub-
|
|
routine call saves the PC on the stack to allow the calling routine to resume
|
|
execution when subroutine execution is completed.
|
|
|
|
The stack pointer always points to the value at the top of the stack. Specif-
|
|
ically, the SP contains the 32-bit address of the LSB of that value. While the
|
|
four LSBs of the SP may be set to an arbitrary value, stack operations execute
|
|
more efficiently when the four LSBs are Os. Setting these bits to Os aligns the
|
|
stack pointer to 16-bit word boundaries in memory, reducing to two the
|
|
number of memory cycles necessary to push or pop the contents of a 32-bit
|
|
register.
|
|
|
|
The SP can be specified as the source or destination operand in any in-
|
|
struction that operates on the general-purpose registers. The SP can be ac-
|
|
cessed as register 15 in file A or B. Refer to the descriptions of the specific
|
|
instructions for details.
|
|
|
|
|
|
|
|
|
|
5-4
|
|
CPU Registers and Instruction Cache - General-Purpose Registers
|
|
|
|
|
|
|
|
5.1.4 Implied Graphics Operands
|
|
Table 5-1 summarizes the B-file register functions during graphics operations.
|
|
These registers are referred to as implied graphics operands. Several I/O reg-
|
|
isters, described in Section 6, are also implied graphics operands.
|
|
Table 5-1. B-File Registers Summary
|
|
|
|
Reg. Function Description
|
|
BO SADDR Source Address. Address of the upper left corner of the source pixel array
|
|
(lowest pixel address in the array). SADDR is a linear or XY address, depend-
|
|
ing on the instruction which uses it.
|
|
B1 SPTCH Source Pitch. Difference in linear start addresses between adjacent rows of
|
|
a source pixel array.
|
|
B2 DADDR Destination Address. Address of the upper left corner of the destination
|
|
pixel array (lowest pixel address in the array). DADDR is a linear or XY ad-
|
|
dress, depending on the instruction which uses it.
|
|
B3 DPTCH Destination Pitch. Difference in linear start addresses between adjacent
|
|
rows of a destination pixel array.
|
|
B4 OFFSET Offset. Linear bit address corresponding to XV-coordinate origin (X=O, Y=O).
|
|
B5 WSTART Window Start Address. XY address of the upper left corner of the window
|
|
(smallest X and Y coordinate values in the array).
|
|
B6 WEND Window End Address. XY address of the lower right corner of the window
|
|
(largest X and Y coordinate values in the array).
|
|
B7 DYDX Delta YjDelta X. The 16 LSBs of this register specify the width (X dimen-
|
|
sion) of the destination array. The 16 MSBs specify the height (Y dimension)
|
|
of the destination array. If either DY = a or DX = 0, then nothing is moved.
|
|
B8 COLORa Pixel value corresponding to "color 0". COLORa contains the source
|
|
background color to be used during a color-expand operation (PIXBLT B,XY
|
|
or PIXBLT B,L). The pixel value should be replicated throughout the 16 LSBs
|
|
of register B8 (see note below). Non-replicated patterns may be entered for
|
|
dithering effects. The 16 MSBs are ignored during the expand operation. For
|
|
example, at four bits per pixel, COLORa contains four identical pixel values,
|
|
as shown below.
|
|
B9 COLOR1 Pixel value corresponding to "color 1 It. COLOR1 contains the source
|
|
foreground color to be used during a color-expand, fill, or draw-and-advance
|
|
operation. The pixel value should be replicated throughout the 16 LSBs of
|
|
register B9 (see note below). Nonreplicated patterns may be entered for dith-
|
|
ering effects. The 16 MSBs are ignored during the expand operation. For ex-
|
|
ample, at four bits per pixel, COLOR1 contains four identical pixel values, as
|
|
shown below.
|
|
B10-814 Pix Bit temporary registers. PixBlt instructions use these registers for
|
|
storing temporary values and context information necessary to resume exe-
|
|
cution of a partially-completed PixBlt operation in the event of an interrupt.
|
|
SP SP Stack pointer. SP contains the bit address of the top of the stack.
|
|
Notes: To provide upward compatibility with future versions of the GSP, replicate the pixel value
|
|
throughout all 32 bits of COLORa or COLOR1, as shown.
|
|
|
|
|
|
|
|
|
|
5-5
|
|
80 Source Address Register
|
|
|
|
|
|
Format 31 16 15 o
|
|
Y x
|
|
or
|
|
31 o
|
|
Linear Bit Address
|
|
|
|
Description SADDR contains the source array address for PIXBLTs. Generally, SADDR
|
|
points to the pixel with the lowest address in the source array. When the
|
|
selected starting corner is not the upper left corner, the TMS3401 0 auto-
|
|
matically adjusts SADDR to point to the selected starting corner of the
|
|
source array. (For PIXBLT L,L, however, you must manually adjust SADDR
|
|
to point to the starting corner. This feature allows you to use PIXBLT L,L
|
|
for manipulating pixel arrays with pitches that are not powers of two.)
|
|
SADDR is in either XY or linear format. If the first operand of a PIXBLT
|
|
instruction is an L (such as PIXBLT L,XY), then SADDR is in linear format.
|
|
If the first operand of a PIXBLT instruction is an XY (such as PIXBLT XY,L),
|
|
then SADDR is in XY format.
|
|
During PIXBLT operations, SADDR is used in linear format. When the
|
|
PIXBLT is completed, SADDR points to the starting location of the row that
|
|
follows the last row in the array. If a PIXBLT is interrupted, SADDR points
|
|
to the next word of pixels to be read.
|
|
During LINE operation, SADDR contains the current decision variable va-
|
|
lue.
|
|
The following instructions use SADDR as an implied operand:
|
|
Instruction SADDR Format and Function
|
|
LINE Contains d=2b-a, used for the line draw.
|
|
PIXBLT B,L Linear address; points to the beginning of a binary source
|
|
array (a bit map).
|
|
PIXBLT B,XY Linear address; points to the beginning of a binary source
|
|
array (a bit map).
|
|
PIXBLT L,L Linear address with special requirements when PBH = 1
|
|
or PBV = 1. Refer to the PIXB LT L,L for a description of
|
|
its unique requirements.
|
|
PIXBLT L,XY Linear address; points to the beginning of a source array.
|
|
PIXBLT XY,L XY address; points to the beginning of a source array.
|
|
PIXBLT XY,XY XY address; points to the beginning of a source array.
|
|
Example SADDR .set BO
|
|
|
|
MOVI 00080015h, SADDR Move XY value 15h,8h
|
|
into BO
|
|
MOVI OOOlOAFCh, SADDR Move linear value
|
|
lOAFCh into BO
|
|
|
|
|
|
|
|
|
|
5-6
|
|
Source Pitch Register B1
|
|
|
|
|
|
Format 31 o
|
|
Linear Bit Address
|
|
|
|
Description SPTCH specifies the linear difference in the start addresses of adjacent rows
|
|
of the source array for PIXBLT and FILL instructions. The TMS3401 0 uses
|
|
the value in SPTCH to move from row to row through the source array.
|
|
SPTCH must be an integer multiple of 16 (except for the special cases of
|
|
PIXBLT B,L and PIXBLT B,XY). SPTCH is constrained in some cases to
|
|
be a power of two; this allows XY addressing and allows SADDR to be
|
|
automatically adjusted to point to an alternate starting corner.
|
|
The following instructions use SPTCH as an implied operand.
|
|
Instruction SPTCH Format and Function
|
|
PIXBLT B,L Linear; any value.
|
|
PIXBLT B,XY Linear; power of two for windowing, any value otherwise.
|
|
PIXBLT L,L Linear; multiple of 16.
|
|
PIXBLT L,XY Linear; power of two ~ 16 for windowing or PBV = 1,
|
|
multiple of 16 otherwise.
|
|
PIXBLT XY,L Linear; power of two ~ 16.
|
|
PIXBLT XY,XY Linear; power of two ~ 16.
|
|
Example SPTCH .set Bl
|
|
|
|
MOVI OOOOlOOOh, SPTCH Power of two for
|
|
PIXBLT XY,L
|
|
MOVI OOOlOAFCh, SPTCH Any value for
|
|
PIXBLT B,L
|
|
|
|
|
|
|
|
|
|
5-7
|
|
82 Destination Address Register
|
|
|
|
|
|
Format 31 16 15 o
|
|
Y x
|
|
or
|
|
31 o
|
|
Linear Bit Address
|
|
|
|
Description DADDR contains the destination array address for PIXBLTs. Generally,
|
|
DADDR points to the pixel with the lowest address in the destination array.
|
|
When the selected starting corner is not the upper left corner, the
|
|
TMS34010 automatically adjusts DADDR to point to the selected starting
|
|
corner of the destination array. (For PIXBLT L,L, however, you must man-
|
|
ually adjust DADDR to point to the starting corner. This feature allows you
|
|
to use PIXBLT L,L for manipulating pixel arrays with pitches that are not
|
|
powers of two.)
|
|
DADDR is also used in conjunction with DYDX to perform a common rec-
|
|
tangle function for some instructions (FILL XV, PIXBLT B,XY, PIXBLT
|
|
L,XY, and PIXBLT XY,XY, with window option 1). In these cases, DADDR
|
|
is set to the starting XY address of the common rectangle that represents
|
|
the intersection of the original destination array and the clipping window
|
|
indicated by WSTART and WEN D. No drawing is performed. If the array
|
|
and the window do not intersect, the V bit is not set and the contents of
|
|
DADDR are undefined.
|
|
DADDR is in either XY or linear format. If the second operand of the
|
|
PIXBLT instruction is an L (such as PIXBLT XY,L), then DADDR is in linear
|
|
format. If the second operand of the PIXBLT instruction is an XY (such as
|
|
PIXBLT XY,XY), then DADDR is in XY format.
|
|
If DADDR is specified in XY format, the PIXBLT converts it to the corre-
|
|
sponding linear address prior to the start of the pixel array transfer. During
|
|
PIXBLT operation, DADDR is maintained in linear format. When the
|
|
PIXBLT completes, DADDR points to the linear starting address of the row
|
|
following the last row in the array. If a PIXBLT is interrupted, DADDR
|
|
points to the next word of pixels to be read.
|
|
For the LINE instruction, DADDR contains the XY address of the next point
|
|
on the line.
|
|
The following instructions use DADDR as an implied operand.
|
|
Instruction DADDR Format and Function
|
|
FILL L Linear; points to the beginning of the destination array.
|
|
FILL XY XV; points to the beginning of the destination array.
|
|
LINE XV; points to the current pixel.
|
|
PIXBLT B,L Linear; points to the beginning of the destination array.
|
|
PIXBLT B,XY XV; points to the beginning of the destination array.
|
|
PIXBLT L,L Linear with special requirements when PBH=1 or PBV=1.
|
|
Refer to the PIXBLT L,L for a description of its unique re-
|
|
quirements.
|
|
PIXBLT L,XY XV; points to the beginning of the destination array.
|
|
PIXBLT XY,L Linear; points to the beginning of the destination array.
|
|
PIXBLT XY,XY XV; points to the beginning of the destination array.
|
|
|
|
|
|
|
|
|
|
5-8
|
|
Destination Address Register 82
|
|
|
|
|
|
Example DADDR .set B2
|
|
MOVI 00080015h, DADDR Move XY value 15h,8h
|
|
into B2
|
|
MOVI OOOlOAFCh, DADDR Move linear value
|
|
lOAFCh into B2
|
|
|
|
|
|
|
|
|
|
5-9
|
|
83 Destination Pitch Register
|
|
|
|
|
|
Format 31 o
|
|
Linear Bit Address
|
|
|
|
Description DPTCH specifies the linear difference in the starting memory addresses of
|
|
adjacent rows of the destination array for PIXBLT and FILL instructions.
|
|
The TMS3401 0 uses the value in DPTCH to move from row to row through
|
|
the destination array. DPTCH must be an integer multiple of 16 (except
|
|
for FILL L when DX=1). DPTCH is also constrained in some cases to be
|
|
a power of two; this allows XV addressing and allows DADDR to be auto-
|
|
matically adjusted to point to an alternate starting corner.
|
|
The following instructions use DPTCH as an implied operand.
|
|
Instruction DPTCH Format and Function
|
|
FILL L Linear; unused when DY=1.
|
|
FILL XV Linear; power of two ~ 16.
|
|
PIXBLT B,L Linear; multiple of 16.
|
|
PIXBLT B,XY Linear; power of two ~ 16 for windowing, multiple of 16
|
|
otherwise.
|
|
PIXBLT L,L Linear; multiple of 16.
|
|
PIXBLT L,XY Linear; power of two ~ 16.
|
|
PIXBLT XY,L Linear; power of two us.> 16 for PBV = 1, multiple of 16
|
|
otherwise.
|
|
PIXBLT XY,XY Linear; power of two ~ 16.
|
|
Example DPTCH .set B3
|
|
|
|
MOVI OOOOlOOOh, DPTCH Power of two for
|
|
PIXBLT XY,L
|
|
MOVI OOOlOAFCh, DPTCH Any value for
|
|
PIXBLT L,L
|
|
|
|
|
|
|
|
|
|
5-10
|
|
XV Addressing Offset Register 84
|
|
|
|
Format 31 o
|
|
Linear Bit Address
|
|
|
|
Description OFFSET contains the linear address of the first pixel in the XY coordinate
|
|
space for instructions using XY addressing. This corresponds to the linear
|
|
address of the XY origin (X=O,Y=O). This value is used as the memory base
|
|
for performing XY to linear address conversions.
|
|
OFFSET is always in linear format. It may be placed at any position in the
|
|
TMS34010 linear address space and should contain a pixel-aligned value
|
|
for proper XY address conversions, transparency, pixel processing, and
|
|
plane masking. Instructions that use OFFSET as an implied operand do not
|
|
modify the contents of OFFSET.
|
|
The following instructions use OFFSET as an implied operand.
|
|
Instruction OFFSET Format and Function
|
|
CVXYL Rs,Rd Linear address of XY origin
|
|
DRAV Rs,Rd Linear address of XY origin
|
|
FILL XY Linear address of XY origin
|
|
LINE Linear address of XY origin
|
|
PIXBLT B,XY Linear address of XY origin
|
|
PIXBLT L,XY Linear address of XY origin
|
|
PIXBLT XY,L Linear address of XY origin
|
|
PIXBLT XY,XY Linear address of XY origin
|
|
PIXT Rs,Rd.XY Linear address of XY origin
|
|
PIXT Rs.XY,Rd Linear address of XY origin
|
|
PIXT Rs.XY,Rd.XY Linear address of XY origin
|
|
Example OFFSET .set B4
|
|
|
|
MOVI 00042000h, OFFSET Linear value on
|
|
pixel boundary
|
|
|
|
|
|
|
|
|
|
5-11
|
|
85 Window Start Address Register
|
|
|
|
|
|
Format 31 16 15 o
|
|
Window start Y Window start X
|
|
|
|
Description WSTART specifies the XY address of the least significant pixel contained
|
|
in the rectangular destination clipping window. WSTART must be valid for
|
|
instructions that use an XY destination address and a window option. The
|
|
least significant pixel is the pixel with the lowest address in the array. For
|
|
a screen with the ORG bit of the DPYCTL register set to 0, this corresponds
|
|
to the pixel in the upper left corner of the pixel array.
|
|
WSTART may be placed at any position in the positive quadrant of the XY
|
|
address space. It describes an inclusive pixel; that is, the pixel at the XY
|
|
location contained in WSTART is included in the window. The value in
|
|
WSTART is used with WEND, DADDR, and DYDX to preclip pixels, lines,
|
|
and pixel arrays. WSTART is not modified by instruction execution.
|
|
The following instructions use WSTART as an implied operand.
|
|
Instruction WSTART Format and Function
|
|
CPW Rs,Rd XY value of least significant window corner
|
|
DRAV Rs,Rd XY value of least significant window corner
|
|
FILL XY XY value of least significant window corner
|
|
LINE XY value of least significant window corner
|
|
PIXBLT B,XY XY value of least significant window corner
|
|
PIXBLT L,XY XY value of least significant window corner
|
|
PIXBLT XY,XY XY value of least significant window corner
|
|
PIXT Rs,Rd.XY XY value of least significant window corner
|
|
PIXT Rs.XY,Rd.XY XY value of least significant window corner
|
|
Example WSTART .set B5
|
|
|
|
MOVI 00400100h, WSTART XY value (256,64)
|
|
stored in WSTART
|
|
|
|
|
|
|
|
|
|
5-12
|
|
Window End Address Register 86
|
|
|
|
Format 31 16 15 o
|
|
Window end Y Window end X
|
|
|
|
Description WEN D specifies the XY address of the most significant pixel contained in
|
|
the rectangular destination clipping window. WEND must be valid for in-
|
|
structions that use an XY destination address and a window option. The
|
|
most significant pixel is the pixel with the highest address in the array. For
|
|
a screen with the ORG bit of the DPYCTL register set to 0, this corresponds
|
|
to the pixel in the lower right corner of the pixel array.
|
|
WEN D may be placed at any position in the positive quadrant of the XY
|
|
address space. It describes an inclusive pixel; that is, the pixel at the XY
|
|
location contained in WEN D is included in the window. The value in
|
|
WEND is used with WSTART, DADDR, and DYDX to preclip pixels, lines,
|
|
and pixel arrays. WEND is not modified by instruction execution.
|
|
The following instructions use WEN D as an implied operand.
|
|
Instruction WEND Format and Function
|
|
CPW Rs,Rd XY value of most significant window corner
|
|
DRAV Rs,Rd XY value of most significant window corner
|
|
FILL XY XY value of most significant window corner
|
|
LINE XY value of most significant window corner
|
|
PIXBLT B,XY XY value of most significant window corner
|
|
PIXBLT L,XY XY value of most significant window corner
|
|
PIXBLT XY,XY XY value of most significant window corner
|
|
PIXT Rs,Rd.XY XY value of most significant window corner
|
|
PIXT Rs.XY,Rd.XY XY value of most significant window corner
|
|
Example WEND .set B6
|
|
|
|
MOVI 00400100h, WEND XY value (256,64) stored
|
|
in WEND
|
|
|
|
|
|
|
|
|
|
5-13
|
|
B7 Delta Y /Delta X Register
|
|
|
|
|
|
Format 31 16 15 o
|
|
Delta Y Delta X
|
|
|
|
Description DYDX specifies the X and Y dimensions of the rectangular destination array
|
|
for PIXBLT and FILL instructions. Both the X and Y dimensions are in
|
|
pixels; that is, the DX value is number of pixels in width of the array, and
|
|
DY is the number of rows of pixels in the destination array.
|
|
When the window clipping option is selected, the pixel block dimensions
|
|
for the transfer are determined by the relationships between WSTART,
|
|
WEND, DADDR, and DYDX. If either the X or Y dimension is 0, then the
|
|
block is interpreted as having a dimension of 0; no transfer is performed.
|
|
The values for DY and DX may range up to the coordinate extent of the
|
|
display (up to 65,535, depending on the display pitch and pixel size se-
|
|
lected). For window operations, the relationship between DYDX,
|
|
WSTART, and WEN D is such that DY = Yend - Ystart + 1 and DX = Xend
|
|
- Xstart + 1. The value in DYDX is used with WSTART, DADDR, and DYDX
|
|
to preclip pixels, lines, and pixel arrays.
|
|
Most graphics instructions do not modify the contents of DYDX. For FI LL
|
|
XV, PIXBLT B,XY, PIXBLT L,XY, and PIXBLT XY,XY, with window option
|
|
1, however, DYDX is used with DADDR to perform a common rectangle
|
|
function. In this case, the instruction sets DYDX to the dimensions of the
|
|
common pixel block described by the intersection of the original destination
|
|
array and the window identified by WSTART and WEND. No drawing is
|
|
performed. If there is no common rectangle, the V bit is not set and the
|
|
value of DYDX is indeterminate. See these instructions for further infor-
|
|
mation.
|
|
The following instructions use DYDX as an implied operand.
|
|
Instruction DYDX Format and Function
|
|
FILL L Array dimensions in XY format.
|
|
FILL XY Array dimensions in XY format; special results when W=1
|
|
is selected, as previously noted.
|
|
LINE Dimensions of the rectangle described by the line to be
|
|
drawn.
|
|
PIXBLT B,L Array dimensions in XY format
|
|
PIXBLT B,XY Array dimensions in XY format; special results when pick
|
|
is selected, as previously noted.
|
|
PIXBLT L,L Array dimensions in XY format.
|
|
PIXBLT L,XY Array dimensions in XY format; special results when pick
|
|
is selected, as previously noted.
|
|
PIXBLT XY,L Array dimensions in XY format.
|
|
PIXBLT XY,XY Array dimensions in XY format; special results when pick
|
|
is selected, as previously noted.
|
|
Example This example illustrates the relationship of DYDX to WSTART and WEN D.
|
|
WSTART .set B5
|
|
WEND .set B6
|
|
DYDX .set B7
|
|
MOVE WEND, DYDX Put WEND into DYDX
|
|
SUBXY WSTART, DYDX Generate (WEND - WSTART)
|
|
ADDI lOOOlh, DYDX Increment by 1 in each
|
|
dimension
|
|
|
|
|
|
5-14
|
|
Background Color Register B8
|
|
|
|
|
|
Format 31 o
|
|
Replicated Pixel Value
|
|
|
|
Description COLORO specifies the replacement color for 0 bits in the source array for
|
|
PIXBLT B,L and PIXBLT B,XY instructions. These two instructions trans-
|
|
form binary pixel array information to multiple bits per pixel arrays using the
|
|
color information in COLOR1 and COLORO. The lower 16 bits of COLORO
|
|
are used for the 0 or background color. There is a direct correspondence
|
|
between the alignment of pixels within the COLORO register and pixels
|
|
within memory words to be altered. That is, individual pixels within
|
|
COLORO are used as they align with destination pixels in the destination
|
|
word.
|
|
Execution of graphics instructions does not modify COLORO.
|
|
To provide upward compatibility with future versions of the GSP, the plane
|
|
mask should be replicated through all 32 bits of COLORO.
|
|
The following instructions use COLORO as an implied operand.
|
|
Instruction CO LO RO Contents
|
|
PIXBLT B,L Background pixel color for color-expanded array
|
|
PIXBLT B,XY Background pixel color for color-expanded array
|
|
Example This example is for 4-bit pixels. A pixel value of 5 is replicated throughout
|
|
the register.
|
|
COLORO .set B8
|
|
MOV! 55555555h, COLORO store uniform pixel
|
|
value in COLORO
|
|
|
|
|
|
|
|
|
|
5-15
|
|
89 Foreground Color Register
|
|
|
|
|
|
Format 31 o
|
|
Replicated Pixel Value
|
|
|
|
Description COLOR1 specifies the replacement color for pixels to be altered at the des-
|
|
tination pixel or pixel block for FILL, DRAV and LINE instructions.
|
|
For PIXBLT B,L and PIXBLT B,XY instructions, COLOR1 specifies the re-
|
|
placement color for 1 bits in the source array. These two instructions
|
|
transform binary pixel array information to multiple-plane pixel arrays using
|
|
color information in COLOR1 and COLORO. There is a direct correspond-
|
|
ence between the alignment of pixels within the COLOR1 register and pix-
|
|
els within memory words to be altered. That is, individual pixels within
|
|
COLOR1 are used as they align with destination pixels in the destination
|
|
word.
|
|
Execution of graphics instructions does not modify COLOR1.
|
|
To provide upward compatibility with future versions of the GSP, the plane
|
|
mask should be replicated through all 32 bits of COLOR1.
|
|
The following instructions use COLOR1 as an implied operand.
|
|
Instruction CO LO R1 Contents
|
|
DRAV Rs,Rd Pixel color for pixel draw
|
|
FILL L Pixel color for filled array
|
|
FILL XY Pixel color for filled array
|
|
LINE Pixel color for line draw
|
|
PIXBLT B/L Foreground pixel color for color-expanded array
|
|
PIXBLT B,XY Foreground pixel color for color-expanded array
|
|
Example This example is for 4-bit pixels. A pixel value of 3 is replicated throughout
|
|
the register.
|
|
COLOR! .set B9
|
|
MOVI 33333333h, COLOR! Store uniform pixel
|
|
value in COLORl
|
|
|
|
|
|
|
|
|
|
5-16
|
|
Reserved Registers 810-814
|
|
|
|
|
|
Format 31 o
|
|
Various Formats
|
|
|
|
Description The functions of these registers depend on which instruction uses them:
|
|
|
|
• PIXBLT and FI LL instructions use registers B10 through B14 as tem-
|
|
porary registers that hold intermediate values.
|
|
|
|
• The LINE instruction uses these registers as implied operands with the
|
|
following functions:
|
|
B11 is the INC1 register; it specifies the X and Y increments for
|
|
a diagonal step.
|
|
B12 is the INC2 register; it specifies the X and Y increments for
|
|
a nondiagonal step.
|
|
B10 is the COUNT register; it specifies the number of pixels to
|
|
be drawn in the line.
|
|
B13 is the PATTRN register; it is reserved for future LINE draw
|
|
enhancement. It should be set to OFFFFFFFFh before executing
|
|
the LI N E instruction to ensure software compatibility.
|
|
B14 is a temporary register (TEMP) that holds intermediate va-
|
|
lues.
|
|
|
|
|
|
|
|
|
|
5-17
|
|
CPU Registers and Instruction Cache - Status Register
|
|
|
|
5.2 Status Register
|
|
The status register (ST) is a special-purpose, 32-bit register that specifies the
|
|
processor status. The ST also contains several parameters that specify the
|
|
characteristics of two programmable data types, fields 0 and 1. The ST is ini-
|
|
tialized to 00000010h at reset.
|
|
Figure 5-4 illustrates the status register. Table 5-2 lists the functions associ-
|
|
ated with the status bits. Table 5-3 describes the encoding of the field size
|
|
bits in FSO and FS1.
|
|
|
|
|
|
|
|
|
|
Note: The status register bits marked reserved (bits 12-20, 22-24, and 26-27)
|
|
are currently unused. When read, a reserved bit returns the last value
|
|
written to it. At reset, all reserved bits are forced to Os.
|
|
|
|
Figure 5-4. Status Register
|
|
|
|
|
|
Table 5-2. Definition of Bits in Status Register
|
|
|
|
Bit Field
|
|
No. Name Function
|
|
0-4 FSO Field Size O. Length in bits of first memory data field (see Table 5-3 for values).
|
|
5 FEO Field Extend O. Bit determines whether field from memory is extended with Os or
|
|
with the sign bit when loaded into 32-bit general-purpose register.
|
|
FEO = 0 selects zero extension for field 0
|
|
FEO = 1 selects sign extension for field 0
|
|
6-10 FS1 Field Size 1. Length in bits of second memory data field (see Table 5-3 for values).
|
|
11 FE1 Field Extend 1. Bit determines whether field from memory is extended with Os or
|
|
with the sign bit when loaded into 32-bit general-purpose register.
|
|
FE1 = 0 selects zero extension for field 1
|
|
FE1 = 1 selects sign extension for field 1
|
|
21 IE Interrupt Enable. Master interrupt enable/disable bit.
|
|
IE = 0 disables all maskable interrupts
|
|
IE = 1 enables all maskable interrupts
|
|
25 PBX Pix Bit Executing. Indicates upon return from an interrupt that the interrupt oc-
|
|
curred between instructions or in the middle of a PIXBLT or FI LL instruction.
|
|
o = Indicates interrupt occurred at PIXBLT or FILL instruction boundary
|
|
1 = Indicates interrupt occurred in the middle of a PIXBLT or FI LL instruction
|
|
28 V Overflow. Set according to instruction execution.
|
|
29 Z Zero. Set according to instruction execution.
|
|
30 C Carry. Set according to instruction execution.
|
|
31 N Negative. Set according to instruction execution.
|
|
12
|
|
20
|
|
22-24
|
|
- Reserved
|
|
26-27
|
|
|
|
|
|
|
|
|
|
5-18
|
|
CPU Registers and Instruction Cache - Status Register/Program Counter
|
|
|
|
Table 5-3. Decoding of Field-Size Bits in Status Register
|
|
|
|
Five FS Field Five FS Field Five FS Field Five FS Field
|
|
Bits Size t Bits Size t Bits Size t Bits Sizet
|
|
00001 1 01001 9 10001 17 11001 25
|
|
00010 2 01010 10 10010 18 11010 26
|
|
00011 3 01011 11 10011 19 11011 27
|
|
00100 4 01100 12 10100 20 11100 28
|
|
00101 5 01101 13 10101 21 11101 29
|
|
00110 6 01110 14 10110 22 11110 30
|
|
00111 7 01111 15 10111 23 11111 31
|
|
01000 8 10000 16 11000 24 00000 32
|
|
t In bits
|
|
|
|
|
|
|
|
|
|
5.3 Program Counter
|
|
The program counter (PC) is a dedicated 32-bit register that points to the next
|
|
instruction word to be executed. Instructions are always aligned on even
|
|
16-bit word boundaries, and as shown in Figure 5-5, the four LSBs of the PC
|
|
are always Os.
|
|
~ 48 0
|
|
I Word Addreaa !O 0 0 01
|
|
~1·---------28~---------~·1~·4~~
|
|
|
|
Figure 5-5. Program Counter
|
|
|
|
|
|
An instruction consists of one or more instruction words. The first word
|
|
contains the opcode for the instruction. Additional words may be required for
|
|
immediate data, displacements, or absolute addresses. As each instruction
|
|
word is fetched, the PC is incremented by 16 to point to the next instruction
|
|
word. The PC contents are replaced during a branch instruction, subroutine
|
|
call instruction, return instruction, or interrupt .. Instructions may be categor-
|
|
ized according to their effect on the PC, as indicated in Table 5-4.
|
|
Table 5-4. Instruction Effects on the PC
|
|
|
|
Category Description
|
|
Non-branch The PC is incremented by 16 at the end of the instruction,
|
|
allowing execution to proceed sequentially to the next in-
|
|
struction.
|
|
Absolute Branch The PC is loaded with an absolute address; the four LSBs
|
|
(TRAP, CALL, JAcc) of the address are set to Os.
|
|
Relative Branch The signed displacement (8 or 16 bits) is added to the
|
|
(J Rcc, DSJxx) current contents of the PC. The signed displacement is
|
|
treated as a word displacement; that is, it is shifted left four
|
|
bit positions before it is added to the PC.
|
|
Indirect Branch The PC is loaded with the register contents. The four LS Bs
|
|
(JUMP, CALL, are set to Os.
|
|
EXGPC)
|
|
|
|
|
|
|
|
|
|
5-19
|
|
CPU Registers and Instruction Cache - Instruction Cache
|
|
|
|
5.4 Instruction Cache
|
|
Most program execution time is spent on repeated execution of a few main
|
|
procedures or loops. Program execution can be speeded up by placing these
|
|
often used code segments in a fast memory. The TMS3401 0 uses a 256-byte
|
|
instruction cache for this purpose.
|
|
Only instruction words (memory words that are pointed to by the PC) can be
|
|
accessed from the cache. This includes opcodes, immediate operands, dis-
|
|
placements, and absolute addresses. Instructions and data may reside in the
|
|
same area of memory; therefore, data may occasionally be copied into the in-
|
|
struction cache along with instruction words. However, the processor cannot
|
|
access data from the cache. All reads and writes of data in memory bypass the
|
|
cache.
|
|
|
|
5.4.1 Cache Hardware
|
|
The instruction cache contains 256 bytes of RAM, used to store up to 128
|
|
16-bit instruction words. Each instruction word in cache is aligned on an even
|
|
word boundary. Figure 5-6 illustrates cache organization.
|
|
p
|
|
segment start Addreea Raga Data Reglstera
|
|
|
|
|
|
|
|
'~I
|
|
A
|
|
|
|
6SA Repl!!ter 0 _ ~ent ,
|
|
If 23 ..
|
|
A
|
|
|
|
|
|
•
|
|
:
|
|
•
|
|
|
|
|
|
|
|
|
|
~
|
|
--!m
|
|
SeA Regllter 1
|
|
- or Subaegment 2
|
|
..... or of segment 1
|
|
.......... or
|
|
M--18-t1
|
|
|
|
|
|
|
|
|
|
SSA Replater 2
|
|
|
|
|
|
|
|
|
|
m
|
|
Moat
|
|
Recently
|
|
uaect LRU
|
|
Least Staok
|
|
6SA Register 3
|
|
Rec=
|
|
|
|
|
|
|
|
|
|
Figure 5-6. TMS34010 Instruction Cache
|
|
|
|
The cache is divided into four 32-word segments. Each cache segment may
|
|
contain up to 32 words of a 32-word segment in memory. This memory seg-
|
|
|
|
|
|
5-20
|
|
CPU Registers and Instruction Cache - Instruction Cache
|
|
|
|
ment is a block of 32 contiguous words beginning at an even 32-word
|
|
boundary in memory.
|
|
Each cache segment is divided into eight subsegments; each subsegment
|
|
contains four words. Dividing each segment into subsegments reduces the
|
|
number of word fetches required from memory when fewer than 32 words of
|
|
a memory segment are used. Each of the four cache segments is associated
|
|
with a segment start address (SSA) register. Figure 5-7 shows how an in-
|
|
struction word is partitioned into the components used by the cache control
|
|
algorithm.
|
|
If-~------- 32-BIt Unear Addr888-------+l~1
|
|
|
|
f 23B1t8 ~
|
|
II I _ _ ~mml_
|
|
word address are always O.
|
|
Instruotlon word address
|
|
within subsegment
|
|
Subsegment addrese
|
|
L..-_ _ _ _ _ _ _ _ _ _ _ _ _ Segment start address
|
|
(SSA register)
|
|
|
|
Figure 5-7. Segment Start Address
|
|
|
|
The 23 bits of the SSA register correspond to the 23 MSBs of the segment's
|
|
memory address. These 23 MSBs are common to all eight subsegments within
|
|
a segment. The next three bits (bits 6-8) identify one of the eight subseg-
|
|
ments. Bits 4 and 5 identify one of the four words contained in a subsegment.
|
|
The four LSBs are always Os because instructions are aligned on word boun-
|
|
daries.
|
|
|
|
5.4.2 Cache Replacement Algorithm
|
|
When the TMS3401 0 requests an instruction word from a segment that is not
|
|
in the cache, the contents of one of the four cache-resident segments must
|
|
be discarded to make room for the segment that contains the requested word.
|
|
A modified form of the least-recently-used (LRU) replacement algorithm is
|
|
used to select the segment to be discarded.
|
|
The LRU segment manager (part of the cache control logic) maintains an LRU
|
|
stack to track use of the four segments. The LRU stack contains a queue of
|
|
segment numbers, 0 through 3. Each time a segment is accessed, its segment
|
|
number is moved to the top of the stack, pushing the other segment numbers
|
|
down as necessary to make room at the top. Thus, the number at the top of
|
|
the LRU stack identifies the most-recently-used segment and the number at
|
|
the bottom identifies the least-recently-used segment.
|
|
When a new segment must be loaded into cache, the least-recently-used
|
|
segment is discarded. The eight P flags (described in Section 5.4.3) of the
|
|
selected segment are set to Os, and the segment's SSA register is loaded with
|
|
the new segment address. After the requested subsegment has been loaded
|
|
from memory, its P flag is set to 1, and the requested instruction fetch is al-
|
|
lowed to complete.
|
|
Following a reset, all P flags in the cache are set to 0 and the four segment
|
|
numbers in the LRU stack are stored in numerical order (0-1-2-3).
|
|
|
|
|
|
5-21
|
|
CPU Registers and Instruction Cache - Instruction Cache
|
|
|
|
5.4.3 Cache Operation
|
|
When the TMS3401 0 requests an instruction word, it checks to see if the word
|
|
is contained in cache. First, it compares the 23 MSBs of the instruction ad-
|
|
dress to the four SSA registers. If a match is found, the processor searches for
|
|
the appropriate subsegment. A present (P) flag, associated with each sub-
|
|
segment, indicates the presence of a particular subsegment within a cache
|
|
segment. P=1 indicates that the requested word is in cache; this is called a
|
|
cache hit. If there is no match, or if there is a match and P=O, the word is not
|
|
in cache; this is called a cache miss.
|
|
|
|
5.4.3.1 Cache Hit
|
|
The cache contains the requested instruction word. The processor performs
|
|
the following actions:
|
|
1) A short (one machine state) access cycle reads the instruction word from
|
|
cache.
|
|
2) The segment number is moved to the top of the LRU stack, pushing the
|
|
other three segment numbers toward the bottom of the stack.
|
|
Due to pipelining, instruction fetches from the cache frequently overlap com-
|
|
pletion of preceding instructions. The overhead due to instruction fetches in
|
|
such cases is effectively zero.
|
|
|
|
5.4.3.2 Cache Miss
|
|
The cache does not contain the instruction word. There are two types of
|
|
cache miss - subsegment miss and segment miss.
|
|
|
|
• Subsegment Miss. The 23 MSBs of the instruction word address
|
|
match one of the four SSA registers' 23 MSBs; that is, the appropriate
|
|
segment is in the cache. However, the P flag for the requested subseg-
|
|
ment is not set. The processor performs the following actions:
|
|
1) The four-word subsegment containing the requested instruction
|
|
word is read from local memory into the cache.
|
|
2) The segment number is moved to the top of the LRU stack, push-
|
|
ing the other three segment numbers toward the bottom of the
|
|
stack.
|
|
3) The subsegment's P flag is set.
|
|
4) The instruction word is read from the cache.
|
|
|
|
• Segment Miss. The instruction word address does not match any of
|
|
the SSA registers. The processor performs the following actions:
|
|
1) The least-recently-used segment is selected for replacement; the P
|
|
flags of all eight subsegments are cleared.
|
|
2) The SSA register for the selected segment is loaded with the 23
|
|
MSBs of the address of the requested instruction word.
|
|
|
|
|
|
|
|
|
|
5-22
|
|
CPU Registers and Instruction Cache - Instruction Cache
|
|
|
|
3) The four-word subsegment in memory that contains the requested
|
|
instruction word is read into the cache. It is placed in the appro-
|
|
priate subsegment of the least-recently-used segment. The sub-
|
|
segment's P flag is set to 1.
|
|
4) The LRU stack is adjusted by moving the number of the new seg-
|
|
ment from the bottom (indicating that it is least recently used) to
|
|
the top (indicating that it is most recently used). This pushes the
|
|
other three segment numbers in the stack down one position.
|
|
5) The instruction word is read from the cache.
|
|
|
|
5.4.4 Self-Modifying Code
|
|
Avoid using self-modifying code; it can cause unpredictable results. When a
|
|
program modifies its own instructions, only the copy of the instruction that
|
|
resides in external memory is affected. Copies of the instructions that reside
|
|
in cache are not modified, and the internal control logic does not attempt to
|
|
detect this situation.
|
|
|
|
5.4.5 Flushing the Cache
|
|
Flushing the cache sets it to an initial state which is identical to the state of
|
|
the cache following reset. The cache is empty and all 32 P flags are set to O.
|
|
The cache is flushed by setting the CF (cache flush) bit in the HSTCTL register
|
|
to 1. The CF bit retains the last value loaded until a new value is loaded or
|
|
until the TMS3401 0 is reset. The contents of the cache remain flushed as long
|
|
as the CF bit is set to 1. All instruction fetches bypass the cache and are ac-
|
|
cessed directly from memory.
|
|
Unless the cache is disabled, normal cache operation will resume when the
|
|
CF bit is set to O.
|
|
One use for flushing the cache is to facilitate downloading new code from a
|
|
host processor to TMS34010 local memory. The host typically halts the
|
|
TMS34010 during downloading by writing a 1 to the HLT bit in the HSTCTL
|
|
register. Before allowing the TMS34010 to execute downloaded code, the
|
|
host should flush the cache to purge it of stale instructions.
|
|
For performance reasons, the CD bit should not remain set to 1 for long peri-
|
|
ods. While CD=1, each instruction-word fetch is interpreted as a cache miss,
|
|
causing the four words in the subsegment to be fetched from memory.
|
|
Though the word pointed to by the PC is executed, none of the four words is
|
|
preserved in cache.
|
|
|
|
|
|
|
|
|
|
5-23
|
|
CPU Registers and Instruction Cache - Instruction Cache
|
|
|
|
5.4.6 Cache Disable
|
|
Disabling the cache facilitates program debugging and emulation. The cache
|
|
is disabled by setting the CD (cache disable) bit in the CONTROL register to
|
|
1. While disabled, the cache is bypassed and all instructions are fetched from
|
|
external memory.
|
|
CD=1 is similar in effect to CF=1, with several exceptions:
|
|
|
|
• While CD=1 and CF=O, data already in the cache are protected from
|
|
change. When the CD bit is set back to 0, the state of the cache prior
|
|
to setting the CD bit to 1 is restored. The instructions in the cache are
|
|
once again available for execution. If the contents of the cache become
|
|
invalid while CD=1, they can be flushed by setting CF to 1.
|
|
|
|
• While CD=1 and CF=O, each instruction word is fetched from memory
|
|
as it is requested, but the other three words in the subsegment are not
|
|
fetched. In contrast, if CF=1 and CD=O, all four words in the subseg-
|
|
ment that contain the requested instruction word are fetched, although
|
|
all but the requested word are immediately discarded.
|
|
The CD bit can be manipulated to preserve code in the cache for faster exe-
|
|
cution in some time-critical applications. For example, if an inner loop just
|
|
exceeds 256 bytes, most of the loop, but not all of it, can fit in the cache.
|
|
During execution of the few instructions that are not in the cache, the CD bit
|
|
can be set to 1 to prevent the code in the cache from being replaced. In this
|
|
instance, the loop's execution speed is improved by eliminating the thrashing
|
|
of cache contents. Use this technique carefully; in some cases, it can nega-
|
|
tively affect execution speed.
|
|
|
|
5.4.7 Performance with Cache Enabled versus Cache Disabled
|
|
When the instruction cache is disabled, instruction words are fetched from
|
|
external memory. Assuming no wait states are necessary, each instruction
|
|
fetch from external memory adds 3 machine cycles to the access time. This is
|
|
considerably slower than a program which uses the cache efficiently (when
|
|
each word in cache is used several times before it is replaced).
|
|
A less efficient use of cache occurs when words in cache are used only once
|
|
before replacement. This produces a cache miss every fourth word (even in
|
|
this case, operation is usually much better than operation when the cache is
|
|
disabled). With the cache enabled, the time penalty due to cache misses in
|
|
this case is 2.25 machine states per single-word instruction (compare this to
|
|
3 states when the cache is disabled), which is calculated as follows:
|
|
|
|
• Eight machine cycles are required to load four words into cache from
|
|
memory.
|
|
• An additional machine state is required to start processing the in-
|
|
struction.
|
|
• Dividing the total of nine machine states by four instruction words yields
|
|
an average of 2.25 machine states per instruction word.
|
|
Performance using the cache is nearly always better than performance with the
|
|
cache disabled. There are two exceptions. The first occurs when the code
|
|
contains so many jumps that only a portion of each subsegment is executed
|
|
before control is transferred to another subsegment. The second occurs when
|
|
|
|
5-24
|
|
CPU Registers and Instruction Cache - Cachet Internal Parallelism
|
|
|
|
an inner loop is larger than the cache, in which case only some portion of the
|
|
instructions in the inner loop can be contained in the cache at any time. In this
|
|
case, performance may be improved by manipulating the CD bit as described
|
|
in Section 5.4.6.
|
|
While the cache is disabled, the TMS34010's internal memory controller
|
|
fetches each instruction word from memory only as it is requested by the in-
|
|
ternal execution unit. This differs from operation with the cache enabled, in
|
|
which case a cache miss causes the entire four-word subsegment containing
|
|
the requested instruction word to be loaded into the cache at once.
|
|
|
|
|
|
|
|
5.5 Internal Parallelism
|
|
Figure 5-8 illustrates the internal data paths associated with TMS3401 0 pro-
|
|
cessor functions. The TMS3401 0 has a single, logical memory space for sto-
|
|
rage of both data and instructions. However, internal parallelism provides the
|
|
TMS34010 with the benefits found in architectures which contain separate
|
|
data and instruction storage (sometimes referred to as Harvard architectures).
|
|
The ability to fetch instructions from cache in parallel with data accesses from
|
|
memory greatly enhances execution speed. Hardware parallelism allows the
|
|
following three storage areas to be accessed simultaneously:
|
|
|
|
• Instruction cache
|
|
• Dual-ported, general-purpose register files A and B
|
|
• External memory
|
|
|
|
,------------------------------'
|
|
ITM834010
|
|
I
|
|
I
|
|
I Instruction Instruotlons
|
|
Caohe
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I General- ... Data Memory
|
|
I pu=
|
|
Re era
|
|
CPU Interfaoe t---+-t External
|
|
Memory
|
|
I I
|
|
I I
|
|
I I
|
|
I I
|
|
I I
|
|
1_ _ _ _ _ _ - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
|
|
Figure 5-8. Internal Data Paths
|
|
|
|
|
|
|
|
|
|
5-25
|
|
CPU Registers and Instruction Cache - Internal Parallelism
|
|
|
|
Each storage area can also be accessed independently of the other two. This
|
|
allows the TMS3401 0 to perform the following actions in parallel during a pair
|
|
of machine states:
|
|
|
|
• One external memory cycle
|
|
• Two instruction fetches from cache
|
|
• Four reads and two writes to the general-purpose register files
|
|
|
|
The need to schedule conflicting internal operations can limit the TMS3401 O's
|
|
ability to perform these actions in parallel. For example, an instruction which
|
|
requires the memory controller to perform a read must finish executing before
|
|
the next instruction can be executed.
|
|
Figure 5-9 illustrates an example of internal parallelism. Figure 5-9 a shows
|
|
three activities occurring in parallel:
|
|
|
|
• Instructions are fetched from cache.
|
|
• Instructions are executed through the general-purpose registers and
|
|
the ALU.
|
|
• The local memory interface controller performs memory accesses.
|
|
Figure 5-9 a represents execution of the code in Figure 5-9 b, which is the
|
|
inner loop of a graphics routine. The memory controller accesses pixels while
|
|
the ALU fetches instructions from cache. The memory controller completes a
|
|
write cycle while execution begins on the next instruction.
|
|
(I)
|
|
~ One iteration ~I
|
|
|
|
State: ~1""2"",,3*4"""5*e""'7""8*9*10*11*12*-
|
|
MOVE ADD PIXT ADD DSJS MOVE
|
|
Instruction Fetch:~~t~~~~~tl I B It?~ttl I 0 nJ~ttl m
|
|
|
|
~ ~
|
|
Memory Interface:
|
|
|
|
Read Cycle Read Write
|
|
(b)
|
|
A L1: MOVE E1+,B10,O Get DB..TAX
|
|
B ADD B10,88 Adjust pixel pointer
|
|
C PIXT wB1,.aa Draw next pixel
|
|
o ADD BO,B1 Add field size
|
|
E DSJS B11,L1 Loop N Times
|
|
|
|
Figure 5-9. Parallel Operation of Cache, Execution Unit, and Memory Interface
|
|
|
|
|
|
|
|
|
|
5-26
|
|
Section 6
|
|
I/O Registers
|
|
|
|
|
|
The TMS3401 O's 28 on-chip I/O registers control and monitor the following
|
|
functions:
|
|
|
|
• Host interface communications
|
|
|
|
• Local memory interface control
|
|
|
|
• Interrupt control
|
|
|
|
• Video timing and screen refresh
|
|
This section describes these functions, I/O register addressing, and then pro-
|
|
vides an alphabetical presentation of the I/O registers:
|
|
Section Page
|
|
6.1 I/O Register Addressing ........................................................................... 6-2
|
|
6.2 Latency of Writes to I/O Registers .......................................................... 6-4
|
|
6.3 I/O Registers Summary ............................................................................. 6-5
|
|
6.4 Alphabetical Listing of I/O Registers .................................................... 6-10
|
|
|
|
|
|
|
|
|
|
6-1
|
|
I/O Registers - Addressing
|
|
|
|
|
|
|
|
6.1 I/O Register Addressing
|
|
TMS34010 I/O registers occupy addresses COOOOOOOh to C00001 FFh. These
|
|
registers can be directly accessed by the TMS34010; they can also be indi-
|
|
rectly accessed by a host processor through the host interface registers. For
|
|
example, the host processor can indirectly read the contents of the PSIZE re-
|
|
gister by loading the address C0000150h into the HSTADRL and HSTADRH
|
|
registers, and reading the HSTDATA register. Figure 6-1 illustrates the I/O
|
|
register memory map.
|
|
C00001FOh REFCNT DRAM Refresh Count
|
|
C00001EOh DPYADR Display Address
|
|
C00001DOh VCOUNT Vertical Count
|
|
C00001COh HCOUNT Horizontal Count
|
|
C00001BOh DPYTAP Display Tap Point
|
|
C00001AOh
|
|
C0000190h Reserved
|
|
C0000180h
|
|
C0000170h
|
|
C0000160h PMASK Plane Mask
|
|
C0000150h PSIZE Pixel Size
|
|
C0000140h CONVDP Destination Conversion Pitch
|
|
C0000130h CONVSP Source Conversion Pitch
|
|
C0000120h INTPEND Interrupt Pending
|
|
C0000110h INTENB I nterrupt Enable
|
|
C0000100h HSTCTLH Host Control (MSBs)
|
|
COOOOOFOh HSTCTLL Host Control (LSBs)
|
|
COOOOOEOh HSTADRH Host Address (MSBs)
|
|
COOOOODOh HSTADRL Host Address (LSBs)
|
|
COOOOOCOh HSTDATA Host Data
|
|
COOOOOBOh CONTROL Control
|
|
COOOOOAOh DPYINT Display Interrupt
|
|
C0000090h DPYSTRT Display Start
|
|
C0000080h DPYCTL Display Control
|
|
C0000070h VTOTAL Vertical Total
|
|
C0000060h VSBLNK Vertical Start Blank
|
|
C0000050h VEBLNK Vertical End Blank
|
|
C0000040h VESYNC Vertical End Sync
|
|
C0000030h HTOTAL Horizontal Total
|
|
C0000020h HSBLNK Horizontal Start Blank
|
|
C0000010h HEBLNK Horizontal End Blank
|
|
COOOOOOOh HESYNC Horizontal End Sync
|
|
|
|
Figure 6-1. I/O Register Memory Map
|
|
|
|
The two MSBs of an I/O register's 32-bit internal address are not output on
|
|
the TMS3401 0 pins; however, the address is fully decoded internally. Thus,
|
|
the two MSBs of a 32-bit address must both be 1s for an address to be re-
|
|
cognized as that of an I/O register. When an I/O register is accessed, the ac-
|
|
companying memory cycle (as seen at the TMS3401 0 pins) is altered so that
|
|
the row address strobe is output, but the column address strobe is inhibited.
|
|
This is true whether the access is initiated directly by the TMS3401 0 or indi-
|
|
rectly by a host processor.
|
|
|
|
|
|
|
|
6-2
|
|
I/O Registers - Addressing
|
|
|
|
|
|
An access of any address in the range COOOOOOOh-C00001 FFh is decoded as
|
|
an access of an on-chip register location, and the column address strobe re-
|
|
mains inactive high through the cycle. An access of any location outside this
|
|
range is treated as an access of an external memory location.
|
|
All I/O registers, with one exception, are cleared to 0 at reset. The exception
|
|
is the HLT (halt) bit in the HSTCTL register, which is set depending on the
|
|
value at the HCS input pin at the end of the reset pulse:
|
|
|
|
• If HCS is high at reset, the HLT bit is set to 1
|
|
• If HCS is low at reset, the HLT bit is set to 0
|
|
|
|
|
|
|
|
|
|
6-3
|
|
I/O Registers - Latency of Writes to I/O Registers
|
|
|
|
|
|
|
|
6.2 Latency of Writes to I/O Registers
|
|
When an instruction alters the contents of an I/O register, the memory write
|
|
cycle that modifies the register may not be completed before execution of the
|
|
next instruction begins. If the second instruction relies on the I/O register
|
|
value loaded by the first instruction, the second instruction may cause incor-
|
|
rect results. This type of problem could occur, for example, if a PIXBLT in-
|
|
struction were immediately preceded by a MOVE register-to-memory
|
|
instruction that modified the CONTROL register. This situation is easily
|
|
avoided by ensuring that the write to the I/O register is allowed to complete
|
|
before the I/O register value is used as an implied operand by a subsequent
|
|
instruction. For example, by immediately following a write to an I/O register
|
|
with a read of the register, the write is certain to have been completed by the
|
|
time subsequent instructions begin execution.
|
|
Internal to the TMS34010, the memory controller operates semi-autono-
|
|
mously with respect to the execution unit that processes instructions. Paral-
|
|
lelism between the execution unit and memory controller may allow a write
|
|
initiated by an instruction to be completed only after one or more subsequent
|
|
instructions have been executed. An instruction that alters an I/O register (or
|
|
any other address in memory) transmits its request for a write cycle to the
|
|
memory controller. Once the request is accepted, the memory controller is
|
|
responsible for completing the write cycle; in the meantime, execution of the
|
|
next instruction can begin.
|
|
A field insertion request submitted to the memory controller can take as many
|
|
as five cycles to complete in the case in which a field of 18 or more bits
|
|
straddles two word boundaries. This case requires a read-modify-write oper-
|
|
ation to one word, a write to a second word, and a read-modify-write opera-
|
|
tion to a third word. Although this would be an unusual way of altering
|
|
locations in the I/O register file, it represents the theoretical worst case number
|
|
of memory cycles for a field insertion.
|
|
The start of a pending field-insertion cycle may be delayed by the following
|
|
conditions:
|
|
|
|
• Screen-refresh cycle
|
|
• DRAM-refresh cycle
|
|
• Host-indirect read or write cycle
|
|
• Wait states required for slower memories
|
|
• Hold request from an external device
|
|
Any uncertainty as to whether a pending write to memory has been completed
|
|
can be eliminated by making use of the fact that only one field insertion re-
|
|
quest can be queued at the memory controller at a time. An instruction that
|
|
requests a second memory access before the earlier field insertion has been
|
|
completed will be forced to wait. Hence, by following an instruction that al-
|
|
ters an I/O register with an instruction that requests a second memory access
|
|
(any memory access), the I/O register is certain to have been updated before
|
|
the second instruction finishes executing.
|
|
|
|
|
|
|
|
|
|
6-4
|
|
I/O Registers - Summary
|
|
|
|
|
|
|
|
6.3 I/O Registers Summary
|
|
Table 6-1 summarizes the I/O registers. Descriptions of the four categories
|
|
of I/O registers follow the table.
|
|
Table 6-1. I/O Registers Summary
|
|
|
|
Host Interface Registers
|
|
Register Address Description
|
|
HSTADRH COOOOOEOh Host interface address, high word. Contains the 16 MSBs of a
|
|
32-bit pointer address used by a host processor for indirect accesses of
|
|
TMS34010 local memory.
|
|
HSTADRL COOOOODOh Host interface address, low word. Contains the 16 LSBs of a 32-bit
|
|
pointer address used by a host processor for indirect accesses of
|
|
TMS34010 local memory.
|
|
HSTCTLH COOOO100h Host interface control. high byte Contains seven programmable bits
|
|
that control host interface functions:
|
|
NMI (bit 8) - Nonmaskable interrupt
|
|
NMIM (bit 9) - NMI mode bit
|
|
INCW (bit 11) - Increment pointer address on write
|
|
INCR (bit 12) - Increment pointer address on read
|
|
LBL (bit 13) - Lower byte last
|
|
CF(bit14) - Cache flush
|
|
HLT (bit 15) - Halt TMS3401 0 execution
|
|
Bits 0 through 7 and 10 are reserved
|
|
HSTCTLL COOOOOFOh Host interface control. low byte. Contains eight programmable bits
|
|
that control host interface functions:
|
|
MSGIN (bits 0-2) - Input message buffer
|
|
INTIN (bit 3) - Input interrupt bit
|
|
MSGOUT (bits 4-6) - Output message buffer
|
|
INTOUT (bit 7) - Output interrupt bit
|
|
Bits 8 through 15 are reserved
|
|
HSTDATA COOOOOCOh Host interface data. Buffers data transferred between TMS3401 0 local
|
|
memory and a host processor.
|
|
Local Memory Interface Registers
|
|
Register Address Description
|
|
CONTROLt COOOOOBOh Memory control. Contains several parameters that control local mem-
|
|
ory interface operation:
|
|
RM (bit 2) - D RAM refresh mode
|
|
RR (bits 3-4) - DRAM refresh rate
|
|
T (bit 5) - Transparency enable
|
|
W (bits 6-7) - Window violation detection mode
|
|
PBH (bit 8) - PixBlt horizontal direction
|
|
PBV (bit 9) - PixBlt vertical direction
|
|
PPOP (bits 10-14) - Pixel processing operation select
|
|
CD (bit 15) - Cache disable
|
|
Bits 0 and 1 are reserved
|
|
CONVDPt COOOO140h Destination pitch conversion factor. Used during XY to linear con-
|
|
version of a destination memory address.
|
|
CONVSPt COOOO130h Source pitch conversion factor. Used during XY to linear conversion
|
|
of a source memory address.
|
|
t Implied graphics operands
|
|
|
|
|
|
|
|
|
|
6-5
|
|
I/O Registers - Summary
|
|
|
|
|
|
Table 6-1. I/O Registers Summary (Continued)
|
|
|
|
Local Memory Interface Registers (Continued)
|
|
Register Address Description
|
|
PMASKt COOO0160h Plane mask register. Selectively enables/disables the various planes
|
|
in the bit map of a display system in which each pixel is represented by
|
|
multiple bits.
|
|
PSIZEt COOO0150h Pixel size register. Specifies the pixel size (in bits). Possible pixel
|
|
sizes include 1, 2, 4, 8, and 16 bits.
|
|
REFCNT COOO01FOh Refresh count register. Generates the addresses output during DRAM
|
|
refresh cycles and counts the intervals between successive DRAM refresh
|
|
cycles:
|
|
RINTVL (bits 2-7) - Refresh interval counter
|
|
ROWADR (bits 8-15) - Row address
|
|
Bits 0 and 1 are reserved
|
|
Interrupt Control Registers
|
|
Register Address Description
|
|
INTENB COOO0110h Interrupt enable. Contains the interrupt mask used to selectively
|
|
enable/disable the three internal and two external interrupts:
|
|
X1 E (bit 1) - External interrupt 1 enable
|
|
X2E (bit 2) - External interrupt 2 enable
|
|
HIE (bit 9) - Host interrupt enable
|
|
DIE (bit 10) - Display interrupt enable
|
|
WVE (bit 11) - Window violation interrupt enable
|
|
Bits 0, 3 through 8, and 12 through 15 are reserved
|
|
INTPEND COOO0120h Interrupt pending. Indicates which interrupt requests are currently
|
|
pending:
|
|
X1 P (bit 1 ) - External interrupt 1 pending
|
|
X2P (bit 2) - External interrupt 2 pending
|
|
HIP (bit 9) - Host interrupt pending
|
|
DIP (bit 10) - Display interrupt pending
|
|
WVP (bit 11) - Window violation interrupt pending
|
|
Bits 0, 3 through 8, and 12 through 15 are reserved
|
|
Video Timing and Screen Refresh Registers
|
|
Register Address Description
|
|
DPYADR COOO01EOh Display address. Counts the number of scan lines output between
|
|
successive screen refresh cycles and contains the source of the row and
|
|
column addresses output during a screen refresh cycle:
|
|
LNCNT (bits 0-1 ) - Scan line counter
|
|
SRFADR (bits 2-15) - Screen refresh address
|
|
DPYCTL COOOO080h Display control. Contains several parameters that control video timing
|
|
signals:
|
|
HSD (bit 0) - Horizontal sync direction
|
|
DUDATE (bits 2-9) - Display address update
|
|
ORG (bit 10) - Screen origin select
|
|
SRT (bit 11) - VRAM serial-register transfer enable
|
|
SRE (bit 12) - Screen refresh enable
|
|
DXV (bit 13) - Disable external video
|
|
NIL (bit 14) - Noninterlaced video enable
|
|
ENV (bit 15) - Enable video
|
|
Bit 1 is reserved.
|
|
DPYINT COOOOOAOh Display interrupt. Specifies the next scan line that will cause a display
|
|
interrupt request.
|
|
t Implied graphics operands
|
|
|
|
|
|
|
|
6-6
|
|
I/O Registers - Summary
|
|
|
|
|
|
|
|
Table 6-1. I/O Registers Summary (Concluded)
|
|
|
|
Video Timing and Screen Refresh Registers (Continued)
|
|
Register Address Description
|
|
DPYSTRT COOOOO90h Display start address. Provides control of the automatic memory-to-
|
|
register cycles necessary to refresh a screen:
|
|
LCSTRT (bits 0-1) - Specifies the number of scan lines to
|
|
be displayed between screen refreshes
|
|
SRSTRT (bits 2-15)- Starting screen-refresh address
|
|
DPYTAP COOOO1BOh Display tap point address. Contains a VRAM tap point address output
|
|
during shift register transfer cycles.
|
|
HCOUNT COOOO1COh Horizontal count. Counts the number of VCLK periods per horizontal
|
|
scan line.
|
|
HEBLNK COOOOO10h Horizontal end blank. Designates the endpoint for horizontal blanking.
|
|
HESYNC COOOOOOOh Horizontal end sync. Specifies the endpoint of the horizontal sync
|
|
interval.
|
|
HSBLNK COOOOO20h Horizontal start blank. Specifies the starting point of the horizontal
|
|
blanking interval.
|
|
HTOTAL COOOOO30h Horizontal total. Specifies the total number of VCLK periods per hori-
|
|
zontal scan line.
|
|
VCOUNT COOOO1DOh Vertical count. Counts the horizontal scan lines in a video display.
|
|
VEBLNK COOOOO50h Vertical end blank. Specifies the endpoint of the vertical blanking in-
|
|
terval.
|
|
VESYNC COOOOO40h Vertical end sync. Specifies the endpoint of the vertical sync pulse.
|
|
VSBLNK COOOOO60h Vertical start blank. Specifies the starting point of the vertical blank-
|
|
ing interval.
|
|
VTOTAL COOOOO70h Vertical total. Specifies the value of VCOUNT at which the vertical
|
|
sync pulse begins.
|
|
|
|
|
|
|
|
6.3.1 Host Interface Registers
|
|
Five I/O registers are dedicated to host interface communications, allowing the
|
|
TMS34010 to:
|
|
|
|
• Directly transfer status messages or command information
|
|
|
|
• Indirectly transfer large blocks of data through local memory
|
|
|
|
• Receive interrupt requests from a host processor
|
|
|
|
• Transfer interrupt requests to a host processor
|
|
The ability to indirectly transfer large blocks of data makes the host interface
|
|
extremely flexible. For example, a host can transfer blocks of commands to the
|
|
TMS34010, can halt the TMS3401 0 temporarily to download a new program
|
|
for the TMS3401 0 to execute, or can read blocks of graphics data generated
|
|
by the TMS3401 O.
|
|
The host interface registers occupy five TMS3401 0 register locations, and are
|
|
typically mapped into four consecutive 16-bit locations in the memory or I/O
|
|
address space of the host processor. The host processor accesses the
|
|
|
|
|
|
6-7
|
|
1/0 Registers - Summary
|
|
|
|
|
|
HSTCTLL and HSTCTLH registers as the eight LSBs and eight MSBs, re-
|
|
spectively, of a single location (the HSTCTL register).
|
|
The HSTCTL (host control) register controls functions such as the transfer of
|
|
interrupt requests and 3-bit status codes between a host processor and the
|
|
TMS34010. These requests are typically used by software to coordinate the
|
|
transfer of large blocks of data through TMS34010 local memory. The
|
|
HSTCTL register also allows the host to flush the instruction cache, halt
|
|
TMS34010 execution, and transmit nonmaskable interrupt requests to the
|
|
TMS34010.
|
|
The host processor uses the remaining three host interface registers to indi-
|
|
rectly access selected data blocks within TMS34010 local memory. The
|
|
HSTADRL and HSTADRH registers contain a 32-bit address that points to the
|
|
current word location in memory. The HSTDATA register buffers data trans-
|
|
ferred to and from the memory under control of the host processor. The host
|
|
interface can be programmed to automatically increment the address pointer
|
|
following each transfer, providing the host with rapid access to a block of se-
|
|
quential locations.
|
|
|
|
6.3.2 Local Memory Interface Registers
|
|
Six of the I/O registers support local memory interface functions such as:
|
|
|
|
• Frequency of DRAM refresh cycles
|
|
|
|
• Type of DRAM refresh cycles
|
|
|
|
• Pixel size
|
|
|
|
• Color plane masking
|
|
|
|
• Various pixel access control parameters
|
|
|
|
6.3.3 Interrupt Interface Registers
|
|
Two I/O registers monitor and mask interrupt requests to the TMS34010.
|
|
These include two external and three internal interrupts. External interrupt re-
|
|
quests are transmitted to the TMS3401 0 via input pins L1NT1 and L1NT2. The
|
|
TMS34010 can be programmed to generate an internal interrupt request in
|
|
response to any of the following conditions:
|
|
|
|
• Window violation - an attempt is made to write a pixel to a location in-
|
|
side or outside a specified window, depending on the selected win-
|
|
dowing mode.
|
|
|
|
• Host interrupt - the host processor sets the INTI N interrupt request bit
|
|
in the HSTCTL register.
|
|
|
|
• Display interrupt - the specified line number in a frame is displayed on
|
|
the monitor.
|
|
A nonmaskable interrupt occurs when the host processor sets the NMI bit in
|
|
the HSTCTL host interface register. Reset is controlled by a dedicated pin.
|
|
|
|
|
|
6-8
|
|
I/O Registers - Summary
|
|
|
|
|
|
|
|
6.3.4 Video Timing and Screen Refresh Registers
|
|
Fifteen I/O registers support video timing and screen refresh functions. The
|
|
TMS34010's on-chip CRT timing generator creates the sync and blanking
|
|
signals used to drive the CRT monitor in a bit-mapped display system. The
|
|
timing of these signals can be controlled through the appropriate I/O registers,
|
|
allowing the TMS3401 0 to support various screen resolutions and interlaced
|
|
or noninterlaced video.
|
|
The TMS3401 0 directly supports VRAMs (such as the TMS4461) by gener-
|
|
ating the memory-to-register cycles necessary to refresh the screen of a CRT
|
|
monitor. Programmable features include the locations in memory to be dis-
|
|
played on the monitor, as well as the number of horizontal scan lines displayed
|
|
between individual screen-refresh cycles.
|
|
The TMS34010 can optionally be programmed to synchronize to externally
|
|
generated sync signals. This permits TMS34010-created graphics images to
|
|
be superimposed upon externally-created images. This external sync mode
|
|
can also be used to synchronize the video timing of two or more TMS3401 0
|
|
devices in a multiple-TMS3401 0 display system.
|
|
|
|
|
|
|
|
|
|
6-9
|
|
I/O Registers - Alphabetical Listing
|
|
|
|
|
|
|
|
6.4 Alphabetical listing of I/O Registers
|
|
The remainder of this section describes the I/O registers individually; they are
|
|
listed in alphabetical order. Fields within each register are identified and
|
|
functions associated with each register are discussed.
|
|
Bits within I/O registers that are identified as reserved are not used by the
|
|
TMS34010. When read, a reserved bit returns the last value written to it. No
|
|
control function, however, is affected by this value. All reserved bits are
|
|
loaded with Os at reset. A good software practice is to maintain Os in these
|
|
bits.
|
|
|
|
|
|
|
|
|
|
6-10
|
|
Memory Control Register CONTROL
|
|
|
|
|
|
Address COOOOOBOh
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I CD I PPOP IPBV IPBH I W T RR I RM I reserved I
|
|
|
|
Fields Bits Name Function
|
|
0-1 Reserved Not used
|
|
2RM DRAM refresh mode
|
|
3-4 RR DRAM refresh rate
|
|
5 T Pixel transparency enable
|
|
6-7 W Window violation detection mode
|
|
8 PBH PixBlt horizontal direction
|
|
9 PBV PixBlt vertical direction
|
|
10-14 PPOP Pixel processing operation select
|
|
15 CD Instruction cache disable
|
|
|
|
Description The CONTROL register contains several control parameters used to config-
|
|
ure local memory interface operation.
|
|
|
|
• RM (DRAM refresh mode, bit 2)
|
|
The RM bit selects the type of DRAM refresh cycle to be performed. De-
|
|
pending on the value of this bit, the TMS34010 performs each DRAM-
|
|
refresh cycle as either a RAS-only cycle or as a CAS-before-RAS cycle.
|
|
DRAMs and VRAMs that rely on the TMS34010 to generate an 8-bit row
|
|
address during a refresh cycle typically use the RAS-only refresh cycle, while
|
|
those that generate their own 9-bit row address internally use the CAS-be-
|
|
fore- RAS refresh cycle.
|
|
|
|
RM Description
|
|
0 Selects RAS-only refresh cycle
|
|
1 Selects CAS-before- RAS refresh cycle
|
|
|
|
|
|
• R R (DRAM refresh rate, bits 3 and 4)
|
|
The RR field controls the frequency of DRAM refresh cycles. The
|
|
TMS34010 automatically generates DRAM refresh cycles at regular inter-
|
|
vals. The duration of the interval is specified by the value of RR. If required,
|
|
DRAM refreshing can be disabled by setting RR to the appropriate value.
|
|
The initial value of RR after reset is 002. No DRAM refresh cycles are per-
|
|
formed while the TMS3401 0 RESET signal is active.
|
|
|
|
|
|
|
|
|
|
6-11
|
|
CONTROL Memory Control Register
|
|
|
|
|
|
RR Description
|
|
00 Refresh every 32 local clock periods
|
|
01 Refresh every 64 local clock periods
|
|
10 Reserved code
|
|
11 No DRAM refreshing
|
|
|
|
|
|
|
|
• T (Pixel transparency, bit 5)
|
|
The T bit enables or disables the pixel attribute of transparency. When
|
|
transparency is enabled, a value of 0 resulting from a pixel operation on
|
|
source and destination pixels is inhibited from overwriting the destination
|
|
pixel. In the case of a replace operation (PPOP = 0), a source pixel value
|
|
of 0 is inhibited from overwriting the destination pixel. Disabling transpar-
|
|
ency allows a pixel value of 0 to be written to the destination.
|
|
|
|
T Effect
|
|
0 Disable transparency
|
|
1 Enable transparency
|
|
|
|
|
|
|
|
• W (Window checking, bits 6 and 7)
|
|
The W field selects the course of action to be taken when a pixel operation
|
|
will cause a pixel to be written to a location lying either inside or outside the
|
|
specified window limits. Window checking applies only to attempts to write
|
|
to pixel locations defined by XY addresses; writes to pixel locations defined
|
|
by linear memory addresses are not affected. Nonpixel data writes are not
|
|
affected.
|
|
|
|
W Description
|
|
00 No pixel writes are inhibited, and no interrupt requests are generated
|
|
01 Generate interrupt request on attempt to write to pixel lying inside window,
|
|
and inhibit all pixel writes
|
|
10 Generate interrupt request on attempt to write to pixel lying outside window
|
|
11 Inhibit pixel writes outside window, but do not request interrupt
|
|
|
|
|
|
A request for a window violation interrupt can occur when W=012 or
|
|
W=102' The WVP bit in the INTPEND register is set to 1 to indicate that a
|
|
window violation has occurred. This in turn causes the TMS3401 0 to be
|
|
interrupted if the WVE bit in the I NTEN B register and the status I E bit are
|
|
set to 1.
|
|
|
|
• PBH (PixBlt horizontal direction, bit 8)
|
|
The PBH bit determines the horizontal direction (increasing X or decreasing
|
|
X) of pixel processing for the following instructions:
|
|
PIXBLT XY,XY
|
|
PIXBLT L,XY
|
|
|
|
|
|
6-12
|
|
Memory Control Register CONTROL
|
|
|
|
|
|
PIXBLT XY,L
|
|
PIXBLT L,L
|
|
|
|
PBH Effect
|
|
0 Increment X (move from left to right)
|
|
1 Decrement X (move from right to left)
|
|
|
|
|
|
• PBV (PixBlt vertical direction, bit 9)
|
|
The PBV bit determines the vertical direction (increasing Y or decreasing
|
|
Y) of pixel processing for the following instructions:
|
|
PIXBLT XY,XY
|
|
PIXBLT L,XY
|
|
PIXBLT XY,L
|
|
PIXBLT L,L
|
|
|
|
PBV Effectt
|
|
0 Increment Y (move from top to bottom)
|
|
1 Decrement Y (move from bottom to top)
|
|
t Default screen origin assumed
|
|
|
|
|
|
• PPOP (Pixel processing operation, bits 10-14)
|
|
The PPOP field selects the operation to be performed on the source and
|
|
destination pixels during a pixel operation. The following 16 PPOP codes
|
|
perform Boolean operations on pixels of 1, 2, 4, 8, and 16 bits.
|
|
|
|
PPOP Operation Description
|
|
00000 S--+D Replace destination with source
|
|
00001 SAND D --+ D AND source with destination
|
|
00010 SAND 0 --+ D AN D source with NOT destination
|
|
00011 O--+D Replace destination with Os
|
|
00100 S OR 0 --+ D OR source with NOT destination
|
|
00101 S XNOR D --+ D XNOR source with destination
|
|
00110 O--+D Negate destination
|
|
00111 S NOR D --+ D NOR source with destination
|
|
01000 S OR D --+ D OR source with destination
|
|
01001 D--+D No change in destination t
|
|
01010 S XOR D --+ D XOR source with destination
|
|
01011 SAND D --+ D AND NOT source with destination
|
|
01100 1--+D Replace destination with 1s
|
|
01101 S OR D --+ D OR NOT source with destination
|
|
01110 S NAND D --+ D NAN D source with destination
|
|
01111 S--+D Replace destination with NOT source
|
|
t Although the destination array is not changed by this operation,
|
|
memory cycles still occur.
|
|
|
|
|
|
The following six PPOP codes perform arithmetic operations on 4-, 8-, and
|
|
16- bit pixels (but not 1 or 2 bits).
|
|
|
|
|
|
|
|
|
|
6-13
|
|
CONTROL Memory Control Register
|
|
|
|
|
|
PPOP Operation Description
|
|
10000 O+S-+O Add source to destination
|
|
10001 AOOS(O,S) -+ 0 Add S to 0 with saturation
|
|
10010 O-S-+O Subtract source from destination
|
|
10011 SUBS(O,S) -+ 0 Subtract S from 0 with saturation
|
|
10100 MAX( D,S) -+ 0 Maximum of source and destination
|
|
10101 MIN(O,S) -+ 0 Minimum of source and destination
|
|
|
|
|
|
PPOP codes 101102 through 111112 are reserved.
|
|
Standard addition and subtraction allow the result of the operation to over-
|
|
flow. However, add-with-saturation and subtract-with-saturation (ADDS
|
|
and SUBS) do not allow overflow or underflow. In cases in which addition
|
|
would allow an overflow, ADDS produces a result whose value is all 1s. In
|
|
cases in which subtraction would allow an underflow, SUBS produces a
|
|
result whose value is all Os.
|
|
|
|
• CD (Cache disable, bit 15)
|
|
The CD bit selectively enables or disables the instruction cache.
|
|
|
|
CD Effect
|
|
0 Enable instruction cache
|
|
1 Disable instruction cache
|
|
|
|
|
|
When the cache is disabled, cache contents (including data, P flags, SSA
|
|
registers, and so on) remain undisturbed. While the cache remains disabled,
|
|
all instructions are fetched from memory rather than cache. When the cache
|
|
is subsequently enabled, its previous state (before it was disabled) is re-
|
|
stored. The instructions retained within the cache are once again available
|
|
for execution.
|
|
|
|
|
|
|
|
|
|
6-14
|
|
Destination Pitch Conversion Factor CONVDP
|
|
|
|
|
|
Address C0000140h
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I CONVDP
|
|
|
|
Description CONVDP is a full 16-bit register that contains a control parameter used
|
|
during execution of a pixel operation instruction. CONVDP is used with:
|
|
|
|
• XY addressing
|
|
|
|
• Window clipping
|
|
|
|
• PIXBLTs or FILLS (except for PIXBLT L,L) that process pixels from
|
|
the bottom of the array to the top (PBV=1 )
|
|
CONVDP is calculated as the result of an LMO instruction whose input
|
|
operand is the destination pitch value in register B3 (DPTCH). The fol-
|
|
lowing assembly code calculates the CONVDP value.
|
|
LMO B3,AO ; Convert DPTCH value
|
|
MOVE AO,@CONVDP,O ; place result in CONVDP register
|
|
In this example, AO is used as a scratch register. Constant CONVDP has
|
|
the value OC0000140h, and the size of Field 0 is 1 6 bits.
|
|
TMS34010 internal hardware uses the CONVDP value during XY -to-linear
|
|
conversion of a destination address. PIXBLT and FILL instructions which
|
|
specify the destination address in XY format use the DPTCH and CONVDP
|
|
values to convert the XY coordinates to a linear memory address before
|
|
actually beginning the pixel block move. During a PIXBLT or FILL in-
|
|
struction that requires preclipping of the destination array in the Y direction,
|
|
the TMS34010 uses the CONVDP value to calculate the effect of the
|
|
clipped starting Y coordinate on the starting linear address of the destina-
|
|
tion array. When a PIXBLT instruction's starting Y coordinate is specified
|
|
to lie in one of the lower two corners of the destination array (when
|
|
PBV=1), the TMS34010 uses CONVDP to calculate the linear address
|
|
corresponding to the specified starting coordinates.
|
|
The value contained in the five LSBs of CONVDP should be the 1 s com-
|
|
plement of lo92(DPTCH). When an XY address is specified for the desti-
|
|
nation, DPTCH must bea power of two; thus, lo92(DPTCH) is an integer.
|
|
During XY -to-linear conversion, the product of the Y value and the desti-
|
|
nation pitch is calculated by shifting Y left by lo92(DPTCH).
|
|
One instruction, the PIXBLT XY,L instruction, specifies the destination ad-
|
|
dress in linear format but also requires DPTCH to be a power of two. This
|
|
restriction is necessary when the PBV bit is set to 1.
|
|
|
|
|
|
|
|
|
|
6-15
|
|
CONVSP Source Pitch Conversion Factor
|
|
|
|
|
|
Address C0000130h
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I CONVSP I
|
|
Description CONVSP is a full 16-bit register that contains a control parameter used
|
|
during execution of a pixel operation instruction. CONVSP is used with:
|
|
|
|
• XY addressing
|
|
|
|
• Window clipping
|
|
|
|
• PIXBLTs or FILLS (except for PIXBLT L,L) that process pixels from
|
|
the bottom of the array to the top (PBV=1)
|
|
CONVSP is calculated as the result of an LMO instruction whose input
|
|
operand is the source pitch value in register B1 (SPTCH). The following
|
|
assembly code calculates the CONVSP value
|
|
LMO B1,AO ; Convert SPTCH value
|
|
MOVE AO,@CONVSP ; Place result in CONVSP register
|
|
In this example, AO is used as a scratch register. Constant CONVSP has the
|
|
value OC0000130h, and the size of Field 0 is 16 bits.
|
|
TMS34010 internal hardware uses the CONVSP value during XY -to-linear
|
|
conversion of a source address. PIXBLT and FI LL instructions which spe-
|
|
cify the source address in XY format use the SPTCH and CONVSP values
|
|
to convert the XY coordinates to a linear memory address before actually
|
|
beginning the pixel block move. During a PIXBLT or FILL instruction that
|
|
requires preclipping of the destination array in the Y direction, the starting
|
|
source address is modified to accommodate the resulting changes to the
|
|
starting destination address. When a PIXBLT instruction's starting Y coor-
|
|
dinate is specified to lie in one of the lower two corners of the destination
|
|
array (when PBV=1), the TMS3401 0 uses CONVSP to calculate the linear
|
|
address at the corresponding corner of the source array.
|
|
The value contained in the five LSBs of CONVSP should be the 1 s com-
|
|
plement of 1092(SPTCH). When an XY address is specified for the source,
|
|
SPTCH must be a power of two; thus, 1092(SPTCH) is an integer. During
|
|
XY -to-linear conversion, the product of the Y value and the source pitch is
|
|
calculated by shifting Y left by 1092(SPTCH).
|
|
Two instructions that specify the source address in linear format also require
|
|
SPTCH to be a power of two. This is necessary when window clipping is
|
|
required during execution of either of the following instructions:
|
|
|
|
• PIXBLT B,XY
|
|
• PIXBLT L,XY
|
|
It is also necessary when either of these two instructions is executed and
|
|
the PBV bit in the CONTROL register is set to 1. If PBV=O and window
|
|
clipping is disabled, or if window clipping is enabled but the specified array
|
|
does not require preclipping in the Y dimension, CONVSP is not used, and
|
|
SPTCH is not required to be a power of two.
|
|
|
|
|
|
6-16
|
|
Display Address Register DPYADR
|
|
|
|
|
|
Address C00001EOh
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
I SRFADR I LNCNT I
|
|
Fields Bits Name Function
|
|
cr1 LNCNT Scan line counter
|
|
2-15 SRFADR Screen refresh address
|
|
|
|
Description The 16-bit DPYADR register contains two separate counters that control
|
|
the generation of screen-refresh cycles. A screen-refresh cycle transfers the
|
|
video data for a new scan line to the VRAMs' serial data registers.
|
|
|
|
• LNCNT (Scan line counter, bits 0 and 1)
|
|
LNCNT counts the number of scan lines output to the screen between suc-
|
|
cessive screen-refresh cycles. Providing explicit control over the line count
|
|
permits the implementation of systems that do not reload the VRAMs' in-
|
|
ternal serial data register on every horizontal scan line. The two-bit LNCNT
|
|
field is loaded from the two-bit LCSTRT field of the DPYSTRT register at
|
|
the end of each screen-refresh cycle. The value loaded determines whether
|
|
the next screen-refresh cycle occurs after 1, 2, 3 or 4 scan lines:
|
|
When LCSTRT = 0, a screen-refresh cycle occurs after every line.
|
|
When LCSTRT = 1, 2 or 3, a screen-refresh cycle occurs after every
|
|
2, 3 or 4 lines, respectively.
|
|
|
|
• SRFADR (Screen refresh address, bits 2-15)
|
|
SRFADR is the source of the row and column addresses output during a
|
|
screen-refresh cycle. The 14 bits of SRFADR are output as logical address
|
|
bits 10-23 during screen-refresh cycles. During row address time,
|
|
DPYADR4-DPYADR15 are output on LAD0-LAD11, and Os are output on
|
|
the remaining LAD pins (except as modified by the contents of the DPYTAP
|
|
register). During column address time, DPYADR2-DPYADR7 are output
|
|
on LAD6-LAD11 and Os are output on the remaining LAD lines. Following
|
|
the completion of each screen-refresh cycle, the value in SRFADR is dec-
|
|
remented by the amount indicated in the DUDATE field of the DPYCTL re-
|
|
gister.
|
|
The following diagrams illustrate the mapping of bits to LAD0-LAD15 from
|
|
1) The logical address as seen by the programmer and
|
|
2} The bits of the DPYADR register
|
|
The bits of a 32-bit logical address are numbered 0 to 31, beginning with
|
|
the LSB. The 14 MSBs of DPYADR, shown in Figure 6-2, are output as
|
|
logical address bits 10-23 during a screen-refresh cycle. DPYADR2 corre-
|
|
sponds to logical address bit 10, DPYADR3 corresponds to logical address
|
|
bit 11, and so on.
|
|
|
|
|
|
|
|
|
|
6-17
|
|
DPYADR Display Address Register
|
|
|
|
|
|
15 14 13 12 11 10 9 8 7 8 5 4 3 2 1 0
|
|
DPYADR , SRFADR iLNCNT I
|
|
I I
|
|
I I
|
|
Logical
|
|
Adar888 123 22 21 20 19 18 17 18 15 14 13 12 11 10 !
|
|
Figure 6-2. Correlation Between SRFADR and Logical Address
|
|
Bits
|
|
|
|
|
|
Figure 6-3 shows the mapping of logical addresses to LADo-LAD15 during
|
|
the row and column address times of the cycle. The symbol xx indicates
|
|
status information output with the row and column addresses.
|
|
|
|
LAD Pin Number
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
Logical Row
|
|
Address Bits xx 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 Row
|
|
Address
|
|
Corresponding Time
|
|
DPYADR bits 15 14 13 12 11 10 9 8 7 6 5 4
|
|
Logical Column
|
|
Address Bits xx xx 29 28 27 14 13 12 11 10 9 8 7 6 5 4 Column
|
|
Address
|
|
Corresponding Time
|
|
DPYADR bits 7 6 543 2
|
|
|
|
Figure 6-3. Correlation Between DPYADR Bits and Row/Column
|
|
Addresses
|
|
|
|
|
|
A board designer typically selects eight consecutive address lines from
|
|
LADo-LAD11 to connect to the multiplexed address inputs of the VRAMs.
|
|
For example, by selecting the eight lines LAD2-LAD9, bits 14-21 of the
|
|
logical address become the row address bits output to the RAMs, and bits
|
|
6-13 of the logical address become the column address bits. This means
|
|
that during a screen-refresh cycle, bits 6-13 of DPYADR become the row
|
|
address bits output to the RAMs, and bits 4-5 of DPYADR become the two
|
|
MSBs of the tap point address.
|
|
|
|
|
|
|
|
|
|
6-18
|
|
Display Control Register DPYCTL
|
|
|
|
|
|
Address C0000080h
|
|
|
|
Bit
|
|
Assignments 15 14 13 12 11 10 9 8 7 6 5 4 3 210
|
|
DUDATE I Res IHSDI
|
|
|
|
|
|
Fields Bits Name Function
|
|
0 HSD Horizontal sync direction
|
|
1 Reserved Not used
|
|
2-9 DUDATE Display address update
|
|
10 ORG Screen origin select
|
|
11 SRT Shift register transfer enable
|
|
12 SRE Screen refresh enable
|
|
13 DXV Disable external video
|
|
14 NIL Noninterlaced video enable
|
|
15 ENV Enable video
|
|
|
|
Description The DPYCTl register contains several parameters that control video timing
|
|
signals and serial-register transfer cycles using VRAMs.
|
|
|
|
• HSD (Horizontal sync direction, bit 0)
|
|
The HSD bit controls the direction (input or output) of the HSYNC (hori-
|
|
zontal sync) pin when the TMS34010 is in external video mode (DXV=O).
|
|
If HSD=O, HSYNC is configured as an input, the same as VSYNC. In this
|
|
case, the on-chip horizontal sync interval begins when either:
|
|
The start of the external horizontal sync pulse input at the HSYNC pin
|
|
is detected, or
|
|
HCOUNT = HTOTAl,
|
|
whichever condition occurs first. VSYNC and HSYNC are configured as in-
|
|
puts or outputs according to the values of the HSD and DXV bits:
|
|
|
|
HSD UXV HSYNC VSYNC
|
|
0 0 Input Input
|
|
0 1 Output Output
|
|
1 0 Output Input
|
|
1 1 Undefined
|
|
|
|
|
|
When VSYNC and HSYNC are both configured as inputs, the on-chip vertical
|
|
sync interval begins when any of the following conditions occur:
|
|
The start of the external vertical sync pulse input at the VSYNC pin is
|
|
detected, or
|
|
VCOUNT=VTOTAl, and the start of the horizontal sync pulse input
|
|
at the HSYNC pin is detected, or
|
|
VCOUNT=VTOTAl and HCOUNT=HTOTAL.
|
|
|
|
6-19
|
|
DPYCTL Display Control Register
|
|
|
|
|
|
When VSVNC is an input and HSVNC is an output, the vertical sync interval
|
|
begins when either the first or third of the listed conditions occurs.
|
|
|
|
• DUDATE (Display update amount, bits 2-9)
|
|
The DUDATE field indicates the amount by which the SRFADR field in the
|
|
DPYADR register is incremented (if ORG=O) or decremented (ORG=1)
|
|
following completion of each memory-to-register cycle used to refresh the
|
|
screen. DUDATE is loaded with a value containing seven Os and a single
|
|
1. The 1 indicates the bit position at which DPYADR is to be incremented
|
|
(or decremented if ORG=1).
|
|
|
|
Increment
|
|
DUDATE Size
|
|
00000000 0
|
|
00000001 1
|
|
00000010 2
|
|
00000100 4
|
|
00001000 8
|
|
00010000 16
|
|
00100000 32
|
|
01000000 64
|
|
10000000 128
|
|
|
|
|
|
The increment size is undefined when more than one bit in the DUDATE
|
|
field is a 1. When interlaced scan mode is enabled, SRFADR is increment-
|
|
ed/decremented by half the value indicated in DUDATE at the start of a
|
|
vertical blanking interval preceding the start of an even field, just after
|
|
DPYADR2-DPYADR15 have been loaded from DPYSTRT2-DPYSTRT15.
|
|
For noninterlaced scanning, DUDATE is programmed to increment the
|
|
screen address by one scan line. For interlaced scanning, DUDATE is pro-
|
|
grammed to increment the screen address by two scan lines. Larger incre-
|
|
ments are typically not used since screen-refresh cycles do not occur more
|
|
often than once per active scan line.
|
|
|
|
• ORG (Screen origin select, bit 10)
|
|
The ORG bit controls the origin of the screen coordinate system.
|
|
|
|
ORG Effect
|
|
0 XV coordinate origin located in upper left corner of screen
|
|
1 XV coordinate origin located in lower left corner of screen
|
|
|
|
|
|
If ORG =0 then DPYADR is updated by being incremented by the value in
|
|
the DUDATE field. If ORG=1 then DPYADR is updated by being decre-
|
|
mented by the value in the DUDATE field. Unless explicitly stated other-
|
|
wise, the discussion in this document assumes that the default origin
|
|
(ORG=O) is used.
|
|
|
|
|
|
|
|
|
|
6-20
|
|
Display Control Register DPYCTL
|
|
|
|
|
|
• SRT (Shift-register-transfer enable, bit 11)
|
|
The SRT bit enables conversion of an ordinary pixel access into a VRAM
|
|
serial-register transfer cycle.
|
|
|
|
SRT Effect
|
|
0 Pixel access cycles occur normally
|
|
1 Pixel access cycles are converted into
|
|
VRAM shift-register-transfer cycles
|
|
|
|
|
|
The TMS34010 instruction set includes several instructions (DRAV, PIXT,
|
|
LINE, FILL, and PIXBLT) that operate specifically on pixels. By default,
|
|
SRT=O and memory accesses performed during accesses of pixel data are
|
|
the usual memory read and write cycles. When SRT=1, however, accesses
|
|
of pixel data are converted to shift-register-transfer cycles:
|
|
A pixel read cycle is converted to a memory-to-register cycle
|
|
A pixel write cycle is converted to a register-to-memory cycle
|
|
This register-transfer cycle is performed under explicit program control, as
|
|
opposed to the screen-refresh cycles enabled by the SRE bit, which are au-
|
|
tomatically generated at regular intervals.
|
|
Uses of the SRT bit include bulk initialization of the entire VRAM array; the
|
|
entire screen can be cleared to a specified background color in only 256
|
|
memory cycles. (While the TMS4461 has this capability, not all VRAMs
|
|
support this function.) Only pixel accesses are affected by the state of the
|
|
SRT bit. Instruction fetches and non-pixel data accesses are not altered in
|
|
any way.
|
|
|
|
• SRE (Screen-refresh enable, bit 12)
|
|
The SRE bit enables automatic screen refreshing. Screen refreshes are per-
|
|
formed by means of the VRAM memory-to-register cycles which the
|
|
TMS34010 performs automatically during selected horizontal blanking in-
|
|
tervas. The frequency of screen-refresh cycles and the generation of the
|
|
addresses output during these cycles are programmed by means of the
|
|
DPYSTRT and DPYCTL registers.
|
|
|
|
SRE Effect
|
|
0 Disable screen refresh
|
|
1 Enable screen refresh
|
|
|
|
|
|
Changing the value of the SRE bit affects screen refreshes with the start of
|
|
the next horizontal blanking interval. When SRE changes from 0 to 1, the
|
|
first screen-refresh cycle occurs at the start of the next horizontal blanking
|
|
level. When SRE changes from 1 to 0, screen-refresh cycles are disabled
|
|
beginning at the start of the next horizontal blanking level.
|
|
|
|
|
|
|
|
|
|
6-21
|
|
DPYCTL Display Control Register
|
|
|
|
|
|
|
|
• DXV (Disable external video, bit 13)
|
|
The DXV bit selects between internally generated or externally generated
|
|
video timing.
|
|
|
|
DXV Effect
|
|
0 Selects external video source
|
|
1 Selects internally generated video timing
|
|
|
|
|
|
When DXV=O, the TMS3401 0 video timing circuitry is programmed to lock
|
|
onto an external video source. The VSYNC pin is configured as an input and
|
|
is connected to an external vertical sync signal. If HSD=O, HSYNC is also
|
|
configured as an input and is connected to an external horizontal sync sig-
|
|
nal.
|
|
When DXV=1, the TMS3401 0 generates its own video timing, according to
|
|
the values loaded into the video timing registers. The HSYNC and VSYNC
|
|
pins are configured as outputs, and provide the horizontal and vertical sync
|
|
signals required to drive the video monitor.
|
|
|
|
• Nil (Noninterlaced video enable, bit 14)
|
|
The NIL bit selects between an interlaced or a noninterlaced display. The
|
|
video timing signals output by the TMS3401 0 are modified according to this
|
|
selection. The timing differences between interlaced and non interlaced
|
|
displays are described in Section 9.
|
|
|
|
NIL Effect
|
|
0 Selects interlaced video timing
|
|
1 Selects non interlaced video timing
|
|
|
|
|
|
|
|
• ENV (Enable video, bit 15)
|
|
The ENV bit enables or disables the video display. The display remains
|
|
blanked when ENV=O. During this time, the signal output at the BLANK pin
|
|
is forced to remain at its active-low level throughout the frame, and setting
|
|
of the DIP (display interrupt) bit in the INTPEND register is inhibited. (If
|
|
DIP is already set at the time the ENV is changed from 1 to 0, DIP remains
|
|
set until explicitly cleared.) When ENV=1, the video display is enabled. The
|
|
BLANK output signal is controlled according to the parameters contained in
|
|
the video timing registers, and the DIP bit becomes set when the condition
|
|
VCOUNT = DPYINT occurs.
|
|
|
|
ENV Effect
|
|
0 Blank entire screen
|
|
1 Enable video
|
|
|
|
|
|
|
|
|
|
6-22
|
|
Display Interrupt Register DPYINT
|
|
|
|
|
|
Address COOOOOAOh
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I DPYINT I
|
|
Description The DPYI NT register designates the next scan line at which a display in-
|
|
terrupt will be requested. This register facilitates the coordination of soft-
|
|
ware activity with the refreshing of selected horizontal lines on the screen
|
|
of a video monitor.
|
|
The contents of DPYINT are compared to the VCOUNT register. When
|
|
VCOUNT = DPYINT, a display interrupt is requested and the DIP bit in the
|
|
INTPEND register is set to 1. This coincides with the start of the horizontal
|
|
blanking interval that marks the end of the line designated by the value
|
|
contained in DPYINT.
|
|
For split-screen applications, a new value can be loaded into the DPYADR
|
|
register immediately following detection of the 0-to-1 transition of DIP.
|
|
The new DPYADR value will not affect the line that immediately follows the
|
|
end of the current horizontal blanking interval, but will affect the next line.
|
|
The details of this timing are as follows. A screen-refresh cycle may be
|
|
scheduled to occur at the start of the same horizontal blanking interval
|
|
during which DIP becomes set. At the end of the screen-refresh cycle, the
|
|
screen-refresh address in the DPYADR register will be automatically incre-
|
|
mented. Requests for screen-refresh cycles have a higher priority than re-
|
|
quests for cycles initiated by the on-chip processor. Hence, if the processor
|
|
loads a new value into DPYADR immediately following detection of DIP's
|
|
transition from 0 to 1, the value will become the address used for the next
|
|
screen-refresh cycle, which cannot occur before the next horizontal blank-
|
|
ing interval. Between the time that DIP becomes set to 1 and the com-
|
|
pletion of the next screen-refresh cycle at least one full scan line later, the
|
|
DPYADR register is guaranteed not to be incremented. Its contents will
|
|
change during this interval only if it is loaded with a new value under ex-
|
|
plicit program control. The display interrupt is disabled when the ENV bit
|
|
in the DPYCTL register is O.
|
|
|
|
|
|
|
|
|
|
6-23
|
|
DPYSTRT Display Start Address Register
|
|
|
|
|
|
Address C0000090h
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
I SRSTRT I LCSTRTI
|
|
|
|
|
|
Fields Bits Name Function
|
|
0-1 LCSTRT Starting line count
|
|
2-15 SRSTRT Starting screen-refresh address
|
|
|
|
Description The DPYSTRT register contains two parameters that control the automatic
|
|
memory-to-register cycles necessary to refresh the screen.
|
|
|
|
• LCSTRT (Starting line count, bits 0 and 1)
|
|
LCSTRT is a two-bit code designating the number of scan lines to be dis-
|
|
played between screen refreshes.
|
|
|
|
Scan Lines
|
|
LCSTRT Between
|
|
Value Refresh
|
|
Cycles
|
|
00 1
|
|
01 2
|
|
10 3
|
|
11 4
|
|
|
|
|
|
LCSTRT is loaded into the LNCNT field of the DPYADR register at the end
|
|
of each screen-refresh cycle. LCSTRT is also loaded into LNCNT at the start
|
|
of the last horizontal blanking interval preceding the first active scan line of
|
|
a new frame.
|
|
|
|
• SRSTRT (Starting screen-refresh address, bits 2-15)
|
|
The 14-bit SRSTRT field contains the starting address loaded into the
|
|
DPYADR register at the start of each frame. Its value identifies the start of
|
|
the region of the graphics bit map to be displayed on the screen. SRSTRT
|
|
is loaded into the SRFADR field of the DPYADR register at the beginning
|
|
of each vertical blanking interval. (Loading occurs coincides with the start
|
|
of the horizontal blanking interval at the end of the last active scan line in
|
|
the frame.)
|
|
The sense of the SRSTRT value depends on the value of the ORG (origin
|
|
select) bit in the DPYCTL register. When ORG=O, SRSTRT is loaded with
|
|
the 1's complement of the starting address. When ORG=1, SRSTRT is
|
|
loaded with the unmodified starting address. Regardless of the value of the
|
|
ORG bit, the starting address points to the location in memory of the first
|
|
pixel output to the screen during each frame. For a typical CRT display, the
|
|
first pixel of each frame is output to the top left corner of the screen. Refer
|
|
to the description of the DPYADR register for mo~e information on the
|
|
generation of screen-refresh addresses.
|
|
|
|
|
|
|
|
|
|
6-24
|
|
Display Tap Point Address Register DPYTAP
|
|
|
|
|
|
Address C00001BOh
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
IReserved I DPYTAP
|
|
|
|
|
|
Fields Bits Name Function
|
|
0-13 DPYTAP Display tap point address
|
|
14-15 Reserved Not used
|
|
|
|
Description The DPYTAP register contains a VRAM tap point address output during a
|
|
screen-refresh (memory-to-register) cycle. (The contents of DPYTAP are
|
|
not output during a serial-register transfer initiated under program control
|
|
while the SRT bit in the DPYCTL register is set to 1.) During a screen-
|
|
refresh cycle, the 16 bits of the DPYTAP register are bitwise-ORed with the
|
|
value output at the LADo-LAD15 pins during the column address time.
|
|
DPYTAP bit 0 is ORed with LADO, DPYTAP bit 1 is ORed with LAD1, and
|
|
so on. This means that the column address output during the cycle is the
|
|
OR of bits 2-7 of DPYADR and bits 0-15 of DPYTAP.
|
|
One application of the DPYTAP register is to permit horizontal panning of
|
|
the screen over a frame buffer that is wider than the screen. A DPYTAP
|
|
value of 0 locates the scree~ at its leftmost position within the frame buffer.
|
|
Incrementing DPYTAP causes the display to pan to the right through the
|
|
frame buffer.
|
|
DPYTAP is typically used to alter (set to a value other than all Os) only
|
|
those column address bits of the SRFADR field of DPYADR that are never
|
|
incremented. For instance, given a VRAM that requires an 8-bit column
|
|
address, assume that SRFADR alternately sets the two MSBs of the column
|
|
address to 002, 012, 102, and 112. In this case, DPYTAP should contain
|
|
1 s only in the bit positions corresponding to the six LSBs of the column
|
|
address.
|
|
|
|
|
|
|
|
|
|
6-25
|
|
HCOUNT Horizontal Count Register
|
|
|
|
|
|
Address C00001 COh
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I HCOUNT
|
|
|
|
Description The HCOUNT register is a 16-bit counter used in the generation of the
|
|
horizontal sync and blanking signals. HCOUNT is incremented on the fail-
|
|
ing edge of the video input clock, and is used to count the number of video
|
|
clock periods per horizontal scan line. To generate horizontal sync and
|
|
blanking signals, the value of HCOUNT is compared to the value of the four
|
|
horizontal timing registers: HESYNC, HEBLNK, HSBLNK, and HTOTAL.
|
|
When external sync mode is disabled and the value in HCOUNT = HTO-
|
|
TAL, HCOUNT is reset to 0 on the next VCLK falling edge and the HSYNC
|
|
output is driven active low. HCOUNT is also reset to 0 if the external sync
|
|
mode is enabled and the input signal HSYNC is driven low.
|
|
Two separate, asynchronous elements of the TMS3401 0 logic can access
|
|
the HCOUNT register:
|
|
|
|
• The internal processor, which runs synchronously to local clocks
|
|
LCLK1 and LCLK2, can access HCOUNT as an I/O register.
|
|
|
|
• The video timing control logic, which runs synchronously to the video
|
|
clock VCLK, increments and clears HCOUNT in generating the sync
|
|
and blanking signals.
|
|
No synchronization between these two subsystems is provided, and
|
|
HCOUNT can only be reliably read or written to while VCLK is held at the
|
|
logic-high level. HCOUNT is typically not read or written to except during
|
|
chip test.
|
|
|
|
|
|
|
|
|
|
6-26
|
|
Horizontal End Blank Register HEBlNK
|
|
|
|
|
|
Address C0000010h
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I HEBLNK
|
|
|
|
Description The HEBLNK register is used during the generation of the blanking signal
|
|
output to the video monitor. The 16-bit value loaded into HEBLNK is
|
|
compared to HCOUNT, and designates the point at which the horizontal
|
|
blanking interval ends. The blanking signal output at the BLANK pin is a
|
|
composite of the internal horizontal and vertical blanking signals. When the
|
|
value in HCOUNT = HEBLNK, the BLANK output is driven inactive high
|
|
unless vertical blanking is currently active. Most video monitors require
|
|
HEBLNK to be set to a value that is less than the value in HSBLNK, but
|
|
greater than the value in HESYNC.
|
|
|
|
|
|
|
|
|
|
6-27
|
|
HESYNC Horizontal End Sync Register
|
|
|
|
|
|
Address COOOOOOOh
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I HESYNC I
|
|
Description The HESYNC register is used during generation of the horizontal sync sig-
|
|
nal output to the video monitor. The 16-bit value loaded into HESYNC
|
|
determines the point at which the horizontal sync pulse ends. When the
|
|
value in HCOUNT = HESYNC, the signal output from the HSYNC pin is
|
|
driven inactive high to signal the end of the horizontal sync interval. Typical
|
|
monitors require that HESYNC be set to a value less than the value con-
|
|
tained in the HEBLNK register. (However, the HESYNC value is not re-
|
|
quiredto be less than the HEBLNK value.) The minimum value of HESYNC
|
|
is O.
|
|
When external video is enabled and the HSYNC pin is configured as an in-
|
|
put, HESYNC should be loaded with a value that ensures that the condition
|
|
HCOUNT = HESYNC occurs after the external HSYNC signal has gone in-
|
|
active-high, but before HSYNC goes active low again. For example, a good
|
|
HESYNC value might be the average of the values in HEBLNK and
|
|
HSBLNK.
|
|
|
|
|
|
|
|
|
|
6-28
|
|
Horizontal Start Blank Register HSBLNK
|
|
|
|
|
|
Address C0000020h
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I HSBLNK
|
|
|
|
Description The HSBLNK register is used during generation of the blanking signal out-
|
|
put to the video monitor. The 16-bit value in HSBLNK is compared to
|
|
HCOUNT, and designates the point at which the horizontal blanking inter-
|
|
val begins. The blanking signal output at the BLANK pin is a composite of
|
|
the internal horizontal and vertical blanking signals. When the condition
|
|
HCOUNT = HSBLNK occurs, the BLANK output is driven from its inac-
|
|
tive-high level to its active-low level (unless it is already low due to vertical
|
|
blanking being active).
|
|
Several internal events coincide with the start of horizontal blanking. First,
|
|
when a screen-refresh cycle is programmed to occur during a particular
|
|
horizontal scan line, a request for the cycle is sent to the memory controller
|
|
at the beginning of the horizontal blanking interval that occurs at the end
|
|
of the line. Second, if a display interrupt request is programmed to occur
|
|
during a particular horizontal scan line, the request is generated at the start
|
|
of horizontal blanking. Typical monitors require that HSBLNK be set to a
|
|
value that is less than the value in HTOTAL, but greater than the value in
|
|
HEBLNK.
|
|
|
|
|
|
|
|
|
|
6-29
|
|
HSTADRH Host Interface Address Register, High Word
|
|
|
|
|
|
Address COOOOOEOh
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I HSTADRH I
|
|
Description The HSTADRH register contains the 16 MSBs of a 32-bit pointer address;
|
|
the 16 LSBs are contained in HSTADRL. The contents of HSTADRL and
|
|
HSTADRH are concatenated to form a single 32-bit address during an in-
|
|
direct access by a host processor. The pointer address can be accessed by
|
|
both the host processor and the TMS3401 O. The host accesses the pointer
|
|
address through two 16-bit host interface registers that are mapped into the
|
|
host's memory or I/O address space.
|
|
The four LSBs of the 32-bit pointer address are forced to 0 to point to an
|
|
even word boundary in memory. If the address pointer is incremented past
|
|
the largest word address in memory, it will wrap around to the lowest ad-
|
|
dress (aliOs).
|
|
When you use the HSTADRH and HSTADRL registers to read data indi-
|
|
rectly from the host, be sure that you access them in the correct order. If
|
|
LBL=O, HSTADRH should be written last. If LBL=1, HSTADRL should
|
|
be written last.
|
|
|
|
|
|
Note:
|
|
When the TMS34010's on-chip processor writes to HSTADRH or
|
|
HSTADRL, the referenced data is not automatically read into
|
|
HSTDAT A. For more information about the host interface, refer to
|
|
Section 10.
|
|
|
|
|
|
|
|
|
|
6-30
|
|
Host Interface Address Register, Low Word HSTADRL
|
|
|
|
|
|
Address COOOOODOh
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I HSTADRL
|
|
|
|
Description The HSTADRL register contains the 16 LSBs of a 32-bit pointer address;
|
|
the 16 MSBs are contained in HSTADRH. The contents of HSTADRL and
|
|
HSTADRH are concatenated to form a single 32-bit address during an in-
|
|
direct access by a host processor. The pointer address can be accessed by
|
|
both the host processor and the TMS3401 O. The host accesses the pointer
|
|
address through two 16-bit host interface registers that are mapped into the
|
|
host's memory or I/O address space.
|
|
The four LSBs of the 32-bit pointer address are forced to 0 to point to an
|
|
even word boundary in memory. If the address pointer is incremented past
|
|
the largest word address in memory, it will wrap around to the lowest ad-
|
|
dress (a II Os).
|
|
When you use the HSTADRH and HSTADRL registers to read data indi-
|
|
rectly from the host, be sure that you access them in the correct order. If
|
|
LBL=O, HSTADRH should be written last. If LBL=1, HSTADRL should
|
|
be written last.
|
|
|
|
|
|
Note:
|
|
When the TMS34010's on-chip processor writes to HSTADRH or
|
|
HSTADRL, the referenced data is not automatically read into
|
|
HSTDATA. For more information about the host interface, refer to
|
|
Section 10.
|
|
|
|
|
|
|
|
|
|
6-31
|
|
HSTCTLH Host Interface Control Register, High Byte
|
|
|
|
|
|
Address C0000100h
|
|
|
|
Bit
|
|
Assignments 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I HLT I CF I LBL HNCRllNCwl Res INMIMI NMII Reserved
|
|
|
|
|
|
Fields Bits Name Function
|
|
0-7 Reserved Not used
|
|
8 NMI Nonmaskable interrupt
|
|
9 NMIM Mode bit for NMI
|
|
10 Reserved Not used
|
|
11 INCW Increment pointer address on write
|
|
12 INCR Increment pointer address on read
|
|
13 LBL Lower byte last
|
|
14 CF Cache flush
|
|
15 HLT Halt TMS3401 0 processing
|
|
|
|
Description The HSTCTLH register contains seven programmable bits used to control
|
|
host interface communications. A host processor can access the control
|
|
bits in the HSTCTLL and HSTCTLH registers as a single host interface re-
|
|
gister, HSTCTL. The bits of the host interface's HSTCTL register are
|
|
mapped into two separate I/O register locations in the TMS3401 O's mem-
|
|
ory map, HSTCTLL and HSTCTLH, to allow the TMS3401 0 to alter the bits
|
|
in one location without affecting the bits in the other.
|
|
The HSTCTLH bits can be both written to and read by both the host pro-
|
|
cessor and the TMS3401 O. Unpredictable results occur if the TMS3401 0
|
|
and host simultaneously write different values to the HSTCTLH bits. Typi-
|
|
cally only the host alters the bits in HSTCTLH.
|
|
|
|
• NMI (Nonmaskable interrupt, host to TMS34010, bit 8)
|
|
The nonmaskable interrupt allows the host processor to redirect the exe-
|
|
cution flow of TMS3401 0 processing to an N M I routine, regardless of the
|
|
current state of the interrupt mask flags. The host writes a 1 to the NMI bit
|
|
to send a nonmaskable interrupt request to the TMS3401 O. The interrupt
|
|
request cannot be disabled, and will always be executed (unless the
|
|
TMS34010 is reset before it can complete interrupt execution). The inter-
|
|
rupt is initiated immediately upon NMI becoming set (at the time the current
|
|
instruction completes execution, or in the case of a pixel array instruction,
|
|
at the next interruptible point in the instruction). Once the interrupt is taken,
|
|
internal logic automatically clears the NMI bit to O.
|
|
One use of the NMI is to generate a soft reset after the host downloads new
|
|
program code into TMS34010 memory. Following execution of a non-
|
|
maskable interrupt, screen-refresh and DRAM -refresh functions continue
|
|
unaffected. The contents of internal. registers other than the HSTCTL reg-
|
|
ister are not altered by the interrupt, although they can be modified by the
|
|
N M I service routine.
|
|
|
|
|
|
|
|
|
|
6-32
|
|
Host Interface Control Register, High Byte HSTCTLH
|
|
|
|
|
|
• N M I M (Nonmaskable interrupt mode, bit 9)
|
|
The N M I mode bit determines whether or not the context of the interrupted
|
|
program is saved when a nonmaskable interrupt occurs. When N M I M =0,
|
|
the context is saved on the system stack before the NMI service routine is
|
|
executed. When NMIM=1, the context is discarded when the NMI service
|
|
routine is executed.
|
|
The NMIM=O mode supports applications such as single stepping of in-
|
|
structions where the status and PC must be preserved between consecutive
|
|
nonmaskable interrupts. When NMIM=1, a nonmaskable interrupt can be
|
|
used to simulate a hardware reset in software (using the NMI vector).
|
|
Saving the context may be of no benefit if either:
|
|
Control is never to be returned to the interrupt program or
|
|
The integrity of the stack pointer is suspect.
|
|
The nonmaskable interrupt does not cause the I/O registers to be reset.
|
|
Consequently, if an NMI is used to simulate a hardware reset, the I/O reg-
|
|
isters should be reset by software within the NMI service routine.
|
|
|
|
NMI NMIM Effect
|
|
0 0 No effect
|
|
0 1 Undefined
|
|
1 0 NMI (save context on stack)
|
|
1 1 NMI (discard previous context)
|
|
|
|
|
|
• C F (Cache flush, bit 14)
|
|
While CF is set to 1, the contents of the instruction cache are flushed. All
|
|
four P (present) flags in the cache control logic remain forced to 0 as long
|
|
as CF remains 1. When CF=1, the cache is disabled; instruction words are
|
|
fetched from local memory one at a time as they are needed for execution
|
|
by the TMS3401 O. Normal cache operation resumes when CF is set to 0,
|
|
assuming the CD bit in the CONTROL register is also O. When the value of
|
|
CF is changed from 1 to 0, the cache begins operation in the same initial
|
|
state as that which immediately follows reset.
|
|
One use of the CF bit is during downloads of new software from the host
|
|
processor to TMS34010 local memory. By setting CF to 1 and then to 0
|
|
again, the host processor forces the TMS34010 to begin to load new in-
|
|
structions into the cache from memory rather than continue execution of
|
|
stale instructions already contained in the cache. A 0 must be loaded into
|
|
CF for normal cache operation to resume.
|
|
|
|
CF Effect
|
|
0 No effect
|
|
1 Flush and disable cache
|
|
|
|
|
|
|
|
|
|
6-33
|
|
HSTCTLH Host Interface Control Register, High Byte
|
|
|
|
|
|
• LBL (Lower byte last, bit 13)
|
|
The LBL bit specifies whether an indirect access of TMS34010 memory,
|
|
initiated by a host register access, begins when the upper or lower byte of
|
|
the register is accessed by the host processor.
|
|
LBL is provided to accommodate host processors with 8-bit data paths.
|
|
An 8-bit processor must access a 16-bit TMS3401 0 host interface register
|
|
as a series of two 8-bit bytes. Processors which access the lower byte (bits
|
|
0-7) first and the upper byte (bits 8-15) second should typically set LBL to
|
|
0, and those that access bytes in the opposite sequence should set LBL to
|
|
1.
|
|
When LBL is 0, a local bus cycle is initiated if:
|
|
The host writes to the upper byte of HSTADRH, or
|
|
The host reads from or writes to the upper byte of HSTDAT A.
|
|
If LBL is 1, a local bus cycle is initiated if
|
|
The host accesses the lower byte of HSTDATA, or
|
|
The host writes to the lower byte of HSTADRL
|
|
With this capability, the TMS3401 0 is capable of automatically resolving so
|
|
called "Little- Endian/Big- Endian" byte addressing incompatibilities be-
|
|
tween various processors, and promotes software transparency between 8-
|
|
and 16-bit versions of the same processor architecture (such as the 8088
|
|
and 8086).
|
|
|
|
LBL Effect
|
|
0 Initiate 16-bit local bus cycle on host access of upper byte of HSTDATA
|
|
or on load of upper byte of HSTADRH
|
|
1 Initiate 16-bit local bus cycle on host access of lower byte of HSTDATA
|
|
or on load of lower byte of HSTADRL
|
|
|
|
|
|
• INCR (Increment address before local read, bit 12)
|
|
The INCR bit controls whether or not the 32-bit address pointer contained
|
|
in the HSTADRL and HSTADRH registers is incremented before each read.
|
|
|
|
INCR Effect
|
|
0 Do not increment address pointer before read cycle on local memory bus
|
|
1 Increment address pointer before read cycle on local memory bus
|
|
|
|
|
|
When INCR=1, the 32-bit address contained in registers HSTADRL and
|
|
HSTADRH is incremented by 16 before being used for the next read of the
|
|
TMS34010 memory. This means that HSTDATA is updated to the contents
|
|
of the next sequential word in the local memory in preparation for the next
|
|
anticipated read of HSTDATA by the host processor. A local read cycle also
|
|
occurs when the host loads a new address into the HSTADRL and
|
|
HSTADRH registers, but the address is not incremented in this case. When
|
|
incrementing is enabled, repeated reads of the HSTDATA register by the
|
|
|
|
|
|
6-34
|
|
Host Interface Control Register, High Byte HSTCTLH
|
|
|
|
|
|
host result in a series of adjacent words in TMS3401 0 memory being read;
|
|
otherwise, the same memory word is read each time. Regardless of the va-
|
|
lue of the INCR bit, each time HSTDATA is read by the host, a new word
|
|
is automatically read into HSTDATA from the TMS3401 O's memory.
|
|
|
|
• INeW (Increment address after local write, bit 11)
|
|
The INCW bit controls whether or not the 32-bit address pointer contained
|
|
in the HSTADRL and HSTADRH registers is incremented after each write.
|
|
|
|
INew Effect
|
|
0 Do not increment address pointer after write cycle on local memory bus
|
|
1 Increment address pointer after write cycle on local memory bus
|
|
|
|
|
|
When INCW=1, the 32-bit address contained in registers HSTADRL and
|
|
HSTADRH is incremented by 16 after being used as the memory write ad-
|
|
dress. When incrementing is enabled, repeated writes to the HSTDATA re-
|
|
gister by the host cause a series of adjacent words in TMS34010 memory
|
|
to be modified; otherwise, the same memory word is modified repeatedly.
|
|
Regardless of the value of the INCW bit, each time HSTDATA is written to
|
|
by the host, a new cycle is initiated to write the contents of HSTDATA to
|
|
the TMS3401 O's memory.
|
|
|
|
• HlT (Halt TMS34010 program execution, bit 11)
|
|
When the HLT bit is set to 1, the TMS3401 0 suspends instruction process-
|
|
ing at the next instruction boundary. Once halted, the TMS3401 0 does not
|
|
respond to interrupt requests (including NMI). Local memory refresh and
|
|
video timing functions continue unaffected while the TMS3401 0 is halted.
|
|
When HLT is again set to 0, the TMS3401 0 continues execution.
|
|
While the TMS3401 0 is halted, external bus-master devices can arbitrate for,
|
|
obtain, and release control of the local bus via the TMS34010 hold inter-
|
|
face. While the TMS3401 0 is in the hold state, it cannot perform DRAM-
|
|
refresh or screen -refresh cycles.
|
|
The state of the H LT bit immediately following reset is determined by the
|
|
state of the HCS pin at the time of the low-to-high transition of RESET:
|
|
If HCS is low, HLT is set to 0, and the TMS3401 0 is enabled to begin
|
|
executing its reset routine.
|
|
If HCS is high, HLT is set to 1, and the TMS3401 0 is halted.
|
|
Both the host processor and TMS3401 0 can write to the H LT bit; this means
|
|
the TMS3401 0 can halt itself by loading a 1 into H LT.
|
|
|
|
HLT Effect
|
|
0 Allow TMS3401 0 to run
|
|
1 Halt TMS3401 0 instruction execution
|
|
|
|
|
|
|
|
|
|
6-35
|
|
HSTCTLL Host Interface Control Register, Low Byte
|
|
|
|
|
|
Address COOOOOFOh
|
|
|
|
Bit
|
|
Assignments 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
|
|
I Reserved
|
|
16~~1 MSGOUT III~TI MSGIN
|
|
|
|
|
|
Fields Bits Name Function
|
|
0-2 MSGIN Input message buffer
|
|
3 INTIN Input interrupt bit
|
|
4-6 MSGOUT Output message buffer
|
|
7 INTOUT Output interrupt bit
|
|
8-15 Reserved Not used
|
|
|
|
Description The HSTCTLL register contains eight programmable bits used to control
|
|
host interface communications. A host processor can access the control
|
|
bits in the HSTCTLL and HSTCTLH registers as a single host interface re-
|
|
gister, HSTCTL. The bits of the host interface's HSTCTL register are
|
|
mapped into two separate I/O register locations in the TMS3401 O's mem-
|
|
ory map, HSTCTLL and HSTCTLH, to allow the TMS3401 0 to alter the bits
|
|
in one location without affecting the bits in the other.
|
|
The HSTCTLH bits can be read by both the host processor and the
|
|
TMS34010. The following restrictions apply to writes:
|
|
|
|
• The MSGOUT field can be modified only by the TMS3401 O.
|
|
• The MSGIN field can be modified only by the host.
|
|
• The host can write a 1 to the INTI N bit, but writing a 0 has no effect.
|
|
• The TMS34010 can write a 0 to the INTIN bit, but writing a 1 has no
|
|
effect.
|
|
• The TMS3401 0 can write a 1 to the INTOUT bit, but writing a 0 has
|
|
no effect.
|
|
• The host can write a 0 to the INTOUT bit, but writing a 1 has no ef-
|
|
fect.
|
|
Internal arbitration logic permits the TMS3401 0 and host processor to ac-
|
|
cess HSTCTLL at the same time without hazard. Synchronization of asyn-
|
|
chronous signals at the host interface pins is performed internally.
|
|
|
|
• MSGIN (Message in, host to TMS34010, bits 0-2)
|
|
The MSGIN field buffers a 3-bit interrupt message to the TMS3401 0 from
|
|
the host. The MSGIN field can be both written to and read by the host, but
|
|
only read by the TMS3401 O. The MSGIN field typically contains a com-
|
|
mand or status code from the host, which is read by the TMS3401 0 in re-
|
|
sponse to a host-generated interrupt (INTIN=1). The meaning of this code
|
|
is defined in the software of the host and TMS3401 O.
|
|
|
|
|
|
|
|
|
|
6-36
|
|
Host Interface Control Register, Low Byte HSTCTLL
|
|
|
|
|
|
• INTIN (Interrupt in, host to TMS34010, bit 3)
|
|
The INTIN bit controls the interrupt request to the TMS3401 0 from the host.
|
|
To generate an interrupt request, the host processor loads a 1 to INTIN. The
|
|
TMS34010 deactivates the request by loading a 0 to INTIN. An attempt by
|
|
the host to load a 0 to INTIN has no effect. Similarly, an attempt by the
|
|
TMS34010 to load a 1 to INTIN has no effect. A read-only copy of the
|
|
INTIN bit is available as the HIP bit in the INTPEND register. The HIP bit
|
|
faithfully represents the state of the INTI N bit at all times.
|
|
|
|
INTIN Effect
|
|
0 No interrupt request to TMS3401 0
|
|
1 Send interrupt request to TMS3401 0
|
|
|
|
|
|
|
|
• MSGOUT (Message out, TMS34010 to host, bits 4-6)
|
|
The MSGOUT field buffers a 3-bit interrupt message to the host from the
|
|
TMS34010. The MSGOUT field can be both written to and read by the
|
|
TMS34010, but only read by the host. The MSGOUT field permits an in-
|
|
terrupt request generated by means of the INTOUT bit to be qualified by an
|
|
additional command or status code, the meaning of which is defined in the
|
|
software of the host and TMS3401 O.
|
|
|
|
• INTOUT (Interrupt out, TMS34010 to host, bit 7)
|
|
The INTOUT bit controls the interrupt request to the host processor from the
|
|
TMS34010. An interrupt request is transmitted to the host by means of an
|
|
active-low level on the HINT pin. When INTOUT is 1, HINT is driven active
|
|
low; when INTOUT is 0, HINT is driven inactive high. The TMS3401 0 acti-
|
|
vates the interrupt request by loading a 1 to INTOUT, and the host deacti-
|
|
vates the interrupt request by loading a 0 to INTOUT. An attempt by the
|
|
TMS34010 to load a 0 to I NTOUT has no effect. Similarly, an attempt by
|
|
the host to load a 1 to INTO UT has no effect.
|
|
|
|
INTOUT Effect
|
|
0 No interrupt request to host
|
|
1 Send interrupt request to host
|
|
|
|
|
|
|
|
|
|
6-37
|
|
HSTDATA Host Interface Data Register
|
|
|
|
|
|
Address COOOOOCOh
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I HSTDATA I
|
|
Description The HSTDATA register buffers data transferred through the host interface
|
|
between TMS34010 local memory and a host processor. HSTDATA can
|
|
be accessed by the TMS3401 0 at address COOOOOCOh. It is one of the four
|
|
16-bit registers that can be accessed by the host register through the
|
|
TMS34010 host interface. HSTDATA is typically accessed by the host
|
|
rather than the TMS34010. Using the HSTDATA register, the host can ei-
|
|
ther read the TMS3401 O's memory or write to it. The host initiates the in-
|
|
direct access through the host interface using the 32-bit pointer address in
|
|
the HSTADRL and HSTADRH registers. During each indirect access, a
|
|
16-bit word is transferred between the HSTDATA register and TMS3401 0
|
|
memory. The host processor can access the contents of the HSTDATA re-
|
|
gister in one 16-bit data transfer or two 8-bit transfers. When the
|
|
TMS34010's on-chip processor reads from or writes to HSTDATA, no au-
|
|
tomatic read or write cycle takes place between HSTDATA and the memory
|
|
word pointed to by HSTADRL and HSTADRH.
|
|
|
|
|
|
|
|
|
|
6-38
|
|
Horizontal Total Register HTOTAL
|
|
|
|
|
|
Address C0000030h
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I HTOTAL
|
|
|
|
Description The HTOTAl register is used during generation of the horizontal sync signal
|
|
output to the video monitor from the TMS3401 O. It determines the dura-
|
|
tion of each horizontal scan line on the screen in terms of the number of
|
|
VClK (video clock) periods. The contents of HTOTAl are compared with
|
|
the horizontal count in HCOUNT to determine the point at which the hori-
|
|
zontal sync pulse begins, which also represents the beginning of a new
|
|
scan line. HCOUNT counts from 0 to the value contained in HTOTAL.
|
|
When HCOUNT = HTOTAl, the HSYNC output is driven active low on the
|
|
next falling edge of the VClK signal, and HCOUNT is reset to 0 on the same
|
|
clock edge.
|
|
HTOTAl is loaded with a 16-bit value greater than that contained in
|
|
HSBlNK, but less than or equal to 65535. In interlaced scan mode, the
|
|
value in HTOTAl should be an odd number (lSB=1) to achieve equal
|
|
spacing between adjacent scan lines. The total number of VClK video
|
|
clocks in each horizontal scan line is calculated as HTOTAl + 1. When
|
|
external sync mode is enabled (DXV=O) and HSYNC is configured as an
|
|
input (HSD=O), HTOTAl should be loaded with a value greater than the
|
|
value of HCOUNT at the point at which the external sync pulse is expected.
|
|
If the external sync pulse does not occur, HCOUNT will be reset when
|
|
HCOUNT = HTOTAL.
|
|
|
|
|
|
|
|
|
|
6-39
|
|
INTENB Interrupt Enable Register
|
|
|
|
|
|
Address C0000110h
|
|
|
|
Bit
|
|
Assignments 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
I Reserved IwvEI DIE I HI§ Reserved
|
|
|
|
|
|
Fields Bits Name Function
|
|
0 Reserved Not used
|
|
1 X1E External interrupt 1 enable
|
|
2 X2E External interrupt 2 enable
|
|
3-8 Reserved Not used
|
|
9 HIE Host interrupt enable
|
|
10 DIE Display interrupt enable
|
|
11 WVE Window-violation interrupt enable
|
|
12-15 Reserved Not used
|
|
|
|
Description The I NTEN B register contains the interrupt mask used to selectively enable
|
|
the three internally and two externally generated interrupt requests. The
|
|
following interrupts are enabled by the INTENB register:
|
|
|
|
• External interrupts 1 and 2 are generated by active-low signals on the
|
|
input pins L1NT1 and L1NT2, respectively.
|
|
|
|
• The host interrupt is generated when the host processor sets the IN-
|
|
T N bit in the HSTCTL register to 1.
|
|
|
|
• The display interrupt is generated when the vertical count in the
|
|
VCOUNT register reaches the value contained in the DPYINT register.
|
|
|
|
• The window-violation interrupt is caused by an attempt to write a
|
|
pixel to a region of the bit map lying outside the limits of the cur-
|
|
rently-defined window.
|
|
The status register contains a global interrupt enable bit, I E. The I NTEN B
|
|
register contains individual interrupt enable bits associated with each of the
|
|
interrupts (X1 E, X2E, HIE, DIE, and WVE). Interrupts are enabled through
|
|
a combination of setting the IE bit and the appropriate bit in the INTENB
|
|
register. When IE=O, all interrupts are disabled regardless of the values of
|
|
the bits in the INTENB register. When IE=1, each interrupt is enabled or
|
|
disabled according to the corresponding enable bit in the INTENB register
|
|
(1 enables the interrupt, 0 disables it).
|
|
|
|
|
|
|
|
|
|
6-40
|
|
Interrupt Pending Register INTPEND
|
|
|
|
|
|
Address C0000120h
|
|
|
|
Bit
|
|
Assignments 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
I Reserved Iwvpl DIP IHlrl Reserved
|
|
|
|
|
|
Fields Bits Name Function
|
|
0 Reserved Not used
|
|
1 X1P External interrupt 1 pending
|
|
2 X2P External interrupt 2 pending
|
|
3-8 Reserved Not used
|
|
9 HIP Host interrupt pending
|
|
10 DIP Display interrupt pending
|
|
11 WVP Window-violation interrupt pending
|
|
15-12 Reserved Not used
|
|
|
|
Description The INTPEND register indicates which interrupt requests are currently
|
|
pending. INTPEND's six active bits indicate the status of the following in-
|
|
terrupts:
|
|
|
|
• External interrupts 1 and 2 are generated by active-low signals on the
|
|
input pins L1NT1 and L1NT2, respectively.
|
|
|
|
• The host interrupt request is generated when the host processor sets
|
|
the INTIN bit in the HSTCTL register to 1.
|
|
|
|
• The display interrupt request is generated when the vertical count in
|
|
the VCOUNT register reaches the value contained in the DPYINT re-
|
|
gister.
|
|
|
|
• The window-violation interrupt request is caused by an attempt to
|
|
write a pixel to a region of the bit map lying inside or outside the limits
|
|
of the currently-defined window, depending on the selected win-
|
|
dowing mode.
|
|
The individual pending bits in the INTPEND register reflect the status of
|
|
interrupt requests. The interrupt is requested if the corresponding pending
|
|
bit is 1. There is no request if the pending bit is O. The status of each in-
|
|
terrupt request is reflected in the INTPEND register regardless of whether
|
|
the interrupt is enabled or not; this allows the TMS3401 0 to poll interrupts.
|
|
The X1 P and X2P bits of INTPEND are read only. They reflect the input
|
|
levels on the L1NT1 and L1NT2 pins, and are not affected when the INTPEND
|
|
register is written to. The L1NT1 and L1NT2 pins are asynchronous inputs,
|
|
but the signals to these pins are synchronized internally so that the X1 P and
|
|
X2P bits in the INTPEND register may be reliably read at any time. If an
|
|
external interrupt is disabled, the interrupt request is ignored, even though
|
|
the corresponding pending flag in I NTPEN D is set. The interrupt will be
|
|
taken by the TMS34010 only if the external request is maintained at the
|
|
corresponding interrupt request pin until the interrupt is again enabled.
|
|
|
|
|
|
|
|
6-41
|
|
INTPEND Interrupt Pending Register
|
|
|
|
|
|
The DIP and WVP bits in the INTPEND register reflect the status of interrupt
|
|
requests generated by conditions internal to the TMS3401 O. These two bits
|
|
are implemented as latches. Once set, DIP or WVP will remain set until a
|
|
o is written to it (or the TMS3401 0 is reset). Writing a 1 to either of these
|
|
bits has no effect at any time. While an internal interrupt is disabled, the
|
|
interrupt request is ignored, even though the corresponding pending flag
|
|
in INTPEND is set. If the interrupt is subsequently enabled while the in-
|
|
terrupt pending flag remains set (because of a prior interrupt request) then
|
|
the interrupt will be taken by the TMS3401 O.
|
|
The HIP bit in the INTPEND register is a read-only bit that always displays
|
|
the current contents of the INTIN bit in the HSTCTL register. Writing to the
|
|
INTPEND register has no effect on the HIP bit. A host interrupt request is
|
|
generated when the host processor writes a 1 to the I NT! N bit of the
|
|
HSTCTL register. The TMS3401 0 clears the interrupt request by writing a
|
|
o to the INTI N bit.
|
|
|
|
|
|
|
|
|
|
6-42
|
|
Plane Mask Register PMASK
|
|
|
|
|
|
Address C0000160h
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I PMASK
|
|
|
|
Description The PMASK register selectively enables or disables various planes in the
|
|
bit map of a display system in which each pixel is represented by multiple
|
|
bits. PMASK contains a 16-bit value that determines which bits of each
|
|
pixel can be modified during execution of a DRAV, PIXT, FILL, LINE, or
|
|
PIXBLT instruction. Via the PMASK register, the programmer specifies
|
|
which bits within each pixel are protected (mask bit=1) and not protected
|
|
(mask bit=O) from modification. During a pixel write operation, the Os in
|
|
the plane mask represent bit positions within the destination pixel that are
|
|
to be modified by the pixel operation. The 1 s in the plane mask represent
|
|
bit positions in the destination pixel that are protected from modification.
|
|
During a pixel read operation, the Os in the mask indicate which bits within
|
|
a pixel may be read; bits corresponding to 1 s in the mask are always read
|
|
as Os.
|
|
The organization of a display memory is sometimes described in terms of
|
|
bit planes. If the pixel size is four bits, for example, and the bits in each
|
|
pixel are numbered from 0 to 3, the display memory is said to be composed
|
|
of four bit planes, numbered from 0 to 3. Plane 0 contains all the bits
|
|
numbered 0 from all the pixels, plane 1 contains all the bits numbered 1
|
|
from all the pixels, and so on. A 4-bit mask is constructed such that bit 0
|
|
of the mask enables (if 0) or disables (if 1) writes to the bits in plane 0,
|
|
mask bit 1 enables or disables writes to plane 1, and so on.
|
|
The plane mask for a 4-bit pixel is four bits; the plane mask for an 8-bit pixel
|
|
is eight bits; and so on. The plane mask must be replicated throughout the
|
|
16 bits of the PMASK register. For example, with four bits per pixel, the
|
|
PMASK register is loaded with four identical copies of the corresponding
|
|
4-bit plane mask, as indicated below.
|
|
15 12 11 8 7 43 o
|
|
PMASK I MASK I MASK I MASK I MASK
|
|
|
|
|
|
With a pixel size of eight bits, the corresponding 8-bit plane mask is repli-
|
|
cated twice - once in bits 0-7 of PMASK, and again in bits 8-15. In gen-
|
|
eral, all 16 bits of the register are used, and a mask for a pixel size of less
|
|
than 16 bits must be duplicated n times, where n is 16 divided by the pixel
|
|
size.
|
|
The individual bits of the PMASK register are associated with the corre-
|
|
sponding bits of the 16-bit local data bus (data are in fact multiplexed over
|
|
the same LADo-LAD15 pins as addresses). PMASK register bit 0 is asso-
|
|
ciated with bit 0 of the data bus (the bit transferred on LADO), PMASK bit
|
|
1 is associated with bit 1 of the data bus, and so on. In general, if PMASK
|
|
bit n is a 0, then bit n of the data bus is enabled by the mask; if PMASK
|
|
bit n is a 1, bit n is disabled by the mask.
|
|
Plane masking is effectively disabled (allowing all bits of each pixel to be
|
|
modified) by loading aliOs into the PMASK register. This is the default
|
|
state of PMASK following reset.
|
|
|
|
6-43
|
|
PMASK Plane Mask Register
|
|
|
|
|
|
To maintain upward compatibility with future versions of the GSP, software
|
|
drivers should treat the PMASK register as a 32-bit register beginning at
|
|
address C0000160h. In other words, software should write the plane mask
|
|
value not only to the 16-bit word at address C0000160h, but also to the
|
|
word at C0000170h. Writing the second word will have no effect on the
|
|
TMS34010, but will ensure software compatibility with future graphics
|
|
processors which may extend the PMASK register from 16 to 32 bits.
|
|
|
|
|
|
|
|
|
|
6-44
|
|
Pixel Size Register PSIZE
|
|
|
|
|
|
Address C0000150h
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I PSIZE I
|
|
Description The PSIZE register is used to specify the pixel size in bits. If the pixel size
|
|
is four, for example, PSIZE is loaded with the value four. If the pixel size
|
|
is eight, PSIZE is loaded with the value eight, and so on. All 16 bits of the
|
|
PSIZE register can be written to or read. Legal pixel sizes are 1, 2, 4, 8, and
|
|
16 bits; any other value of PSIZE is undefined.
|
|
|
|
|
|
PSIZE Pixel Size
|
|
0OO1h 1 bit/pixel
|
|
0OO2h 2 bits/pixel
|
|
0OO4h 4 bits/pixel
|
|
0OO8h 8 bits/pixel
|
|
0010h 16 bits/pixel
|
|
|
|
|
|
|
|
|
|
6-45
|
|
REFCNT Refresh Count Register
|
|
|
|
|
|
Address C00001FOh
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I ROWADR RINTVL I Reservedl
|
|
Fields Bits Name Function
|
|
0-1 Reserved Not used
|
|
2-7 RINTVL Refresh interval
|
|
8-15 ROWADR Row address
|
|
|
|
Description The REFCNT register generates the addresses output during DRAM refresh
|
|
cycles and counts the intervals between successive DRAM refresh cycles.
|
|
DRAMs require periodic refreshing to retain their data. The TMS34010
|
|
automatically generates DRAM refresh cycles at regular intervals. The in-
|
|
terval between refresh cycles is programmable. The DRAM refresh mode
|
|
is selected by loading the appropriate value to the two-bit RR (refresh rate)
|
|
field in the CONTROL register. DRAM refreshing can be disabled in sys-
|
|
tems that do not require it. The modes are defined as follows.
|
|
|
|
RR Description
|
|
00 Refresh every 32
|
|
local clock periods
|
|
01 Refresh every 64
|
|
local clock periods
|
|
10 Reserved for future
|
|
expansion
|
|
11 No DRAM refreshing
|
|
|
|
At reset, the RR field is set to the initial value 002. During the time that the
|
|
reset signal to the TMS3401 0 is active, no DRAM-refresh cycles are per-
|
|
formed.
|
|
Bits 2-15 of REFCNT form a continuous binary counter. Bits 2-7 form the
|
|
RINTVL field, which counts the intervals between successive requests for
|
|
DRAM-refresh cycles. When RR=012, the RINTVL field is decremented
|
|
by 1 every local clock cycle; that is, the register is decremented at bit 2. This
|
|
means that RINTVL underflows into ROWADR (a borrow ripples from bit
|
|
7 to bit 8 of REFCNT) every 64 local clock cycles. The underflow has two
|
|
effects:
|
|
|
|
• ROWADR is decremented by 1 and
|
|
|
|
• A request for a DRAM-refresh cycle is sent to the memory control
|
|
logic.
|
|
When RR=002, the RINTVL field is decremented by 2 every local clock
|
|
period. This means that a DRAM-refresh cycle is generated every 32 local
|
|
clock periods, twice the rate that results when RR=012. When RR=112,
|
|
DRAM refreshing is disabled and no DRAM-refresh cycles occur.
|
|
|
|
|
|
|
|
6-46
|
|
Refresh Count Register REFCNT
|
|
|
|
|
|
During a DRAM-refresh cycle, the row address output to memory is taken
|
|
from the 8-bit ROWADR field of REFCNT. Specifically, bits 8-15 of
|
|
REFCNT are output on LADO-LAD7. REFCNT bits 8-14 are simultaneously
|
|
output on LAD8-LAD14. (The RF bus status signal is output as a low level
|
|
on LAD15.) This means that the 8-bit row address needed to refresh a
|
|
DRAM can be taken from any eight adjacent LAD pins in the range
|
|
LAD0-LAD14. Note that as ROWADR counts from 255 to 0, the refresh
|
|
addresses output at the selected eight LAD pins will sequence through all
|
|
256 values in the range 255 to 0, though not necessarily in the same order
|
|
as ROWADR.
|
|
REFCNT is set to 0 at reset; after that, refresh address generation is auto-
|
|
matic. Typically there is no reason to read this register or write to it, al-
|
|
though it can be accessed similarly to the way other I/O registers are
|
|
accessed. In order to reliably write a value to REFCNT, DRAM refresh
|
|
should be disabled (by setting RR to 112) before writing to REFCNT.
|
|
|
|
|
|
|
|
|
|
6-47
|
|
VCOUNT Vertical Count Register
|
|
|
|
|
|
Address C00001 DOh
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I VCOUNT I
|
|
Description The VCOUNT register is a 16-bit counter used during generation of the
|
|
vertical sync and blanking signals. VCOUNT counts the horizontal lines in
|
|
the video display, incrementing at the same clock edge at which HCOUNT
|
|
is internally reset to O. This causes the falling edges of HSYNC and VSYNC
|
|
to coincide.
|
|
In order to generate vertical sync and blanking signals, the value of
|
|
VCOUNT is compared to the value of the four vertical timing registers,
|
|
VESYNC, VEBLNK, VSBLNK, and VTOTAL. When HCOUNT = HTOTAL
|
|
and VCOUNT = VTOTAL at the same time, VCOUNT is reset to 0 on the
|
|
next VCLK falling edge and the VSYNC output is driven active low.
|
|
If interlaced scan mode is enabled and the current field is even, and if
|
|
VCOUNT = VTOTAL and HCOUNT = HTOTAL/2, then VCOUNT is reset
|
|
to 0 and VSYNC goes low (HCOUNT is not reset until it reaches the value
|
|
HCOUNT = HTOTAL). When external sync mode is enabled, VCOUNT is
|
|
reset to 0 when the VSYNC input signal goes active low.
|
|
A display interrupt request is generated when VCOUNT = DPYINT. This
|
|
can be used to coordinate software activity with the refreshing of selected
|
|
lines on the screen.
|
|
Two separate, asynchronous elements of the TMS3401 0 internal logic can
|
|
access VCOUNT:
|
|
|
|
• The internal processor, which runs synchronously to local clocks
|
|
LCLK1 and LCLK2, can access VCOUNT as an I/O register.
|
|
|
|
• The video timing control logic, which runs synchronously to the video
|
|
clock VCLK, increments and clears VCOUNT in the course of gener-
|
|
ating the sync and blanking signals.
|
|
No synchronization between these two subsystems is provided, and
|
|
VCOUNT can only be reliably read or written while VCLK is held at the
|
|
logic-high level. VCOUNT is typically not read or written to except during
|
|
chip test.
|
|
|
|
|
|
|
|
|
|
6-48
|
|
Vertical End Blank Register VEBLNK
|
|
|
|
|
|
Address C0000050h
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I VEBLNK I
|
|
Description VEBLNK is a video timing register that designates the time at which the
|
|
vertical blanking interval ends. The 16-bit value contained in VEBLNK is
|
|
compared to VCOUNT to determine when to end the vertical blanking in-
|
|
terval. The vertical blanking interval ends when the following conditions
|
|
are satisfied:
|
|
|
|
• VCOUNT = VEBLNK
|
|
• HCOUNT = HTOTAL
|
|
The end of the vertical blanking interval coincides with the start of the
|
|
horizontal sync, occurring at a time when the internal horizontal blanking
|
|
signal is active. The blanking signal output from the BLANK pin is a com-
|
|
posite of the horizontal and vertical blanking signals generated internally,
|
|
and will not reach its inactive-high level until both internal blanking signals
|
|
have become inactive.
|
|
When external video is enabled (DXV=O) and the HSYNC pin is configured
|
|
as an input (HSD=O), the vertical blanking interval ends when the follow-
|
|
ing conditions are satisfied:
|
|
|
|
• VCOUNT = VEBLNK and
|
|
• The leading edge of the external horizontal sync pulse is detected
|
|
The beginning of the sync pulse is seen as a high-to-Iow transition at the
|
|
HSYNC pin.
|
|
|
|
Typical video monitors require VEBLN K to be set to a value less than the
|
|
value in VSBLNK, and greater than the value in VESYNC.
|
|
|
|
|
|
|
|
|
|
6-49
|
|
VESYNC Vertical End Sync Register
|
|
|
|
|
|
Address C0000040h
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I VESYNC
|
|
|
|
Description VESYNC is a video timing register that designates the time at which the
|
|
vertical sync pulse ends. The 16-bit value contained in VESYNC is com-
|
|
pared to VCOUNT to determine when to end the vertical sync pulse. The
|
|
sync pulse ends when the following conditions are satisfied:
|
|
|
|
• VCOUNT = VESYNC
|
|
• HCOUNT = HTOTAl
|
|
The VSYNC output is driven inactive high to signal the end of the vertical
|
|
sync interval.
|
|
When interlaced mode is enabled and the next vertical field is odd, VSYNC
|
|
is driven high when VCOUNT = VESYNC and HCOUNT = HTOTAlj2.
|
|
Typical video monitors require VESYNC to be set to a value less than the
|
|
value contained in the VEBlNK register; the minimum value of VESYNC is
|
|
O.
|
|
When external sync mode is enabled (DXV=O), the end of the external
|
|
vertical sync pulse is detected as a low-to-high transition at the VSYNC pin,
|
|
which is configured as an input. VESYNC should be loaded with a value
|
|
greater than the value in VCOUNT at the point at which the external VSYNC
|
|
input signal should go inactive high, but lower than the value in VCOUNT
|
|
when the external VSYNC should again become active low. For example,
|
|
VESYNC could be loaded with the sum of the values in VEBlNK and
|
|
VSBlNK divided by two.
|
|
|
|
|
|
|
|
|
|
6-50
|
|
Vertical Start Blank Register VSBLNK
|
|
|
|
|
|
Address C0000060h
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I VSBLNK
|
|
|
|
Description VSBLNK is a video timing register that designates the time at which the
|
|
vertical blanking interval starts. The 16-bit value contained in VSBLNK is
|
|
compared to VCOUNT to determine when to start the vertical blanking in-
|
|
terval. The vertical blanking interval starts when the following conditions
|
|
are satisfied:
|
|
|
|
• VCOUNT = VSBLNK
|
|
• HCOUNT = HTOTAL
|
|
The start of the vertical blanking interval coincides with the start of the
|
|
horizontal sync, occurring at a time when the internal horizontal blanking
|
|
signal is active. The blanking signal output from the BLANK pin is a com-
|
|
posite of the horizontal and vertical blanking signals generated internally,
|
|
and reaches its active-low level when either or both internal blanking sig-
|
|
nals are active.
|
|
When external video is enabled (DXV=O) and the HSYNC pin is configured
|
|
as an input (HSD=O), the vertical blanking interval starts when the follow-
|
|
ing conditions are satisfied:
|
|
|
|
• VCOUNT = VSBLNK
|
|
• The leading edge of the external horizontal sync pulse is detected
|
|
The beginning of the horizontal sync pulse is seen as a high-to-Iow transi-
|
|
tion at the HSYNC pin.
|
|
VSBLNK should be set to a value less than the value in VTOTAL, and
|
|
greater than the value in VEBLNK.
|
|
|
|
|
|
|
|
|
|
6-51
|
|
VTOTAL Vertical Total Register
|
|
|
|
|
|
Address C0000070h
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I VTOTAL I
|
|
Description VTOTAL contains a 16-bit value that designates the value of VCOUNT at
|
|
which the vertical sync pulse begins. The contents of VTOTAL are com-
|
|
pared to VCOUNT to determine when to start the vertical sync pulse. Ver-
|
|
tical sync begins when the following two conditions are satisfied:
|
|
|
|
• VCOUNT = VTOTAL
|
|
• HCOUNT = HTOTAL
|
|
These conditions cause HCOUNT to begin counting from 0 again.
|
|
The VSYNC output is driven active low to signal the start of the vertical sync
|
|
interval. The high-to-Iow transitions of VSYNC and HSYNC occur at the
|
|
same clock edge.
|
|
When interlaced mode is enabled and the next vertical field is odd, VSYNC
|
|
is driven low when VCOUNT = VESYNC and HCOUNT = HTOTALj2. The
|
|
total number of horizontal lines in each vertical field is calculated as VTO-
|
|
TAL + 1. In interlaced mode the total number of horizontal lines in both
|
|
fields of the vertical frame is calculated as 2 x VTOTAL-1.
|
|
When external video is enabled (DXV=O), the VSYNC pin is configured as
|
|
an input rather than an output. The high-to-Iow transition of VSYNC is re-
|
|
cognized as the beginning of the vertical sync pulse, unless the condition
|
|
VCOUNT = VTOTAL and the start of horizontal sync are detected first.
|
|
VTOTAL should be loaded with a value at least as large as the value of
|
|
VCOUNT at which the external sync pulse should begin. Should the ex-
|
|
ternal sync pulse not occur, VCOUNT will be reset one VCLK period after
|
|
the conditions VCOUNT = VTOTAL and HCOUNT = HTOTAL occur.
|
|
VTOTAL should be set to a value greater than the value in VSBLNK. The
|
|
maximum value that can be loaded into VTOT AL is 65535.
|
|
|
|
|
|
|
|
|
|
6-52
|
|
Section 7
|
|
Graphics Operations
|
|
|
|
|
|
This section provides an overview of the graphics drawing capabilities of the
|
|
TMS34010. Topics in this section include:
|
|
Section Page
|
|
7.1 Graphics Operations Overview ............................................................... 7-2
|
|
7.2 Pixel Block Transfers ................................................................................ 7-4
|
|
7.3 Pixel Transfers ......................................................................................... 7 -10
|
|
7.4 Incremental Algorithm Support ............................................................ 7-10
|
|
7.5 Transparency ........................................................................................... 7 -11
|
|
7.6 Plane Masking ........................................................................................ 7 -12
|
|
7.7 Pixel Processing ..................................................................................... 7-15
|
|
7.8 Boolean Processing Examples .............................................................. 7 -17
|
|
7.9 Multiple- Bit Pixel Operations ............................................................... 7 -19
|
|
7.1 0 Window Checking .................................................................................. 7 -25
|
|
|
|
|
|
|
|
|
|
7-1
|
|
Graphics Operations - Overview
|
|
|
|
|
|
|
|
7.1 Graphics Operations Overview
|
|
The TMS3401 0 instruction set provides several fundamental graphics drawing
|
|
operations:
|
|
|
|
• The PIXBlT and Fill instructions manipulate two-dimensional arrays
|
|
of pixels.
|
|
|
|
• The LINE instruction implements the fast inner loop of the Bresenham
|
|
algorithm for drawing lines.
|
|
|
|
• The DRAV (draw and advance) instruction draws a pixel and increments
|
|
the pixel address by a specified amount. This function supports the im-
|
|
plementation of incremental algorithms for drawing circles, ellipses, arcs,
|
|
and other curves.
|
|
|
|
• The PIXT (pixel transfer) instruction transfers individual pixels from one
|
|
location to another.
|
|
The PIXBlT instruction plays an important role in rapidly drawing high-
|
|
quality, bit-mapped text. In particular, the PIXBlT B,XY and PIXBlT B,l in-
|
|
structions expand character patterns stored as bit maps (at one bit per pixel)
|
|
into color or gray-scale characters of 1, 2, 4, 8 or 16 bits per pixel. This allows
|
|
character shape information to be stored independently of attributes such as
|
|
color and intensity, providing greater storage efficiency.
|
|
The TMS34010 provides several methods for processing the values of the
|
|
source and destination pixels before the result is written to the destination.
|
|
These operations include:
|
|
|
|
• Boolean and arithmetic pixel processing operations for combining source
|
|
pixels with destination pixels.
|
|
|
|
• A plane mask which specifies which bits within pixels can be altered
|
|
during pixel operations.
|
|
|
|
• Transparency, an option which permits objects written onto the screen
|
|
to have transparent regions through which the background is visible.
|
|
Pixel processing, plane masking, and transparency can be used simultane-
|
|
ously. These operations on pixel values can be used in combination with any
|
|
of the pixel drawing instructions listed above. The arithmetic operations are
|
|
especially important in displays that use multiple bits per pixel to encode color
|
|
or intensity information. For example, the MAX and MIN operations allow two
|
|
objects with antialiased edges to be smoothly merged into a single image.
|
|
The TMS3401 0 has features such as automatic window checking to support
|
|
windowed graphics environments. Three window-checking modes are pro-
|
|
vided:
|
|
|
|
• Clipping a figure to fit a rectangular window.
|
|
|
|
• Requesting an interrupt on an attempt to write to a pixel outside of a
|
|
window.
|
|
|
|
|
|
|
|
7-2
|
|
Graphics Operations - Overview
|
|
|
|
|
|
|
|
• Requesting an interrupt on an attempt to write to a pixel inside of a
|
|
window.
|
|
The last of these modes can be used to identify screen objects that are pointed
|
|
to by a cursor. The window checking modes can be used with any of the pixel
|
|
drawing instructions that use XY addressing. Window checking is optional
|
|
and can be turned off.
|
|
The TMS3401 0 provides further support for windowed environments by rap-
|
|
idly detecting the following conditions:
|
|
|
|
• Whether a point lies inside or outside a rectangular window.
|
|
|
|
• Whether a line lies entirely inside or entirely outside a window.
|
|
Lines that lie entirely outside a window can be trivially rejected, meaning that
|
|
they take no further processing time. These conditions are detected via the
|
|
CPW (compare point to window) instruction, which takes only one machine
|
|
state to compare the XY coordinates of a point to all four sides of a window.
|
|
Another operation that occurs frequently in windowed environments is calcu-
|
|
lating the region where two rectangles intersect. This is a feature available
|
|
with the PIXBLT and FILL instructions. Based on the window-checking
|
|
mode, one of two methods can be selected to calculate the region of inter-
|
|
section:
|
|
|
|
• The destination pixel array is preclipped to a rectangular window before
|
|
the PixBlt or fill operation begins.
|
|
|
|
• The intersection of the destination pixel array with a rectangular window
|
|
is calculated, but no pixels are transferred.
|
|
|
|
|
|
|
|
|
|
7-3
|
|
Graphics Operations - Pixel Block Transfers
|
|
|
|
|
|
|
|
7.2 Pixel Block Transfers
|
|
The TMS34010 supports a powerful set of raster operations, known as
|
|
PixBlts (pixel block transfers), that manipulate two-dimensional arrays of bits
|
|
or pixels. A pixel array is defined by the following parameters:
|
|
|
|
• A starting address (by default, the address of the pixel with the lowest
|
|
address in the array)
|
|
|
|
• A width DX (the number of pixels per row)
|
|
|
|
• A height DY (the number of rows of pixels)
|
|
|
|
• A pitch (the difference between the starting addresses of two successive
|
|
rows)
|
|
A pixel array appears as a rectangular area on the screen. The array pitch is the
|
|
same in this case as the pitch of the display. The default starting address is
|
|
the address of the pixel in the upper left corner of the rectangle. (This assumes
|
|
that the ORG bit in the DPYCTL register and the PBH and PBV bits in the
|
|
CONTROL register are all set to their default values of 0.)
|
|
Two operands must be specified for a PIXBLT instruction:
|
|
|
|
• A source pixel array and
|
|
• A destination pixel array
|
|
The two arrays must have the same width and height, although they may have
|
|
different pitches. Each pixel in the source array is combined with the corre-
|
|
sponding pixel of the destination array. A Boolean or arithmetic pixel proc-
|
|
essing operation is selected and applied to the PIXBLT operation. The default
|
|
pixel processing operation is replace. If replace is selected, source pixel values
|
|
are simply copied into destination pixels.
|
|
Before executing a PIXBLT instruction, load the following parameters into the
|
|
appropriate GSP internal registers:
|
|
DYDX Composed of two portions: OX, which specifies the width of the
|
|
array, and DY, which specifies the height of the array.
|
|
PSIZE Pixel size (number of bits per pixel).
|
|
SADDR Starting address of source array (XY or linear address).
|
|
DADDR Starting address of destination array (XY or linear address).
|
|
SPTCH Source pitch, or difference in memory addresses of two vertically
|
|
adjacent pixels in the source array.
|
|
DPTCH Destination pitch, or difference in memory addresses of two verti-
|
|
cally adjacent pixels in the destination array.
|
|
If either the source or destination array is specified in XY format, the contents
|
|
of the CONVSP and CONVDP registers will be used in instances in which the
|
|
Y component of the starting address must be adjusted prior to the start of the
|
|
|
|
|
|
|
|
7-4
|
|
Graphics Operations - Pixel Block Transfers
|
|
|
|
|
|
PixBIt. The Y component may require adjustment, either to preclip the array
|
|
or to select a starting pixel in one of the lower two corners of the array.
|
|
Pitches and starting addresses must be specified separately for the two arrays
|
|
(source and destination). The width, height, and pixel size are common to
|
|
both arrays. (During a color expand operation, only the destination pixel size
|
|
is specified; the source pixel size is assumed to be one bit.)
|
|
The starting address of a pixel array can be specified as a linear (memory)
|
|
address or as an XY address. Window checking can be used only when the
|
|
destination array is pointed to by an XY address.
|
|
On-screen objects may be defined as XY arrays but may be more efficiently
|
|
stored as linear arrays in off-screen memory. An array specified in linear format
|
|
can be transferred to an array specified in XY format (and vice versa) by means
|
|
of the PIXBLT L,XY and PIXBLT XY,L instructions.
|
|
The FI LL instruction fills a specified destination pixel array with the pixel value
|
|
specified in the COLOR1 register. A fill operation can be thought of as a
|
|
special type of PixBlt that does not use a source pixel array. The source pixel
|
|
value used in pixel processing is the value in the COLOR1 register. The des-
|
|
tination array of a FILL instruction can be specified in either XY or linear for-
|
|
mat.
|
|
|
|
7.2.1 Color-Expand Operation
|
|
The TMS3401 0 allows shape information to be stored separately from attri-
|
|
butes such as color and intensity. A shape can be stored in compressed form
|
|
as a bit map containing 1s and Os. The color information is added as the shape
|
|
is drawn to the screen; the 1s in the bit map are expanded to the specified
|
|
Color 1 value, and the Os are expanded to the Color 0 value. This saves a
|
|
significant amount of memory when the pixel size in the display memory is two
|
|
bits or more.
|
|
Two PIXBLT instructions, PIXBLT B,XY and PIXBLT B,L, provide the color-
|
|
expand capability. The source array for either instruction is a bit map (one bit
|
|
per pixel) stored off-screen in linear format for greater storage efficiency. The
|
|
destination array can be specified in either XY or linear format. The pixel size
|
|
for the destination array is governed by the value in the PSIZE register. The
|
|
colors to which the 1 s and Os in the source array are expanded are specified
|
|
in the COLOR1 and COLORO registers.
|
|
A primary benefit of the color-expand capability is the reduction in table area
|
|
needed to store text fonts. Font bit maps are stored in compressed form at one
|
|
bit per pixel. The color-expand operation adds color to a character shape at
|
|
draw time, allowing color to be treated as an attribute separate from the shape
|
|
of the character. The alternative would be to store the fonts in expanded form,
|
|
which can be costly. The amount of table storage necessary to store red letters
|
|
A-Z, blue letters A-Z, and so on, multiplied by the number of font styles
|
|
needed for an application program, would be prohibitive. Furthermore, the
|
|
color-expand operation is inherently faster than using pre-expanded fonts
|
|
because far fewer bits of character shape information have to be read from the
|
|
font table when a character is drawn to the screen.
|
|
Figure 7 -1 shows the expansion of a bit map, one bit per pixel and four bits
|
|
wide, into four 4-bit pixels (transforming 0-1 -1 -0 into yellow-red-red-yellow,
|
|
|
|
7-5
|
|
Graphics Operations - Pixel Block Transfers
|
|
|
|
|
|
|
|
for example). Before transferring the expanded source array to the destination
|
|
array, any of the Boolean or arithmetic pixel processing operations can be ap-
|
|
plied.
|
|
Four bits per pixel example
|
|
of color expand
|
|
|
|
|
|
L l Four bit binary or unexpanded Image
|
|
|
|
|
|
hIla 13 la I Iala Ilia I I al aIlia I I al alll aICOLOR1
|
|
Register
|
|
|
|
COLORO
|
|
U~ljlaljl laljlalU laljlalU I al 31 al H Register
|
|
Execute Expand
|
|
|
|
|
|
|
|
|
|
I D
|
|
1
|
|
1 III I III (;
|
|
1 1 I (; I I D I.l 1 I.l I I D 1I
|
|
|
|
~--------------~v~----------------~
|
|
Reaultlng 18-b1t expanded Image
|
|
|
|
Figure 7-1. Color-Expand Operation
|
|
|
|
|
|
The expand function is also useful in applications that generate shapes or
|
|
patterns dynamically. During the first stage of this process, a compressed im-
|
|
age is constructed in an off-screen buffer area at one bit per pixel. The image
|
|
is built up of geometric objects such as rectangles, circles or polygons. Pat-
|
|
terns can also be added. When complete, the compressed image is color-
|
|
expanded onto the screen. This method defers the application of color and
|
|
intensity attributes until the final stage.
|
|
Combining color expand with the replace-with-transparency operation yields
|
|
a new operation that is particularly useful in drawing overlapping or kerned
|
|
text. The color value used to replace the Os in the source array is selected by
|
|
the programmer as all Os, which is the transparency code. The GSP defers the
|
|
check for transparency until after the color-expand operation has been per-
|
|
formed. As the color-expand operation is performed, the Os in the source array
|
|
are expanded to all Os. Only the pixels in the destination array that correspond
|
|
to nontransparent pixels in the resulting source array are replaced.
|
|
The PIXBLT B,XY and PIXBLT B,L instructions can be used in conjunction
|
|
with pixel processing, transparency and plane masking. Source pixels are ex-
|
|
panded before being processed. Window checking can be used with PIXBLT
|
|
B,XY.
|
|
|
|
|
|
|
|
|
|
7-6
|
|
Graphics Operations - Pixel Block Transfers
|
|
|
|
|
|
|
|
7.2.2 Starting Corner Selection
|
|
The default starting address of a pixel array is the lowest pixel address in the
|
|
array. When an array is displayed on the screen, as shown in Figure 7 -2 a, the
|
|
starting address is the address of the pixel in the upper left corner of the array.
|
|
(The XY origin is located in its default position at the upper left corner of the
|
|
screen.) During a PixBlt operation, this pixel is processed first. The PixBlt
|
|
processes pixels from left to right within each row, beginning at the top row
|
|
and moving toward the bottom row. The pixel at the lower right corner of the
|
|
array is processed last.
|
|
Certain PixBlt operations allow any of the other three corners to be used as the
|
|
starting location. This may be necessary, for instance, if the source and des-
|
|
tination arrays overlap. The sequence in which pixels are moved when the
|
|
arrays overlap should be controlled so as to not overwrite the pixels in the
|
|
source array before they are written to the destination array.
|
|
Figure 7-2 shows how the PBV and PBH bits in the CONTROL register de-
|
|
termine the starting corner for the Pix Bit operation. The starting corner is in-
|
|
dicated for each of four cases. PBH selects movement in the X direction, from
|
|
left to right or right to left. PBV selects movement in the Y direction, from top
|
|
to bottom or bottom to top.
|
|
|
|
+Y
|
|
|
|
|
|
|
|
|
|
G
|
|
+X
|
|
Pixel Array
|
|
Address
|
|
Pixel Array
|
|
Address
|
|
|
|
|
|
|
|
|
|
PBH=O. PBV=O PBH=1. PBV=O
|
|
|
|
|
|
|
|
Pixel Array Pixel Array
|
|
Address Address
|
|
|
|
|
|
|
|
|
|
PBH=O. PBV=1 PBH=1. PBV=1
|
|
|
|
Note: Starting corners are shaded.
|
|
Figure 7-2. Starting Corner Selection
|
|
|
|
|
|
|
|
|
|
7-7
|
|
Graphics Operations - Pixel Block Transfers
|
|
|
|
|
|
|
|
PBH=O The PixBlt processes pixels from left to right; that is, in the direction
|
|
of increasing X.
|
|
PBH =1 The PixBlt processes pixels from right to left; that is, in the direction
|
|
of decreasing X.
|
|
PBV=O The PixBlt processes rows from top to bottom; that is, in the di-
|
|
rection of increasing Y.
|
|
PBV=1 The PixBlt processes rows from bottom to top; that is, in the di-
|
|
rection of decreasing Y.
|
|
|
|
All the pixels in one row are processed before moving to the next row.
|
|
When one or both of the arrays is specified in XY format, the GSP automat-
|
|
ically calculates the actual starting address (specified by PBH and PBV) from
|
|
the default starting address (that is, the lowest pixel address in the array) and
|
|
the width and height of the array. Automatic starting address adjustment is
|
|
available with the following instructions:
|
|
|
|
• PIXBLT L,XY
|
|
• PIXBLT XY,L
|
|
• PIXBLT XY,XY
|
|
The programmer supplies the default starting addresses for these PixBlts in the
|
|
SADDR and DADDR registers. During the course of instruction execution,
|
|
SADDR and DADDR are automatically adjusted to the address of the corner
|
|
selected by PBH and PBV.
|
|
When both arrays are specified in linear format, the starting addresses of the
|
|
appropriate corner pixels must be provided by the programmer. The PIXBLT
|
|
L,L instruction allows any of the four corners to be used as the starting lo-
|
|
cation, but in this case the programmer must adjust the addresses in SADDR
|
|
and DADDR to the corner selected by PBH and PBV.
|
|
|
|
7.2.3 Interrupting PixBlts and Fills
|
|
PIXBLT and FILL are interruptible instructions. An interrupt can occur during
|
|
execution of one of these instructions; when interrupt processing is com-
|
|
pleted, execution of the PIXBLT or FILL resumes at the point at which the in-
|
|
terruption occurred.
|
|
The execution time of a PIXBLT or FI LL instruction depends on the specified
|
|
pixel array size. In order to prevent high-priority interrupts from being delayed
|
|
until completion of PixBlts and fills of large arrays, the PIXBLT and FILL in-
|
|
structions check for interrupts at regular intervals during their execution.
|
|
When a PIXBLT or FILL instruction is interrupted the PBX (PixBlt executing)
|
|
status bit is set to 1. This records the fact that the interrupt occurred during
|
|
a pixel array operation. The PC and the ST are pushed onto the stack, and
|
|
control is transferred to the appropriate interrupt service routine. At the end
|
|
of the interrupt service routine, an RETI (return from interrupt) instruction is
|
|
executed to return control to the interrupted program. The RETI instruction
|
|
|
|
|
|
|
|
|
|
7-8
|
|
Graphics Operations - Pixel Block Transfers
|
|
|
|
|
|
pops the ST and PC from the stack. When the PBX bit is detected, execution
|
|
of the interrupted PIXBLT or FILL instruction resumes.
|
|
At the time of the interrupt, the state of the PIXBLT or FILL instruction is saved
|
|
in certain B-file registers. The source and destination address registers contain
|
|
intermediate values. The source and destination pitches may also contain in-
|
|
termediate values, depending on the instruction. The SADDR, SPTCH,
|
|
DADDR, DPTCH registers and registers B1 o-B14 (as well as the original set
|
|
of implied operands) contain the information necessary to resume the in-
|
|
struction upon return from an interrupt.
|
|
If the interrupt routine uses any of these registers, they should be saved on the
|
|
stack and restored when interrupt processing is complete. By following this
|
|
procedure, PIXBLTor FI LL instructions can be safely executed within interrupt
|
|
service routines.
|
|
|
|
|
|
Note:
|
|
The PBX bit is not set to 1 when a PIXBLT or FILL instruction is aborted
|
|
due to a window violation.
|
|
|
|
|
|
|
|
|
|
7-9
|
|
Graphics Operations - Pixel Transfers/Incremental Algorithm Support
|
|
|
|
|
|
|
|
7.3 Pixel Transfers
|
|
The TMS3401 0 uses the PIXT (pixel transfer) instructions to transfer individ-
|
|
ual pixels from one location to another. The following pixel transfers can be
|
|
performed:
|
|
|
|
• From an A- or B-file register to memory,
|
|
• From memory to an A- or B-file register, or
|
|
• From one memory location to another.
|
|
The address of a pixel in memory can be specified in XY or linear format. Li-
|
|
near addresses must be pixel aligned.
|
|
The pixel size for all PIXTs is specified by the value in the PSIZE register. Pixel
|
|
sizes are restricted to 1, 2, 4, 8, or 16 bits to facilitate XY address computa-
|
|
tions, window checking, transparency, and arithmetic pixel processing.
|
|
The PIXT instruction can be used in conjunction with window checking,
|
|
Boolean or arithmetic pixel processing, plane masking, and transparency.
|
|
|
|
|
|
|
|
|
|
7.4 Incremental Algorithm Support
|
|
The TMS3401 0 supports incremental drawing algorithms via its DRAV (draw
|
|
and advance) and LINE instructions. The DRAV instruction is used primarily
|
|
in the construction of algorithms for incrementally drawing circles, ellipses,
|
|
arcs, and other curves. The DRAV instruction can also be used in the inner
|
|
loop of algorithms for drawing straight lines incrementally. Lines, however,
|
|
are treated as a special case by the TMS3401 0 in order to achieve even faster
|
|
drawing rates. A separate instruction, LI N E, implements the entire inner loop
|
|
of the Bresenham algorithm for drawing lines.
|
|
The DRAV (draw and advance) instruction draws a pixel to a location pointed
|
|
to by a register; the pointer register is then incremented to point to the next
|
|
pixel. The pointer is specified as an XY address. The X and Y portions of the
|
|
address are incremented independently, but in parallel. The value written to
|
|
the destination pixel in memory is taken from the COLOR1 register.
|
|
The DRAV instruction is embedded in the inner loop of an incremental algo-
|
|
rithm to speed up its execution. As an incremental algorithm plots each pixel
|
|
on a curve, it also determines where the next pixel will be drawn. The next
|
|
pixel is typically one of the eight pixels immediately surrounding the pixel just
|
|
plotted on the screen. Advancing in this manner, the algorithm tracks the
|
|
curve from one end to the other.
|
|
The DRAV and LINE instructions may be used in conjunction with Boolean
|
|
or arithmetic pixel processing operations, window checking, plane masking
|
|
and transparency.
|
|
|
|
|
|
|
|
|
|
7-10
|
|
Graphics Operations - Transparency
|
|
|
|
|
|
|
|
7.5 Transparency
|
|
When a PixBlt is used to draw an object to the screen, some of the pixels in
|
|
the rectangular pixel array that contains the object may not be part of the ob-
|
|
ject itself. Transparency is a mechanism that allows surrounding pixels in
|
|
the array to be specified as invisible. This is useful for ensuring that only the
|
|
object, and not the rectangle surrounding it, is written to the screen.
|
|
Transparency is enabled by setting the T bit in the CONTROL register to 1, or
|
|
disabled by setting the T bit to O. When enabled, a pixel that has a value of 0
|
|
is considered transparent, and will not overwrite a destination pixel. Trans-
|
|
parency detection is applied not to the source pixel values, but to the pixel
|
|
values resulting from plane masking and pixel processing. When an operation
|
|
performed on a pair of source and destination pixels yields a 0 result, the GSP
|
|
detects this and prevents the destination pixel from being altered. In the case
|
|
of pixel processing operations such as AND, MIN, and replace, a source pixel
|
|
value of 0 ensures that the result of the operation will be a transparent pixel.
|
|
Figure 7 -3 illustrates how transparency works in the GSP. Assuming four bits
|
|
per pixel, the hardware must detect strings of Os of length four falling between
|
|
pixel boundaries. While bit strings A and B are both of pixel length, only
|
|
string A is detected as transparent. String B crosses the pixel boundary. The
|
|
memory interface logic generates an internal mask to govern which bits are
|
|
modified during a write cycle. This mask contains Os in the bits corresponding
|
|
to the transparent pixel. Only destination bits corresponding to 1 s in the mask
|
|
will be modified.
|
|
|
|
~ String A~ r-- String B--1
|
|
Data to be written 010 o
|
|
|
|
|
|
Mask generated
|
|
|
|
|
|
Data to be modified IA A A AlB B B B Ie e e e ID D 0 DI
|
|
Resulting data
|
|
10 0 1IB B B B 11 0 0 01 0 o I
|
|
Note: This example assumes four bits per pixel.
|
|
|
|
Figure 7-3. Transparency
|
|
|
|
Figure 7-7 (page 7-17) and Figure 7-8 (page 7 -20) illustrate several pixel
|
|
processing operations. Figure 7 -8 h shows an example of a replace operation
|
|
performed with transparency enabled. The pixels surrounding the letter A
|
|
pattern in the source array are transparent (all Os). Compare Figure 7 -8 h with
|
|
Figure 7-7 d; this replace-with-transparency operation is analogous to the
|
|
logical OR operation in a one-bit-per-pixel display.
|
|
Transparency can be used with any instruction that writes to pixels, including
|
|
the PIXBLT, FILL, DRAV, LINE, and PIXT instructions. Transparency does not
|
|
affect writes to non-pixel data.
|
|
|
|
|
|
7 -11
|
|
Graphics Operations - Plane Masking
|
|
|
|
|
|
|
|
7.6 Plane Masking
|
|
The plane mask is a hardware mechanism for protecting specified bits within
|
|
pixels. Mask-protected pixels will not be modified during graphics in-
|
|
structions. The plane mask allows the bits within pixels to be manipulated as
|
|
though the display memory were organized into bit planes (or color planes)
|
|
that can selectively be protected from modification. The number of planes
|
|
equals the number of bits per pixel.
|
|
Consider an example in which the pixel size is four bits. The bits within each
|
|
pixel are numbered 0-3, and belong to planes 0-3, respectively. All the bits
|
|
numbered 0 in all the pixels form plane 0, all the bits numbered 1 in all the
|
|
pixels form plane 1, and so on.
|
|
The plane mask allows one or more planes to be manipulated independently
|
|
of the other planes. Given four planes of display memory, for example, three
|
|
of the planes can be dedicated to eight-color graphics, while the fourth plane
|
|
can be used to overlay text in a single color. The plane mask can be set so that
|
|
the text plane can be modified without affecting the graphics planes, and vice
|
|
versa.
|
|
The PMASK register contains the plane mask. Each bit in the plane mask
|
|
corresponds to a bit position in a pixel. The 1s in the mask designate pixel
|
|
bits that are protected, while Os in the mask designate pixel bits that can be
|
|
modified. Those pixel bits that are protected by the plane mask are always
|
|
read as Os during read cycles, and are protected from alteration during write
|
|
cycles. While °no single control bit enables or disables plane masking, it is ef-
|
|
fectively disabled by setting PMASK to all Os; this is the default condition
|
|
following reset.
|
|
The logical width of a quantity in the plane mask is the same as the pixel size.
|
|
However, in order to maintain a consistent effect on all of the pixels within a
|
|
destination region, regardless of their position within the destination words,
|
|
you should replicate the mask for a single pixel to fill the entire 16-bit PMASK
|
|
register. (To provide upward compatibility with future versions of the GSP,
|
|
you should replicate the plane mask through the 32 bits beginning at address
|
|
C0000170h.) For example, if the pixel size is four bits, the 4-bit mask is rep-
|
|
licated four times within PMASK; in bits 0-3, 4-7, 8-11, and 12-15. These
|
|
four copies of the mask are applied to the four pixels in a word written to or
|
|
read from memory. A 16-bit PMASK value for pixels of 1, 2, 8, or 16 bits is
|
|
constructed similarly by replicating the mask 16, 8, 2, or 1 times, respectively.
|
|
The plane mask affects only pixel accesses performed during execution of the
|
|
PIXBLT, FILL, PIXT, DRAV, and LINE instructions. Data accesses by non-
|
|
graphics instructions are not affected.
|
|
The following list summarizes operation of the PMASK register during pixel
|
|
reads and writes:
|
|
|
|
• Pixel Read:
|
|
The Os in PMASK correspond to unprotected bits in the source pixel that
|
|
are seen by the GSP to contain the actual values read from memory.
|
|
The 15 in PMASK correspond to protected bits in the source pixel that
|
|
are seen as Os by the GSP, regardless of the values read from memory.
|
|
|
|
|
|
7-12
|
|
Graphics Operations - Plane Masking
|
|
|
|
|
|
|
|
• Pixel Write:
|
|
The Os in PMASK specify those bits in the destination pixel in memory
|
|
which may be altered.
|
|
The 15 in PMASK specify protected bits in the destination pixel which
|
|
cannot be altered.
|
|
|
|
When a pixel is being transferred from a source to a destination location, plane
|
|
masking is applied to the values read from the source and destination before
|
|
pixel processing is applied. As the operands are read from memory, the bits
|
|
protected by the plane mask are replaced with Os before the specified Boolean
|
|
or arithmetic pixel processing operation is performed. and destination before
|
|
pixel processing is applied. Transparency detection is performed on the result
|
|
of this operation. When the result is written back to the destination, those bits
|
|
of the destination that are protected by the plane mask are not modified.
|
|
Source pixels that originate from registers are not affected by the plane mask,
|
|
and undergo pixel processing in unmodified form. The FILL, DRAV, LINE,
|
|
PIXT Rs,*Rd, and PIXT Rs,*Rd.XY instructions obtain their source pixels from
|
|
registers.
|
|
Figure 7 -4 shows how special hardware in the local memory interface of the
|
|
TMS34010 applies the plane mask to pixel data during a read cycle. The pixel
|
|
size for this example is eight bits per pixel. This could represent the execution
|
|
of a PIXT *Rs.XY,Rd instruction, for instance.
|
|
Move this pixel
|
|
Into a asp register
|
|
|
|
|
|
|
|
8 7
|
|
(a) Original data In memory (2 pixels) A A A A A A B B B B
|
|
|
|
(b) Plane mask (PMASK) 11 0 0 0 0 o !1 0 0 0 0 oI
|
|
(0) Data read Into GSP register 10 0 0 0 0 0 0 010 0 B B 0 B B B I
|
|
Notes: 1. This example assumes eight bits per pixel.
|
|
2. The pixel moved into the GSP register is left justified. All register bits to the left of
|
|
the pixel are zero filled.
|
|
|
|
Figure 7-4. Read Cycle With Plane Masking
|
|
|
|
|
|
• Figure 7 -4 a shows the 16-bit word containing the pixel as it is read
|
|
from memory.
|
|
|
|
• The word is AN Ded with the inverse of the plane mask shown in b.
|
|
|
|
• The result in Figure 7 -4 c shows that the bits within the data word that
|
|
correspond to 1s in the mask have been set to Os.
|
|
|
|
|
|
|
|
|
|
7-13
|
|
Graphics Operations - Plane Masking
|
|
|
|
|
|
|
|
After plane masking, the designated pixel is loaded into the eight LSBs of the
|
|
32-bit destination register, and the 24 MSBs of the register are filled with Os.
|
|
Figure 7 -5 shows the effect of combining plane masking with pixel transpar-
|
|
ency. Again, the performance of the special hardware in the local memory
|
|
interface controller is demonstrated. The example shows the transfer of two
|
|
pixels during the course of a PixBlt operation with transparency enabled, the
|
|
pixel size set at eight bits, and the replace pixel processing operation. The
|
|
inverse of PMASK is AN Ded with the source data, and transparency detection
|
|
is applied to the resulting entire pixel. In other words, the result is used to
|
|
control the write in the manner described in the previous discussion of pixel
|
|
transparency. Since the three LSBs of the source pixel in bits 8-15 are Os, and
|
|
the rest of the pixel is masked off, the entire source pixel is interpreted as
|
|
transparent. The memory interface logic generates an internal mask to govern
|
|
which bits are modified during a write cycle. This mask contains Os in the bits
|
|
corresponding to the transparent pixel.
|
|
16(MSB) 8 7 O(LSB)
|
|
(8) Original data In memory (2 pixels) A A A A A A A A B B B B B B B B
|
|
|
|
(I) Source data In memory y y y y y
|
|
(to be moved) 0 0 0 Z Z Z Z Z Z Z Z
|
|
|
|
(c) Plane mask (PMASI<) 0 0 0 0 0 0
|
|
|
|
(d) Mask source data for trans-
|
|
parency detecUon (SRC. ~ 0 0 0 0 0 0 0 0 0 0 0 0 0 Z Z Z
|
|
|
|
(e) Transparency mask 0 0 0 0 0 0 0 0
|
|
|
|
(1) Combined mask ~. trans-
|
|
parency mask) 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
|
|
(g) R88UItIng memory data after A A A A A A A A B B B B B Z Z Z
|
|
write cycle (Combined Mask.
|
|
aRC DATA + coiribined M88k.
|
|
DST DATA)
|
|
|
|
Note: This example assumes eight bits per pixel.
|
|
|
|
Figure 7-5. Write Cycle With Transparency and Plane Masking
|
|
|
|
|
|
• Figure 7 -5 a shows the original data at the destination location.
|
|
• b shows the source data.
|
|
• In c, the source data is ANDed with the inverse of the plane mask.
|
|
• d shows the intermediate result produced by c.
|
|
• This result is used to generate the transparency mask in e, which is
|
|
AN Ded with the inverse of the plane mask in c to produce the composite
|
|
mask shown in f.
|
|
• The result in G is produced by replacing with the source only those bits
|
|
of the destination corresponding to 1s in the composite mask in f.
|
|
|
|
|
|
|
|
|
|
7-14
|
|
Graphics Operations - Pixel Processing
|
|
|
|
|
|
|
|
7.7 Pixel Processing
|
|
Source and destination pixel values can be combined according to the pixel
|
|
processing operation (or raster operation) selected. The TMS34010's pixel
|
|
processing operations include 16 Boolean and 6 arithmetic operations. The
|
|
Booleans are performed in bitwise fashion on operand pixels of 1, 2, 4, 8, or
|
|
16 bits. The arithmetic operations treat operand pixels of 4, 8, or 16 bits as
|
|
unsigned binary numbers.
|
|
When a pixel is read from its source location, it is arithmetically combined with
|
|
the corresponding destination pixel according to the Boolean or arithmetic
|
|
pixel processing option selected, and the result is written to the destination
|
|
pixel. The pixel processing operation is selected by the PPOP field in the
|
|
CONTROL register. Table 7-1 and Table 7-2 list the 22 PPOP codes and their
|
|
meanings.
|
|
Table 7-1. Boolean Pixel Processing Options
|
|
|
|
PPOP Field Operation
|
|
00000 Source -+ Destination
|
|
00001 Source AN D Destination -+ Destination
|
|
00010 Source AN D ,..., Destination -+ Destination
|
|
00011 Os -+ Destination
|
|
00100 Source OR ,..., Destination -+ Destination
|
|
00101 Source XNOR Destination -+ Destination
|
|
00110 - Destination -+ Destination
|
|
00111 Source NOR Destination -+ Destination
|
|
01000 Source OR Destination -+ Destination
|
|
01001 Destination -+ Destination
|
|
01010 Source XOR Destination -+ Destination
|
|
01011 -Source AND Destination -+ Destination
|
|
01100 1s -+ Destination
|
|
01101 -Source OR Destination -+ Destination
|
|
01110 Source NAND Destination -+ Destination
|
|
01111 - Source -+ Destination
|
|
|
|
|
|
Table 7-2. Arithmetic (or Color) Pixel Processing Options
|
|
|
|
PPOP Field Operation
|
|
10000 Source + Destination -+ Destination
|
|
10001 ADDS(Source, Destination) -+ Destination
|
|
10010 Destination - Source -+ Destination
|
|
10011 SUBS(Source, Destination) -+ Destination
|
|
10100 MAX(Source, Destination) -+ Destination
|
|
10101 MIN(Source, Destination) -+ Destination
|
|
1011 0-11111 Reserved
|
|
|
|
|
|
|
|
|
|
7-15
|
|
Graphics Operations - Pixel Processing
|
|
|
|
|
|
In Table 7 -2, pixel processing codes 100002 and 100102 correspond to stan-
|
|
dard 2s complement addition and subtraction. A result that overflows the
|
|
specified pixel size causes the pixel value to wrap around within its 4, 8, or
|
|
16-bit range. Carry bits are, however, prevented from propagating to adjacent
|
|
pixels.
|
|
The ADDS (add with saturation) and SUBS (subtract with saturation) oper-
|
|
ations shown in Table 7 -2 produce results identical to those of standard ad-
|
|
dition or subtraction, except when arithmetic overflow occurs. When the
|
|
ADDS operation would produce an overflow result, the result is replaced with
|
|
all 1 s. When the SUBS operation would produce an underflow result, the re-
|
|
sult is replaced with all Os.
|
|
The MAX operation shown in Table 7 -2 compares the source and destination
|
|
pixels and then writes the greater value to the destination location. The MIN
|
|
operation is similar, but writes the lesser value to the destination.
|
|
Figure 7 -6 depicts the interaction of pixel processing with other graphics op-
|
|
erations when a source pixel is transferred to a destination pixel. Note that this
|
|
is a general description; some of these operations do not occur if they are not
|
|
selected. Pixels are first read from memory and modified by the plane mask.
|
|
Pixel processing is then performed on the modified pixel values. The plane
|
|
mask is applied to the result. Bits which are 1s in the PMASK produce 0 bits
|
|
in the result of this process. Thus, some processed pixels may become trans-
|
|
parent as the result of plane masking. Next, transparency detection is applied
|
|
to the data, and finally, a read-modify-write operation is invoked.
|
|
|
|
|
|
|
|
|
|
t Not performed if replace is selected.
|
|
Only performed when plane masking or transparency is active and the pixel size is not
|
|
:j:
|
|
16, or the data being written is not word-aligned.
|
|
|
|
Figure 7-6. Graphics Operations Interaction
|
|
|
|
|
|
|
|
7-16
|
|
Graphics Operations - Boolean Processing Examples
|
|
|
|
|
|
|
|
7.8 Boolean Processing Examples
|
|
Figure 7 -7 illustrates the effects of five commonly used Boolean operations
|
|
when applied to one-bit pixels. Black regions contain Os, and white regions
|
|
contain 1 s. Figure 7 -7 a and b show the original source and destination ar-
|
|
rays. The source operand in a is the letter A, and the destination in b is a
|
|
calligraphic-style X.
|
|
|
|
|
|
|
|
|
|
g
|
|
(A) SOURCE ARRAY
|
|
x
|
|
(8) ORIGINAL DESTINATION
|
|
ARRAY
|
|
|
|
|
|
|
|
|
|
y
|
|
11(C) REPLACE
|
|
¥ ,~
|
|
|
|
(D) OR
|
|
X (E) ANO-NOT
|
|
|
|
|
|
|
|
|
|
II (F) AND
|
|
1{ (G) XOR
|
|
|
|
Figure 7-7. Examples of Operations on Single-Bit Pixels
|
|
|
|
|
|
|
|
|
|
7-17
|
|
Graphics Operations - Boolean Processing Examples
|
|
|
|
|
|
|
|
7.8.1 Replace Destination with Source
|
|
A simple replacement operation overwrites the pixels of the destination array
|
|
with those of the source. Figure 7 -7 c shows the letter A written over the
|
|
center portion of a larger X using the replace operation. The rectangular region
|
|
around the letter A obscures a portion of the X lying outside the A pattern.
|
|
Other operations allow only those pixels corresponding to the A pattern within
|
|
the rectangle to be replaced, permitting the background pattern to show
|
|
through. These are the logical OR and logical AND-NOT (NOT source AND
|
|
destination) operations. The replace-with-transparency operation performs
|
|
similarly in color systems.
|
|
|
|
|
|
|
|
7.8.2 Logical OR of Source with Destination
|
|
Figure 7-7 d illustrates the use of the logical OR operation during a PixBIt.
|
|
For a one-bit-per-pixel display, the OR function leaves the destination pixels
|
|
unaltered in locations corresponding to Os in the source pixel array. Destina-
|
|
tion pixels in positions corresponding to 1 s in the source are forced to 1s.
|
|
|
|
|
|
|
|
7.8.3 Logical AND of NOT Source with Destination
|
|
Logically AN Ding the negated source with the destination is complementary
|
|
to the logical OR operation. Destination pixels corresponding to 1 s in the
|
|
source array remain unaltered, but those corresponding to Os in the source are
|
|
forced to Os. Figure 7-7 e is an example of the AND-NOT PixBlt operation
|
|
(notice the negative image of the letter A). For comparison, Figure 7 -7 f
|
|
shows the result of simply ANDing the source and destination.
|
|
|
|
|
|
|
|
7.8.4 Exclusive OR of Source with Destination
|
|
The XOR operation is useful in making patterns stand out on a screen in in-
|
|
stances where it is not known in advance whether the background will be 1 s
|
|
or Os. At every point at which the source array contains a pixel value of 1, the
|
|
corresponding pixel of the destination array is flipped - a 1 is converted to a
|
|
0, and vice versa. XOR is a reversible operation; by XORing the same source
|
|
to the same destination twice, the original destination is restored. These pro-
|
|
perties make the XOR operation useful for placing and removing temporary
|
|
objects such as cursors, and in "rubberbanding" lines. As seen in the example
|
|
of Figure 7 - 7 g, however, the object may be difficult to see if both the source
|
|
and destination arrays contain intricate shapes.
|
|
|
|
|
|
|
|
|
|
7-18
|
|
Graphics Operations - Multiple-Bit Pixel Operations
|
|
|
|
|
|
|
|
7.9 Multiple-Bit Pixel Operations
|
|
The Boolean operations described in Section 7.8 are sufficient for single-bit
|
|
pixel operations, but they may be inappropriate for multiple-bit pixel oper -
|
|
ations, especially when color is involved. For example, the result of a bit-
|
|
wise - OR operation on a black-and-white (one bit per pixel) display is easily
|
|
predicted - DRing black and white yields white. However, the meaning of this
|
|
operation is less intuitive when it is applied to multiple - bit pixels. For exam-
|
|
ple, in a population -density map, colors may be used to represent numeric
|
|
values. If one color, such as red, represents one level of population density,
|
|
and blue represents another, what happens when the two colors are bit-
|
|
wise - ORed? When pixels represent numeric values, numerical operations such
|
|
as addition and subtraction yield more useful results.
|
|
Boolean operations are usually inadequate for merging antialiased objects into
|
|
a single bit-mapped image. Older graphics systems that are limited to Boolean
|
|
operations on pixels are incapable of supporting many practical applications
|
|
on multiple-bit-per-pixel images. For instance, where two antialiased lines
|
|
cross, AN D and OR operations yield chaotic pixel intensities that defeat the
|
|
purpose of the antialiasing . However, merging the two lines by means of the
|
|
GSP 's MAX operation (for white on black) or MIN operation (for black on
|
|
white) yields a smooth and aesthetically pleasing image.
|
|
|
|
7.9.1 Examples of Boolean and Arithmetic Operations
|
|
Figure 7 -8 illustrates Boolean and arithmetic operations on multiple-bit pixels.
|
|
Figure 7 -8 a illustrates a source array that contains a red letter A; the red pixels
|
|
have the value 8 (10002) and the black background pixels have the value 0
|
|
(00002) ' Figure 7 -8 b shows the destination array, a yellow X; the yellow
|
|
pixels have the value 12 (11002) and the pixels in the blue background pixels
|
|
have the value 2 (00102) '
|
|
Boolean operations can be applied to multiple - bit pixels by combining the
|
|
corresponding bits of each pair of source and destination pixels on a bit - by - bit
|
|
basis according to the specified Boolean operation. Figure 7 -8 c through g
|
|
show the effects of combining the source and destination arrays using the re-
|
|
place, OR. AND-NOT, AND, and XOR PixBlt operations . Compare these to
|
|
Figure 7-7 (page 7-17) .
|
|
Arithmetic operations treat 4-bit, 8 - bit, and 16-bit pixels as unsigned binary
|
|
numbers. An n-bit pixel represents a positive integer in the range 0 to 2n-1
|
|
(all 1 s) . Examples of arithmetic operations on source and destination pixels
|
|
are shown in Figure 7 -8 i through n and discussed in Section 7 .9.1.1 through
|
|
Section 7 .9.1 .4.
|
|
|
|
|
|
|
|
|
|
(a) Source (b) Destination
|
|
|
|
Figure 7-8. Examples of Boolean and Arithmetic Operations
|
|
|
|
|
|
|
|
|
|
7 - 19
|
|
Graphics Oper ations - Multiple-Bit Pixel Operations
|
|
|
|
|
|
|
|
|
|
(c) Src Re pl ac es Dst (d ) Src OR Dst (e ) SrC A ND Dst
|
|
|
|
|
|
|
|
|
|
(t) Src A N D Dst (g) Src XO R Dst (h) Replace with
|
|
Transparency
|
|
|
|
|
|
|
|
|
|
(i) Add (j) Subtract (k) Add with Saturation
|
|
|
|
|
|
|
|
|
|
(I) Subtract with (m) MAX (n) MIN
|
|
Saturation
|
|
|
|
Figure 7-8. Examples of Boolean and Arithmetic Operations (Concluded)
|
|
|
|
|
|
|
|
|
|
7-20
|
|
Graphics Operations - Multiple-Bit Pixel Operations
|
|
|
|
|
|
7.9.1.1 Figure 7-8 i and i-Simple Addition and Subtraction
|
|
Figure 7 -8 i shows the result of adding the source and destination arrays.
|
|
Simple binary 2s complement addition is used. When the sum of the two
|
|
pixels exceeds the maximum pixel value, the result overflows. Figure 7 -8 j
|
|
shows the result of subtracting the source array from the destination array.
|
|
Underflow occurs for those pixels whose calculated difference is negative.
|
|
Simple addition and subtraction are complementary operations. They are re-
|
|
versible operations in the same sense as the XOR operation - by adding a
|
|
source pixel to a destination pixel, and then subtracting the same source pixel,
|
|
the original destination pixel is recovered.
|
|
|
|
7.9.1.2 Figure 7-8 k and 1- Add and Subtract with Saturate
|
|
The add and subtract operations described in Section 7.9.1.1 are binary 2s
|
|
complement operations which allow overflow and underflow. An add-with-
|
|
saturate operation stops the result at the maximum unsigned value without
|
|
allowing the result to overflow. For example, with four bits per pixel, adding
|
|
00102 to 11102 produces 11112. Similarly, a subtract-with-saturate operation
|
|
stops the result at 0 without allowing it to underflow.
|
|
Figure 7 -8 k and I illustrate examples of addition with saturation and sub-
|
|
traction with saturation. In these examples, the pixel size is four bits. By
|
|
dedicating a different color to each value, the effects of each PixBlt operation
|
|
become more visible. .
|
|
An alternate method of encoding 4-bit pixels uses the 16 values 0 to 15 to
|
|
represent increasing intensities of a single color component: red, green, and
|
|
blue. The addition and subtraction operations now have obvious meaning -
|
|
increasing or decreasing the intensity by specified amounts. At 12 bits per
|
|
pixel, four bits of intensity can be dedicated to each of the three color com-
|
|
ponents. Arithmetic operations are then performed on the corresponding
|
|
components of each pair of source and destination pixels.
|
|
Figure 7 -9 (page 7 -22) presents examples in which the pixel values represent
|
|
intensities of a gray from black to white.
|
|
|
|
7.9.1.3 Figure 7-8 m - Maximum
|
|
Figure 7 -8 m illustrates the results of the MAX operation on the source and
|
|
destination arrays. MAX compares two pixel values and replaces the destina-
|
|
tion pixel with the larger value. In some respects, MAX is the arithmetic
|
|
equivalent of the Boolean OR function (compare Figure 7 -8 m with Figure 7-7
|
|
b). The use of MAX in gray-scale and color displays is similar to that of OR
|
|
in simple black and white.
|
|
If the most-significant bits in each pixel are assigned to represent object pri-
|
|
ority (whether an object appears in front of or behind another object), the
|
|
MAX operation can be used to replace only those pixels of the destination ar-
|
|
ray whose priorities are lower than those of the corresponding pixels in the
|
|
source array. This allows an object to be drawn to the screen so that it appears
|
|
either in front of or behind other objects previously drawn. In Figure 7 -8 m
|
|
the red A has a numerical value that is greater than that of the blue back-
|
|
ground, but less than that of the X.
|
|
The MAX function is also useful for smoothly combining two antialiased ob-
|
|
jects that overlap.
|
|
|
|
|
|
7-21
|
|
Graphics Operations - Multiple-Bit Pixel Operations '
|
|
|
|
|
|
|
|
7.9.7.4 Figure 7-8 n - Minimum
|
|
Figure 7-8 n illustrates the results of the MIN operation on the source and
|
|
destination arrays. MIN compares two pixel values and replaces the destina -
|
|
tion pixel with the smaller value . MIN is similar to the Boolean AN D function .
|
|
MIN can be used with priority -encoded pixel values, similar to MAX, but the
|
|
effect is reversed . In Figure 7 -8 n, the priorities of the two objects are reversed
|
|
from that of the MAX example shown in Figure 7-8 m. The MIN operation
|
|
also has uses similar to those of MAX in smoothly combining antialiased ob -
|
|
jects that overlap.
|
|
|
|
7.9.2 Operations on Pixel Intensity
|
|
Figure 7 -9 illustrates the visual effects of various PixBlt operations on two
|
|
intersecting disks. In these examples, each pixel is a four-bit value represent-
|
|
ing an intensity from 0 (black) to 15 (white) . Before the Pix Bit operation ,
|
|
only a single disk resides on the screen, as shown in Figure 7 -9 a. The in-
|
|
tensity of the disk is greatest at the center (where the value is 12) , and grad-
|
|
uay falls off as the distance from the center increases. Figure 7 - 9 b through
|
|
f show the effects of combining a second, identical disk with the first. Figure
|
|
7 -9b through e are produced using arithmetic operations; f is the result of a
|
|
logical OR of the source and destination . These operations are discussed in
|
|
Section 7 .9.2.1 through Section 7 .9.2.4.
|
|
|
|
|
|
|
|
|
|
(a) Original Disk (b) Replace with Transparency (c) Add
|
|
|
|
|
|
|
|
|
|
(d) Add with Saturate (e) MAX (f) OR
|
|
|
|
Figure 7-9. Examples of Operations on Pixel Intensity
|
|
|
|
|
|
|
|
|
|
7-22
|
|
Graphics Operations - Multiple-Bit Pixel Operations
|
|
|
|
|
|
|
|
The gradual change in intensity at the edge of the disk in Figure 7 -9 a is similar
|
|
to the result produced by certain antialiasing techniques whose purpose is to
|
|
reduce jagged-edge effects. A text font might be stored in antialiased form,
|
|
for example, to give the text a smoother appearance. When two characters
|
|
from the font table are PixBIt'd to adjacent positions on the screen, they may
|
|
overlap slightly. The particular arithmetic or Boolean operation selected for the
|
|
PixBlt determines the way in which the antialiased edges of the characters are
|
|
combined within regions of overlap.
|
|
|
|
7.9.2.1 Figure 7-9 b - Replace with Transparency
|
|
In Figure 7 -9 b, a second disk is PixBIt'd into a position near the first disk. A
|
|
replace-with-transparency operation is performed. Those pixels of the first
|
|
disk that lie within the rectangular region containing the second disk, but are
|
|
not part of the second disk, remain intact. The visual effect is that the second
|
|
disk (at the right) appears to lie in front of the original disk (at the left).
|
|
However, assuming that the gradual change in intensity at the perimeter of the
|
|
disks is done for the purpose of antialiasing, the sharp edge that results where
|
|
the second disk covers the first defeats this purpose. In other applications, this
|
|
sharp edge may be desirable; for example, it might be used to make a text
|
|
character or a cursor stand out from the background. The replace-with-
|
|
transparency operation also supports object priority by writing objects to the
|
|
screen in ascending order of priority.
|
|
|
|
7.9.2.2 Figure 7-9 c - Add with Overflow and Subtract with Underflow
|
|
In Figure 7 -9 C, a second disk is PixBlt'd into an area overlapping the first disk,
|
|
using an add-with-overflow operation. In this example, when 1 is added to
|
|
an intensity of 15, the sum is truncated to four bits to produce the result O.
|
|
The effect of arithmetic overflow is visible at the intersection of the two disks
|
|
as discontinuities in intensity.
|
|
This effect is useful for making objects stand out against a cluttered back-
|
|
ground. Add with overflow has an additional benefit - the object can be re-
|
|
moved by subtracting (with underflow) the object image from the screen.
|
|
|
|
7.9.2.3 Figure 7-9 d - Add and Subtract with Saturation
|
|
In Figure 7 -9 d, the original disk is on the left. A second disk is PixBlt'd into
|
|
a region overlapping the original disk, using an add-with-saturate operation.
|
|
Whenever the sum of two pixels exceeds the maximum intensity value, which
|
|
is 15 for this example, the sum is replaced with 15. The bright region that
|
|
occurs where the two disks intersect is produced when the corresponding
|
|
pixels of the two disks are added in this manner. Subtract-with-saturate is the
|
|
complementary operation; when the difference of the two pixel values is neg-
|
|
ative, the sum is replaced by the minimum intensity value, O.
|
|
The add-with-saturate operation shown in Figure 7 -9 d approximates the ef-
|
|
fect of two light beams striking the same surface; the surface is brightest in the
|
|
area in which the two beams overlap.
|
|
These operations can be used to achieve an effect similar to that of an airbrush
|
|
in painting. Consider a display system that represents each pixel as 12 bits,
|
|
and dedicates four bits each to represent the intensities of the three color
|
|
|
|
|
|
7-23
|
|
Graphics Operations - Multiple-Bit Pixel Operations
|
|
|
|
|
|
components, red, green, and blue. This method permits the intensity of each
|
|
component to be directly manipulated. With each pass of the simulated air-
|
|
brush over the same area of the screen, the color changes gradually toward the
|
|
color of the paint in the airbrush. For example, assume that the paint is yellow
|
|
(a mixture of red and green). Each time a pixel is touched by the airbrush, the
|
|
intensity of the red and green components is increased by 1, and the intensity
|
|
of the blue component is decreased by 1. With each sweep of the airbrush,
|
|
the affected area of the screen turns more yellow until the red and green
|
|
components reach the maximum intensity value (and are not allowed to over-
|
|
flow), and the blue component reaches 0 (and is not allowed to underflow).
|
|
|
|
7.9.2.4 Figure 7-9 e - MAX and MIN Operations
|
|
In Figure 7 -9 e, the original disk is on the left. A second disk is PixBlt'd into
|
|
the rectangular region to its right using the MAX operation. In the region in
|
|
which the disks overlap, each pair of corresponding pixels from the two disks
|
|
is compared and the greater value is selected. This produces a relatively
|
|
smooth blending of the two disks. Unlike add with saturate, the MAX function
|
|
does not generate a "hot spot" where two objects intersect.
|
|
The visual effect achieved using the MAX operation is desirable in an appli-
|
|
cation, for instance, in which white antialiased lines are constructed on top of
|
|
each other over a black background. MAX also smooths out places in which
|
|
the lines are overlapped by antialiased text. MAX is successful in maintaining
|
|
two visually distinct antialiased objects, while the add-with-saturate tends to
|
|
run them together.
|
|
MIN, which is complementary to MAX, can be used'similarly to smooth the
|
|
appearance of intersecting black antialiased lines and text on a white back-
|
|
ground.
|
|
The MAX and MIN operations are particularly useful in color applications in
|
|
which the number of bits per color gun is small (eight bits or less). Other
|
|
operators could also be used to smooth the transition between the two over-
|
|
lapping antialiased objects in Figure 7 -9 e, but any additional accuracy at-
|
|
tained by using a more complex smoothing function would probably be lost
|
|
in truncating the result to the resolution of the integer used to represent the
|
|
intensity at each point.
|
|
|
|
|
|
|
|
|
|
7-24
|
|
Graphics Operations - Window Checking
|
|
|
|
|
|
|
|
7.10 Window Checking
|
|
The TMS34010's hardware window clipping confines graphics drawing op-
|
|
erations to a specified rectangular window in the XV address space. Other
|
|
window checking modes cause an interrupt to be requested on a window hit
|
|
or a window miss.
|
|
Window checking affects only pixel writes performed by the following graph-
|
|
ics instructions:
|
|
|
|
• PIXBLT
|
|
• FILL
|
|
• LINE
|
|
• DRAV
|
|
• PIXT
|
|
Data writes by non-graphics instructions are not affected.
|
|
A window is a rectangular region of display memory specified in terms of the
|
|
XV coordinates of the pixels in its two extreme corners (minimum X and Y, and
|
|
maximum X and V). The corner pixels are considered to lie within the window.
|
|
Window checking is available only in conjunction with XV addressing; it is not
|
|
available with linear addressing. Specifically, the destination pixel address
|
|
must be an XV address.
|
|
One of four window checking modes is selected by the value loaded into the
|
|
W field of the CONTROL register:
|
|
W=O: Window checking disabled. No window checking is performed.
|
|
W=1: Window hit detection. Request interrupt on attempt to write inside
|
|
window.
|
|
W=2: Window miss detection. Request interrupt on attempt to write outside
|
|
window.
|
|
W=3: Window clipping. Clip all pixel writes to window.
|
|
When window checking is enabled (modes 1, 2 or 3), an attempt to write to
|
|
a pixel outside the window causes the V (overflow) bit in the status register
|
|
to be set to 1; a write (or attempt to write) to a pixel inside the window sets
|
|
V to O. When window checking is turned off (mode 0), the V bit is unaffected
|
|
during pixel writes.
|
|
|
|
|
|
|
|
|
|
7-25
|
|
Graphics Operations - Window Checking
|
|
|
|
|
|
|
|
7.10.1 W=1 Mode - Window Hit Detection
|
|
The W=1 mode detects attempts to write to pixels within the window. This
|
|
form of window checking supports applications which permit objects on the
|
|
screen to be picked by pointing to them with a cursor. In this mode, all pixel
|
|
writes are inhibited, whether they address locations inside or outside the
|
|
window. A window violation interrupt is requested on an attempt to write to
|
|
a pixel inside the window.
|
|
For the PIXBLT and FILL instructions, the V (overflow) bit is set to 1 if the
|
|
destination array lies completely outside the window. No interrupt request is
|
|
generated (the WVP bit in the INTPEND register is not affected) in this case.
|
|
However, if any pixel in the destination array lies within the window, the V
|
|
bit is set to 0 and a window violation interrupt is requested (the WVP bit is
|
|
set to 1). If the interrupt is enabled, the saved PC points to the instruction that
|
|
follows the PIXBLT or FILL that caused the interrupt. If the interrupt is disa-
|
|
bled, execution of the next instruction begins.
|
|
While no pixel transfers occur during the PIXBLT and FILL instructions exe-
|
|
cuted in this mode, the specified destination array is clipped to lie within the
|
|
window. In other words, the DADDR and DYDX registers are adjusted to be
|
|
the starting address, width, and height of the reduced array that is the inter-
|
|
section of the two rectangles represented by the destination array and the
|
|
window. This function can be adapted to determine the intersection of two
|
|
arbitrary rectangles on the screen - a calculation that is often performed in
|
|
windowed graphics systems.
|
|
In the case of a DRAV or PIXT instruction, an attempt to write to a pixel out-
|
|
side the window causes the V bit to be set to 1. No interrupt request is gen-
|
|
erated (the WVP bit is not affected). An attempt to write to a pixel inside the
|
|
window causes the V bit to be set to 0, and a window violation interrupt re-
|
|
quest is generated (the WVP bit is set to 1 ).
|
|
At the end of a LINE instruction, the V bit is 0 if any destination pixel proc-
|
|
essed by the instruction lies within the window; otherwise, V is 1. Attempts
|
|
to write to pixels outside the window do not cause interrupt requests to be
|
|
generated (the WVP bit is not affected). An attempt to write to a pixel inside
|
|
the window causes a window violation interrupt to be requested (the WVP
|
|
bit is set to 1) and the LI N E instruction aborts. If the interrupt is enabled, the
|
|
PC saved during the interrupt points to the instruction that follows the LI N E
|
|
instruction. If the interrupt is disabled, execution of the next instruction be-
|
|
gins.
|
|
The W=1 mode can be used to pick an object on the screen by means of the
|
|
following simple algorithm. An object previously drawn on the screen is
|
|
picked by moving the cursor to the object's position and selecting it. To de-
|
|
termine which object is pointed to, the software first sets the window to a
|
|
small region surrounding the position of the cursor. The software next steps
|
|
a second time through the same display list used to draw the current screen
|
|
until one of the objects causes a window interrupt to occur. This should be
|
|
the object pointed to by the cursor. If no object causes an interrupt, the pick
|
|
window can be enlarged and the process repeated until the object is found.
|
|
If two objects cause interrupts, the size of the pick window can be reduced
|
|
until only one object causes an interrupt.
|
|
|
|
|
|
|
|
7-26
|
|
Graphics Operations - Window Checking
|
|
|
|
|
|
|
|
7.10.2 W=2 Mode - Window Miss Detection
|
|
The W=2 mode permits a PIXBLT or FILL instruction to be aborted if any pixel
|
|
in the destination array lies cutside the window. The destination array is
|
|
written only if the array lies entirely within the window, in which case the V
|
|
(overflow) bit is set to 0, and no interrupt request is generated (the WVP bit
|
|
is not affected). If any pixel in the destination array lies outside the window,
|
|
the V bit is set to 1, and a window violation interrupt is requested (the WVP
|
|
bit is set to 1).
|
|
For the DRAV and PIXT instructions, the destination pixel is drawn only if it
|
|
lies within the window. In this case, the V bit is set to 0, and no interrupt re-
|
|
quest is generated (the WVP bit is not affected). If the destination location
|
|
lies outside the window, the pixel write is inhibited, the V bit is set to 1, and
|
|
a window violation interrupt is requested (the WVP bit is set to 1 ).
|
|
At the end of a LI N E instruction, the V bit is 0 if the last destination pixel
|
|
processed by the instruction lies within the window; otherwise, V is 1. At-
|
|
tempts to write to pixels inside the window do not cause interrupt requests to
|
|
be generated (the WVP bit is not affected). An attempt to write to a pixel
|
|
outside the window causes a window violation interrupt to be requested (the
|
|
WVP bit is set to 1) and the instruction aborts. If the interrupt is enabled, the
|
|
PC saved during the interrupt points to the instruction that follows the LINE
|
|
instruction. If the interrupt is disabled, execution of the next instruction be-
|
|
gins.
|
|
|
|
7.10.3 W=3 Mode - Window Clipping
|
|
In the W=3 mode, only writes to pixels within the window are permitted;
|
|
writes to pixels outside the window are inhibited. No interrupt request is
|
|
generated for any case.
|
|
For a PIXB LT or FI LL instruction, only the portion of the destination array ly-
|
|
ing within the window is drawn. At the start of instruction execution, the
|
|
specified destination array is automatically preclipped to lie within the window
|
|
before the first pixel is transferred. Hence, no execution time is lost attempting
|
|
to write destination pixels which lie outside the window. In the case of a
|
|
PIXBLT, the source array is preclipped to fit the adjusted dimensions of the
|
|
destination array before the transfer begins.
|
|
During execution of a DRAV or PIXT instruction, a write to a pixel inside the
|
|
window is permitted, and the V bit is set to O. An attempted write to a pixel
|
|
outside the window is inhibited, and the V bit is set to 1.
|
|
For the LI N E instruction, writes to pixels outside the window are inhibited at
|
|
drawing time; no preclipping is performed. The value of the V bit at the end
|
|
of a LINE instruction is determined by whether the last pixel calculated by the
|
|
instruction fell inside (V=O) or outside (V=1 ) the window.
|
|
|
|
|
|
|
|
|
|
7-27
|
|
Graphics Operations - Window Checking
|
|
|
|
|
|
|
|
7.10.4 Specifying Window Limits
|
|
The limits of the current window are specified in the WSTART (window start)
|
|
and WEND (window end) registers. WSTART specifies the minimum XY co-
|
|
ordinates in the window, and WEND specifies the maximum XY coordinates.
|
|
As Figure 7-10 shows, WSTART specifies the XY coordinates (Xstart,Ystart)
|
|
at the upper left corner of the window, and WEND specified the XY coordi-
|
|
nates (Xend,Yend) at the bottom right corner of the window. The origin is lo-
|
|
cated in its default position in the top left corner of the screen.
|
|
DIapIay
|
|
Origin Memory
|
|
+x
|
|
|
|
|
|
|
|
|
|
'" I'e
|
|
|
|
+y
|
|
|
|
|
|
, "-,...
|
|
v
|
|
Window
|
|
|
|
|
|
|
|
|
|
A pixel with cocrdlnates (X,V)
|
|
1188 within the window If both
|
|
X start .s X .s Xend and V start .s V S Vend
|
|
|
|
Figure 7-10. Specifying Window Limits
|
|
|
|
|
|
Figure 7-10 shows that a pixel that has coordinates (X,Y) lies within the
|
|
window if Xstart S X S Xend and Ystart S Y S Yend. If a pixel does not meet
|
|
these conditions, it lies outside the window.
|
|
When Xstart > Xend or Ystart> Yend, the window is empty; that is, it contains
|
|
no pixels. Under these conditions, the window checking hardware detects all
|
|
destination pixel addresses as lying outside the window. Note that the con-
|
|
ditions Xstart = Xend and Ystart = Yend together specify a window containing
|
|
a single pixel.
|
|
Window start and end coordinates must lie in the range (O,O) to
|
|
(+32767,+32767). A window cannot contain pixels with negative X or Y
|
|
coordinates.
|
|
|
|
|
|
|
|
|
|
7-28
|
|
Graphics Operations - Window Checking
|
|
|
|
|
|
|
|
7.10.5 Window Violation Interrupt
|
|
A window violation (WV) interrupt is requested (the WVP bit in the INTPEND
|
|
register is set to 1 ) when:
|
|
|
|
• W=1 and an attempt is made to write to a pixel inside the window or
|
|
• W=2 and an attempt is made to write to a pixel outside the window
|
|
The interrupt occurs if it is enabled by the following conditions:
|
|
|
|
• The WVE bit in the I NTEN B register is 1
|
|
• The I E bit in the status reg ister is 1
|
|
Alternatively, if the WV interrupt is disabled (IE=O or WVE=OL the window
|
|
violation can be detected by testing the value of either the V bit in the status
|
|
register or the WVP bit following the operation.
|
|
When a WV interrupt occurs, the registers that change during the LINE,
|
|
PIXBLT and FI LL instructions contain their intermediate values at the time the
|
|
violation was detected.
|
|
|
|
7.10.6 Line Clipping
|
|
The TMS34010 supports two methods for clipping straight lines to the
|
|
boundaries of a rectangular window: postclipping and preclipping. Postclip-
|
|
ping means that just before each pixel on the line is drawn, it is compared with
|
|
the window limits. If it lies outside the window, the write is inhibited. In
|
|
contrast, preclipping involves determining in advance of any drawing oper-
|
|
ations which pixels in the line lie within the window. The algorithm draws
|
|
only these pixels, and makes no attempt to write to pixels outside the window.
|
|
A preclipped line may take less time to draw since no calculations are per-
|
|
formed for pixels lying outside the window. In contrast postclipping spends
|
|
the same amount of time calculating the position of a pixel outside the win-
|
|
dow as it does calculating a pixel inside the window.
|
|
When postclipping is used, special window comparison hardware compares
|
|
the coordinates of the pixel being drawn against all four sides of the window
|
|
at once. The W=3 window-checking mode is selected, and window checking
|
|
is performed in parallel with execution of the LI N E instruction, so no overhead
|
|
is added to the time to draw a pixel. However, unless this form of clipping is
|
|
used carefully, another type of overhead may become significant. For example,
|
|
in a CAD (computer-aided design) environment where only a small portion
|
|
of a system diagram is to be displayed at once, potentially a great deal of time
|
|
could be spent performing calculations for points (or entire lines) lying off-
|
|
screen.
|
|
Preclipping is generally faster than postclipping, depending on how likely a
|
|
line is to lie outside the window. The first step in preclipping a series of lines
|
|
is to identify those that lie either entirely inside or outside the window. This
|
|
is accomplished by using an "outcode" technique similar to that of the Co-
|
|
hen-Sutherland algorithm. Those lines lying entirely outside are "trivially re-
|
|
jected" and consume no more processing time. Those lines lying entirely
|
|
within are drawn from one endpoint to the other with no clipping required.
|
|
This still leaves a third category of lines that may cross a window boundary,
|
|
and these require intersection calculations. However, this technique is pow-
|
|
|
|
7-29
|
|
Graphics Operations - Window Checking
|
|
|
|
|
|
|
|
erful for reducing the number of lines that require such calculations. While the
|
|
calculation of outcodes could be performed in software, this would represent
|
|
significant overhead for each line considered. The TMS3401 0 provides a more
|
|
efficient implementation via its CPW (compare point to window) instruction,
|
|
which compares a point to all four sides of the window at once.
|
|
The outcode technique classifies a line according to where its endpoints fall
|
|
in relation to the current clipping window. The area surrounding the window
|
|
is partitioned into eight regions, as indicated in Figure 7-11. Each region is
|
|
assigned a 4-bit code called an outcode. The outcode within the window is
|
|
00002' When an endpoint of a line falls within a particular region, it is as-
|
|
signed the outcode for that region. If the two endpoints of a line both have
|
|
outcodes 00002, the line lies entirely within the window. If the bitwise AND
|
|
of the outcodes of the two endpoints yields a value other than 00002, the line
|
|
lies entirely outside the window. Lines that fall into neither of these categories
|
|
mayor may not be partially visible within the window.
|
|
|
|
|
|
|
|
|
|
+y 0101 0100 : 0110
|
|
1
|
|
1
|
|
1
|
|
1
|
|
1
|
|
|
|
_________ +-__.....;1 __________ Y = Y MIN
|
|
1
|
|
|
|
|
|
|
|
|
|
0001 0000 0010
|
|
|
|
+-_~-+_--------- Y = Y MAX
|
|
|
|
|
|
|
|
|
|
1010
|
|
Window X=XMIN X=XMAX
|
|
|
|
Figure 7-11. Outcodes for Line Endpoints
|
|
|
|
|
|
For those lines that require intersection calculations after the outcodes have
|
|
been determined, midpoint subdivision is an efficient means of preclipping.
|
|
The object again is to ensure that drawing calculations are performed only for
|
|
pixels lying within the window. An example of the midpoint subdivision
|
|
technique is illustrated in Figure 7 -12. The line AB lies partially within the
|
|
window. The first step is to determine the coordinates of the line's midpoint
|
|
at C. These are calculated as follows:
|
|
|
|
XA + XB Y A + YB
|
|
(Xc' Yc) =
|
|
2 2
|
|
|
|
|
|
|
|
|
|
7-30
|
|
Graphics Operations - Window Checking
|
|
|
|
|
|
|
|
|
|
+y
|
|
|
|
|
|
|
|
|
|
1--------""*- V = V MAX
|
|
|
|
X=XMIN X=XMAX
|
|
|
|
(X v ) =(XA +XB VA +VB)
|
|
C· C 2' 2
|
|
(X v ) =(XA 2
|
|
D' 0
|
|
+XC VA +VC)
|
|
' 2
|
|
|
|
Figure 7-12. Midpoint Subdivision Method
|
|
|
|
|
|
Comparing the outcodes of Band C, segment BC lies entirely outside the
|
|
window and can be trivially rejected. Segment AC still lies partially within the
|
|
window and will be subdivided again. The coordinates of point D, the mid-
|
|
point of AC, are calculated as before. Point D is determined to lie within the
|
|
window. The LINE instruction is now invoked two times, for segments DC
|
|
and DA, with D selected as the starting point in each case. For each segment
|
|
the W=2 window-checking mode is selected, but the window violation inter-
|
|
rupt is disabled. When each line crosses the window boundary, the win-
|
|
dow-checking hardware detects this and the LINE instruction aborts. In this
|
|
way the LINE instruction performs drawing calculations only for portions of
|
|
DA and DC lying within the window.
|
|
|
|
|
|
|
|
|
|
7-31
|
|
Graphics Operations
|
|
|
|
|
|
|
|
|
|
7-32
|
|
Section 8
|
|
Interrupts, Traps, and Reset
|
|
|
|
|
|
The TMS3401 0 supports eight interrupts, including reset. Memory addresses
|
|
FFFFFCOOh to FFFFFFFFh contain the 32 vector addresses used during in-
|
|
terrupts, software traps and reset. Each vector is a 32-bit address that points
|
|
to the beginning of the appropriate interrupt service routine.
|
|
This section includes the following topics:
|
|
Section Page
|
|
8.1 Interrupt Priorities and Vector Addresses ............................................... 8-2
|
|
8.2 Interrupt Interface Registers ..................................................................... 8-3
|
|
8.3 External Interrupts ...................................................................................... 8-3
|
|
8.4 Internal Interrupts ...................................................................................... 8-5
|
|
8.5 Interrupt Processing .................................................................................. 8-6
|
|
8.6 Traps ............................................................................................................ 8-9
|
|
8.7 Illegal Opcode Interrupts .......................................................................... 8-9
|
|
8.8 Reset .......•.•............................................................................................... 8-10
|
|
|
|
|
|
|
|
|
|
8-1
|
|
Interrupts, Traps, and Reset - Interrupt Priories and Vector Addresses
|
|
|
|
|
|
|
|
8.1 Interrupt Priorities and Vector Addresses
|
|
Table 8-1 and Figure 8-1 summarize the TMS3401 0 interrupt vector addresses
|
|
and the interrupt priorities. RESET has the highest priority, and the illegal op-
|
|
code interrupt has the lowest. If two interrupts are requested at the same time,
|
|
the highest priority interrupt is serviced first (assuming it is enabled). RESET
|
|
and the nonmaskable interrupt cannot be disabled.
|
|
Table 8-1. Interrupt Priorities
|
|
|
|
Internal/
|
|
Int. Priority External Description and Source
|
|
Reset 1 I Device reset. Taken when the input signal at the
|
|
RESET pin is asserted low.
|
|
NMI 2 I Nonmaskable interrupt. Generated by a host
|
|
processor.
|
|
HI 3 I Host interrupt. Generated by a host processor.
|
|
01 4 I Display interrupt. Generated by the TMS3401 O.
|
|
WV 5 I Window violation interrupt. Generated by the
|
|
TMS34010.
|
|
INn 6 E External interrupts 1 and 2. Generated by
|
|
external devices.
|
|
INT2 7 E
|
|
ILLOP 8 I Illegal opcode interrupt. Generated by the
|
|
TMS34010 when an illegal opcode is en-
|
|
countered.
|
|
Trap
|
|
Number ~
|
|
OFFFFFFEOh Re..t Re..t
|
|
OFFFFFFCOh INT1 Extemel Interrupt 1
|
|
OFFFFFFAOh Extemel Interrupt 2
|
|
OFFFFFF80h
|
|
4 OFFFFFF80h
|
|
OFFFFFF40h Traps 3·7
|
|
OFFFFFF20h
|
|
OFFFFFFOOh
|
|
OFFFFFEEOh MNI Nonmaskable
|
|
OFFFFFECOh HI Host Interrupt
|
|
10 OFFFFFEAOh 01 DIsplay Interrupt
|
|
11 OFFFFFE80h WV WIndow Violation
|
|
12 OFFFFFE80h
|
|
13 OFFFFFE40h
|
|
14 OFFFFFE20h
|
|
15 OFFFFFEOOh
|
|
16 OFFFFFOEOh
|
|
17 OFFFFFDCOh
|
|
18 OFFFFFOAOh
|
|
19 OFFFFF080h
|
|
Treps 12·29
|
|
20 OFFFFFD80h
|
|
21 OFFFFFD4Oh
|
|
22 OFFFFF020h
|
|
23 OFFFFFDOOh
|
|
24 OFFFFFCEOh
|
|
25 OFFFFFCCOh
|
|
26 OFFFFFCAOh
|
|
27 OFFFFFC80h
|
|
28 OFFFFFC80h
|
|
29 OFFFFFC40h
|
|
30 OFFFFFC20h ILLDP Illegal Dpcode
|
|
31 OFFFFFCOOh Trap 31
|
|
|
|
1--32----1
|
|
|
|
|
|
Figure 8-1. Vector Address Map
|
|
|
|
|
|
|
|
8-2
|
|
Interrupts, Traps, and Reset - Registers/External Interrupts
|
|
|
|
|
|
|
|
8.2 Interrupt Interface Registers
|
|
Two registers, a subset of the I/O registers discussed in Section 6, monitor and
|
|
mask interrupt requests. These registers are summarized below; for more in-
|
|
formation, please refer to the register descriptions in Section 6.
|
|
The interrupt enable register, INTEN B, contains the interrupt mask that se-
|
|
lectively enables various interrupts. An interrupt is enabled when the status
|
|
IE (global interrupt enable) bit and the appropriate bit in the INTENB register
|
|
are both set to 1.
|
|
|
|
• X1 E (bit 1) enables external interrupt 1.
|
|
• X2E (bit 2) enables external interrupt 2.
|
|
• HIE (bit 9) enables the host interrupt.
|
|
• DIE (bit 10) enables the display interrupt.
|
|
• WVE (bit 11) enables the window violation interrupt.
|
|
The interrupt pending register, INTPEN 0, indicates which interrupts are cur-
|
|
rently pending. When an interrupt is requested, the appropriate bit in the
|
|
INTPEND register is set.
|
|
|
|
• X1 P (bit 1) indicates that external interrupt 1 is pending.
|
|
• X2P (bit 2) indicates that external interrupt 2 is pending.
|
|
• HIP (bit 9) indicates that the host interrupt is pending.
|
|
• DIP (bit 10) indicates that the display interrupt is pending.
|
|
• WVP (bit 11) indicates that the window violation interrupt is pending.
|
|
|
|
|
|
|
|
8.3 External Interrupts
|
|
External interrupt requests are received through input pins L1NT1 and L1NT2.
|
|
The two request pins are level-sensitive, active-low inputs. Each pin is dedi-
|
|
cated to an individual interrupt, allowing two independent interrupt requests
|
|
to be generated. (The pins are not encoded.) The state of the L1NT1 and
|
|
L1NT2 inputs is reflected in the X1 P and X2P bits in the INTPEND register.
|
|
The register bit is 1 if the corresponding request is active.
|
|
The interrupts generated by requests at the L1NT1 and L1NT2 inputs are referred
|
|
to as INT1 and INT2. Interrupts INT1 and INT2 are selectively enabled by
|
|
means of the X1 E and X2E bits in the INTENB register. If external interrupt
|
|
requests become active at L1NT1 and L1NT2 at the same time, and both inter-
|
|
rupts are enabled, I NT1 will be serviced first. If one or both of these interrupts
|
|
is disabled, the state of the LlNT1 and L1NT2 inputs continues to be reflected
|
|
in the X1 P and X2P bits. These bits may be polled by software to detect
|
|
transitions at the interrupt inputs.
|
|
Table 8-2 shows the interrupt trap vectors for INT1 and INT2.
|
|
|
|
|
|
|
|
|
|
8-3
|
|
Interrupts, Traps, and Reset - External Interrupts
|
|
|
|
|
|
Table 8-2. External Interrupt Vectors
|
|
|
|
Input Vector
|
|
Name Pin Address
|
|
INT1 LlNT1 FFFFFFCOh
|
|
INT2 LlNT2 FFFFFFAOh
|
|
|
|
Once an interrupt request has been initiated by driving an interrupt request pin
|
|
low, the input should continue to be driven low until the interrupt service
|
|
routine can respond to the interrupting device. If the interrupt pin is permitted
|
|
to go inactive high before it has been recognized by the interrupt service rou-
|
|
tine, the request may be missed. If the active level is maintained after returning
|
|
from the interrupt service routine, however, the interrupt will be taken once
|
|
again.
|
|
The RETI instruction restores the ST (status) and PC (program counter) reg-
|
|
isters to their original state just prior to the interrupt. (This would not be the
|
|
case, however, if for some reason the values for these registers, saved on the
|
|
stack, were altered by the interrupt service routine). Assuming that the IE bit
|
|
in the restored ST is a 1, interrupts are again enabled by the time the RETI in-
|
|
struction finishes executing. If an interrupt request is active during the last
|
|
state of the RETI instruction, and the interrupt is enabled in the INTENB reg-
|
|
ister, the interrupt will be taken immediately following the RET!.
|
|
The interrupt service routine typically writes to the interrupting device to clear
|
|
the interrupt· request before executing an RETI (return from interrupt) in-
|
|
struction. An example of the last three instructions in a typical interrupt service
|
|
routine is shown below, where DEVICE is the symbolic address of the inter-
|
|
rupting device:
|
|
CLR AO
|
|
MOVE AO,@DEVICE
|
|
RETI
|
|
The interrupt request is cleared by the MOVE instruction above, which writes
|
|
a 0 to the device address. The maximum asynchronous delay from the end of
|
|
the write cycle (measured from the low-to-high transition of W) to the result-
|
|
ing low-to-high transition at the GSP's interrupt request input should be no
|
|
more than six local clock periods.
|
|
Signals input to the local interrupt pins are assumed to be asynchronous to the
|
|
GSP local clocks, and are synchronized internally by the GSP before they are
|
|
processed. The GSP samples the state of the LlNT1 and LlNT2 inputs at each
|
|
high-to-Iow transition of LCLK1, and updates the X1 P and X2P bits in the
|
|
INTPEND register accordingly (an active-low input is seen as a one in the
|
|
appropriate register bit). The delay from the transition at the input to the
|
|
corresponding change in the X1 P or X2P bit is from one to two states, de-
|
|
pending on the transition's phase relationship to LCLK1.
|
|
|
|
|
|
|
|
|
|
8-4
|
|
Interrupts, Traps, and Reset - Internal Interrupts
|
|
|
|
|
|
|
|
8.4 Internal Interrupts
|
|
Several internal conditions are associated with specific interrupts. Table 8-3
|
|
summarizes these interrupts. If two internal interrupts are requested simul-
|
|
taneously, or if two or more internal interrupt requests are pending, the highest
|
|
priority interrupt is serviced first; NMI has the highest priority, followed by HI,
|
|
01, and WV. When internal and external interrupts are pending, the internal
|
|
interrupts are serviced first (with the exception of the ILLOP interrupt).
|
|
Table 8-3. Interrupts Associated with Internal Events
|
|
|
|
Vector
|
|
Name Function Level Location Description
|
|
NMI Nonmaskable 8 FFFFFEEOh The host processor sets the NMI bit in the
|
|
interrupt HSTCTL register to a 1.
|
|
HI Host interrupt 9 FFFFFECOh The host processor sets the INTIN bit in the
|
|
HSTCTL register to a 1.
|
|
DI Display interrupt 10 FFFFFEAOh A particular horizontal line on the video display
|
|
is being refreshed. The line number is specified
|
|
in the DPYINT register.
|
|
WV Window violation 11 FFFFFE80h An attempt has been made to move a pixel to a
|
|
interrupt destination location that lies inside or outside a
|
|
specified window. depending on the selected
|
|
windowing mode.
|
|
ILLOP Illegal operand 30 FFFFFC20h See Section 8.7.
|
|
interrupt
|
|
|
|
|
|
The nonmaskable interrupt, or N M I, occurs when a host processor requests
|
|
an interrupt by writing a 1 to the N M I bit in the HSTCTL register. This inter-
|
|
rupt cannot be disabled, and always occurs as soon as possible following the
|
|
request. The N M I is delayed only for completion of an instruction already in
|
|
progress, or until the next interruptible point of an interruptible instruction
|
|
such as a PIXBLT is reached.
|
|
The NMI mode bit in the HSTCTL register determines whether or not context
|
|
information is saved on the stack when a nonmaskable interrupt occurs:
|
|
|
|
• If NMIM = 0, the PC and ST are pushed on the stack before the interrupt
|
|
is serviced.
|
|
|
|
• If NMIM = 1, nothing is saved on the stack before the interrupt is ser-
|
|
viced.
|
|
The TMS3401 0 automatically clears the NMI bit at the time it takes the inter-
|
|
rupt. After setting the NMI bit, the host processor can determine when the
|
|
TMS34010 has taken the interrupt by polling the NMI bit until it changes from
|
|
a 1 to a O.
|
|
The display interrupt (01) is used to coordinate processing activity with the
|
|
refreshing of particular areas of the display. The display interrupt request be-
|
|
comes active when a particular display line, specified in the OPYINT register,
|
|
is output to the monitor screen. At the start of each horizontal blanking period,
|
|
the VCOUNT register is compared to the OPYINT register. When the vertical
|
|
count value in VCOUNT = OPYINT, a display interrupt request is generated.
|
|
If enabled, the interrupt is taken.
|
|
|
|
|
|
|
|
8-5
|
|
Interrupts, Traps, and Reset - Interrupt Processing
|
|
|
|
|
|
|
|
8.5 Interrupt Processing
|
|
An interrupt is said to be pending if it has been requested but has not yet been
|
|
processed. If a pending interrupt is enabled, and no interrupt of higher priority
|
|
is pending at the same time, the interrupt is accepted by the TMS3401 0 at the
|
|
end of the current instruction (or at the next interruptible point in the middle
|
|
of a PIXBLT or FILL instruction). When the TMS3401 0 takes an interrupt, it
|
|
performs the following actions:
|
|
1) The TMS3401 0 pushes the PC on the stack.
|
|
2) The TMS34010 pushes the ST on the stack. PIXBLT and FILL in-
|
|
structions that are interrupted by external, host, and nonmaskable (if
|
|
NMIM=O) interrupts set the PBX bit in the ST before pushing the ST.
|
|
3) The TMS3401 0 modifies the contents of the ST as follows:
|
|
|
|
|
|
|
|
|
|
Reserved
|
|
|
|
|
|
4) The TMS34010 fetches the interrupt vector from external memory into
|
|
the PC.
|
|
5) The TMS3401 0 begins executing the instruction pointed to by the new
|
|
PC value.
|
|
In step 5, the TMS3401 0 resumes instruction execution at the entry point of
|
|
the interrupt service routine. At the time the first instruction of the service
|
|
routine begins execution, the new status register contents imply the following
|
|
conditions:
|
|
|
|
• All interrupts are disabled (except NMI and reset)
|
|
• Field 0 is 16 bits long and is zero extended
|
|
• Field 1 is 32 bits long and is zero extended
|
|
The service routine can allow itself to be interrupted by loading a new inter-
|
|
rupt-enable mask into the INTENB register and setting status bit IE to 1. The
|
|
INTENB mask value is selected to determine which interrupts can interrupt the
|
|
currently executing service routine. The service routine can also load new field
|
|
sizes if values other than the defaults are required.
|
|
The last instruction in any interrupt service routine must be RETI (return from
|
|
interrupt). Unlike the RETS (return from subroutine) instruction, which only
|
|
pops the PC from the stack, RETI pops both the ST and PC. This restores the
|
|
original state of the interrupted program so that execution can proceed from
|
|
the point at which the interrupt occurred.
|
|
|
|
|
|
|
|
|
|
8-6
|
|
Interrupts, Traps, and Reset - Interrupt Processing
|
|
|
|
|
|
|
|
8.5.1 Interrupt Latency
|
|
An external interrupt, host interrupt request, or NMI request is delayed by an
|
|
amount of time that depends on the instruction in progress and on the local
|
|
memory bus traffic at the time of the request.
|
|
The delay from an interrupt request to the time that the first instruction of the
|
|
interrupt service routine begins execution is the sum of six potential sources
|
|
of delay:
|
|
1) Interrupt request recognition
|
|
2) Screen-refresh cycle
|
|
3) DRAM-refresh cycle
|
|
4) Host- indirect cycle
|
|
5) Instruction interrupt
|
|
6) Interrupt context switch
|
|
In the best case, items 2 through 5 cause no delay. The minimum delay due
|
|
to items 1 and 6 is 17 machine states.
|
|
|
|
• The interrupt request recognition delay is the time required for a
|
|
request to be internally synchronized to the local clock. In the case of
|
|
an external interrupt request, the delay is measured from the high-to-Iow
|
|
transition of the INT1 or INT2 pin. In the case of a host interrupt or NMI
|
|
request, the delay is measured from completion of the host's write to the
|
|
INTIN or NMI pin.
|
|
|
|
• The screen-refresh and DRAM-refresh cycles are a potential source
|
|
of delay, but in fact occur rarely and are unlikely to delay an interrupt.
|
|
|
|
• The likelihood of a delay caused by a host-indirect cycle is small in
|
|
most instances, but this depends on the application. The delay due to a
|
|
single host-indirect cycle is two machine states, assuming no wait states,
|
|
but mUltiple host-indirect cycles occurring within a brief period of time
|
|
could cause additional delays. Theoretically, a fast host processor could
|
|
generate so many local memory cycles that the TMS34010 would be
|
|
prevented from servicing interrupts for an indefinite period.
|
|
|
|
• The instruction interrupt time refers to the time required for an in-
|
|
struction that was already executing at the time the interrupt request was
|
|
received to either complete or to reach the next interruptible point in an
|
|
instruction (such as a PIXBLT, FILL, or LINE).
|
|
|
|
• The interrupt context switch operation pushes the PC and ST onto
|
|
the stack, and fetches the PC for the interrupt service routine from the
|
|
appropriate vector in memory.
|
|
Table 8-4 shows the minimum and maximum times for each of the six oper-
|
|
ations listed. The interrupt latency is calculated as the sum of the numbers in
|
|
the six rows. In the best case, the interrupt latency is only 17 machine states.
|
|
The worst-case latency can be as high as 22 machine states plus the delays
|
|
due to host-indirect cycles and instru~tion completion. Table 8-5 shows in-
|
|
struction interrupt times for some of the longer, non interruptible instructions.
|
|
Table 8-5 also shows the instruction completion time for a JRUC instruction
|
|
|
|
|
|
|
|
8-7
|
|
Interrupts, Traps, and Reset - Interrupt Processing
|
|
|
|
|
|
|
|
that jumps to itself - the TMS3401 0 may be executing this instruction if the
|
|
software is simply waiting for an interrupt.
|
|
Table 8-4. Six Sources of Interrupt Delay
|
|
|
|
Latency (In States)
|
|
Operation
|
|
Min Max
|
|
Interrupt recognition 1 2
|
|
Instruction interrupt 0 See Table 8-5
|
|
DRAM-refresh cycle 0 2
|
|
See Note 2
|
|
Screen-refresh cycle 0 2
|
|
See Note 2
|
|
Host-indirect cycle 0 See Note 1
|
|
Interrupt context switch 16 16
|
|
Notes: 1) The latency due to host-indirect cycles depends on both the
|
|
hardware system and the application. Theoretically, a host pro-
|
|
cessor could generate so many local memory cycles that the
|
|
TMS34010 could effectively be prevented from servicing inter-
|
|
rupts. The delay due to a single host-indirect cycle is two machine
|
|
states, assuming no wait states.
|
|
2) DRAM-refresh and screen-refresh cycle times assume no wait
|
|
states.
|
|
3) Context switch time assumes that the SP is aligned to a word
|
|
boundary; that is, the four LSBs of the SP are Os. If the SP is not
|
|
aligned, the delay is 28 states.
|
|
|
|
|
|
Table 8-5. Sample Instruction Completion Times
|
|
|
|
Worst-Case Instruction
|
|
Instruction Interrupt Time (In States)
|
|
SP Aligned SP Not Aligned
|
|
DIVS AO,A2 43 43
|
|
MMFM SPALL 72 144
|
|
MMTM SPALL 73 169
|
|
Wait: JRUC wait 1 1
|
|
Notes: 1) The worst-case instruction interrupt time is equal to the instruction
|
|
execution time less one machine state (except for PIXBLTs, FILLs,
|
|
and LINE).
|
|
2) The SP-aligned case assumes that the SP is aligned to a word
|
|
boundary in memory.
|
|
|
|
|
|
|
|
|
|
8-8
|
|
Interrupts, Traps, and Reset - Traps/Illegal Opcodes
|
|
|
|
|
|
|
|
8.6 Traps
|
|
The TMS3401 0 supports 32 software traps, numbered 0 through 31. Soft-
|
|
ware traps behave similarly to interrupts, except that they are initiated when
|
|
the TMS3401 0 executes a TRAP instruction. Unlike an interrupt, a software
|
|
trap cannot be disabled.
|
|
When the TMS3401 0 executes a TRAP instruction, it performs the same se-
|
|
quence of actions that it performs for interrupts. The TRAP 1 through TRAP
|
|
31 instructions cause the status register and the PC to be pushed onto the
|
|
stack. TRAP 0 is similar to a hardware reset because it does not push the
|
|
status register or PC onto the stack; it differs from a hardware reset because it
|
|
does not cause the TMS3401 O's internal registers to be set to a known initial
|
|
state. TRAP 8 is similar to an NMI interrupt, except that the NMIM (NMI
|
|
mode) bit in the HSTCTLL register has no effect on instruction execution; the
|
|
status register and PC are stacked unconditionally when TRAP 8 is executed.
|
|
A 32-bit vector address is associated with each software trap. To determine
|
|
the vector address for a trap number N, where N = 0 through 31, subtract
|
|
32N from FFFFFFEOh. Figure 8-1 on page 8-2 shows the vector addresses
|
|
for the software traps.
|
|
|
|
|
|
|
|
8.7 Illegal Opcode Interrupts
|
|
The TMS3401 0 recognizes several reserved opcodes as illegal. When one of
|
|
these opcodes is encountered in the instruction stream, the TMS34010 traps
|
|
to vector number 30, located at memory address FFFFFC20h. An illegal op-
|
|
code is similar in effect to a TRAP 30 instruction. The illegal opcode interrupt
|
|
cannot be disabled. Table 8-6 lists ranges of illegal opcodes.
|
|
Table 8-6. Illegal Opcodes Ranges
|
|
0200h through 02FFh
|
|
0400h through 04FFh
|
|
0800h through 08FFh
|
|
OAOOh through OAFFh
|
|
OCOOh through OCFFh
|
|
OEOOh through OEFFh
|
|
3400h through 37FFh
|
|
7000h through 7FFFh
|
|
9EOOh through 9FFFh
|
|
BEOOh through BFFFh
|
|
D800h through DEFFh
|
|
FEOOh through FFFFh
|
|
|
|
|
|
|
|
|
|
8-9
|
|
Interrupts, Traps, and Reset - Reset
|
|
|
|
|
|
|
|
S.S Reset
|
|
Reset puts the TMS3401 0 into a known initial state that is entered when the
|
|
input signal at the RESET pin is asserted low. RESET must remain active low
|
|
for a minimum of 40 local clock (LCLK1 or LCLK2) periods to ensure that the
|
|
TMS34010 has sufficient time to establish its initial internal state. While the
|
|
reset signal remains asserted, all outputs are in a known state, no DRAM-
|
|
refresh cycles take place, and no screen-refresh cycles are performed.
|
|
At the low-to-high transition of the RESET signal, the state of the HCS input
|
|
determines whether the TMS3401 0 is halted (host-present mode) or whether
|
|
it begins executing instructions (self-bootstrap mode):
|
|
|
|
• Host-Present Mode
|
|
If HCS is high at the end of reset, TMS34010 instruction execution is
|
|
halted and remains halted until the host clears the H LT (halt) bit in
|
|
HSTCTL (host control register). Following reset, the eight RAS-only
|
|
refresh cycles required to initialize the dynamic RAMs are performed
|
|
automatically by the TMS3401 0 memory control logic. As soon as the
|
|
eight RAS-only cycles are completed, the host is allowed access to
|
|
TMS34010 memory. At this time, the TMS34010 begins to automat-
|
|
ically perform DRAM refresh cycles at regular intervals. The TMS3401 0
|
|
remains halted until the host clears the H LT bit. Only then does the
|
|
TMS34010 fetch the level-O vector address from location FFFFFFEOh
|
|
and begin executing its reset service routine.
|
|
|
|
• Self-Bootstrap Mode
|
|
If HCS is low at the end of reset, the TMS3401 0 first performs the eight
|
|
RAS-only refresh cycles required to initialize the DRAMs. Immediately
|
|
following the eight RAS-only cycles, the TMS3401 0 fetches the level-O
|
|
vector address from location FFFFFFEOh, and begins executing its reset
|
|
service routine.
|
|
Unlike other interrupts and software traps, reset does not save previous ST or
|
|
PC values. This is because the value of the stack pointer just before a reset is
|
|
generally not valid, and saving its value on the stack is unnecessary. A TRAP
|
|
o instruction, which uses the same vector address as reset, similarly does not
|
|
save the ST or PC values.
|
|
|
|
8.8.1 Asserting Reset
|
|
A reset is initiated by asserting the RESET input pin at its active-low level. To
|
|
reset the TMS3401 0 at power up, RESET must remain active low for a mini-
|
|
mum of 40 local clock periods after power levels have become stable. At times
|
|
other than power up, the TMS3401 0 is also reset by holding RESET low for a
|
|
minimum of 40 clock periods. The 40-clock interval is required to bring
|
|
TMS34010 internal circuitry to a known initial state. While RESET remains
|
|
asserted, the output and bidirectional signals are driven to a known state.
|
|
The TMS34010 drives its RAS signal inactive high as long as RESET remains
|
|
low. The specifications for certain DRAM and VRAM devices, including the
|
|
TMS4161, TMS4164 and TMS4464 devices, require that the RAS signal be
|
|
driven inactive-high for 100 microseconds during system reset. Holding the
|
|
RESET signal low for 150 microseconds causes the RAS signal to remain high
|
|
|
|
8-10
|
|
Interrupts, Traps, and Reset - Reset
|
|
|
|
|
|
|
|
for the 100 microseconds required to bring the memory devices to their initial
|
|
states. DRAMs such as the TMS4256 specify an initial RAS high time of 200
|
|
microseconds, requiring that RESET be held low for 250 microseconds. In
|
|
general, holding RESET low for t microseconds ensures that RAS remains high
|
|
initially for t - 50 microseconds.
|
|
|
|
8.8.2 Suspension of DRAM-Refresh Cycles During Reset
|
|
An active-low level at the RESET pin is considered to be a power-up condition,
|
|
and DRAM refresh is not performed until RESET goes inactive high. Conse-
|
|
quently, the previous contents of the local memory may not be valid after a
|
|
reset.
|
|
|
|
8.8.3 State of VCLK During Reset
|
|
In many systems, the VCLK pin continues to be clocked during reset. How-
|
|
ever, a system in which VCLK is not clocked during reset should maintain
|
|
VCLK at the logic high level while it is not being clocked. This is necessary
|
|
to ensure that the video counters are reset properly. In fact, VCLK should be
|
|
held at the logic high level when it is not being clocked regardless of whether
|
|
the device is being reset. While VCLK is low, storage nodes in the VCOUNT
|
|
and HCOUNT registers rely on their internal capacitance to maintain their
|
|
state. If VCLK remains low for a sufficiently long period, these registers are
|
|
subject to bit errors due to charge leakage.
|
|
|
|
8.8.4 Initial State Following Reset
|
|
While the RESET pin is asserted low, the TMS3401 O's output and bidirectional
|
|
pins are forced to the states listed in Table 8-7.
|
|
Table 8-7. State of Pins During a Reset
|
|
|
|
Outputs Driven Outputs Driven Bidirectional
|
|
To High level To Low Level Pins Driven to
|
|
High Impedance
|
|
OOOUT BLANK HSYNC
|
|
HROY t VSYNC
|
|
DEN HOQ-H015
|
|
LAL LAOQ-LA015
|
|
TR/QE
|
|
RAS
|
|
CAS
|
|
W
|
|
HINT
|
|
HLOA/EMUA
|
|
t HROY will stay high during reset if the HCS input is also high.
|
|
|
|
Immediately following reset, all I/O registers are cleared (set to OOOOh), with
|
|
the possible exception of the HLT bit in the HSTCTL register. The HLT bit is
|
|
set to 1 if HCS is high just before the low-to-high transition of RESET.
|
|
|
|
|
|
|
|
|
|
8-11
|
|
Interrupts, Traps, and Reset - Reset
|
|
|
|
|
|
|
|
Just before execution of the first instruction in the reset routine, the
|
|
TMS34010's internal registers are in the following state:
|
|
|
|
• General-purpose register files A and Bare uninitialized.
|
|
|
|
• The ST is set to 0000001 Oh.
|
|
|
|
• The PC contains the 32-bit vector fetched from memory address
|
|
FFFFFFEOh.
|
|
|
|
The instruction cache is in the following state at this time:
|
|
|
|
• The SSA (segment start address) registers are uninitialized.
|
|
|
|
• The LRU (least recently used) stack is set to the initial sequence 0,1,2,3,
|
|
where 0 occupies the most-recently-used position, and 3 occupies the
|
|
least-recently-used position.
|
|
|
|
• All P (present) flags are cleared to Os.
|
|
|
|
S.S.5 Activity Following Reset
|
|
Immediately following the low-to-high transition of RESET, the TMS34010
|
|
performs a series of eight RAS-only memory cycles to bring the DRAMs and
|
|
VRAMs to their initial operating states. These cycles are completed before any
|
|
accesses of the TMS34010's memory (by either the TMS34010 or host pro-
|
|
cessor) are allowed to occur. If the host processor attempts to access the
|
|
TMS34010 memory indirectly before the eight RAS-only cycles have com-
|
|
pleted, it receives a not-ready signal from the TMS3401 0 until the cycles have
|
|
completed. The eight RAS-only cycles occur regardless of the initial value to
|
|
which the H LT bit in the HSTCTL register is set.
|
|
Each of the eight RAS-only cycles is a standard DRAM-refresh cycle. The RF
|
|
bus status signal output with the row address is active low. The row address
|
|
is all Os.
|
|
Following the eight RAS-only cycles, the TMS34010 automatically begins to
|
|
initiate a new DRAM-refresh cycle every 32 TMS34010 local clock cycles.
|
|
The first DRAM refresh cycle begins approximately 32 local clock periods after
|
|
the end of reset. A DRAM-refresh cycle is initiated every 32 TMS3401 0 clock
|
|
cycles until the DRAM-refresh rate is changed by the TMS34010 or host
|
|
processor.
|
|
The TMS3401 0 is configured by means of an external signal input on the HCS
|
|
pin to either:
|
|
|
|
• Begin executing instructions immediately after reset is completed (self-
|
|
bootstrap mode), or
|
|
|
|
• Halt until the host processor instructs it to begin executing (host-present
|
|
mode).
|
|
|
|
|
|
|
|
|
|
8-12
|
|
Interrupts, Traps, and Reset - Reset
|
|
|
|
|
|
|
|
8.8.5.1 Self -Bootstrap Mode
|
|
In self-bootstrap mode, the TMS34010 begins executing instructions imme-
|
|
diately following reset. This mode is typically used in a system in which the
|
|
reset vector and reset service routine are contained in nonvolatile memory,
|
|
such as a bootstrap ROM. This type of system does not necessarily require a
|
|
host processor, and the TMS34010 may be responsible for performing host
|
|
processor functions for the system.
|
|
The TMS3401 0 is configured in self-bootstrap mode when the HCS pin is low
|
|
just before the low-to-high transition of RESET. The low HCS level forces the
|
|
HLT bit to O. Immediately following the end of reset and the eight RAS-only
|
|
cycles, the TMS3401 0 fetches the level-O vector address and begins executing
|
|
the reset interrupt routine.
|
|
At the low-to-high transition of RESET, the HCS input is internally delayed
|
|
before being checked to determine how to set the HLT bit. In a system with-
|
|
out a host processor, for instance, this permits the HCS and RESET pins to be
|
|
tied together, eliminating the need for additional external logic.
|
|
Transitions of the HCS and RESET signals are assumed to be asynchronous
|
|
with respect to the TMS3401 0 local clock. HCS and RESET are internally syn-
|
|
chronized to the local clock by being held in latches for at least one clock pe-
|
|
riod before being used by the TMS3401 O. The delay through the synchronizer
|
|
latch is from one to two local clock periods, depending on the phase of the
|
|
signal transitions relative to the clock. To permit the HCS and RESET pins to
|
|
be wired together, TMS340"i 0 on-chip logic delays the HCS low-to-high
|
|
transition to ensure that it is detected after the RESET low-to-high transition.
|
|
The level of the delayed HCS signal at the time the low-to-high RESET transi-
|
|
tion is detected determines the setting of the HLT bit.
|
|
|
|
8.8.5.2 Host-Present Mode
|
|
Host-present mode assumes that a host processor is connected to the
|
|
TMS34010's host interface pins. In this mode, the TMS3401 0 local memory
|
|
can be composed entirely of RAM (no ROM). Fo"owing reset, the host pro-
|
|
cessor must download the initial program code, interrupt vectors, and so on,
|
|
before allowing the TMS3401 0 to begin executing instructions.
|
|
The TMS3401 0 is configured in host-present mode as follows. On the trailing
|
|
edge of RESET, the HCS (host interface chip select) input is sampled. If the
|
|
HCS pin is inactive high, internal logic forces the HLT (halt) bit to a 1. In this
|
|
fashion, the TMS3401 0 is automatically halted following reset, and does not
|
|
begin execution of its reset service routine until the host processor loads a 0
|
|
to HLT. In the meantime, the host processor is able to load the memory and
|
|
I/O registers with the appropriate initial values before the TMS3401 0 begins
|
|
executing instructions. This may include writing the reset vector and reset
|
|
service routine into the TMS3401 O's memory, for example.
|
|
No additional external logic is required to force HCS high before the low-to-
|
|
high transition of RESET. The simple external decode logic typically used
|
|
drives the HCS input active low only when one of the TMS34010's host in-
|
|
terface registers is addressed by the host processor. Assuming that the host
|
|
processor is not actively chip-selecting the TMS3401 0 at the end of reset, HCS
|
|
is high.
|
|
|
|
|
|
8-13
|
|
Interrupts, Traps, and Reset
|
|
|
|
|
|
|
|
|
|
8-14
|
|
Section 9
|
|
Screen Refresh and Video Timing
|
|
|
|
|
|
The TMS34010 generates the synchronization and blanking signals used to
|
|
drive a video screen in a graphics system. The GSP can be programmed to
|
|
support a variety of screen resolutions and interlaced or noninterlaced video.
|
|
If desired, the GSP can be programmed to synchronize to externally generated
|
|
video signals. The GSP also supports the use of video RAMs by generating
|
|
the memory-to-register cycles necessary to refresh a screen.
|
|
This section includes the following topics:
|
|
Section Page
|
|
9.1 Screen Sizes ............................................................................................... 9-2
|
|
9.2 Video Timing Signals ................................................................................ 9-3
|
|
9.3 Video Timing Registers ............................................................................. 9-4
|
|
9.4 Relationship Between Horizontal and Vertical Timing Signals ........... 9-5
|
|
9.5 Horizontal Video Timing ........................................................................... 9-6
|
|
9.6 Vertical Video Timing ................................................................................ 9-8
|
|
9.7 Display Interrupt ...................................................................................... 9-13
|
|
9.8 Dot Rate .................................................................................................... 9-14
|
|
9.9 External Sync Mode ................................................................................ 9-15
|
|
9.10Video RAM Control ................................................................................. 9-18
|
|
|
|
|
|
|
|
|
|
9-1
|
|
Screen Refresh and Video Timing - Screen Sizes
|
|
|
|
|
|
|
|
9.1 Screen Sizes
|
|
The TMS3401 O's 26-bit word address provides direct addressing of up to 128
|
|
megabytes of external memory. This address reach supports very high-
|
|
resolution displays. For example, the designer of a large TMS34010-based
|
|
system could decide to use the lower half of the address space for display
|
|
memory, and use the upper half for storing programs and data. Half of this
|
|
memory space, for example, could be used as a display memory, and the re-
|
|
maining memory can be used for programs and data. The 64-megabyte dis-
|
|
play memory in this example could support the following display sizes:
|
|
|
|
., 81 92 by 4096 pixels at 1 6 bits per pixel
|
|
|
|
• 8192 by 8192 pixels at 8 bits per pixel
|
|
|
|
• 16,384 by 8192 pixels at 4 bits per pixel
|
|
|
|
• 16,384 by 1 6,384 pixels at 2 bits per pixel
|
|
|
|
• 32,768 by 16,384 pixels at 1 bit per pixel
|
|
The video timing registers also support high-resolution displays. The 16-bit
|
|
vertical counter register, VCOUNT, directly supports screen lengths of up to
|
|
65,536 lines. The 16-bit horizontal counter register, HCOUNT, does not di-
|
|
rectly limit the horizontal resolution. Each horizontal line can be programmed
|
|
to be up to 65,536 VCLK (video clock) periods long. The VCLK period,
|
|
however, is an arbitrary number of dot-clock periods in length, depending on
|
|
the external divide-down logic used to produce the VCLK signal from the dot
|
|
clock. Thus, the number of pixels per line supported by the GSP horizontal
|
|
timing registers is limited only by the amount of video memory that is present.
|
|
Note that frame buffers in excess of 224 bits may require an external counter
|
|
to determine which VRAM serial outputs should be enabled during a scan line.
|
|
This external counter would increment upon detecting a 1 -to-O transition of
|
|
the logical address bit 23 during successive screen-refresh cycles. To support
|
|
applications requiring panning and scrolling of the frame buffer, the initial va-
|
|
lue of this counter immediately following vertical retrace should be capable of
|
|
being loaded under program control.
|
|
|
|
|
|
|
|
|
|
9-2
|
|
Screen Refresh and Video Timing - Video Timing Signals
|
|
|
|
|
|
|
|
9.2 Video Timing Signals
|
|
The TMS3401 0 generates horizontal sync, vertical sync, and blanking signals
|
|
(HSYNC, VSYNC, and BLANK) on chip. The GSP's video timing logic is driven
|
|
by the video input clock (VClK). The sync and blanking signals control the
|
|
horizontal and vertical sweep rates of the screen and synchronize the screen
|
|
display to data output by the VRAMs.
|
|
HSYNC is the horizontal sync signal used to control external video circuitry.
|
|
It may be configured as an input or an output via the DXV and HSD
|
|
bits in the DPYCTl register. When DXV=O and HDS=O, external
|
|
video is selected and HSYNC is an input. Otherwise, HSYNC is an
|
|
output.
|
|
VSYNC is the vertical sync signal used to control external video circuitry. It
|
|
may be configured as an input or an output via the DXV bit in the
|
|
DPYCTl register. If DXV=1, internal video is selected and VSYNC is
|
|
an output. If DXV=O, external video is selected and VSYNC is an in-
|
|
put.
|
|
BlAN K is used to turn off a CRT's electron beam during horizontal and
|
|
vertical retrace intervals. The signal output at the BLANK pin is a
|
|
composite of the internally generated horizontal and vertical blank-
|
|
ing signals. BLANK can also be used to control starting and stopping
|
|
of the VRAM shift registers.
|
|
VCLK is derived from the dot clock of the external video system. VClK
|
|
drives the internal video timing logic.
|
|
Holding VClK low for long periods may cause video counter errors. When
|
|
VClK is not being clocked for long periods, it should be held at the logic high
|
|
level. While VClK is low, the storage nodes within the device rely on their
|
|
internal capacitance to maintain state information, and if VClK is held low for
|
|
a sufficiently long time, charge leakage may cause bit errors.
|
|
|
|
|
|
|
|
|
|
9-3
|
|
Screen Refresh and Video Timing - Video Timing Registers
|
|
|
|
|
|
|
|
9.3 Video Timing Registers
|
|
The video timing registers are a subset of the 110 registers described in Section
|
|
6. The values in the video timing registers control the video timing signals.
|
|
These registers are divided into two groups:
|
|
|
|
• Horizontal timing registers control the timing of the HSYNC signal
|
|
and the internal horizontal blanking signal.
|
|
HCOUNT counts the number of VCLK periods per horizontal scan
|
|
line.
|
|
HESYNC specifies the point in a horizontal scan line at which the
|
|
HSYNC signal ends.
|
|
|
|
HEBLNK specifies the endpoint of the horizontal blanking interval.
|
|
HSBLNK specifies the starting point of the horizontal blanking
|
|
interval.
|
|
HTOTAL defines the number of VCLK periods allowed per hori-
|
|
zontal scan line.
|
|
|
|
• Vertical timing registers control the timing of the VSYNC signal and
|
|
the internal vertical blanking signal.
|
|
VCOUNT counts the horizontal scan lines in the screen display.
|
|
VESYNC specifies the endpoint of the VSYNC signal.
|
|
VEBLN K specifies the endpoint of the vertical blanking interval.
|
|
VSBLNK specifies the starting point of the vertical blanking in-
|
|
terval.
|
|
VTOTAL specifies the value of VCOUNT at which VSYNC may
|
|
begin.
|
|
|
|
|
|
|
|
|
|
9-4
|
|
Screen Refresh and Video Timing - Horizontal vs. Vertical Signals
|
|
|
|
|
|
|
|
9.4 Relationship Between Horizontal and Vertical Timing Signals
|
|
Figure 9-1 illustrates the relationship between the horizontal and vertical tim-
|
|
ing signals in the construction of a two-dimensional raster display pattern.
|
|
The vertical sync and blanking signals span an entire frame. The horizontal
|
|
sync and blanking signals span a single horizontal scan line within the frame.
|
|
|
|
I Horizontal Internal-----tl
|
|
|
|
W LHSYNe
|
|
L..HBLNK
|
|
|
|
|
|
|
|
|
|
I
|
|
Vertloal
|
|
|
|
|
|
'I~
|
|
TT T
|
|
i (.)
|
|
I; I~
|
|
~ ~
|
|
|
|
|
|
; m~
|
|
z
|
|
!z ~W
|
|
:)
|
|
o(.) ::t: ::t: ~
|
|
CD
|
|
::t:
|
|
::t:
|
|
|
|
t Start New Line
|
|
|
|
Figure 9-1. Horizontal and Vertical Timing Relationship
|
|
|
|
|
|
Figure 9-1 illustrates the following terms and phrases, which are used
|
|
throughout this section:
|
|
|
|
• HBLNK and VBLNK are internal horizontal and vertical blanking signals
|
|
that combine to form the BLANK signal output. (HBLNK and VBLNK
|
|
cannot be accessed at TMS34010 pins.) The display is active (not
|
|
blanked) only when HBLNK and VBLNK are both inactive high.
|
|
|
|
• Horizontal front porch refers to the interval between the beginning
|
|
of horizontal blanking and the beginning of the horizontal sync signal.
|
|
|
|
• Horizontal back porch is the interval between the end of the hori-
|
|
zontal sync signal and the end of horizontal blanking.
|
|
|
|
• Vertical front porch refers to the interval between the beginning of
|
|
vertical blanking and the beginning of the vertical sync signal.
|
|
|
|
• Vertical back porch is the interval between the end of the vertical sync
|
|
signal and the end of vertical blanking.
|
|
|
|
|
|
9-5
|
|
Screen Refresh and Video Timing - Horizontal Video Timing
|
|
|
|
|
|
|
|
9.5 Horizontal Video Timing
|
|
The following discussion applies to internally generated video timing (the DXV
|
|
and HSD bits in the DPYCTL register are set to 1 and 0, respectively). Hori-
|
|
zontal timing signals are the same for interlaced and non interlaced video.
|
|
The HESYNC, HEBLNK, HSBLNK, and HTOTAL registers control horizontal
|
|
signal timing as shown in Figure 9-2. All horizontal timing parameters are
|
|
specified as mUltiples of VCLK. The time between the start of two successive
|
|
HSYNC pulses is specified by HTOTAL. HCOUNT counts from 0 to the value
|
|
in HTOTAL and then repeats. The value in HTOTAL represents the number
|
|
of VCLK periods, minus one, per horizontal scan line. The value in HESYNC
|
|
represents the duration of the sync pulse, minus one. The values in HEBLNK
|
|
and HSBLNK specify the beginning and end points of the horizontal blanking
|
|
interval.
|
|
|
|
|
|
|
|
I Horz. I Horz I Horz. I
|
|
~
|
|
I
|
|
I ~~~~ I Sync I ~~ I I
|
|
-~t Y l~1
|
|
!L-
|
|
HESYNC+1 I I
|
|
J4 .1 I I I
|
|
:'-HEBLNK+1--..l I I
|
|
111 HSBLNK+1---~~1
|
|
I
|
|
1 I I
|
|
~~-----HTOTAL+1-----.t~1
|
|
|
|
Figure 9-2. Horizontal Timing
|
|
|
|
Figure 9-3 shows the internal logic used to generate the horizontal timing
|
|
signals. HCOUNT is incremented once each VCLK period (on the high-to-Iow
|
|
transition) until it equals the value in HTOTAL. On the next VCLK period
|
|
following HCOUNT=HTOTAL, HCOUNT is reset to 0, and begins counting
|
|
again.
|
|
The limits of the horizontal sync pulse are defined by the values in HESYNC
|
|
and HTOTAL. HSYNC is driven active low when HCOUNT=HTOTAL; it is
|
|
driven inactive high when HCOUNT=HESYNC. After HCOUNT becomes
|
|
equal to HTOTAL or HESYNC, there is a one-clock delay before the
|
|
active/inactive transition takes place at the HSYNC pin.
|
|
The internal HBLNK signal is driven active low after HCOUNT=HSBLNK; it is
|
|
driven inactive high after HCQUNT=HEBLNK. HBLNK is logically ORed (ne-
|
|
gative logic) with VBLNK to produce the BLANK signal; that is, BLANK goes low
|
|
when either HBLNK or VBLNK is low. After HCOUNT becomes equal to
|
|
HSBLNK or HEBLNK, there is a one-clock delay before the transition takes
|
|
place at the BLANK pin.
|
|
|
|
|
|
|
|
|
|
9-6
|
|
Screen Refresh and Video Timing - Horizontal Video Timing
|
|
|
|
|
|
|
|
|
|
VCLK - - - - - t i l
|
|
|
|
|
|
|
|
|
|
Figure 9-3. Horizontal Timing logic - Equivalent Circuit
|
|
|
|
Figure 9-4 illustrates horizontal signal generation. In this example,
|
|
HTOTAL=N, HSBLNK=N-2, HESYNC=2, and HEBLNK=4. Signal transitions
|
|
at the HSYNC and BLANK pins occur at high-to-Iow VCLK transitions. After
|
|
HCOUNT becomes equal to HTOTAL, HSBLNK, HESYNC, or HEBLNK, there
|
|
is a one-clock delay before the transition takes place at the HSYNC or BLANK
|
|
pin. When HCOUNT=HSBLNK (shortly before the end of the horizontal
|
|
scan), horizontal blanking begins. At this time, the DIP (display interrupt) bit
|
|
in the INTPEND register is set to 1 if VCOUNT=DPYINT. The next screen-
|
|
refresh cycle may also occur at this time - the GSP can be programmed to re-
|
|
fresh the screen after one, two, three, or four scan lines.
|
|
|
|
VCLK
|
|
|
|
|
|
|
|
|
|
Horizontal Horizontal Horizontal
|
|
Front Porch Sync Pulse Back Porch
|
|
|
|
|
|
HSBLNK = N-2 HTOTAL = N
|
|
HESYNC = 2 HEBLNK = 4
|
|
|
|
Figure 9-4. Example of Horizontal Signal Generation
|
|
|
|
|
|
|
|
|
|
9-7
|
|
Screen Refresh and Video Timing - Vertical Video Timing
|
|
|
|
|
|
|
|
9.6 Vertical Video Timing
|
|
The following discussion applies to internally generated video timing (the DXV
|
|
bit in the DPYCTL register is set to 1).
|
|
The VESYNC, VEBLNK, VSBLNK, and VTOTAL registers control vertical signal
|
|
timing as shown in Figure 9-5. All vertical timing parameters are specified as
|
|
multiples of the horizontal sweep time H, where
|
|
H = (HTOTAL + 1) x (VCLK period)
|
|
VTOTAL specifies the time interval between the start of two successive vertical
|
|
sync pulses; this value is the number of H intervals, less one, in each vertical
|
|
frame. VESYNC represents the duration of the VSYNC pulse, less one, in each
|
|
vertical frame. VSYNC's high-to-Iow and low-to-high transitions coincide with
|
|
high-to-Iow transitions at the HSYNC pin.
|
|
VSBLNK and VEBLNK specify the starting and ending points of vertical
|
|
blanking. Blanking begins when VCOUNT=VSBLNK and ends when
|
|
VCOUNT=VEBLNK. Assuming that horizontal blanking is active at the start
|
|
of each HSYNC pulse, transitions of the internal vertical blanking signal,
|
|
VBLNK, occur while horizontal blanking is active.
|
|
|
|
|
|
|
|
I Vert I I Vert I
|
|
~
|
|
I
|
|
I Front I Vert. I Back I I
|
|
I Porch I Sync I Porch I '. ~I
|
|
------t 1 I ! L-
|
|
IVESVNC+1 I I I
|
|
f4 ~I I I I
|
|
~VEBLNK+1~ I I
|
|
L V6BLNK+1---~~1 I
|
|
r ' I
|
|
!e-~-----VTOTAL+1-----.t~1
|
|
|
|
Figure 9-5. Vertical Timing for Noninterlaced Display
|
|
|
|
|
|
Figure 9-6 shows the internal logic that generates the vertical timing signals.
|
|
VCOUNT increments at the beginning of each HSYNC pulse until it equals the
|
|
value in VTOTAL. When VCOUNT=VTOTAL, VCOUNT is reset to 0 and be-
|
|
gins counting again. VSYNC is driven active low after VCOUNT=VTOTAL; it
|
|
is driven inactive high after VCOUNT=VESYNC. The internal VBLNK signal is
|
|
driven active low after VCOUNT=VSBLNK; it is driven inactive high after
|
|
VCOUNT=VEBLNK. VBLNK is logically ORed (negative logic) with HBLNK to
|
|
produce the BLANK signal. This description applies to a noninterlaced display.
|
|
The vertical timing changes slightly for an interlaced display.
|
|
|
|
|
|
|
|
|
|
9-8
|
|
Screen Refresh and Video Timing - Vertical Video Timing
|
|
|
|
|
|
|
|
|
|
HSYNC----M
|
|
|
|
|
|
|
|
|
|
Figure 9-6. Vertical Timing logic - Equivalent Circuit
|
|
|
|
|
|
9.6.1 Noninterlaced Video Timing
|
|
Noninterlaced scan mode is selected by setting the NIL bit in the DPYCTL
|
|
register to 1. In this mode, each video frame consists of a single vertical field.
|
|
Figure 9-7 shows the path traced by the electron beam on the screen. Box A
|
|
shows the vertical retrace, which is an integral number of horizontal scan lines
|
|
in duration. Box B shows the active portion of the frame. Solid lines represent
|
|
lines that are displayed; dashed lines are blanked.
|
|
Monitor Screen Monitor Screen
|
|
|
|
|
|
|
|
|
|
..................................
|
|
............................................
|
|
(a)
|
|
|
|
Figure 9-7. Electron Beam Pattern for Noninterlaced Video
|
|
|
|
|
|
Figure 9-8 illustrates the video timing signals that generate the display. In this
|
|
example, VSBLNK=8, VTOTAL=9, VESYNC=1, and VEBLNK=2. (In actual
|
|
|
|
|
|
9-9
|
|
Screen Refresh and Video Timing - Vertical Video Timing
|
|
|
|
|
|
applications, much larger values are used; these values were chosen for illus-
|
|
tration only.) Each horizontal scan line is preceded by a horizontal retrace.
|
|
The horizontal scan pattern repeats until VCOUNT=VTOTAL; VCOUNT is then
|
|
reset to 0, and vertical retrace returns the beam to the top of the screen. BLANK
|
|
is active low during both horizontal and vertical retrace intervals.
|
|
VCOUNT is incremented each time HCOUNT is reset to 0 at the end of a scan
|
|
line. The VSYNC output begins when VCOUNT=VTOTAL, coinciding with the
|
|
start of HSYNC. The VSYNC output ends when VCOUNT=VESYNC; this also
|
|
coincides with the start of an HSYNC pulse.
|
|
The starting screen-refresh address is loaded from DPYSTRT into DPYADR
|
|
at the end of the last active horizontal scan line preceding vertical retrace. This
|
|
load is triggered when HCOUNT=HSBLNK and VCOUNT=VSBLNK.
|
|
|
|
|
|
VCOUNT
|
|
|
|
|
|
|
|
|
|
"HBLNK"
|
|
|
|
|
|
|
|
|
|
I I
|
|
I I
|
|
II II I I
|
|
VBLNK I I
|
|
~~~----~I--~ ~--~I-----
|
|
I I I
|
|
Vertical
|
|
Sweep
|
|
Horizontal
|
|
-------4~,~_ll__------------------1r,'---
|
|
I I
|
|
I
|
|
I
|
|
•
|
|
|
|
|
|
Sweep
|
|
I I
|
|
~~••l•.-----------~(!)~----------~
|
|
VSBLNK =.8 VTOTAL = 9
|
|
VESYNC = 1 VEBLNK = 2
|
|
|
|
Figure 9-8. Noninterlaced Video Timing Waveform Example
|
|
|
|
|
|
|
|
|
|
9-10
|
|
Screen Refresh and Video Timing - Vertical Video Timing
|
|
|
|
|
|
9.6.1.1 Interlaced Video Timing
|
|
Interlaced scan mode is selected when the NIL bit in the DPYCTL register is
|
|
set to O. In this mode, each display frame is composed of two fields of hori-
|
|
zontal scan lines. The display consists of alternate lines from the two fields.
|
|
This doubles 'the display resolution while only slightly increasing the frequency
|
|
with which data is supplied to the screen.
|
|
Figure 9-9 illustrates the path traced by the electron beam on the screen.
|
|
Figure 9-10 shows the timing waveforms used to generate the display in Fig-
|
|
ure 9-9. In this example, VSBLNK=6, VTOTAL=7, VESYNC=1, and
|
|
VEBLNK=2. (In actual applications, much larger values are used; these values
|
|
were chosen for illustration only.)
|
|
In interlaced mode, two separate vertical scans are performed for each frame -
|
|
one for the even line numbers (even field) and one for the odd line numbers
|
|
(odd field). The even field is scanned first, starting at the top left of the screen
|
|
(see Figure 9-9 b). When VCOUNT=VTOTAL, the vertical retrace returns the
|
|
beam to the top of the screen, and the odd field is scanned (Figure 9-9 d).
|
|
The electron beam starts scanning the odd and even fields at different points.
|
|
The reason for this is illustrated in Figure 9-10. The end of the VSYNC pulse
|
|
that precedes the even field coincides with start of an HSYNC pulse; however,
|
|
the VSYNC pulse that precedes the odd field ends exactly halfway between two
|
|
HSYNC pulses
|
|
|
|
Even Reid ~ Odd Reid
|
|
____________ ______
|
|
~A~ ~ ____ ~
|
|
|
|
A
|
|
|
|
Monitor Screen Monitor Screen Monitor Screen Monitor Screen
|
|
|
|
|
|
|
|
|
|
............................
|
|
......................... ................
|
|
(a) (b) (c) (d)
|
|
|
|
|
|
Juxtaposition of even
|
|
and odd fields on
|
|
monitor screen.
|
|
|
|
|
|
|
|
|
|
Figure 9-9. Electron Beam Pattern for Interlaced Video
|
|
|
|
|
|
In interlaced mode, video timing logic operation is altered so that the odd field
|
|
begins when HCOUNT=HTOTAL/2. The beam is thus positioned so that
|
|
horizontal scan lines in the odd field fall between horizontal scan lines in the
|
|
even field. To place each line of the odd field precisely between two lines of
|
|
the even field, load HTOTAL with an odd number.
|
|
|
|
|
|
|
|
9-11
|
|
Screen Refresh and Video Timing - Vertical Video Timing
|
|
|
|
|
|
The transition from d to a in Figure 9-9 shows that the vertical retrace at the
|
|
end of the odd field begins at the end of a horizontal scan line; that is, it co-
|
|
incides with the start of an HSYNC pulse, which results from the condition
|
|
HCOUNT=HTOTAL. The VSYNC pulse duration is an integral number of hor-
|
|
izontal scan retrace intervals. When vertical retrace ends and the active portion
|
|
of the next even field begins, the beam is positioned at the beginning of a
|
|
horizontal scan line.
|
|
Horizontal timing is similar for interlaced and noninterlaced displays.
|
|
HCOUNT is reset to 0 at the end of each horizontal scan line. A screen-refresh
|
|
cycle begins before the end of the line, coinciding with the start of the hori-
|
|
zontal blanking interval. Assuming that the starting corner of the display is the
|
|
upper left corner, the DUDATE field of the DPYCTL register is added to the
|
|
screen-refresh address (SRFADR in the DPYADR register) to generate the row
|
|
address for the next screen-refresh cycle. In interlaced mode, the DUDATE
|
|
value must be twice that of the value needed to produce the same display in
|
|
noninterlaced mode (that is, two times the difference in addresses between
|
|
consecutive scan lines). This causes the screen refresh to skip alternate lines
|
|
during the odd and even fields.
|
|
At the beginning of each vertical blanking interval, the screen-refresh address
|
|
(SRFADR in the DPYADR register) is loaded with the starting value specified
|
|
by the DPYSTRT register. When vertical blanking precedes an even field, the
|
|
new DPYADR row address is incremented by half the value in the DUDATE
|
|
field. This is in preparation to display line 2 (Figure 9-9 b). When vertical
|
|
blanking precedes an odd field, the row address loaded into DPYADR from
|
|
DPYSTRT is not incremented. In this case, the starting row address in
|
|
DPYSTRT points to the beginning of line 1 (Figure 9-9 d).
|
|
|
|
|
|
VCOUNT
|
|
|
|
|
|
|
|
|
|
"HIDfj("
|
|
|
|
|
|
|
|
im'flC ----,!-__
|
|
1
|
|
|
|
1
|
|
---I
|
|
|
|
|
|
|
|
"V8[Nj("l, __...,.i_ _ _- j - - - - '
|
|
1
|
|
|
|
VerticaI~
|
|
Sweep
|
|
1
|
|
|
|
|
|
i ------..!.r----
|
|
1
|
|
--'
|
|
....
|
|
1
|
|
1' - - - -
|
|
1
|
|
i
|
|
1
|
|
|
|
-..!...r----
|
|
1,----
|
|
1
|
|
|
|
|
|
|
|
1
|
|
1
|
|
I 1 1
|
|
Horizontal I
|
|
Sweep 1 I I
|
|
|
|
~~~---~~r-----.M:.~~r~.~i-.---~~r---~
|
|
Even Field VSBLNK = 6 VTOTAL = 7 Odd Field
|
|
VESYNC = , VEBLNK = 2
|
|
|
|
|
|
|
|
|
|
Figure 9-10. Interlaced Video Timing Waveform Example
|
|
|
|
|
|
|
|
|
|
9-12
|
|
Screen Refresh and Video Timing - Display Interrupt
|
|
|
|
|
|
|
|
9.7 Display Interrupt
|
|
The TMS3401 0 can be programmed to interrupt the display when a specified
|
|
line is displayed on the screen. This is called a display interrupt. It is ena-
|
|
bled by setting the DIE bit in the INTENB register to 1 and loading the DPY-
|
|
INT register with the desired horizontal scan line number. When VCOUNT =
|
|
DPYINT, the interrupt request is generated to coincide with the start of hori-
|
|
zontal blanking at the end of the specified line.
|
|
The display interrupt request can be polled by disabling the interrupt (setting
|
|
DIE=O) and checking the value of the DIP bit in the INTPEND register.
|
|
Writing a 0 to DIP clears the request.
|
|
The display interrupt has several applications. It can be used to coordinate
|
|
modifications of the bit map with the display of the bit map's contents, for
|
|
example. While the bottom half of the screen is displayed, the GSP can modify
|
|
the bit map of the top half of the screen, and vice versa.
|
|
Another use for the display interrupt is in maintaining a cursor on the monitor
|
|
screen. The cursor image resides in the on-screen memory only during the
|
|
time the electron beam is scanning the lines containing the cursor. The cursor
|
|
remains free from flicker even during periods in which the TMS3401 0 busy
|
|
drawing to the screen. The technique is to load the DPYI NT register with the
|
|
VCOUNT value of a scan line just above where the top of the cursor is to ap-
|
|
pear. When the display interrupt occurs, the interrupt service routine performs
|
|
the following tasks:
|
|
|
|
• Sets DPYINT to the scan line just below the cursor,
|
|
• Saves the portion of the screen where the cursor is to appear, and
|
|
• PixBlts the cursor onto the screen.
|
|
The cursor remains on the screen until the electron beam reaches the bottom
|
|
of the cursor, at which time a second interrupt request occurs. The original
|
|
screen is then restored, and the TMS3401 0 can resume drawing to the screen.
|
|
The display interrupt is also useful in split screen applications. By modifying
|
|
the contents of the DPYADR register halfway through a frame, different parts
|
|
of the bit map can be displayed on the top and bottom halves of the screen.
|
|
No special steps are necessary to ensure that loading a new value to DPYADR
|
|
does not interfere with an ongoing screen-refresh cycle. The display interrupt
|
|
is requested at the beginning of the horizontal blanking interval. If a screen-
|
|
refresh cycle occurs during the same horizontal blanking interval, the GSP
|
|
cannot respond to the interrupt request until the refresh cycle and subsequent
|
|
updating of DPYADR are complete. This is true whether the interrupt is taken
|
|
or the GSP simply polls the DIP bit and detects a 0-to-1 transition. After DIP
|
|
has been set to 1, DPYADR can be loaded with a new value to achieve the
|
|
split screen anytime before the next screen-refresh cycle.
|
|
In interlaced mode, the display interrupt can be used to detect the start of the
|
|
even field. For this purpose, the DPYINT register is loaded with the value from
|
|
the VESYNC register. Figure 9-10 (page 9-12) shows that during the odd
|
|
field, VCOUNT is incremented by 1 halfway through the horizontal interval
|
|
when the condition VCOUNT=VESYNC is detected. Assuming that
|
|
HSBLNK=HTOTALj2, VCOUNT contains the value VESYNC+1 by the time
|
|
horizontal blanking begins. This means that if DPYINT=VESYNC, the display
|
|
interrupt is effectively prevented from occurring during the odd field.
|
|
|
|
|
|
|
|
|
|
9-13
|
|
Screen Refresh and Video Timing - Dot Rate
|
|
|
|
|
|
|
|
9.8 Dot Rate
|
|
A typical screen must be refreshed 60 times per second for a noninterlaced
|
|
scan or 30 times per second for an interlaced scan. For a noninterlaced dis-
|
|
play, the dot period (time to refresh one pixel) is estimated as:
|
|
|
|
(0.8) (1/60 second)
|
|
Dot Period =
|
|
(pixels/line) x (lines/frame)
|
|
|
|
For an interlaced display, the dot period is estimated as
|
|
|
|
(0.8) (1/30 second)
|
|
Dot Period =
|
|
(pixels/line) x (lines/frame)
|
|
|
|
The 0.8 factor in the numerator accounts for the fact that the display is typi-
|
|
cally blanked for about 20% of the duration of each frame. This factor varies
|
|
somewhat from monitor to monitor.
|
|
During each dot period, the complete information for one pixel must be ob-
|
|
tained from the display memory (or frame buffer). Thus, the rate at which vi-
|
|
deo data must be supplied from the display memory (which is usually the
|
|
limiting factor for large systems) is a function of pixel size as well as screen
|
|
dimensions.
|
|
|
|
|
|
|
|
|
|
9-14
|
|
Screen Refresh and Video Timing - External Sync Mode
|
|
|
|
|
|
|
|
9.9 External Sync Mode
|
|
External sync mode allows the TMS3401 0 to use horizontal and vertical sync
|
|
signals from an external source. This permits graphics images generated by
|
|
the GSP to 'be superimposed upon or mixed with images from external
|
|
sources.
|
|
External sync mode is selected by setting the DXV and HSD bits in the
|
|
DPYCTL register to O. HSYNC and VSYNC are now configured as inputs. (Al-
|
|
ternately, HSYNC can be configured as an output and VSYNC as an input by
|
|
setting DXV=O and HSD=1.) When an active-low sync pulse is input to one
|
|
of these pins, the corresponding counter (HCOUNT or VCOUNT) is forced to
|
|
all Os. By forcing the counters to follow the external sync signals, the blanking
|
|
intervals and screen-refresh cycles are also forced to follow the external video
|
|
signals.
|
|
The HSYNC and VSYNC inputs are sampled on each VCLK rising edge.
|
|
HCOUNT or VCOUNT are cleared 2.5 clock periods (on a VCLK falling edge)
|
|
following a high-to-Iow transition at the HSYNC or VSYNC pin, respectively.
|
|
BLANK remains an output, but its timing is affected because the point at which
|
|
HCOUNT and VCOUNT are cleared is controlled by the external sync signals.
|
|
The 2.5-clock delay must be considered when selecting values for the
|
|
HSBLNK and HEBLNK registers.
|
|
|
|
9.9.1 A Two-GSP System
|
|
One GSP can generate video timing for two GSPs. As Figure 9-11 shows,
|
|
GSP #1 is configured for internal sync mode (DXV=1) and generates the sync
|
|
timing. GSP #2 is configured for external sync mode (DXV=O and HSD=O),
|
|
and receives the HSYNC and VSYNC inputs from GSP #1. Assume that the vi-
|
|
deo timing registers of the two devices are named as follows:
|
|
GSP #1 GSP#2
|
|
HCOUNT1 HCOUNT2
|
|
HESYNC1 HESYNC2
|
|
HSBLNK1 HSBLNK2
|
|
HEBLNK1 HEBLNK2
|
|
HTOTAL1 HTOTAL2
|
|
VCOUNT1 VCOUNT2
|
|
VESYNC1 VESYNC2
|
|
VSBLNK1 VSBLNK2
|
|
VEBLNK1 VEBLNK2
|
|
VTOTAL1 VTOTAL2
|
|
GSP #2's registers should be programmed in terms of the values in GSP #1's
|
|
registers, as shown in Table 9-1. The BLANK signals from GSP #1 and GSP
|
|
#2 are the same, and switch in unison on the same VCLK edges. When
|
|
HCOUNT1 is cleared on a VCLK falling edge, HCOUNT2 is cleared three full
|
|
VCLK periods later. For short horizontal blanking periods, HEBLN K2 may
|
|
need to be loaded with a value that is less than zero. For example, assume that
|
|
HSBLNK1 =HTOTAL1-4 and HEBLNK1 =1 (that is, the horizontal blanking
|
|
interval is six VCLK periods). To ensure that GSP #2's horizontal blanking
|
|
interval begins and ends at the same time as GSP #1 's, GSP #2's registers
|
|
must be loaded with values so that HSBLNK2=HTOTAL 1-8 and
|
|
HEBLNK2=HTOTAL1-2.
|
|
|
|
|
|
9-15
|
|
Screen Refresh and Video Timing - External Sync Mode
|
|
|
|
|
|
|
|
VCLK
|
|
~
|
|
HCOUNT
|
|
________________ ~I
|
|
|
|
|
|
|
|
|
|
~~~-----------------------------
|
|
HSYNC
|
|
(output to GSP .2)
|
|
|
|
|
|
m..!2i
|
|
HCOUNT
|
|
|
|
Figure 9-11. External Sync Timing - Two GSP Chips
|
|
|
|
|
|
|
|
The values in HTOTAL2 and VTOTAL2 must be large enough so that the
|
|
conditions HCOUNT=HTOTAL and VCOUNT=VTOTAL do not cause
|
|
HCOUNT and VCOUNT, respectively, to be cleared before the leading edges
|
|
of the external horizontal and vertical sync pulses occur. In the example in
|
|
Table 9-1, HTOTAL2 and VTOT AL2 are set to their maximum values. The
|
|
value of HESYNC2 must be such that HCOUNT=HESYNC2 occurs between
|
|
the end of an external HSYNC pulse and the beginning of the next external
|
|
HSYNC pulse. The value of VESYNC2 must be such that VCOUNT=VESYNC2
|
|
occurs between the end of an external VSYNC pulse and the beginning of the
|
|
next external VSYNC pulse.
|
|
|
|
Table 9-1. Programming GSP #2 For External Sync Mode
|
|
HEBLNK2 HEBLNK1 - 3
|
|
HSBLNK2 HSBLNK1 - 3
|
|
HTOTAL2 65535
|
|
HESYNC2 (HEBLNK2 + HSBLNK2)/2 t
|
|
VEBLNK2 VEBLNK1
|
|
VSBLNK2 VSBLNK1
|
|
VTOTAL2 65535
|
|
VESYNC2 (VEBLNK2 + VSBLNK2)!2 t
|
|
t Suggested value; see description in text.
|
|
|
|
|
|
|
|
Since the internal counter can only be resolved to the nearest VCLK edge,
|
|
precise synchronization with an external video sourc~ can be achieved only
|
|
when VCLK is harmonically related to the external horizontal sync signal. In
|
|
general, however, the HSYNC and VSYNC inputs are allowed to change asyn-
|
|
chronously with respect to VCLK, although the precise VCLK edge at which
|
|
an external sync pulse is recognized can be guaranteed only if the setup and
|
|
hold times specified for sync inputs are met.
|
|
|
|
|
|
|
|
|
|
9-16
|
|
Screen Refresh and Video Timing - External Sync Mode
|
|
|
|
|
|
|
|
9.9.2 External Interlaced Video
|
|
External sync mode can be used for both interlaced and non interlaced dis-
|
|
plays. When locking onto external interlaced sync signals, the GSP discrimi-
|
|
nates between the odd and even fields of the external video signals based on
|
|
whether its internal horizontal blanking is active at the time that the start of the
|
|
external vertical sync pulse is detected. In Figure 9-10, for example, the even
|
|
field begins at a point where HBLNK is active low, and the odd field begins
|
|
while HBLNK is high.
|
|
In interlaced mode, the discrimination between the even and odd fields of an
|
|
external video source is based on the value of HCOUNT at a point two VCLK
|
|
periods past the rising VCLK edge at which the GSP detects the VSYNC input's
|
|
high-to-Iow transition. If HCOUNT contains a value greater than the value in
|
|
HEBLNK, but less than or equal to the value in HSBLNK, the GSP assumes
|
|
that the vertical sync pulse precedes the start of an odd field. Otherwise, the
|
|
next field is assumed to be even. Alternatively, the GSP can be placed in
|
|
non interlaced mode, even though the external sync signals it is locking onto
|
|
are for an interlaced display. In this case, the GSP simply causes identical
|
|
display information to be output to the monitor during the odd and even fields.
|
|
The program can determine at any time whether an even or odd field is being
|
|
scanned by inspecting the least significant bits of the DPYADR register to
|
|
determine whether they have been incremented by DUDATE/2. Recall that
|
|
that at the start of an even field, the initial address loaded into DPYADR from
|
|
the DPYSTRT register is automatically incremented by DUDATE/2 (that is,
|
|
incremented by half the value specified in the DUDATE field of the DPYCTL
|
|
register). At all other times, DPYADR is incremented by DUDATE rather than
|
|
DUDATE/2.
|
|
|
|
|
|
|
|
|
|
9-17
|
|
Screen Refresh and Video Timing - Video RAM Control
|
|
|
|
|
|
|
|
9.10 Video RAM Control
|
|
The TMS34010 automatically schedules the VRAM (video RAM) memory-
|
|
to-register cycles needed to refresh a video monitor screen. These cycles are
|
|
referred to as screen-refresh cycles.
|
|
In addition to automatic screen-refresh cycles, the GSP can be configured to
|
|
perform memory-to-register and register-to-memory cycles under the explicit
|
|
control of software executing on the GSP's internal processor. One of the
|
|
primary uses for this capability is to facilitate nearly instantaneous clearing of
|
|
the screen. The screen is cleared in 256 memory cycles or less by means of a
|
|
technique referred to here as bulk initialization of the display memory.
|
|
|
|
9.10.1 Screen Refresh
|
|
A screen-refresh cycle loads the VRAM shift registers with a portion of the
|
|
display memory corresponding to a scan line of the display. The internal re-
|
|
quests for these cycles occur at regular intervals coinciding with the start of
|
|
the horizontal blanking intervals defined by the video timing registers. When
|
|
horizontal blanking ends, the contents of the shift registers are clocked out
|
|
serially to drive the video inputs of a monitor. A screen-refresh cycle typically
|
|
occurs prior to each active line of the display.
|
|
|
|
9.10.1. 1 Display Memory
|
|
The display memory is the area of memory which holds the graphics image
|
|
output to the video monitor. This memory is typically implemented with
|
|
VRAMs. During a screen-refresh cycle, a portion of the display memory cor-
|
|
responding to one (or possibly more) scan lines of the display are loaded into
|
|
the VRAM shift registers. Depending on the screen dimensions selected, not
|
|
all portions of the display memory are necessarily output to the monitor.
|
|
The width of the display memory is referred to as the screen pitch, which is the
|
|
difference in 32-bit memory addresses between two vertically-adjacent pixels
|
|
on the screen. The screen pitch is also the difference in starting memory ad-
|
|
dresses of the video data for two consecutive scan lines. When XY addressing
|
|
is used, the screen pitch must be a power of two to facilitate the conversion
|
|
of XY addresses to memory addresses. The value loaded into the DUDATE
|
|
field of the DPYCTL register represents the screen pitch, and is the amount
|
|
by which the screen-refresh address is incremented (or decremented) follow-
|
|
ing each screen-refresh cycle.
|
|
The portion of display memory that is actually output to the monitor is referred
|
|
to as the on-screen memory. The starting location of the on-screen memory
|
|
is specified by the SRFADR field in the DPYSTRT register.
|
|
The starting screen-refresh address is output during the screen-refresh cycle
|
|
that occurs at the start of each frame. At the end of the screen-refresh cycle,
|
|
the address is incremented to point to the area of memory containing the pixels
|
|
for the second scan line. The process is repeated for each subsequent scan
|
|
line of the frame.
|
|
|
|
|
|
|
|
|
|
9-18
|
|
Screen Refresh and Video Timing - Video RAM Control
|
|
|
|
|
|
A screen-refresh cycle typically affects all video RAMs in the system. A me-
|
|
mory-to-register cycle transfers data from a selected row of memory to the
|
|
internal shift register of each VRAM. The data is then shifted out to refresh the
|
|
display.
|
|
A screen-refresh cycle takes place during the horizontal blanking interval that
|
|
precedes a Scan line to be displayed. Typically, the shift registers containing
|
|
the video data for the line are clocked only during the active portion of the
|
|
scan line, that is, when the BLANK output is high. At higher dot rates, the pixel
|
|
clock or dot clock used to shift video data to the monitor is run through a
|
|
frequency divider to create the VCLK signal input to the GSP.
|
|
The 8-bit row address output during the screen-refresh cycle specifies the row
|
|
in memory to be loaded into the shift register internal to the VRAM. The
|
|
number of bits of video data transferred to the shift registers of all the VRAMs
|
|
in the system during a single screen-refresh cycle is calculated by multiplying
|
|
the number of VRAMs times the length of the shift register in each VRAM.
|
|
For example, 64 TMS4161 (64K-by-1) VRAM devices are sufficient to con-
|
|
tain the bit map for a 1 024-by-1 024-pixel display with four bits per pixel. The
|
|
length of the shift register in each TMS4161 is 256 bits. Thus, in a single
|
|
screen-refresh cycle, a total of 64 times 256, or 16,384, bits are loaded. This
|
|
is enough data to refresh four complete scan lines of the display. In general,
|
|
a single screen-refresh cycle performed during a horizontal blanking interval
|
|
is sufficient to supply one or more complete scan lines worth of data to the
|
|
video monitor screen.
|
|
|
|
9.10.1.2 Generation of Screen-Refresh Addresses
|
|
The DPYADR, DPYCTL, DPYSTRT, and DPYTAP registers are used to gener-
|
|
ate the addresses output during screen-refresh cycles. Figure 9-12 shows
|
|
these four registers, and indicates the register fields which determine the way
|
|
in which screen-refresh addresses are generated.
|
|
15 210
|
|
DPYADR I :
|
|
|
|
15 210
|
|
DPVSTRT I : : 6~6tRt
|
|
|
|
1514131211109
|
|
DPYCll. II rI' : .. !<:I rI : : QUD.Alj
|
|
NIL ORG
|
|
|
|
|
|
151413 0
|
|
DPYTAP 1;;31 : : : : : ®AF! : : : : : I
|
|
Figure 9-12. Screen-Refresh Address Registers
|
|
|
|
|
|
|
|
|
|
9-19
|
|
Screen Refresh and Video Timing - Video RAM Control
|
|
|
|
|
|
|
|
• DPYADR contains the SRFADR field, which is a counter that generates
|
|
the addresses output during screen-refresh cycles.
|
|
|
|
• DPYSTRT contains the SRSTRT field, the starting address loaded into
|
|
SRFADR at the beginning of each frame.
|
|
|
|
• DPYCTL contains several fields that affect screen-refresh addresses. The
|
|
8-bit DUDATE field is loaded with seven Os and a single 1 that points
|
|
to the bit position within SRFADR (bits 2-9 of DPYADR) at which the
|
|
address is to be incremented (or decremented) at the end of each
|
|
screen-refresh cycle. The ORG bit determines whether the screen-
|
|
refresh address is incremented or decremented. If ORG =0, the screen
|
|
origin is located at the top left corner of the screen and the address is
|
|
incremented; otherwise, it is decremented. The NIL bit determines
|
|
whether the GSP is configured to generated an interlaced (NIL=O) or
|
|
noninterlaced (NIL=1) display. The generation of screen-refresh ad-
|
|
dresses can be modified to accommodate either type of display.
|
|
|
|
• The DPYTAP register is used to specify screen-refresh address bits to
|
|
right of the position at which D U DATE increments the address. D PY-
|
|
TAP provides the additional control over screen -refresh address gener-
|
|
ation necessary to allow the screen to pan through the display memory.
|
|
Bits not directly involved in address generation are shaded in Figure 9-12.
|
|
The address output during a screen-refresh cycle identifies the starting pixel
|
|
on the scan line about to be output to the monitor. Figure 9-13 (page 9-21 )
|
|
shows a 32-bit logical address of the first pixel on one of the scan lines ap-
|
|
pearing on the screen. The screen-refresh address consists of bits 4-23 of the
|
|
logical address, whis:;h are generated by combining the values contained in
|
|
SRFADR and DPYTAP. Where SRFADR and DPYTAP overlap (bits 10-17
|
|
of the logical address), the address bits are generated by logical ~Ring the
|
|
corresponding bits of SRFADR and DPYTAP. The 8-bit DUDATE value con-
|
|
tains seven Os and a single 1 pointing to the position at which SRFADR is to
|
|
be incremented (or decremented). The DPYTAP register should be loaded
|
|
with the portion of the pixel address in Figure 9-13 lying to the right of the
|
|
position indicated by the DUDATE pointer bit. SRFADR contains the portion
|
|
of the pixel address that is incremented by the DUDATE pointer bit.
|
|
Following system power up, the software should load the starting screen-
|
|
refresh address into the SRSTRT field of the DPYSTRT register, and load the
|
|
increment to the screen-refresh address into the DPYCTL register. For a typi-
|
|
cal CRT display, the starting address is the address in memory of the pixel that
|
|
appears in the upper left corner of the display. If ORG bit in DPYCTL is 0, the
|
|
15 complement of the starting address should be loaded into DPYSTRT. If
|
|
ORG =1, the starting address loaded into DPYSTRT should not be comple-
|
|
mented.
|
|
DPYADR is automatically loaded with the starting display address from
|
|
DPYSTRT prior to the start of each frame. As shown in Figure 9-14 a, bits
|
|
2-15 of DPYSTRT (SRSTRT) are loaded into bits 2-15 of DPYADR
|
|
(SRFADR). The load occurs coincident with the start of the horizontal
|
|
blanking interval that occurs just at the end of the last active scan line of the
|
|
preceding frame.
|
|
|
|
|
|
9-20
|
|
Screen Refresh and Video Timing - Video RAM Control
|
|
|
|
|
|
|
|
~
|
|
output During Row________
|
|
_________ A~
|
|
Address Time ~
|
|
|
|
|
|
|
|
|
|
( \ output During
|
|
:: ~ _ _ _ I:
|
|
__ _Column Addrees
|
|
__ __
|
|
A~ ____Time
|
|
__ ~
|
|
|
|
|
|
|
|
|
|
I I \
|
|
I I I
|
|
I I I
|
|
I I I
|
|
|
|
31 28 24 : 20 18 12: 8 4 : o
|
|
32-BIt Logical Pixel Ad rees
|
|
SRFADR
|
|
(DPYADR BIts 2-15)
|
|
I i
|
|
I I
|
|
I I
|
|
I I
|
|
|
|
|
|
|
|
|
|
r~; I
|
|
I
|
|
DUDATE
|
|
(DPYCTL Bits 2-9)
|
|
~~I
|
|
I
|
|
I
|
|
I
|
|
|
|
DPYTAP
|
|
I
|
|
I4-f-----(BIts 0-13)-----.,
|
|
|
|
|
|
Figure 9-13. logical Pixel Address
|
|
|
|
|
|
The address output during each screen-refresh cycle is contained in bits 2
|
|
through 15 of the DPYADR register (the 14-bit SRFADR field). As shown in
|
|
Figure 9-14 b, DPYADR bits 4-15 are output at the lAD0-LAD11 pins during
|
|
the row address time of the screen-refresh cycle. If ORG =0, the DPYADR bits
|
|
are inverted before being output; otherwise, they are output unaltered. Zeros
|
|
(logic-low level) are output on LAD12-LAD14, and a one (logic-high level)
|
|
is output on LAD15; this is the RF status bit.
|
|
During the column address time of the screen-refresh cycle, bits 2-6 of
|
|
DPYADR are output at LAD6-LAD10. If ORG=O, the DPYADR bits are in-
|
|
verted before being output. DPYTAP bits 6-11 are ORed with DPYADR bits
|
|
2-7 and output at LAD6-LAD11. Bits 0-5 and 12-13 of DPYTAP are output
|
|
at LAD0-LAD5 and LAD11-LAD13, respectively. Zeros are output at
|
|
LAD14-LAD15 (the TR and IAQ status bits).
|
|
After the row and column addresses have been output, the address in
|
|
DPYADR bits 2-15 is decremented by the 8-bit value in DPYCTL bits 2-9 (the
|
|
DUDATE field). This is done in preparation for the next screen-refresh cycle.
|
|
The 8-bit DUDATE value is a binary number consisting of seven Os and a
|
|
single 1. This single 1 indicates the position at which DPYADR is decre-
|
|
mented. If ORG =0, the screen-refresh address in DPYADR is effectively in-
|
|
cremented; the 1s complement of the address contained in DPYADR is
|
|
decremented by the DUDATE amount, but is inverted before being output.
|
|
This is equivalent to incrementing the address. If ORG=1, the address is de-
|
|
cremented.
|
|
|
|
|
|
|
|
|
|
9-21
|
|
Screen Refresh and Video Timing - Video RAM Control
|
|
|
|
|
|
SRSTRT
|
|
A
|
|
|
|
|
|
|
|
|
|
(a) Display-Address Initial Value
|
|
|
|
|
|
1614131211109878543210
|
|
DPYADR
|
|
Register ~+'-1t-'-+..&...+-'+-'-+-'-+....L..f-L...t-L+-'-II-'-""""'----I..--'
|
|
|
|
|
|
|
|
|
|
LAD Bus Pins
|
|
1-----....,
|
|
o
|
|
|
|
2
|
|
3
|
|
4
|
|
5
|
|
8
|
|
7
|
|
8
|
|
9
|
|
|
|
|
|
ORG - - - - I ~--------I
|
|
|
|
|
|
|
|
|
|
(b) Row-Address Time
|
|
|
|
Figure 9-14. Screen-Refresh Address Generation
|
|
|
|
|
|
|
|
|
|
9-22
|
|
Screen Refresh and Video Timing - Video RAM Control
|
|
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
|
|
|
|
D:a:~~e~ I~--:==~RG=~=:=:=~=~b=~~=t~=t~l='= :I
|
|
~AAAA)~~ ---, Bus Pins
|
|
|
|
I o
|
|
|
|
|
|
|
|
.- I 1
|
|
oPYTAP
|
|
Register I 2
|
|
15
|
|
14
|
|
-...- !
|
|
3
|
|
.....-
|
|
13
|
|
--. i 4
|
|
12
|
|
11 -
|
|
-
|
|
.-
|
|
r"...-
|
|
|
|
II I
|
|
I 5
|
|
-. ~~ I
|
|
10
|
|
9
|
|
--
|
|
.-
|
|
.....- 6
|
|
|
|
~
|
|
8
|
|
7
|
|
-----.-. ~
|
|
I
|
|
|
|
I
|
|
7
|
|
|
|
|
|
6 ---
|
|
-- l
|
|
I
|
|
~
|
|
8
|
|
|
|
9
|
|
5
|
|
--... ~
|
|
!
|
|
4
|
|
--.
|
|
...
|
|
i 10
|
|
3
|
|
2
|
|
_.
|
|
--. - -.....c:
|
|
|
|
|
|
- I 11
|
|
|
|
I
|
|
12
|
|
o
|
|
"" .
|
|
- I - 13
|
|
o....J..-...14(TR)
|
|
I
|
|
o -}-.15(1AQ)
|
|
L____ -'
|
|
(c) Column-Address Time
|
|
Figure 9-14. Screen-Refresh Address Generation (Continued)
|
|
|
|
|
|
|
|
|
|
9-23
|
|
Screen Refresh and Video Timing - Video RAM Control
|
|
|
|
|
|
|
|
|
|
0
|
|
- ...
|
|
...
|
|
..... 1'1 - .:
|
|
--PI
|
|
~
|
|
-
|
|
_1lI_ ---~
|
|
CD _
|
|
li-
|
|
t,)
|
|
-
|
|
-
|
|
,...- ,--- .
|
|
co
|
|
en
|
|
- ~~
|
|
0
|
|
-
|
|
... -
|
|
...
|
|
~c(
|
|
|
|
|
|
-
|
|
1'1
|
|
|
|
...
|
|
::!
|
|
- _
|
|
~
|
|
~
|
|
~
|
|
~
|
|
~
|
|
III
|
|
... -
|
|
0
|
|
|
|
...
|
|
r--
|
|
15
|
|
c(;
|
|
~l
|
|
:D ------
|
|
...
|
|
CIr
|
|
r-
|
|
1'1 ..
|
|
f-'(
|
|
w
|
|
~
|
|
PI
|
|
|
|
~
|
|
|
|
|
|
III
|
|
. 1-'r-
|
|
..
|
|
|
|
|
|
|
|
|
|
..
|
|
---/
|
|
|
|
|
|
I-
|
|
(
|
|
~<
|
|
~
|
|
C CD
|
|
|
|
,...
|
|
|
|
|
|
co
|
|
.
|
|
.. 1-'
|
|
|
|
'"""/
|
|
.. 1-'
|
|
(
|
|
|
|
(
|
|
en~ 1-/
|
|
:=
|
|
;::
|
|
!::!
|
|
::!
|
|
~
|
|
|
|
~
|
|
'--
|
|
|
|
|
|
|
|
|
|
(d) Display-Address Update
|
|
Figure 9-14. Screen-Refresh Address Generation (Concluded)
|
|
|
|
|
|
|
|
|
|
9-24
|
|
Screen Refresh and Video Timing - Video RAM Control
|
|
|
|
|
|
|
|
9.10.1.3 Screen Refresh for Interlaced Displays
|
|
The size of the DUDATE increment specified for an interlaced display should
|
|
be twice that required for a noninterlaced display of the same dimensions.
|
|
This allows every other line to be skipped during the even or odd field of an
|
|
interlaced frame. Before the start of the even field, half the value of the DU-
|
|
DATE increment is added to the starting address loaded into DPYADR to ob-
|
|
tain the necessary starting displacement. The SRSTRT field in DPYSTRT
|
|
points to the area of memory containing the video data for scan line 1 in the
|
|
example of Figure 9-9 on page 9-11.
|
|
|
|
9.10.1.4 Panning the Display
|
|
The DPYTAP register supports horizontal panning of the screen across a dis-
|
|
play memory that is larger than the screen. The value contained in the low-
|
|
order bits of DPYTAP furnish the LSBs of the column address output during
|
|
the screen-refresh cycle. Incrementing this value results in panning to the
|
|
right; decrementing this value results in panning to the left.
|
|
|
|
9.10.1.5 Scheduling Screen-Refresh Cycles
|
|
The internal request for a screen-refresh cycle is generated when horizontal
|
|
blanking begins. This gives the GSP essentially the entire horizontal blanking
|
|
interval in which to perform the screen-refresh cycle. The delay from the start
|
|
of horizontal blanking to the start of the screen-refresh cycle is called the
|
|
screen-refresh latency, and is determined by the internal memory controller.
|
|
The best and worst case screen-refresh latencies are given in Table 9-2. In the
|
|
best case, the delay from the high-to-Iow transition of the BLANK output to the
|
|
start of the screen-refresh cycle (the time the row address is output) is only
|
|
3.25 machine states (or local clock periods). In the worst case, the delay is
|
|
(7.25 + 2 W) states, where W represents the number of wait states required
|
|
per memory cycle. The worst case number is based on the fact that the start
|
|
of the screen-refresh cycle can be delayed by up to three states if a read-
|
|
modify-write operation began one state before the memory controller received
|
|
the request for the screen-refresh cycle. A screen-refresh request is given
|
|
higher priority than requests for DRAM-refresh, host-indirect or GSP CPU
|
|
cycles; hence, no further delays occur unless an external device generates a
|
|
hold request.
|
|
Table 9-2. Screen-Refresh latency
|
|
|
|
Min Max
|
|
3.25 states (7.25 + 2W) states
|
|
|
|
|
|
Note: W is the number of wait states per memory
|
|
cycle.
|
|
|
|
|
|
The horizontal blanking interval should be sufficiently long in duration for the
|
|
screen-refresh cycle to be completed before blanking ends. The required mi-
|
|
nimum blanking interval is therefore about (9.25 + 3W) machine states, de-
|
|
pending on how soon after the end of blanking the external video logic begins
|
|
clocking the VRAM shift registers. Of course, this time must be translated from
|
|
|
|
9-25
|
|
Screen Refresh and Video Timing - Video RAM Control
|
|
|
|
|
|
machine states (local clock periods) to VCLK periods to program the HEBLNK
|
|
register.
|
|
The horizontal sync pulse is permitted to be as small as a single VCLK period
|
|
in duration.
|
|
No screen-refresh cycles are performed during vertical blanking until nearly the
|
|
end of vertical blanking - at the start of the horizontal blanking interval that
|
|
precedes the first active scan line of the new frame.
|
|
The screen-refresh latency specified in Table 9-2 assumes that a local bus hold
|
|
request (HOLD low) is not asserted between the start of blanking and the start
|
|
of the screen-refresh cycle. If a hold request prevents the TMS34010 from
|
|
initiating a scheduled screen-refresh cycle during this time, the TMS3401 0 is
|
|
forced to delay its screen-refresh cycle until the bus is released by the external
|
|
device asserting the hold request. A hold request occurring during the hori-
|
|
zontal blanking interval preceding an active scan line on the display should
|
|
be deasserted in time to allow the TMS34010 to complete the pending
|
|
screen-refresh cycle before blanking ends. If a screen-refresh cycle is pending
|
|
at the time the external device releases the bus, the screen-refresh cycle is the
|
|
first cycle performed by the TMS3401 0 after it regains control of the bus.
|
|
|
|
9.10.2 Video Memory Bulk Initialization
|
|
VRAMs may be rapidly loaded with an initial value using a special GSP feature
|
|
that converts pixel accesses to register transfers. This rapid loading method
|
|
is referred to (IS bulk initialization of the video memory, and can be used with
|
|
VRAMs such as the TMS4461. When the SRT (shift register transfer) bit in
|
|
the DPYCTL register is set to a 1, all reads and writes of pixel data are con-
|
|
verted at the memory interface of the GSP to register-transfer cycles. When
|
|
SRT=O, pixel accesses are performed in normal fashion.
|
|
When SRT=1, the processor can initiate register-transfer cycles under explicit
|
|
program control. By performing a series of such cycles, some or all of the
|
|
display memory can be set to an initial background color or pattern very rapidly
|
|
(in a small fraction of one frame time). First, the VRAM shift registers are
|
|
loaded with the initial value. The video memory is then set to the initial color
|
|
or pattern one row at a time by writing the shift register contents to the me-
|
|
mory.
|
|
During a register-transfer cycle (when SRT=1), the row and column addresses
|
|
are output in unaltered form; that is, the address is not affected by the state
|
|
of SRT. The 8-bit row address output during the cycle designates which row
|
|
in memory is involved in the transfer. The direction of the transfer is deter-
|
|
mined by whether the cycle is a read or a write. A write cycle such as a PIXT
|
|
transfer from a general-purpose register to memory is converted to a VRAM
|
|
register-to-memory cycle. Similarly, a read cycle such as a PIXT transfer from
|
|
memory to a general-purpose register is converted to a VRAM memory-to-
|
|
register cycle.
|
|
Only pixel transfers are affected by the SRT bit. The manner in which all other
|
|
data accesses and instruction fetches are performed is not affected.
|
|
|
|
|
|
|
|
|
|
9-26
|
|
Screen Refresh and Video Timing - Video RAM Control
|
|
|
|
|
|
Before bulk initialization of the display memory, the VRAM shift registers are
|
|
loaded with the solid color or pattern with which the display memory is
|
|
loaded. This can be done in one of two ways, by either:
|
|
|
|
• Serially shifting bits into the shift register
|
|
or
|
|
|
|
• First loading a row of display memory with the color or pattern using a
|
|
series of "normal" pixel writes (when SRT=O), and then loading the
|
|
contents of this row into the shift register by means of a PIXT memo-
|
|
ry-to-register instruction (executed while SRT=1).
|
|
To speed up the bulk initialization operation further, a series of transfers can
|
|
be made more rapidly by using a single FI LL instruction in place of a series of
|
|
PIXT instructions. The fill region is selected so that each pixel write cycle
|
|
generates a new row address. The fill region is specified to be precisely 16
|
|
bits wide, the width of the memory data bus. Also, plane masking is disabled,
|
|
transparency is turned off, and the pixel processing rep/ace operation is se-
|
|
lected. This ensures that each row is addressed only once during the course
|
|
of the fill operation.
|
|
The number of bits of the display memory that are altered by a single regis-
|
|
ter-to-memory transfer cycle is calculated by multiplying the number of VRAM
|
|
devices by the number of shift register bits in each device. The entire frame
|
|
buffer is loaded with the initial color or pattern in 256 memory cycles.
|
|
|
|
|
|
|
|
|
|
9-27
|
|
Screen Refresh and Video Timing
|
|
|
|
|
|
|
|
|
|
9-28
|
|
Section 10
|
|
Host Interface Bus
|
|
|
|
|
|
A host processor can communicate with the TMS3401 0 by means of an in-
|
|
terface bus consisting of a 16-bit data path and several transfer-control sig-
|
|
nals. The TMS34010's host interface provides a host with access to four
|
|
programmable 16-bit registers (resident on the TMS34010), which are
|
|
mapped into four locations in the host processor's memory or I/O address
|
|
space. Through this interface, commands, status information, and data are
|
|
transferred between the TMS3401 0 and host processor.
|
|
A host processor may read from or write to TMS3401 0 local memory indirectly
|
|
via an autoincrementing address register and data port. This optional autoin-
|
|
crement feature supports efficient block moves. The TMS3401 0 and host can
|
|
send interrupt requests to each other. A pin is dedicated to the interrupt re-
|
|
quest from the TMS3401 0 to the host. To allow block moves initiated by a
|
|
host to take place more efficiently, the host may suspend TMS3401 0 program
|
|
execution to eliminate contention with the TMS34010 for local memory.
|
|
DRAM-refresh and screen-refresh cycles continue to occur while the
|
|
TMS34010 is halted.
|
|
This section includes the following topics:
|
|
Section Page
|
|
10.1 Host Interface Bus Pins ......................................................................... 10-2
|
|
10.2 Host Interface Registers ........................................................................ 10-2
|
|
10.3 Host Register Reads and Writes ........................................................... 10-4
|
|
10.4 Bandwidth ............................................................................................ 10-22
|
|
10.5 Worst-Case Delay ................................................................................ 10-23
|
|
|
|
|
|
|
|
|
|
10-1
|
|
Host Interface Bus - Pins/Registers
|
|
|
|
|
|
|
|
10.1 Host Interface Bus Pins
|
|
The TMS3401 O's host interface bus consists of a 16-bit bidirectional data bus
|
|
and nine control lines. These signals are described in detail in Section 2.
|
|
HDo-HD15
|
|
form a 16-bit bidirectional bus, used to transfer data between the
|
|
TMS34010 and a host processor.
|
|
HCS is the host chip select signal. It is driven active low to allow a host
|
|
processor to access one of the host interface registers.
|
|
HFSO, HFS1
|
|
are function select pins. They specify which of four host interface
|
|
registers a host can access (see Section 10.2).
|
|
H READ is driven active low to allow a host processor to read the contents
|
|
of the selected host interface register, output on H OQ-H 015.
|
|
HWRITE is driven active low to allow a host processor to write the contents
|
|
of H OQ-H 01 5 to the selected host interface register.
|
|
is driven low to enable a host processor to access the lower byte
|
|
of the selected host interface register.
|
|
is driven low to enable a host processor to access the upper byte
|
|
of the selected host interface register.
|
|
HRDY informs a host processor when the TMS34010 is ready to com-
|
|
plete an access cycle initiated by the host.
|
|
transmits interrupt requests from the TMS3401 0 to a host proces-
|
|
sor.
|
|
|
|
|
|
10.2 Host Interface Registers
|
|
The host interface registers are a subset of the I/O registers discussed in Sec-
|
|
tion 6. The host interface registers can be accessed by both the TMS3401 0
|
|
and the host processor. These registers occupy four 16-bit locations in the
|
|
host processor's memory or I/O address map. One of these four locations is
|
|
selected by placing a particular code on the two function select inputs, H FSO
|
|
and HFS1, as shown in Table 10-1.
|
|
Table 10-1. Host Interface Register Selection
|
|
|
|
HFS1 HFSO Selected
|
|
Register
|
|
0 0 HSTADRL
|
|
0 1 HSTADRH
|
|
1 0 HSTDATA
|
|
1 1 HSTCTL
|
|
|
|
|
|
A 16-bit host processor typically connects two of its low-order address lines
|
|
to HFSO and HFS1. An 8-bit processor typically connects two low-order ad-
|
|
dress lines to HFSQ-HFS1 and uses a third low-order address bit to enable
|
|
either the upper or lower byte of the selected register by activating one of the
|
|
|
|
|
|
10-2
|
|
Host Interface Bus - Registers
|
|
|
|
|
|
byte select inputs, HUDS or HLDS. In the second case, the registers occupy
|
|
eight 8-bit locations in the host processor's memory map.
|
|
|
|
• The HSTADRL and HSTADRH registers contain the 16 LSBs and 16 MSBs,
|
|
respectively, of a 32-bit pointer address. A host processor uses this address
|
|
to indirec~ly access TMS3401 0 local memory.
|
|
|
|
• The HSTDATA register buffers data that is transferred through the host inter-
|
|
face between TMS34010 local memory and a host processor. HSTDATA
|
|
contains the contents of the address pointed to by the HSTADRL and
|
|
HSTADRH registers.
|
|
|
|
• The HSTCTL register is accessible to the TMS3401 0 as two separate I/O re-
|
|
gisters, HSTCTLL and HSTCTLH, but is accessed by a host processor as a
|
|
single 16-bit register. HSTCTL contains several programmable fields that
|
|
control host interface functions.
|
|
NMI (nonmaskable interrupt, bit 8): Allows a host processor to interrupt
|
|
TMS34010 execution.
|
|
NMIM (NMI mode, bit 9): Specifies if the context of an interrupted
|
|
program is saved when a nonmaskable interrupt occurs.
|
|
CF (cache flush, bit 14): Setting this bit flushes the contents of the
|
|
TMS34010 instruction cache. A host processor can force the TMS3401 0
|
|
to execute new code after a download by flushing old instructions out
|
|
of cache.
|
|
LBL (lower byte last, bit 13): Specifies which byte of a register an 8-bit
|
|
host processor accesses first.
|
|
INCR (increment address before local read, bit 12): Controls whether the
|
|
32-bit pointer in the HSTADR registers is incremented before being used
|
|
in a local read cycle that updates the HSTDATA register.
|
|
INCW (increment address after local write, bit 11): Controls whether the
|
|
32-bit pointer in the HSTADR registers is incremented after being used
|
|
in a local write cycle that transfers the contents of the HSTDATA register
|
|
to memory.
|
|
HLT (halt TMS3401 0 program execution, bit 15): A host processor can
|
|
halt the TMS3401 O's on-chip processor by setting this bit to 1.
|
|
MSGIN (message in, bits 0-2): Buffers a 3-bit interrupt message from a
|
|
host processor to the TMS3401 O.
|
|
INTIN (input interrupt bit, bit 3): A host must load a 1 into this bit to
|
|
generate an interrupt request to the TMS3401 O.
|
|
MSGOUT (message out, bits 4-6): Buffers a 3-bit interrupt message
|
|
from the TMS3401 0 to a host.
|
|
INTOUT (Interrupt out, bit 7): The TMS3401 0 must load a 1 to this bit
|
|
to send an interrupt request to a host processor.
|
|
|
|
|
|
|
|
|
|
10-3
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
|
|
10.3 Host Register Reads and Writes
|
|
Host interface read and write cycles are initiated by the host processor and are
|
|
controlled by means of the HCS, HWRITE, HREAD, HUDS, and HLDS signals.
|
|
Host-initiated accesses of the register selected by the function-select code
|
|
input on HFSO and HFS1 are controlled as follows:
|
|
|
|
• While HCS, HLDS, and HWRITE are active low, the contents of HOo-H07
|
|
are latched into the lower byte of the selected register.
|
|
|
|
• While HCS, HUDS, and HWRITE are active low, the contents of
|
|
H OS-H 015 are latched into the upper byte of the selected register.
|
|
|
|
• While HCS, HLDS, and HREAD are active low, the contents of the lower
|
|
byte of the selected register are driven onto H Oo-H 07.
|
|
|
|
• While HCS, HUDS, and HREAD are active low, the contents of the upper
|
|
byte of the selected register are driven onto H OS-H 015.
|
|
As this list indicates, at least three control signals must be active at the same
|
|
time to initiate an access. The last of the three signals to become active begins
|
|
the access, and the first of the three signals to become inactive signals the end
|
|
of the access. A signal that begins or completes an access is referred to in the
|
|
following discussion as the strobe signal for the cycle. Any of the signals
|
|
listed above may be a strobe. Figure 10-1 shows a functional representation
|
|
of the logic that controls the TMS3401 O's host interface.
|
|
TMS34010
|
|
|
|
|
|
|
|
n WrIte to upper
|
|
byte of selected
|
|
register
|
|
|
|
|
|
|
|
|
|
n WrIte to lower
|
|
byte of selected
|
|
register
|
|
|
|
|
|
|
|
|
|
n Read from upper
|
|
byte of selected
|
|
register
|
|
|
|
|
|
|
|
|
|
n Read from lower
|
|
byte of selected
|
|
register
|
|
|
|
|
|
|
|
Figure 10-1. Equivalent Circuit of Host Interface Control Signals
|
|
|
|
|
|
|
|
|
|
10-4
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
|
|
The designer must ensure that HREAD and HWRITE are never active low si-
|
|
multaneously during an access of a host interface register; this may cause in-
|
|
ternal damage to the device.
|
|
|
|
|
|
|
|
10.3.1 Functional Timing Examples
|
|
The functional timing examples in this section are based on the circuit shown
|
|
in Figure 10-1.
|
|
|
|
• The HCS input is the strobe in Figure 10-2 and Figure 10-3.
|
|
|
|
• The HWRITE signal is the strobe in Figure 10-4.
|
|
|
|
• The HREAD signal is the strobe in Figure 10-5.
|
|
|
|
• The HUDS and HLDS signals are strobes in Figure 10-6 and Figure 10-7.
|
|
|
|
|
|
HFSO-HFS1
|
|
|
|
|
|
HREAD
|
|
=-.J \'----
|
|
HWRITE
|
|
=-\ /
|
|
HLOS =-\ Enable WrIte to Lower Byte /
|
|
|
|
|
|
HUDS
|
|
=-.J Inhibit Write to Upper Byte \"'_ _ _ __
|
|
|
|
|
|
HCS ',"--_0-..1/
|
|
HOo-H016
|
|
|
|
|
|
HRDY (High)
|
|
|
|
Figure 10-2. Host 8-Bit Write with HCS Used as Strobe
|
|
|
|
|
|
|
|
|
|
10-5
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
|
|
I-FSO-I-FS1
|
|
|
|
|
|
HWRITE
|
|
:J ,
|
|
HREAD
|
|
|
|
HLDS
|
|
=-\
|
|
:J Inhibit Read from Lower Byte
|
|
,I
|
|
|
|
HUDS \ Enable Read from Upper Byte I
|
|
HCI
|
|
\ I
|
|
HOO-HD15 ----------( Valid Data Out
|
|
r-------
|
|
HRDY (HIgh)
|
|
|
|
|
|
Figure 10-3. Host 8-Bit Read with HCS Used as Strobe
|
|
|
|
|
|
HFSO-HFS1
|
|
|
|
|
|
|
|
HWRITE:J
|
|
HCS =-\
|
|
,----
|
|
I
|
|
HLDS =-\ Enable Read from Lower Byte I
|
|
HUDS =-\ Enable Read from Upper Byte
|
|
I
|
|
HREAD \ I
|
|
HDO-HD15 - - - - - - - - - - ( Valid Data Out r-------
|
|
HROY (High)
|
|
|
|
Figure 10-4. Host 16-Bit Read with HREAD Used as Strobe
|
|
|
|
|
|
|
|
|
|
10-6
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
|
|
HFSO-HFS1
|
|
|
|
|
|
IiREAD
|
|
|
|
|
|
HCS
|
|
:J
|
|
-=\
|
|
,----
|
|
/
|
|
HLDS -=\ Enable WrIte to Lower Byte /
|
|
|
|
|
|
|
|
HUDS -=\ Enable WrIte to Upper Byte /
|
|
|
|
|
|
|
|
HWRITE ' ___I
|
|
HDO-HD15
|
|
|
|
|
|
HRDY (HIgh)
|
|
|
|
|
|
Figure 10-5. Host 16-Bit Write with HWRITE Used as Strobe
|
|
|
|
|
|
|
|
HFSO-HFS1
|
|
|
|
|
|
HREAD
|
|
|
|
|
|
HCS
|
|
:J
|
|
-=\
|
|
,----
|
|
/
|
|
HWRITE -=\ /
|
|
, strobe Low Byte /
|
|
HLDS
|
|
|
|
|
|
, strobe High Byte/
|
|
HUDS
|
|
|
|
|
|
HDO-HD15
|
|
|
|
|
|
HRDY (High)
|
|
|
|
Figure 10-6. Host 16-Bit Write with HLDS, HUDS Used as Strobes
|
|
|
|
|
|
|
|
|
|
10-7
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
|
|
HFSO-HFS1
|
|
|
|
|
|
|
|
HCS
|
|
~ I
|
|
HWRfTE
|
|
:-..J \
|
|
HREAD \ I
|
|
HLDS
|
|
\ strobe Low Byte I
|
|
\ strobe High Byte /
|
|
HUDS
|
|
|
|
|
|
|
|
HDO-HD15 - - - - - - - - - - ( Vllid Data Out }--------
|
|
|
|
|
|
|
|
HRDY (High)
|
|
|
|
Figure 10-7. Host 16-Bit Read with HLDS, HUDS Used as Strobes
|
|
|
|
|
|
|
|
10.3.2 Ready Signal to Host
|
|
The default state of the bus ready output pin, HRDY, is active high. HRDY is
|
|
driven inactive low to force the host processor to wait in circumstances in
|
|
which the TMS3401 0 is not prepared to allow a host-initiated register access
|
|
to be completed immediately.
|
|
HRDY is always driven low for a brief period at the beginning of a read or write
|
|
access of the HSTCTL register. When the host attempts to read from or write
|
|
to the HSTCTL register, HRDY is driven low at the beginning of the access,
|
|
and is driven high again after a brief interval of one to two local clock cycles.
|
|
When the host processor performs certain types of host interface register ac-
|
|
cesses, a local memory cycle results. For example, in reading from or writing
|
|
to the HSTDATA register, a read or write cycle on the local bus results. If the
|
|
host processor attempts to perform an access that initiates a second local
|
|
memory cycle before the TMS3401 0 has had sufficient time to complete the
|
|
first, the TMS3401 0 drives its HRDY output low to indicate that the host must
|
|
wait before completing the access. When the TMS3401 0 has completed the
|
|
local memory cycle resulting from the previous access, it drives HRDY high to
|
|
indicate that the host processor can now complete its second access.
|
|
A data transfer through the host interface takes place only when some com-
|
|
bination of HCS, HREAD, HWRITE, HUDS, and HLDS are active simultaneously;
|
|
however, the HRDY signal is activated by the HCS input alone. HRDY can be
|
|
active-low only while the TMS3401 0 is chip-selected by the host processor,
|
|
|
|
|
|
|
|
10-8
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
|
|
that is, while HCS is active low. A high-to-Iow transition on HRDY follows a
|
|
high-to-Iow transition on HCS. The benefit of this mode of operation is that
|
|
HRDY becomes valid as soon as HCS goes low, which typically is early in the
|
|
cycle. HRDY is always driven high when HCS is inactive high.
|
|
A transient low level on the HCS input may cause a corresponding low pulse
|
|
on the HRDY output. Systems that cannot tolerate such transient signals must
|
|
be designed to prevent HCS from going low except during a valid host inter-
|
|
face access.
|
|
In summary, the following rules govern the HRDY output:
|
|
1) If a high-to-Iow HCS transition occurs while the TMS34010 is still
|
|
completing a local memory cycle resulting from a previous host-indirect
|
|
access, HRDY goes low. If the register selected is HSTDATA, HSTADRL
|
|
or HSTADRH, HRDY remains low until the local memory cycle is com-
|
|
pleted. If the register selected is HSTCTL, the HRDY output remains low
|
|
for one to two local clock periods.
|
|
2) If the host is given a ready signal (HRDY high) to allow it to complete
|
|
a register access that causes a local memory read or write cycle, HRDY
|
|
stays high to the end of the access. The access ends when the strobe
|
|
for the cycle ends. The strobe ends when HREAD and HWRITE are both
|
|
inactive high, or when HLDS and HUDS are both inactive high, or when
|
|
HCS is inactive high, whichever is the first to occur. As soon as the
|
|
strobe ends, a low level on HCS allows HRDY to go low again. If the
|
|
strobe is an input other than HCS, and HCS remains low after the strobe
|
|
ends, HRDY can go low as a delay from the end of the strobe. If HCS is
|
|
the strobe for the access, the access ends when HCS goes high, and
|
|
HRDY can go low again as soon as HCS goes low again.
|
|
3) If HSTCTL is selected (FSO = FS1 = 1) at the high-to-Iow transition
|
|
of HCS, HRDY goes low as a delay from the fall of HCS, and remains low
|
|
for one to two local clock periods. To avoid a low-going pulse on HRDY
|
|
when accessing a register other than HSTCTL, FSO and FS1 should be
|
|
valid prior to the high-to-Iow transition of HCS.
|
|
Figure 10-8 and Figure 10-9 (page 10-10) show examples of host interface
|
|
register accesses in which HRDY is driven low.
|
|
|
|
|
|
|
|
|
|
10-9
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
|
|
I<
|
|
HFSo-HFS1 Valid Function Select )II
|
|
HRER5J C
|
|
HCS~ /
|
|
RID~ \ I
|
|
HRDY
|
|
\ I
|
|
HDO-HD16
|
|
|
|
|
|
Figure 10-8. Host Interface Timing - Write Cycle With Wait
|
|
|
|
|
|
|
|
|
|
HFSo-HFS1
|
|
I< Valid Function Select )81
|
|
HWRITE
|
|
J C
|
|
HCS
|
|
~ I
|
|
H~ \ I
|
|
HRDY
|
|
\ I
|
|
HDO-HD16 -·I-I-Z----
|
|
|
|
|
|
Figure 10-9. Host Interface Timing - Read Cycle With Wait
|
|
|
|
|
|
|
|
|
|
10-10
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
|
|
10.3.3 Indirect Accesses of local Memory
|
|
The host processor indirectly accesses TMS34010 local memory by reading
|
|
from or writing to the HSTDATA register. HSTDATA buffers data written to
|
|
or read frQm the local memory. The word in local memory that is accessed is
|
|
the word pointed to by the 32-bit address contained in the HSTADRL and
|
|
HSTADRH registers. The pointer address is loaded into HSTADRL and
|
|
HSTADRH by the host processor before performing one or more indirect ac-
|
|
cesses of local memory using the HSTDATA register.
|
|
The four LSBs of HSTADRL are forced to Os internally so that the address
|
|
formed by HSTADRL and HSTADRH always points to a word boundary in
|
|
local memory. Between successive indirect accesses of local memory using
|
|
the HSTDATA register, the local memory address contained in the HSTADR
|
|
registers can be autoincremented by 16. This allows the host processor to
|
|
access a block of sequential words in local memory without the overhead of
|
|
loading a new address prior to each access.
|
|
During a sequence of one or more indirect reads of local memory by the host,
|
|
the TMS3401 0 maintains in HSTDATA a copy of the local memory word cur-
|
|
rently addressed by the HSTADRL and HSTADRH registers. Reading from
|
|
HSTDATA returns the word prefetched from the local memory location
|
|
pointed to by the HSTADRL and HSTADRH registers, and causes HSTDATA
|
|
to be updated from local memory again. Writing to HSTDATA causes the
|
|
word written to HSTDATA to subsequently be written to the location in local
|
|
memory pointed to by the HSTADRL and HSTADRH registers.
|
|
Two increment-control bits, INCR and INCW (contained in the HSTCTL reg-
|
|
ister), are set to 1 to cause the pointer address in HSTADRL and HSTADRH
|
|
to be incremented by 16 during reads and writes, respectively. In preparing
|
|
to use the autoincrement feature, the appropriate increment-control bit, INCR
|
|
or INCW, is loaded with a 1, and the HSTADRL and HSTADRH registers are
|
|
set up to point to the first location of a buffer region in the local memory.
|
|
|
|
• When INCR::;:1, a read of HSTDATA causes the address in HSTADRL
|
|
and HSTADRH to be incremented before it is used in the local memory
|
|
read cycle that updates HSTDATA.
|
|
|
|
• When INCW::;:1, a write to HSTDATA causes the address in HSTADRL
|
|
and HSTADRH to be incremented after it is used in the local memory
|
|
read cycle that writes the new contents of HSTDATA to local memory.
|
|
Loading the pointer address automatically triggers an update of HSTDATA to
|
|
the contents of the local memory word pointed to. No increment of HSTADRL
|
|
and HSTADRH takes place at this time regardless of the state of the increment
|
|
bits. Each subsequent host access of HSTDATA causes HSTADRL and
|
|
HSTADRH to be automatically incremented (assuming INCR or INCW is set)
|
|
to point to the next word location in the local memory. In this manner, a series
|
|
of contiguous words in local memory can be accessed following a single load
|
|
of the HSTADRL and HSTADRH registers without additional pointer-
|
|
management overhead.
|
|
|
|
|
|
|
|
|
|
10-11
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
|
|
10.3.3.1 Indirectly Reading from a Buffer
|
|
Figure 10-10 illustrates the procedure for reading a block of words beginning
|
|
at local memory address N. Assume that the INCR bit in the HSTCTL register
|
|
is set to 1 and the LBL bit in HSTCTL is set to O.
|
|
|
|
• In Figure 10-10 a, the host processor loads the 32-bit address N into
|
|
HSTADRL and HSTADRH.
|
|
|
|
• The loading of the second half of the address into HSTADRH causes the
|
|
TMS34010 host interface control logic to automatically initiate a read
|
|
cycle on the local bus. This read cycle, shown in Figure 10-10 b,
|
|
transfers the contents of memory address N to the HSTDATA register.
|
|
|
|
• In c, the host processor reads the HSTDATA register, fetching the data
|
|
previously read from address N.
|
|
|
|
• The read of HSTDATA by the host processor causes the TMS3401 0 to
|
|
automatically increment the contents of HSTADRL and HSTADRH by
|
|
16, as shown in d.
|
|
|
|
• The contents of the new address are read into HSTDATA, as shown in
|
|
Figure 10-10 e. This data will be available in HSTDATA the next time
|
|
it is read by the host processor.
|
|
The process shown in c through e repeats for every word read from
|
|
TMS34010 local memory.
|
|
|
|
|
|
|
|
|
|
10-12
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
|
|
Host Host Local
|
|
Processor Interface Memory
|
|
Registers
|
|
|
|
|
|
N+18
|
|
(a) N
|
|
|
|
|
|
|
|
0
|
|
|
|
Host Host Local
|
|
Processor Interface Memory
|
|
Registers
|
|
|
|
|
|
N+18
|
|
(b) N
|
|
|
|
|
|
|
|
0
|
|
Host Host Local
|
|
Processor Interface Memory
|
|
Registers
|
|
|
|
|
|
N+18
|
|
(c) N
|
|
|
|
|
|
|
|
0
|
|
|
|
Host Host Local
|
|
Processor Interface Memory
|
|
Registers
|
|
|
|
HSTADRH HSTADRL
|
|
r N+16 B N+18
|
|
(d) .~ A N
|
|
HSTDATA
|
|
I A I
|
|
o
|
|
Host Host Local
|
|
Processor Interface Memory
|
|
Registers
|
|
|
|
HSTADRH HSTADRL
|
|
[ N+16 B N+18
|
|
(e) A N
|
|
HSTDATA ........
|
|
r B F
|
|
o
|
|
Figure 10-10. Host Indirect Read from Local Memory (INCR=1)
|
|
|
|
|
|
|
|
|
|
10-13
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
10.3.3.2 Indirectly Writing to a Buffer
|
|
Figure 10-11 illustrates the procedure for writing a block of words to
|
|
TMS34010 local memory. The block begins at address N. Assume that the
|
|
INeW bit is set to 1 and the LBL bit is set to O.
|
|
|
|
• In Figure 10-11 a, the host processor loads the 32-bit address N into
|
|
HSTADRL and HSTADRH.
|
|
|
|
• The loading of the second half of the address into HSTADRH causes the
|
|
TMS34010 host interface control logic to automatically initiate a read
|
|
cycle on the local bus. This read cycle, which takes place in Figure
|
|
10-11 b, fetches the contents of memory address N into HSTDATA.
|
|
|
|
• The data loaded into this register is not used, however. Instead, the host
|
|
processor writes to the HSTDATA register in Figure 10-11 c, overwriting
|
|
its previous contents.
|
|
|
|
• In response to the host's write to HSTDATA, the TMS34010 automat-
|
|
ically initiates a write cycle to transfer the contents of HSTDATA to the
|
|
local memory address N as shown in d.
|
|
|
|
• Following the write, the TMS34010 automatically increments the ad-
|
|
dress in HSTADRL and HSTADRH to point to the next word, as shown
|
|
in e. At this point the host interface registers are ready for the host pro-
|
|
cessor to write the next word to HSTDATA.
|
|
The process shown in c through e repeats for every word written to
|
|
TMS34010 local memory.
|
|
|
|
|
|
|
|
|
|
10-14
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
|
|
Host Host Local
|
|
Processor Interface Memory
|
|
Registers
|
|
|
|
|
|
N+18
|
|
(a) N
|
|
|
|
|
|
|
|
0
|
|
Host Host Local
|
|
Processor Interface Memory
|
|
Registers
|
|
|
|
|
|
N+18
|
|
(b) N
|
|
|
|
|
|
|
|
0
|
|
Host Hcst Local
|
|
PrOC888or Interface Memory
|
|
Registers
|
|
HSTADRH HSTADRL
|
|
B N+18
|
|
(c)
|
|
I N I-
|
|
----. A N
|
|
|
|
~ .-.I
|
|
HSTDATA
|
|
C I
|
|
|
|
o
|
|
Host Host Local
|
|
Proc888or Interface Memory
|
|
Registers
|
|
|
|
HSTADRH HSTADRL
|
|
I N r- t--- -S N+18
|
|
(d) "1 (" N
|
|
|
|
I
|
|
HSTDATA
|
|
C 1-- V
|
|
o
|
|
Host Host Local
|
|
Proc888or Interface Memory
|
|
Registers
|
|
|
|
HSTADRH HSTADRL
|
|
I N+16 --g N+18
|
|
(e) '~ C N
|
|
HSTDATA
|
|
I C I
|
|
o
|
|
|
|
Figure 10-11. Host Indirect Write to Local Memory (INeW=1)
|
|
|
|
|
|
|
|
|
|
10-15
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
|
|
10.3.3.3 Combining Indirect Reads and Writes
|
|
If the HSTDATA register in Figure 10-11 is read by the host processor fol-
|
|
lowing step e, the value returned is the value that the host previously loaded
|
|
into the register. The host must read HSTDATA a second time to access data
|
|
from TMS34010 local memory. This principle is illustrated in Figure 10-12,
|
|
which shows how the host interlace performs when a write is followed by two
|
|
reads. For this example, INCW=1 and INCR=O.
|
|
|
|
• In Figure 10-12 a, HSTADRL and HSTADRH together point to location
|
|
N in the TMS3401 O's local memory. The host processor is shown writ-
|
|
ing to HSTDATA.
|
|
|
|
• In b, the data buffered in HSTDATA is written to location N in memory.
|
|
|
|
• The address registers are incremented in c.
|
|
|
|
• In d, the host processor reads the HSTDATA register, which returns the
|
|
value that the host loaded into the register in step a.
|
|
|
|
• Reading HSTDATA causes a memory read cycle to take place in e, which
|
|
loads the value from memory address N+16 into HSTDATA.
|
|
|
|
• In f, a second read of HSTDATA by the host processor returns the value
|
|
from memory address N+16.
|
|
|
|
Host Host Local
|
|
Proo8880r Interface Memory
|
|
Registers
|
|
|
|
HSTADRH HSTADRL
|
|
(a)
|
|
I fiI 1-
|
|
-------. A
|
|
B N+16
|
|
N
|
|
|
|
~ . HSTDATA I
|
|
C
|
|
o
|
|
Host Host Local
|
|
Proceaaor Interface Memory
|
|
Registers
|
|
|
|
|
|
|
|
(b)
|
|
- ......
|
|
___ --z.----1 N+16
|
|
~--tN
|
|
|
|
|
|
|
|
|
|
....._ _... 0
|
|
|
|
Figure 10-12. Indirect Write Followed by Two Indirect Reads
|
|
(INCW=1, INCR=O)
|
|
|
|
|
|
|
|
|
|
10-16
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
|
|
Host Host Local
|
|
Procesaor Interface Memory
|
|
Registers
|
|
HSTADRH HSTADRL
|
|
I N+1S B N+16
|
|
(c)
|
|
''t.0' C N
|
|
HSTDATA
|
|
I ~ I
|
|
o
|
|
Host Host Looal
|
|
Procesaor Interface Memory
|
|
Registers
|
|
|
|
HSTADRH HSTADRL
|
|
I N+.16 B N+16
|
|
(d) C N
|
|
|
|
~ ---;
|
|
HSTDATA
|
|
( I
|
|
|
|
o
|
|
Host Host Local
|
|
Procesaor Interface Memory
|
|
Registers
|
|
|
|
HSTADRH HSTADRL
|
|
I N+.16 B N+16
|
|
(e) C N
|
|
|
|
I
|
|
HSTDATA
|
|
B 14--
|
|
/
|
|
o
|
|
Host Host Local
|
|
Pr008880r Interfaoe Memory
|
|
Registers
|
|
HSTADRH HSTADRL
|
|
I N+.16 B N+18
|
|
(1) C N
|
|
|
|
~ --;
|
|
HSTDATA
|
|
B I
|
|
o
|
|
Figure 10-12. Indirect Write Followed by Two Indirect Reads (INCW=1,
|
|
INCR=O) (Concluded)
|
|
|
|
|
|
|
|
|
|
10-17
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
10.3.3.4 Accessing Host Data and Address Registers
|
|
When the TMS34010 internal processor accesses the HSTDATA, HSTADRL,
|
|
or HSTADRH register, no subsequent cycle occurs to transfer data between
|
|
HSTDATA and local memory. Also, the address in HSTADRL and HSTADRH
|
|
is not incremented, regardless of the state of the INCR and INCW bits.
|
|
The host processor can indirectly access any register in the TMS3401 O's in-
|
|
ternal I/O register file by first loading HSTADRL and HSTADRH with the ad-
|
|
dress of the register, and they writing to or reading from HSTDATA.
|
|
No hardware mechanism is provided to prevent simultaneous accesses of the
|
|
HSTDATA, HSTADRL and HSTADRH registers by the host processor and by
|
|
the TMS3401 0 internal processor. Software must be written to avoid simul-
|
|
taneous accesses, which can result in invalid data being read from or written
|
|
to these reg isters.
|
|
|
|
10.3.3.5 Downloading New Code
|
|
The TMS34010 host interface provides a means of efficiently downloading
|
|
new code from a host processor to TMS3401 0 local memory. The host initi-
|
|
ates this operation through the following process:
|
|
|
|
• Before downloading, the ho'st interrupts and halts the TMS34010 by
|
|
writing 1s to the HLT and NMI bits in the HSTCTL register. The host
|
|
processor should then wait for a period of time equal to the TMS3401 0
|
|
interrupt latency. (TMS34010 hardware resets the NMI bit if the non-
|
|
maskable interrupt is initiated before the halt occurs.)
|
|
|
|
• The code is then downloaded using the auto-increment features of the
|
|
host interface registers.
|
|
|
|
• After downloading the code, the host should flush the cache as de-
|
|
scribed in Section 5.4.5, Flushing the Cache (page 5-23).
|
|
|
|
• The nonmaskable interrupt vector is written through the host port to lo-
|
|
cation FFFFFEEOh so that the new code begins execution at the vec-
|
|
tored address.
|
|
|
|
• The NMI bit in the HSTCTL register should be set to 1 to initiate a non-
|
|
maskable interrupt. At the same time, the NMIM bit in the HSTCTL re-
|
|
gister should be set to 1. If the host does not need the current context
|
|
to be stored on the stack, or if the nonmaskable interrupt was taken in
|
|
the first step, the NMIM bit should be set to 1. Otherwise, NMIM should
|
|
be set to O.
|
|
|
|
• The host restarts the TMS34010 by writing a 0 to the H LT bit in the
|
|
HSTCTL register.
|
|
Setting the HLT and NMI bits to 1 simultaneously reduces the worst-case
|
|
delay (compared to setting HLT only). NMI latency is the delay from the 0-
|
|
to-1 transition of the N M I bit and the start of execution of the first instruction
|
|
of the N M I service routine. Halt latency is the delay from the 0-to-1 transition
|
|
of the H LT bit and the time at which the TMS3401 0 actually halts (see Sec-
|
|
tion 10.3.4). The maximum NMI latency may be much less than the halt la-
|
|
|
|
|
|
10-18
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
tency if a PIXB LT, FI LL, or LI N E instruction is in progress at the time of the
|
|
NMI or halt request. An NMI request interrupts instruction execution at the
|
|
next interruptible point, but a halt request is ignored until the executing in-
|
|
struction completes or is interrupted. When NMI and HLT are set to 1 simul-
|
|
taneously, the TMS34010 halts before beginning execution of the first
|
|
instruction in the NMI service routine. Therefore, the delay from the setting
|
|
the N M I and H LT bits to the time that the TMS3401 0 actually halts is simply
|
|
the N M I latency.
|
|
|
|
10.3.4 Halt Latency
|
|
The TMS34010 may be halted by a host processor via the H LT bit in the
|
|
HSTCTL register. The delay from the receipt of a halt request to the time that
|
|
the TMS3401 0 actually halts is the sum of five potential sources of delay:
|
|
1) Halt request recognition
|
|
2) Screen-refresh cycle
|
|
3) DRAM-refresh cycle
|
|
4) Host-indirect cycle
|
|
5) Instruction completion
|
|
In the best case, items 2 through 5 cause no delay. The minimum delay to due
|
|
to item 1 is one machine state.
|
|
|
|
• The halt request recognition delay is the time required for the setting
|
|
of the HLT bit to be internally synchronized after the low-to-high transi-
|
|
tion of the HRDY pin.
|
|
|
|
• The screen-refresh and DRAM-refresh cycles are a potential source
|
|
of delay, but in fact occur rarely and are unlikely to delay a halt.
|
|
|
|
• The likelihood of a delay caused by a host-indirect cycle is small in
|
|
most instances, but this depends largely on the application. It would
|
|
only occur if the host had written to the data register just prior to writing
|
|
to the H LT bit. The delay due to a single host-indirect cycle is two ma-
|
|
chine states, assuming no wait states.
|
|
|
|
• The instruction completion time refers to the time required for an in-
|
|
struction that was already executing at the time the halt request was re-
|
|
ceived to complete. Note that the TMS3401 0 halt condition is entered
|
|
only on instruction boundaries. This means that a PIXBLT, FILL, or
|
|
LI N E instruction that is already in progress runs to completion before the
|
|
TMS34010 halts.
|
|
Table 10-2 shows the minimum and maximum times for each of the five op-
|
|
erations listed. The halt latency is calculated as the sum of the numbers in the
|
|
five rows. In the best case, the halt latency is only one machine state. The
|
|
worst-case latency is six machine states plus the delays due to host-indirect
|
|
cycles and instruction completion. Table 10-3 shows instruction completion
|
|
times for some of the longer instructions. However, a PIXBLT, FILL, or LINE
|
|
instruction may take longer than the times shown in Table 10-3, depending
|
|
on the size of the pixel array or line specified. Table 10-3 also shows the in-
|
|
struction completion time for a J RUC instruction that jumps to itself - the
|
|
TMS34010 may be executing this instruction if the software is simply waiting
|
|
for a halt.
|
|
|
|
10-19
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
Table 10-2. Five Sources of Halt Delay
|
|
|
|
Latency (I n States)
|
|
Operation
|
|
Min Max
|
|
Halt recognition 1 2
|
|
Instruction completion 0 See Table 10-3
|
|
DRAM-refresh cycle 0 2
|
|
See Note 2
|
|
Screen-refresh cycle 0 2
|
|
See Note 2
|
|
Host-indirect cycle 0 See Note 1
|
|
Notes: 1) The latency due to host-indirect cycles depends
|
|
on both the hardware system and the application.
|
|
The delay due to a single host-indirect cycle is two
|
|
machine states, assuming no wait states.
|
|
2) DRAM-refresh and screen-refresh cycle times as-
|
|
sume no wait states.
|
|
|
|
|
|
Table 10-3. Sample Instruction Completion Times
|
|
|
|
Worst-Case Instruction
|
|
Instruction Completion Time (In States)
|
|
SP Aligned SP Not Aligned
|
|
DIVS AO,A2 43 43
|
|
MMFM SP,ALL 72 144
|
|
MMTM SP,ALL 73 169
|
|
PIXBLT, FILL, and LINE See Note 1 See Note 1
|
|
Wait: JRUC wait 1 1
|
|
Notes: 1) The worst-case instruction completion time is equal to the in-
|
|
struction execution time less one machine state.
|
|
2) The SP-aligned case assumes that the SP is aligned to a word
|
|
boundary in memory.
|
|
|
|
|
|
10.3.5 Accommodating Host Byte-Addressing Conventions
|
|
Processor architectures differ in the manner in which they assign addresses to
|
|
bytes. The TMS3401 0 host interface logic can be programmed to accommo-
|
|
date the particular byte-addressing conventions used by a host processor.
|
|
This ability is important in ensuring software compatibility between 8- and
|
|
16-bit versions of the same processor, such as the 8088 and 8086 or the
|
|
68008 and 68000. The 8088 transfers a 16-bit word as a series of two 8-bit
|
|
bytes, low byte first, high byte second. The 68008 transfers the high byte first,
|
|
and low byte second.
|
|
The HSTCTL register's LBL bit is used to configure the TMS34010 host in-
|
|
terface to accommodate different byte-accessing methods. The host interface
|
|
is configured to operate according to the following two principles:
|
|
|
|
|
|
|
|
|
|
10-20
|
|
Host Interface Bus - Reads and Writes
|
|
|
|
|
|
|
|
1) First, when a host processor with an 8-bit data bus reads from or writes
|
|
to the HSTDATA register, it accesses the high and low bytes of the reg-
|
|
ister in separate cycles. The TMS3401 0 does not initiate its local mem-
|
|
ory access until both bytes of HSTDATA have been accessed.
|
|
2) Second, when HSTADRH and HSTADRL are loaded by the host, the
|
|
TMS34010 must not initiate its read of the local memory until the com-
|
|
plete pointer address has been loaded into HSTADRL and HSTADRH.
|
|
When lBl=O:
|
|
|
|
• A local memory read cycle is intitiated by the TMS3401 0 when the host
|
|
processor reads the high byte of HSTDATA, or writes to the high byte
|
|
of HSTADRH.
|
|
|
|
• A local memory write cycle is initiated by the TMS3401 0 when the host
|
|
processor writes to the high byte of HSTDATA.
|
|
When lBl=1:
|
|
|
|
• A local memory read cycle is initiated by the TMS3401 0 when the host
|
|
processor reads the low byte of HSTDATA, or writes to the low byte of
|
|
HSTADRL.
|
|
|
|
• A local memory write cycle is initiated by the TMS3401 0 when the host
|
|
processor writes to the low byte of HSTDATA.
|
|
When the host processor is an 8088, for example, the TMS3401 0 is typically
|
|
configured by setting the LBL bit of the HSTCTL register to O. When config-
|
|
ured in this manner, the TMS34010 expects the HSTADRL register to be
|
|
loaded first, and HSTADRH loaded second. Furthermore, the high byte of the
|
|
HSTADRH register is expected to be loaded after the low byte. When LBL is
|
|
set to 0, a local read cycle is initiated when the upper byte of the HSTADRH
|
|
register is written to by the host processor. This permits the lower byte of
|
|
HSTADRH to be loaded first without causing side effects.
|
|
|
|
|
|
|
|
|
|
10-21
|
|
Host Interface Bus - Bandwidth
|
|
|
|
|
|
|
|
10.4 Bandwidth
|
|
One measure of the performance of the host interface is its data rate, or
|
|
bandwidth. The bandwidth is the number of bits per second that can be
|
|
transferred through the host interface during a block transfer of data to or from
|
|
TMS34010 memory. Assume that the host interface address register is pro-
|
|
grammed to autoincrement. The maximum data rate through the host interface
|
|
can be expected to approach the bandwidth of the TMS3401 O's memory. For
|
|
example, assume a 50- M Hz TMS34010 and a memory requiring no wait
|
|
states. The memory cycle time is about 320 nanoseconds (bandwidth = 50
|
|
megabits/second). The host's access cycle time at the host interface is so-
|
|
mewhat longer than this due to certain additional delays inherent in the oper-
|
|
ation of the TMS34010's internal host interface logic. Also, the throughput
|
|
of the host interface may depend on whether or not the TMS3401 0 is halted.
|
|
The bandwidth is calculated as the width of the host data path (16 bits) times
|
|
the frequency of access cycles through the host interface. Given a continuous
|
|
series of word accesses, with successive accesses occurring at regular inter-
|
|
vals, what is the minimum interval between host accesses that the interface
|
|
can sustain without having to send not-ready signals to the host? (The
|
|
TMS34010 drives its HRDY output low temporarily to inform the host when
|
|
the TMS3401 0 is not yet ready to complete the host's current access.)
|
|
First, when the TMS34010 is halted, the host interface should support con-
|
|
tinuous accesses occurring at regular intervals no less than about 400 nano-
|
|
seconds apart. As long as the host attempts to maintain a throughput no
|
|
greater than this limit, delays due to not-ready signals occur rarely, if at all.
|
|
The bandwidth for this case is calculated in Table 10-4 a as approximately 40
|
|
megabits per second. This value can be expected to vary slightly with sys-
|
|
tem-dependent conditions such as the frequency of DRAM-refresh and
|
|
screen-refresh cycles.
|
|
When the TMS3401 0 is running, the host interface should support continuous
|
|
accesses occurring at regular intervals no less than approximately 550 nano-
|
|
seconds. The bandwidth for this case is calculated in Table 10-4 as approxi-
|
|
mately 29 megabits per second. This value varies slightly with conditions such
|
|
as the frequency of DRAM-refresh and screen-refresh cycles, and also with the
|
|
characteristics of the program being executed by the TMS3401 O.
|
|
Table 10-4. Host Interface Estimated Bandwidth
|
|
|
|
Assumptions Approximate Throughput
|
|
TMS34010 halted 1 6 bits/transfer
|
|
50-MHz TMS34010 = 40 megabits/s
|
|
No wait states 400 ns/transfer
|
|
|
|
TMS34010 running 16 bits/transfer
|
|
50-MHz TMS3401 0 = 29 megabits/s
|
|
No wait states 550 ns/transfer
|
|
|
|
|
|
|
|
|
|
10-22
|
|
Host Interface Bus - Worst-Case Delay
|
|
|
|
|
|
|
|
10.5 Worst-Case Delay
|
|
In some applications, designers must determine not only the effective
|
|
throughput of the host interface, but also the delays that can occur under
|
|
worst-case conditions. These conditions occur too rarely to affect overall
|
|
throughput, but the important consideration here is not how often they occur,
|
|
but that they can occur at all. First, with the TMS34010 halted, the worst
|
|
delay is given by the formula (6 + 2N) T, where N is the number of wait states
|
|
per TMS3401 0 memory cycle, and T is the local clock period (nominally 160
|
|
nanoseconds for a 50-MHz TMS3401 0). Second, with the TMS3401 0 run-
|
|
ning, the worst delay is given by the formula (9 + 4N) T. The derivation of
|
|
these formulas, summarized in Figure 10-13, may be helpful in illustrating the
|
|
mechanisms of the host interface.
|
|
|
|
2T Synchronization delay
|
|
(2 + N)T Screen-refresh cycle
|
|
+ (2 + N)T DRAM-refresh cycle
|
|
(6 + 2N)T Worst-case delay (total)
|
|
(a) Worst-Case Delay with TMS34010 Halted
|
|
2T Synchronization delay
|
|
(1 + N) T TMS34010 CPU read
|
|
(2 + N)T TMS34010 CPU write
|
|
(2 + N)T Screen-refresh cycle
|
|
+ (2 + N)T DRAM-refresh cycle
|
|
(9 + 4N)T Worst-case delay (total)
|
|
(b) Worst-Case Delay with TMS34010 Running
|
|
N = Number of wait states per memory cycle
|
|
T = Local clock period (nominal 160 nanoseconds for 50-MHz device)
|
|
Note: These are worst-case delays and have negligible effect on performance. The case
|
|
shown in a, for example, could be expected to occur less than once per thousand
|
|
(0.1 percent of) host accesses in a typical system.
|
|
|
|
Figure 10-13. Calculation of Worst-Case Host Interface Delay
|
|
|
|
|
|
|
|
Consider case a, in which the TMS3401 0 is halted, first; the worst-case delay
|
|
is calculated as the sum of the three delays. The first of these delays is the time
|
|
required to internally synchronize the host interface cycle to the TMS34010
|
|
local clock. The host's signals are generally not synchronous to the
|
|
TMS34010 local clocks. A signal from the host must therefore be passed
|
|
through a synchronizer latch (part of the TMS34010 on-chip host interface
|
|
logic) before being used by the TMS34010. The delay through the syn-
|
|
chronizer is from one to two local clock periods (1 T to 2T), depending on the
|
|
phase of the host clock relative to the TMS3401 O's local clock. The second
|
|
and third delays in Figure 10-13 represent the time needed to perform a
|
|
screen-refresh cycle followed by a DRAM-refresh cycle. The arbitration logic
|
|
internal to the TMS3401 0 assigns these two types of cycles higher priorities
|
|
than host-requested indirect accesses. (Screen refresh has a higher priority
|
|
than DRAM refresh.) Thus, a host access requested at the same time as one
|
|
of these cycles must wait. The worst-case assumption is that a screen-refresh
|
|
cycle is generated internal to the TMS3401 0 on the same clock edge at which
|
|
the request for the host access arrives. Furthermore, a DRAM-refresh cycle is
|
|
|
|
10-23
|
|
Host Interface Bus - Worst-Case Delay
|
|
|
|
|
|
requested during this same clock edge or during the next 1 + N clock edges.
|
|
An equivalent delay occurs in the case in which a DRAM refresh and host
|
|
access are requested on the same clock edge (the DRAM refresh wins), and
|
|
a screen refresh is requested on a later clock edge before the host access can
|
|
begin. This case is not shown in Figure 10-13, but the delay in this instance
|
|
is also (6 + 2N) T. In a typical system, DRAM-refresh cycles consume about
|
|
2 percent of the available memory bandwidth, and screen-refresh cycles take
|
|
about 1.5 percent (using VRAMs). The probability of either sequence of
|
|
events is therefore very small (less than one in a thousand, assuming N = 0;
|
|
that is, no wait states), and the performance degradation due to these unlikely
|
|
events is negligible.
|
|
Now consider the case in which the TMS3401 0 is running. Host accesses are
|
|
of higher priority than TMS34010 instruction fetches and data accesses, but
|
|
still of lower priority than DRAM-refresh or screen-refresh cycles. The worst-
|
|
case delay is calculated as the sum of the five delays indicated in Figure 10-13
|
|
b. This assumes that the TMS34010 begins a read-modify-write operation
|
|
on a memory word (this is performed as a read cycle followed by a separate
|
|
write cycle) just one clock before the TMS3401 0 receives the host access re-
|
|
quest. The TMS3401 0 CPU read cycle is actually (2 + N) T in duration, but
|
|
since it begins one clock before the host access is requested, only (1 + N) T
|
|
is left in the cycle. The TMS34010's local memory controller treats a read-
|
|
modify-write operation as indivisible; once the read has started, no other re-
|
|
quest can be granted until the write completes. The write cycle is (2 + N) T
|
|
in duration. Again, assume that sometime before the write cycle does com-
|
|
plete, screen-refresh and DRAM-refresh cycles are also requested. The prob-
|
|
ability of this case is somewhat more difficult to calculate than that of Figure
|
|
10-13 a, since the frequency of read-modify-write operations is very program
|
|
dependent. This sequence of events rarely occurs, however.
|
|
|
|
|
|
|
|
|
|
10-24
|
|
Section 11
|
|
|
|
Local Memory Interface
|
|
|
|
|
|
The TMS34010 local memory interface consists of a triple-multiplexed
|
|
address/data bus and associated control signals. Several types of memory
|
|
cycles, including read, write, screen-refresh, and DRAM-refresh cycles are
|
|
supported. During a memory cycle, the row address, column address, and data
|
|
are transmitted over the same physical bus lines. The row and column ad-
|
|
dresses necessary to address DRAMs and VRAMs are available directly at the
|
|
address/ data pins, eliminating the need for external multiplexing hardware.
|
|
The TMS34010 interfaces directly to DRAMs (such as the TMS4256 and
|
|
TMS4C1024) and VRAMs (such as the TMS4461), and can be programmed
|
|
to perform DRAM-refresh cycles at regular intervals. CAS-before-RAS or
|
|
RAS-only refresh cycles may be selected. The TMS34010 can also be pro-
|
|
grammed to perform screen refresh by scheduling VRAM register-transfer cy-
|
|
cles to occur at regular intervals.
|
|
The local memory interface provides a hold/hold acknowledge capability that
|
|
allows external devices to request control of the bus. After acknowledging a
|
|
hold request, the TMS3401 0 releases the bus by driving its address/data bus
|
|
and control outputs into high impedance.
|
|
Section Page
|
|
11.1 Local Memory Interface Pins ................................................................ 11-2
|
|
11.2 Local Memory Interface Registers ........................................................ 11 -3
|
|
11.3 Memory Bus Request Priorities ............................................................ 11 -4
|
|
11.4 Local Memory Interface Timing ............................................................ 11 -5
|
|
11.5 Addressing Mechanisms ..................................................................... 11-23
|
|
|
|
|
|
|
|
|
|
11 -1
|
|
Local Memory Interface Bus - Local Memory Interface Pins
|
|
|
|
|
|
|
|
11.1 Local Memory Interface Pins
|
|
Section 2 describes TMS34010 pin functions in detail. This section briefly
|
|
summarizes the local memory interface pins.
|
|
LADG-LAD15
|
|
These pins form the local multiplexed address/data bus.
|
|
DEN The local data enable signal is driven active low to allow data to
|
|
be written to or read from LADo-LAD15. (Connects to the G pins
|
|
of a pair of optional '245-type octal bus transceivers.)
|
|
DDOUT The local data direction out signal is driven high to enable data to
|
|
be output on LADo-LAD15. It is driven low to enable data to be
|
|
input on LADo-LAD15. (Connects to the DIR pins of a pair of
|
|
optional '245-type octal bus transceivers.)
|
|
LAL The high-to-Iow transition of the local address latched signal is
|
|
used by an external '373-type latch to capture the column address
|
|
from LADo-LAD15.
|
|
RAS The local row address strobe signal drives the RAS inputs of
|
|
D RAMs and VRAMs.
|
|
CAS The local column address strobe signal drives the CAS inputs of
|
|
D RAMs and VRAMs.
|
|
W The local write strobe signal drives the Vii inputs of DRAMs and
|
|
VRAMs.
|
|
TR/QE The local register transfer/output enable signal connects to the
|
|
TR/QE (or DT/OE) pins of a VRAM.
|
|
|
|
LRDY The local ready signal is driven low by external circuitry to inhibit
|
|
the TMS3401 0 from completing a local memory cycle.
|
|
INCLK TMS34010 processor functions are synchronous to this input
|
|
clock signal. (Video timing is controlled by VCLK.)
|
|
LCLK1,
|
|
LCLK2 These output clocks are available to the board designer for syn-
|
|
chronous control of external circuitry.
|
|
LlNT1,
|
|
LlNT2 Interrupt requests are transmitted to the TMS3401 0 on these pins.
|
|
|
|
|
|
|
|
|
|
11-2
|
|
Local Memory Interface Bus - Local Memory Interface Registers
|
|
|
|
|
|
|
|
11.2 Local Memory Interface Registers
|
|
The local memory interface registers are summarized below. These registers
|
|
are a subset of the I/O registers which are detailed in Section 6.
|
|
|
|
• The memory CONTROL register contains several programmable param-
|
|
eters that provide control of the local memory interface:
|
|
RM (DRAM refresh mode, bit 2): Selects RAS-only or
|
|
CAS-before-RAS refresh cycles.
|
|
RR (DRAM refresh rate, bits 3 and 4): Controls the frequency of
|
|
DRAM refresh cycles.
|
|
T (transparency enable, bit 5): Enables or disables the pixel attri-
|
|
bute of transparency.
|
|
W (window violation detection mode, bits 6 and 7): Selects the
|
|
course of action the TMS3401 0 follows when it detects a window
|
|
violation.
|
|
PBH (PIXBLT horizontal direction, bit 8): Determines the hori-
|
|
zontal direction (increasing X or decreasing X) for pixel operations.
|
|
PBV (PIXBLT vertical direction, bit 9): Determines the vertical di-
|
|
rection (increasing Y or d~c::reasing Y) for pixel operations.
|
|
PPOP (pixel processing operation select, bits 10-14): Selects
|
|
among several Boolean and arithmetic pixel processing options.
|
|
CD (instruction cache disable, bit 15): Enables or disables the in-
|
|
struction cache.
|
|
|
|
• The CONVDP register contains the destination pitch conversion factor
|
|
that is used during XY -to-linear conversion of a destination pixel ad-
|
|
dress.
|
|
|
|
• The CONVSP register contains the source pitch conversion factor that
|
|
is used during XY -to-linear conversion of a source pixel address.
|
|
|
|
• The PMASK (plane mask) register selectively disables or enables vari-
|
|
ous planes in a multiple-bit-per-pixel bit map display.
|
|
|
|
• The PSIZE (pixel size) register specifies the number of bits per pixel.
|
|
|
|
• The REFCNT (refresh count) register generates the addresses output
|
|
during DRAM-refresh cycles and counts the intervals between succes-
|
|
sive DRAM-refresh cycles.
|
|
|
|
|
|
|
|
|
|
11-3
|
|
Local Memory Interface Bus - Memory Bus Request Priorities
|
|
|
|
|
|
|
|
11.3 Memory Bus Request Priorities
|
|
The TMS34010's local memory interface controller assigns priorities to re-
|
|
quests from various sources, both on and off chip, for local memory cycles.
|
|
Table 11-1 lists these priorities (priority 1 is highest).
|
|
Table 11-1. Priorities for Memory Cycle Requests
|
|
|
|
Priority Memory Cycle Requested
|
|
1 Hold request from external bus master device
|
|
2 Screen-refresh cycle
|
|
3 DRAM-refresh cycle
|
|
4 Host-initiated indirect read or write cycle
|
|
5 TMS34010 CPU memory cycle
|
|
|
|
|
|
A TMS34010 CPU memory cycle is a read or write performed by the
|
|
TMS34010's on-chip 32-bit processor. Insertion of a field (or a portion of a
|
|
field spanning multiple words) into a word requires two CPU memory cycles
|
|
when the field does not begin and end on word boundaries. The two cycles
|
|
are a read followed by a write. This sequence is called a read-modify-write
|
|
operation. The read and write are performed as separate memory cycles, but
|
|
are treated as indivisible; that is, the memory controller does not permit another
|
|
memory request to be serviced between the read and its accompanying write.
|
|
The only exception to this statement is the hold request. If a read-modify-
|
|
write is interrupted by a hold, the entire read-modify-write operation is re-
|
|
started after the hold is released.
|
|
While a read-modify-write operation on an individual memory word is indi-
|
|
visible, the accesses necessary to extract or insert a field spanning multiple
|
|
memory words are not. For example, if a field spans portions of two memory
|
|
words, a higher priority access such as a host-indirect cycle can occur be-
|
|
tween the two read-modify-write operations required to insert the field.
|
|
The hold request has the highest priority. An external device requests control
|
|
of the bus by signalling a hold request to the TMS3401 O. The external device
|
|
may perform multiple memory cycles following acknowledgment from the
|
|
TMS34010. However, the device should not control the bus for so long that
|
|
necessary screen-refresh and DRAM-refresh cycles are prevented from occur-
|
|
ring. Indirect accesses initiated by a host processor are blocked as long as the
|
|
external device continues to control the bus. If the host processor attempts
|
|
to initiate another indirect access during this time, the host is forced to wait
|
|
at the host interface (the TMS34010 sends it a not-ready signal) until the
|
|
external device releases the local bus.
|
|
A memory cycle already in progress is always permitted to complete, even if a
|
|
higher priority request is received while the cycle is still in progress.
|
|
|
|
|
|
|
|
|
|
11-4
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
11.4 Local Memory Interface Timing
|
|
The TMS34010 memory interface contains a triple-multiplexed address/data
|
|
bus on which row addresses, column addresses and data are transmitted.
|
|
Figure 11 -1 illustrates mUltiplexing of addresses and data.
|
|
|
|
|
|
|
|
|
|
RF = DRAM-Refreah bus status bit
|
|
IAQ =Instruction acquisition bus status bit
|
|
TR = VRAM Shlft-Reglster-Transfer bus status bit
|
|
|
|
Figure 11-1. Triple Multiplexing of Addresses and Data
|
|
|
|
|
|
The TMS34010 LAD pins directly provide the multiplexed row and column
|
|
addresses needed to drive dynamic RAMs (like the TMS4256) and video
|
|
RAMs (such as the TMS4461). Any eight adjacent pins in the range
|
|
LADo-LAD10 provide 16 contiguous logical address bits; the eight MSBs are
|
|
output as part of the row address, and the eight LSBs are output as part of the
|
|
column address. For example, Figure 11 -1 shows that logical address bits
|
|
5-20 are output at LAD1-LAD8.
|
|
The control signals output to memory support direct interfacing to DRAMs
|
|
and VRAMs. At the beginning of a memory cycle, the address is output in
|
|
multiplexed fashion as a row address followed by a column address. The re-
|
|
mainder of the cycle is used to transfer data between the TMS34010 and
|
|
memory. Figure 11 -2 (page 11-6) illustrates general timing (the local
|
|
address/data pins are identified as the LAD Bus)
|
|
|
|
11-5
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
LAD Bus
|
|
:=x ROW Ifd~~=X
|
|
&I'1t111
|
|
Data
|
|
C
|
|
RAS
|
|
\ I
|
|
CAS
|
|
\ /
|
|
Figure 11-2. Rowand Column Address Phases of Memory Cycle
|
|
|
|
|
|
|
|
Figure 11-3 through Figure 11-8 show functional timing of the local memory
|
|
interface. Several timing features are common to the memory read and write
|
|
cycles in Figure 11 -3 and Figure 11 -4, and to the register-transfer cycles in
|
|
Figure 11 -6 and Figure 11 -7. A row address is output on LADQ-LAD15 at the
|
|
start of the cycle, and is valid before and after RAS falls. A column address is
|
|
then output on LADQ-LAD15. The column address is valid briefly before and
|
|
after the falling edge of LAL, but is not valid at the falling edge of CAS. The
|
|
column address is clocked into an external transparent latch (such as a
|
|
74AS373 octal latch) on the falling edge of LAL to provide the hold time on
|
|
the column address required for DRAMs and VRAMs. A transparent latch is
|
|
required so that the row address is available at the outputs of the latch during
|
|
the start of the cycle.
|
|
|
|
|
|
|
|
|
|
11-6
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
11.4.1 Local Memory Write Cycle Timing
|
|
Figure 11 -3 illustrates a memory write cycle. Data are output on
|
|
LADQ-LAD15 following the latching of the column address. DEN goes active
|
|
low at the same time the data become valid, and remains low as long as the
|
|
data remain valid. In a large system that requires buffering of the data bus to
|
|
memory, DEN is typically used as the enable signal to an external bidirectional
|
|
buffer (such as a 74AS245 octal buffer). DDOUT is used as the direction
|
|
control signal to the buffer. The write strobe, W, goes active low after the data
|
|
have become valid and CAS is low. This is interpreted as a "late write" cycle
|
|
by the DRAMs and VRAMs, which are prevented by the inactive-high TR/QE
|
|
signal from enabling their read drivers. Because the data are valid on both
|
|
sides of the W write strobe, external devices can latch the data on either the
|
|
high-to-Iow or low-to-high edge of W.
|
|
Irnl~IOOI~lrnl~IOOI~lrnl
|
|
|
|
LCLK1 ~ : :' i: 1'-. . . .:--k:, 1: (,..-+:--
|
|
LCLK2 LJI 1 I,l 1 V-"'I-"~""'!:. . . .I_-¥II
|
|
LADO-LAD15 ---v.' _....'_~'~I
|
|
I
|
|
Row
|
|
I I I I:
|
|
Data
|
|
I I
|
|
x::=
|
|
I'
|
|
r - - i ' , ~I ,1"'fi"1 I Iii
|
|
-RAS I II I I I I II ..I'I " 'I
|
|
I I I: I I I I I
|
|
LALV ! 1 1~I 1 1 v,-. . . . .I-
|
|
I I I I I I I I I I
|
|
CAS I II 1 II I' ~
|
|
I I I
|
|
1 I
|
|
I
|
|
VI 1
|
|
I I I
|
|
-
|
|
W I
|
|
I
|
|
I I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
" V~ "
|
|
i\I "-.,....--t.r--f. I
|
|
I
|
|
I I I I I I I I
|
|
|
|
|
|
|
|
|
|
DDOUT
|
|
|
|
LRDY
|
|
|
|
Figure 11-3. Local Bus Write Cycle Timing
|
|
|
|
|
|
|
|
|
|
11-7
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
11.4.2 Local Memory Read Cycle Timing
|
|
Figure 11 -4 illustrates a memory read cycle. LADO-LAD15 are forced to high
|
|
impedance following the latching of the column address. DEN and TR/OE both
|
|
go active low after CAS becomes low in order to enable read data from the
|
|
memory to the LAD pins. TR/OE enables the output drivers of the DRAMs and
|
|
VRAMs. DEN enables the external bidirectional buffers needed with memories
|
|
so large that external buffering (using a device such as a 74AS245 octal buf-
|
|
fer) of the data bus is required. The DDOUT signal serves as the direction
|
|
control for the external bidirectional buffers, and is low well in advance of the
|
|
high-to-Iow transition of DEN, and remains low well after the low-to-high
|
|
transition of DEN. The data that is read from memory must be valid during the
|
|
middle of the Q4 clock phase, as indicated in Figure 11 -4. The low-to-high
|
|
transitions of TR/OE and DEN occur well in advance of the time at which the
|
|
LAD drivers turn on to output the row address of the next cycle. This prevents
|
|
bus conflicts.
|
|
|
|
I 01 Q2 04 I 01 Q2 I 03 I 01 I
|
|
V~--:--"""lI
|
|
~VI
|
|
LCLK1
|
|
|
|
|
|
|
|
I I
|
|
LADO-LAD15
|
|
|
|
|
|
|
|
|
|
I
|
|
I I
|
|
I V..t--I---;--
|
|
I I r.--~
|
|
|
|
I
|
|
DDOUT I
|
|
|
|
|
|
Figure 11-4. local Bus Read Cycle Timing
|
|
|
|
|
|
|
|
|
|
11-8
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
11.4.3 Local Register-to-Memory Cycle Timing
|
|
A register-to-memory cycle is a special type of cycle used in systems with
|
|
VRAMs. The cycle transfers the contents of the VRAM's internal serial-data
|
|
register to a selected row of its internal memory array. The cycle typically af-
|
|
fects all VRAMs in the system. During the register-to-memory cycle shown
|
|
in Figure 11 -5, both TR/QE and Ware low during the fall of RAS. VRAMs re-
|
|
cognize this timing as the beginning of a register-to-memory cycle. Conven-
|
|
tional DRAMs may need to be de-selected (by withholding the row or column
|
|
address strobe, for example) to prevent them from interpreting the cycle as a
|
|
conventional read cycle. Alternately, the output enable signal required by a
|
|
DRAM such as the TMS4464 can be synthesized by connecting DEN and
|
|
DDOUT to the inputs of a two-input OR gate. (In fact, any pair of the signals
|
|
DEN, DDOUT, and TR/QE will work.) The low-to-high transition of TR/QE
|
|
occurs after the fall of CAS but prior to the rising edge of RAS. This timing
|
|
provides compatibility with a variety of VRAMs.
|
|
The TMS3401 0 performs a register-to-memory cycle when writing to a pixel
|
|
while the DPYCTL register's SRT bit is set to 1. For example, the instruction
|
|
PIXT AO, *Al writes the pixel in AO to the address pointed to by A1. The
|
|
PSIZE register should contain the value 16 so that the write cycle is not pre-
|
|
ceded by a read cycle. When SRT is set to 1, this write is converted to the
|
|
register-to-memory cycle shown in Figure 11 -5. The row address is selected
|
|
from bits 12-26 of A 1, which are output on LADo-LAD14 during the cycle.
|
|
|
|
I 011 02 I 03 I 04 I 01 I 02 I 03 I 04 I 01 I
|
|
LCLK1 ('
|
|
,I I..'\ I, I~V I '\'0 I~: 'V~--+-'--
|
|
I
|
|
I ~ , I ,
|
|
|
|
"
|
|
!J
|
|
LCLK2!L....-..V ,,
|
|
I
|
|
|
|
,' \I : ',
|
|
0
|
|
'V '
|
|
"
|
|
|
|
• ,
|
|
k
|
|
: ,
|
|
:....', _ . . . . 'I, /r--
|
|
j\.,-o!-I
|
|
, , "~'L ,,:,'
|
|
LADO-LAD 15 --v. Row . Col. Undefined x::=
|
|
',\''I: ,
|
|
0
|
|
|
|
|
|
|
|
|
|
r--f',
|
|
, I
|
|
"
|
|
"'I
|
|
I, , I
|
|
|
|
RAS I I I:I ,0 I V! I I
|
|
LAL V I I I~I I I: v~~II---
|
|
, I ' " " :, ,
|
|
~I
|
|
CAS I
|
|
|
|
W
|
|
h i::
|
|
,
|
|
|
|
|
|
I I I VI
|
|
' I 1\
|
|
:I ::::
|
|
"
|
|
|
|
I: I I
|
|
I
|
|
|
|
|
|
|
|
|
|
TR/OE I~!' I, I" I It'"
|
|
r I I I
|
|
DEN t::J I I I I I I I
|
|
, , , " ""
|
|
DDOUTlJ' " " I '
|
|
|
|
LRDY
|
|
,
|
|
1---1
|
|
, ,, "" "
|
|
"
|
|
"
|
|
|
|
|
|
Figure 11-5. Local Bus Register-to-Memory Cycle Timing
|
|
|
|
|
|
|
|
|
|
11-9
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
11.4.4 Local Memory-to-Register Cycle Timing
|
|
A memory-to-register cycle is a special type of cycle used in systems with
|
|
VRAMs. The cycle transfers the contents of a selected row of a video RAM's
|
|
memory array to its internal shift register.
|
|
VRAM memory-to-register cycles are primarily used to refresh the screen of a
|
|
CRT monitor. The cycles referred to elsewhere in this document as screen-
|
|
refresh cycles are in fact memory-to-register cycles. The TMS34010 also
|
|
performs a memory-to-register cycle when reading a pixel (for example, by
|
|
executing a PIXT *AO ,AI instruction) while the SRT bit of the DPYCTL reg-
|
|
ister is set to 1.
|
|
During the memory-to-register cycle shown in Figure 11-6, TR/QE is low
|
|
during the fall of RAS, but W remains high. VRAMs recognize this timing as
|
|
the beginning of a memory-to-register cycle, and their data outputs remain in
|
|
high impedance. Conventional DRAMs may need to be de-selected to prevent
|
|
them from interpreting the cycle as a memory read cycle. Alternately, the
|
|
output enable signal required by a DRAM such as the TMS4464 can be syn-
|
|
thesized by connecting DEN and DDOUT to the inputs of a two-input OR gate.
|
|
The low-to-high transition of TR/QE occurs after the fall of CAS but prior to the
|
|
rising edge of RAS. This timing provides compatibility with a variety of
|
|
VRAMs.
|
|
1 01 I 02 103 104 1 01 1 02 I 03 I 04 I 01 I
|
|
V
|
|
~ i 1\ I ~
|
|
I 1 I 1 1
|
|
LCLK1 I
|
|
1
|
|
1\
|
|
1
|
|
I I
|
|
1 II 1 I
|
|
1
|
|
1
|
|
LCLK2 LJI 1
|
|
1 1\: I V I
|
|
1 If
|
|
I
|
|
|
|
|
|
~l 1
|
|
1
|
|
I I 1 I : 1 I 1 1 : 1 1
|
|
L.ADO-l.AD15 ~ Row
|
|
i ~ i
|
|
x::
|
|
Undefined
|
|
i i i I
|
|
I
|
|
: 1
|
|
~
|
|
I 1 I
|
|
RAS I
|
|
1
|
|
I
|
|
i
|
|
1
|
|
I 1
|
|
:I I
|
|
I I
|
|
I
|
|
I
|
|
VI
|
|
I
|
|
1
|
|
II
|
|
I
|
|
1
|
|
I
|
|
~I
|
|
I I I
|
|
V I
|
|
I
|
|
LALV I
|
|
I I I I I I
|
|
I
|
|
I
|
|
I
|
|
CAS i
|
|
_I
|
|
1
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
; !\
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I I
|
|
1
|
|
1
|
|
I I
|
|
V II
|
|
I
|
|
W I I (High) I I I I
|
|
--I
|
|
TRlOE I
|
|
hi I
|
|
1
|
|
I
|
|
I
|
|
1
|
|
I
|
|
I
|
|
V
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I I I I I I I
|
|
-t::J1
|
|
DEN I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
1
|
|
I
|
|
1
|
|
1 1 I 1 1 I I
|
|
OOOUTLJ 1
|
|
1
|
|
I
|
|
1
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
1
|
|
LRDY
|
|
|
|
Figure 11-6. Local Bus Memory-to-Register Cycle Timing
|
|
|
|
|
|
|
|
|
|
11 -10
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
11.4.5 LOC,ll Memory RAS-Only DRAM Refresh Cycle Timing
|
|
During the RAS-only DRAM refresh cycle shown in Figure 11-7, RAS and LAL
|
|
are the only active control signals. All other signals, including CAS, W, and
|
|
TR/QE, remain inactive high through the cycle. The row address, output on the
|
|
LAD pins during the high-to-Iow transition of RAS, is generated by the
|
|
REFCNT (DRAM-refresh counter) register.
|
|
|
|
I~I~I~I~I~I~I~I~I~I
|
|
|
|
LCLK1 V 1 1\ I : V I 1\ I : I/~-+I--
|
|
I I I I I I I: I
|
|
I I 1
|
|
|
|
LCLK2 W~-+I-'""'I\: 1 V 1 ~~:__
|
|
I_-¥II
|
|
II:IIII:II
|
|
LADO-LAD15
|
|
|
|
RAS
|
|
~ I X
|
|
Row
|
|
I:
|
|
1-1- . .'--1\1\:
|
|
Undefined
|
|
I
|
|
1
|
|
I I I
|
|
x::::
|
|
I/~~I--+I--
|
|
~I~~I_~I:::::!~I__~___
|
|
I __JI I I
|
|
LALV I 1 t\_t-I-t--~II-~I~-fV--;-1-
|
|
CAS! 1 (HI~h) I I I I I
|
|
I I: I 1 I I I
|
|
II II (HI~h)I
|
|
TR/OE II II II II II
|
|
DENt::) I II II 1 II 1
|
|
I I I I I
|
|
DDOUTU 1 I 1 1 I 1
|
|
I I I .1 I I I
|
|
LRDY :
|
|
|
|
Figure 11-7. Local Bus RAS-Only DRAM-Refresh Cycle Timing
|
|
|
|
|
|
|
|
|
|
11 -11
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
11.4.6 Local Memory CAS-before-RAS DRAM Refresh Cycle Timing
|
|
During the CAS-before-RAS DRAM-refresh cycle shown in Figure 11-8, CAS
|
|
goes low before RAS goes low. Certain types of DRAMs (like the TMS4256
|
|
and TMS4C1 024) and VRAMs (such as the TMS4461) recognize this as the
|
|
beginning of a DRAM-refresh cycle in which the address of the row to be re-
|
|
freshed is generated by a counter on the RAM chip itself, rather than by an
|
|
external device such as the TMS34010. The row address output by the
|
|
TMS34010 during the cycle is the same as would be output if the TMS3401 0
|
|
were configured to perform a RAS-only refresh cycle rather than a
|
|
CAS-before-RAS cycle. The address bits output on LADQ-LAD15 remain sta-
|
|
ble from the start of the row address time (start of 02) to the end of the col-
|
|
umn address time (end of 04). LAD15, on which the RF bus status bit is
|
|
output, is low during the row address times. In contrast to other types of cy-
|
|
cles in which RAS goes low, the LAL output goes low at the start of 03, after
|
|
the fall of CAS and before the fall of RAS. The timing of LAL is designed to
|
|
support the use of decode circuitry which latches the state of selected
|
|
address/data pins during the fall of LAL, and which recognizes a
|
|
CAS-before-RAS cycle by detecting a high level at the RAS output during the
|
|
fall of LAL.
|
|
|
|
|
|
LCLKl
|
|
|
|
|
|
|
|
|
|
LCLK2
|
|
|
|
|
|
|
|
|
|
LADO-LAD15
|
|
|
|
|
|
|
|
|
|
lin I I
|
|
I
|
|
|
|
|
|
|
|
Dr:(: 1\ 1 I v'
|
|
~ Il\ I Vtt-I-+---1-
|
|
I I ~I--+-+--+---t----t---t-f: I
|
|
w I I (High) :I
|
|
I I ! I
|
|
I 1
|
|
I
|
|
I
|
|
|
|
|
|
DDOUT
|
|
|
|
|
|
|
|
|
|
Figure 11-8. Local Bus CAS-before-RAS DRAM-Refresh Cycle
|
|
Timing
|
|
|
|
|
|
|
|
11 -12
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
11.4.7 Local Memory Internal Cycles
|
|
When the TMS3401 0 is not performing one of the memory operations shown
|
|
in Figure 11 -3 through Figure 11 -8, its memory interface control signals re-
|
|
main inactive, as shown in Figure 11 -9. This is called an internal cycle. Figure
|
|
11-9 shows two sequential internal cycles. During internal cycles, the LRDY
|
|
input is ignored.
|
|
|
|
1~1~IOOI~I~I~ I 03 I 04 I 01 I
|
|
LCU<1 r : ~,--+i_:. . . ,(,. . . ,. : ,1\ I V,
|
|
--tt.
|
|
I
|
|
I
|
|
I
|
|
I
|
|
:
|
|
|
|
LCLK2 W"'-+I--tt..I\: I V"'-+-'"
|
|
,, ,~i ,I II
|
|
L-....\,' ':1 ,
|
|
I
|
|
I
|
|
I
|
|
LAD0-LAD15 ~~~__~~~u_n_d~d_n_ed~__~~~~IX:::
|
|
I
|
|
I ':
|
|
I (High)
|
|
II II
|
|
I I I I
|
|
V I I I I
|
|
I I I I I
|
|
wi I (High) I I
|
|
I I I I I
|
|
I ,I I I
|
|
I I (High) I I
|
|
|
|
t:J I
|
|
I I I
|
|
II !I
|
|
ODOlIT CJ
|
|
I I
|
|
II II II
|
|
LRDY
|
|
|
|
Figure 11-9. Local Bus Internal Cycles Back to Back
|
|
|
|
|
|
|
|
11.4.8 I/O Register Access Cycles
|
|
A special memory read or write cycle is performed when the TMS3401 0 ad-
|
|
dresses an on-chip I/O register. During this cycle, the external RAS signal falls,
|
|
but the external CAS remains inactive high for the duration of the cycle. I/O
|
|
register locations begin at address COOOOOOOh, and all 32 bits of the I/O reg-
|
|
ister address are decoded internally. The two MSBs of the 32-bit logical ad-
|
|
dress are not output at the LADo-LAD15 pins.
|
|
Figure 11 -10 shows an I/O register read cycle and Figure 11 -11 shows an I/O
|
|
register write cycle. These cycles occur when one of the TMS3401 O's on-chip
|
|
I/O registers is accessed by the on-chip processor or by the host processor via
|
|
a host-indirect access. An address in the range COOOOOOOh to C00001 FFh is
|
|
interpreted as an I/O register access by on-chip decode logic, and the read or
|
|
write cycle is modified as shown in Figure 11 -10 or Figure 11 -11. The two
|
|
|
|
|
|
|
|
11-13
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
MSBs of the internal address (bits 30 and 31) are available internally and are
|
|
included in the internal decoding operation.
|
|
An I/O register read or write cycle is always two clock periods in duration, and
|
|
LRDY is ignored. The only control outputs that are active low during the cycle
|
|
are RAS and LAL. The CAS, W, TR/QE, DEN and DDOUT outputs all remain in-
|
|
active high. The row and column addresses output at the LADQ-LAD15 pins
|
|
are all Os. All three bus status bits are inactive (RF is high, lAO is low, and TR
|
|
is high). During the read cycle shown in Figure 11-10, the LADQ-LAD15 pins
|
|
are driven to high impedance during the data phase of the cycle. During the
|
|
write cycle shown in Figure 11-11, the LADQ-LAD15 pins contain the valid
|
|
data being written to the I/O register.
|
|
|
|
, 01 , 02 I 03 , 04 , 01 , 02 I 03 i 04 i 01 "
|
|
LCLK1V 1 1\ ,': V I 1\ I: V---+- --
|
|
I I I ,r I , I " I
|
|
I
|
|
|
|
LCLK2' !J I 1\: l IV 1\; I II
|
|
|
|
|
|
~
|
|
~I 1v.6t1 11:1 ~
|
|
LADO-LAD15 Row ~--HI-Z ~+-I-~
|
|
, I I" , " I
|
|
I
|
|
RAS , i
|
|
"
|
|
,\ I:: I I 'I
|
|
if: I
|
|
I
|
|
I
|
|
, I , I: I 'I I
|
|
LALVIII~' V-.........
|
|
:-
|
|
, I I I:: I
|
|
CAS i (High) i , i
|
|
, ,I I I
|
|
i ! I , I
|
|
WiI (Hi~h) II 1 II
|
|
- I I I I I
|
|
TR/QE I I (High) I I I
|
|
I I I I I
|
|
DENt::J I I 1
|
|
'I I' I
|
|
DDOUT'~I I
|
|
I 'I II
|
|
I I I I
|
|
LRDY
|
|
|
|
Figure 11-10. I/O Register Read Cycle Timing
|
|
|
|
|
|
|
|
|
|
11 -14
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
I 01 i i i ~ i I i i ~ i ~0_1 i__
|
|
02 03 01 02 03 ...
|
|
LCLK1 Y I I' I i I' I I' I: V I
|
|
I I I 1\: I I~ I L: I ~r-
|
|
LCLK2
|
|
|
|
|
|
LADO-LAD15
|
|
H
|
|
---y
|
|
I
|
|
I
|
|
I
|
|
Row
|
|
I .: I
|
|
I~
|
|
~
|
|
• I
|
|
I
|
|
Data
|
|
i\: I
|
|
I "+:--1-"1
|
|
!!
|
|
x:::
|
|
RAS
|
|
r-r
|
|
1 I
|
|
I I: I
|
|
I, I : I
|
|
I: I
|
|
VI i I
|
|
LAC >
|
|
I
|
|
1
|
|
I
|
|
1
|
|
I
|
|
1
|
|
I:
|
|
~ ; I
|
|
III l-
|
|
!- ~-.........
|
|
I
|
|
CAS I I (High) i i i i
|
|
I i I I I I I
|
|
I i I I I I I
|
|
WI I (High) I I I I
|
|
I I I I I I I
|
|
I I I I I I I
|
|
|
|
|
|
hI'
|
|
TR/OE I I(HI~h)1 I I I
|
|
I I I i i
|
|
DEN I I I i I I
|
|
I I I I I I
|
|
DOOUTI'; I I I I I
|
|
'--' I I I I I
|
|
I I I I I I I
|
|
LRDY
|
|
|
|
Figure 11-11. I/O Register Write Cycle Timing
|
|
|
|
|
|
|
|
11.4.9 Read-Modify-Write Operations
|
|
The TMS34010's read-modify-write operation, which consists of separate
|
|
read and write cycles, is not the same as the read-modify-write cycle specified
|
|
for some DRAMs. As explained in Section 5, when inserting a field into me-
|
|
mory that is not aligned to 16-bit word boundaries, the TMS34010 memory
|
|
interface logic may be required to perform read-modify-write (RMW) oper-
|
|
ations on one or more words in memory. A RMW operation consists of the
|
|
following sequence of steps:
|
|
1) A word is read from memory.
|
|
2) The portion of that word corresponding to the field being inserted is
|
|
loaded with the new value.
|
|
3) The modified word is written back to memory.
|
|
The read cycle is as shown in Figure 11 -4 (page 11 -8), and the write cycle is
|
|
as shown in Figure 11-3 (page 11-7).
|
|
A local bus request (HOLD low) may cause the TMS3401 0 to release the bus
|
|
after the read cycle of a RMW operation has completed, but before the ac-
|
|
companying write cycle has begun. When the TMS3401 0 later regains control
|
|
of the bus, it performs both the read and the write cycles of the RMW opera-
|
|
tion. The RMW operation is performed only when it is the highest priority bus
|
|
operation pending. Any pending screen-refresh, DRAM-refresh, or host-
|
|
indirect cycle has higher priority, and is performed first.
|
|
|
|
|
|
|
|
11 -15
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
11.4.10 Local Memory Wait States
|
|
The timing shown in Figure 11-3 through Figure 11-8 assumes that the LRDY
|
|
input remains high during the cycle. The LRDY pin is pulled low by slower
|
|
memories requiring a longer cycle time. The TMS3401 0 samples the LRDY
|
|
input at the end of Q1, as indicated in the figures. If LRDY is low, the
|
|
TMS34010 inserts an additional state, called a wait state, into the cycle.
|
|
Wait states continue to be inserted until LRDY is sampled at a high level. The
|
|
cycle then completes in the manner indicated in Figure 11 -3 through Figure
|
|
11 -8.
|
|
The LRDY input is ignored by the TMS3401 0 during internal cycles, as indi-
|
|
cated in Figure 11 -9.
|
|
Figure 11 -12 shows an example of a read cycle extended by one wait state.
|
|
The first time LRDY signal is sampled, a low level is detected by the
|
|
TMS34010, causing the cycle to be delayed by a wait state. When LR DY is
|
|
sampled again one local clock period later, a high level is detected, permitting
|
|
the cycle to complete. The time during which RAS, CAS, LAL, TR/QE, DEN, and
|
|
DDOUT remain low is extended by one state (one local bus clock period).
|
|
|
|
|
|
iWaitStati
|
|
01 I Q2 I 01 I Q2 03 I 04 I 01 I I Q2
|
|
I I
|
|
lClK1 I I
|
|
|
|
|
|
lClK2
|
|
|
|
|
|
|
|
|
|
LAl I
|
|
I
|
|
I I I I I
|
|
I I
|
|
~ I
|
|
I
|
|
I
|
|
i\
|
|
I
|
|
I
|
|
I
|
|
I
|
|
IVII
|
|
I
|
|
I
|
|
I
|
|
I I I
|
|
W i I I (Hlghl
|
|
I I I
|
|
I I i
|
|
fR/tlE I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
1\
|
|
I
|
|
I
|
|
i
|
|
I
|
|
|
|
DERJ: I
|
|
I
|
|
I
|
|
I
|
|
1\
|
|
I
|
|
I
|
|
|
|
|
|
|
|
|
|
Figure 11-12. Local Bus Read Cycle with One Wait State
|
|
|
|
|
|
|
|
|
|
11-16
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
Figure 11 -13 is an example of a write cycle extended by one wait state. The
|
|
first time LRDY signal is sampled, a low level is detected by the TMS3401 0,
|
|
causing the cycle to be delayed by a wait state. When LRDY is sampled again
|
|
one local clock period later, a high level is detected, permitting the cycle to
|
|
complete. The time during which RAS, CAS, LAL, Wand DEN remain low is
|
|
extended by one state.
|
|
|
|
|
|
|
|
|
|
5m II
|
|
~:
|
|
|
|
Figure 11-13. Local Bus Write Cycle with One Wait State
|
|
|
|
|
|
Figure 11 -14 is an example of a register-to-memory cycle extended by one
|
|
wait state. The first time the LR DY signal is sampled, a low level is detected
|
|
by the TMS3401 0, causing the cycle to be delayed by a wait state. When
|
|
LRDY is sampled again one local clock period later, a high level is detected,
|
|
permitting the cycle to complete. The time during which RAS, CAS, and LAL
|
|
remain low is extended by one state. The Wand TRjQE low times are not ex-
|
|
tended, however. Similarly, during a memory-to-register cycle, TR/QE is not
|
|
extended.
|
|
|
|
|
|
|
|
|
|
11-17
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
|
|
w
|
|
|
|
|
|
TRIM
|
|
|
|
|
|
|
|
|
|
DDOUT i
|
|
I
|
|
I I I I I
|
|
|
|
LRDY~
|
|
Figure 11-14. local Bus Register-to-Memory Cycle with One Wait
|
|
State
|
|
|
|
|
|
|
|
11.4.11 Hold Interface Timing
|
|
The TMS3401 0 includes a hold interface through which external bus-master
|
|
devices can request control of the local memory bus. When the TMS34010
|
|
grants a hold request, it drives its local memory address/data bus and control
|
|
outputs to high impedance, and the requesting device becomes the new bus
|
|
master. When the requesting device no longer requires the bus, it removes its
|
|
hold request, and the TMS3401 0 again assumes control of the local bus.
|
|
Figure 11 -15 shows the TMS3401 0 releasing control of the local bus in re-
|
|
sponse to a hold request. The TMS3401 0 samples the state of the HOLD input
|
|
at each LCLK2 rising edge (at the end of the 01 phase of the clock). HOLD
|
|
is a synchronous input, and must not change during the time that the
|
|
TMS34010 samples it; refer to the TMS34010 Data Sheet for HOLD setup and
|
|
hold times. The state of the hold acknowledge signal (active or inactive) is
|
|
output on the HLDA/EMUA pin during the 03 and 04 clock phases (LCLK1
|
|
low). During the first (or leftmost) LCLK2 rising edge, the hold request is
|
|
inactive. Consequently, the hold acknowledge signal remains inactive during
|
|
|
|
|
|
|
|
11-18
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
the first LCLK1 low phase. By the second LCLK2 rising edge, the hold request
|
|
has been activated, and the TMS3401 0 responds by acknowledging the hold
|
|
request during the next LCLK1 low phase. The address/data lines and ma-
|
|
jority of the control lines are driven to high impedance at the start of the next
|
|
Q2 phase (LCLK2 rising edge). The DDOUT and DEN pins are driven to high
|
|
impedance a quarter clock later.
|
|
Figure 11-16 shows the TMS34010 resuming control of the local bus after
|
|
deactivation of the hold request. Again, the TMS3401 0 samples the state of
|
|
the HOLD input at each LCLK2 rising edge. During the first LCLK2 rising edge,
|
|
the hold request is still active, and the TMS3401 0 responds during the next
|
|
LCLK1 low phase with an active hold acknowledge signal. By the second
|
|
LCLK2 rising edge, the hold request has been removed. The TMS3401 0 re-
|
|
sponds by outputting an inactive hold acknowledge signal during the next
|
|
LCLK1 low phase. At the next LCLK2 rising edge, the TMS3401 0 begins to
|
|
drive its address/data pins and the majority of its control pins to logic-high or
|
|
logic-low levels. The DEN and DDOUT signals remain in high impedance for
|
|
one additional quarter clock before they too begin to be driven.
|
|
|
|
|
|
LCLKl
|
|
|
|
|
|
|
|
|
|
RAl
|
|
|
|
|
|
m
|
|
|
|
~
|
|
|
|
|
|
|
|
w I
|
|
I
|
|
I
|
|
fli/M I
|
|
I
|
|
I
|
|
om
|
|
:\
|
|
I
|
|
I
|
|
|
|
|
|
|
|
|
|
RIl5A/EMUA I
|
|
I
|
|
I
|
|
|
|
LNo-l
|
|
Ack
|
|
|
|
Figure 11-15. TMS34010 Releases Control of Local Bus
|
|
|
|
|
|
In Figure 11-15, the first active-low pulse of the HLDA/EMUA output is an
|
|
early acknowledgment, and the bus is not released for another three quarters
|
|
|
|
|
|
11-19
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
of a clock. The early acknowledgment gives advance warning to the device
|
|
requesting the hold that the bus is about to be released by the TMS3401 0,
|
|
allowing the device time to prepare to become the new bus master. The
|
|
TMS34010 outputs the active hold acknowledge signal only when it is pre-
|
|
pared to release the bus within the next clock period. If the TMS3401 0 must
|
|
wait longer than this to release the bus, its hold acknowledgment is withheld
|
|
until it can release the bus.
|
|
For instance, if the LR DY signal in Figure 11 -15 were low instead of high at
|
|
the second rising edge of LCLK2, the TMS3401 0 would be forced to wait, and
|
|
would therefore not acknowledge the hold request until later, when the not-
|
|
ready condition was removed. Also, if the hold request in Figure 11 -15 was
|
|
asserted initially during the first LCLK2 rising edge rather than the second, the
|
|
TMS34010 would delay its hold acknowledgment until the second LCLK1 low
|
|
clock phase, knowing that the cycle in progress would not be completed until
|
|
the third 02 phase in the diagram.
|
|
A hold request has a higher priority than any internally generated memory cy-
|
|
cle requests, including:
|
|
|
|
• Screen refresh
|
|
• DRAM refresh
|
|
• Indirect access by the host processor
|
|
• TMS34010 instruction fetch or data access
|
|
A hold request is delayed only to allow a memory cycle already in progress to
|
|
complete.
|
|
External devices can activate or deactivate the HOLD input during any clock
|
|
of an ongoing cycle, as long as the input is stable during the rising edge of
|
|
LCLK2. The HOLD input is synchronous and is required to meet specified
|
|
setup and hold times to ensure that the TMS3401 0 operates correctly. After
|
|
the TMS3401 0 grants the bus to an external device (via an active-low level
|
|
on the HLDA/EMUA output during the 03 clock phase), it continues to ac-
|
|
knowledge the hold request during the 03 phases of subsequent clock cycles.
|
|
The external device retains control of the bus until it deactivates its hold re-
|
|
quest.
|
|
External devices should avoid placing the TMS3401 0 in hold for long periods.
|
|
While the TMS34010 is in hold, it can perform neither screen-refresh nor
|
|
DRAM-refresh cycles. Furthermore, a host processor attempting to access the
|
|
TMS34010's local memory through the host interface registers while the
|
|
TMS34010 is in hold may receive a not-ready signal. When this occurs, the
|
|
host is forced to wait to complete its access until the TMS34010 leaves the
|
|
hold state. (Refer to Section 9.10.1.5, Scheduling Screen-Refresh Cycles, on
|
|
page 9-27 for more information.)
|
|
If a request for a DRAM-refresh or screen-refresh cycle is generated within the
|
|
TMS34010 while an external device controls the bus, the TMS3401 0 retains
|
|
the request and perform the DRAM-refresh or screen-refresh cycle after the
|
|
external device has returned control of the bus to the TMS3401 O. However,
|
|
if a requested DRAM-refresh cycle is prevented from occurring for so long that
|
|
a second DRAM-refresh cycle is requested before the first DRAM-refresh cy-
|
|
cle can occur, the first DRAM-refresh request is lost. Similarly, if a screen-
|
|
refresh request is prevented from occurring for so long that a second
|
|
|
|
11-20
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
screen-refresh cycle is requested before the first screen-refresh cycle can oc-
|
|
cur, the first screen - refresh request is lost.
|
|
The HLDA/EMUA output is multiplexed between the hold acknowledge
|
|
(HLDA) and emulate acknowledge (EMUA) signals. The HLDA signal is output
|
|
during the LCLK1 low phase, and the EMUA signal is output during the LCLK1
|
|
high phase.
|
|
|
|
|
|
|
|
|
|
I I I I
|
|
I 01 02 I 03 I 04 I
|
|
LCLK1
|
|
~~~--~~~~!~~ ~I--~V
|
|
I I I
|
|
I
|
|
LCLK2 I
|
|
|
|
|
|
|
|
LADO-LAD15
|
|
|
|
|
|
|
|
|
|
TR/OE
|
|
|
|
|
|
|
|
|
|
DDOUT
|
|
|
|
|
|
LRDY
|
|
|
|
|
|
|
|
|
|
Figure 11-16. TMS34010 Resumes Control of Local Bus
|
|
|
|
|
|
|
|
11-21
|
|
Local Memory Interface Bus - Local Memory Interface Timing
|
|
|
|
|
|
|
|
11.4.12 Local Bus Timing Following Reset
|
|
Figure 11 -17 shows the timing of the local bus signals following reset. At the
|
|
end of reset, the TMS3401 0 automatically performs a series of eight RAS-only
|
|
refresh cycles, as required to initialize certain DRAMs (such as the TMS4256
|
|
and TMS4464) and VRAMs (such as the TMS4461) following power-up.
|
|
The asynchronous low-to-high transition of RESET is sampled at the second
|
|
high-to-Iow LCLK1 transition in Figure 11-17. In less than two local clock
|
|
periods following this LCLK1 transition, the first of the eight RAS-only cycles
|
|
begins, as shown at the right side of Figure 11 -17.
|
|
Each of the eight RAS cycles following reset is two clock periods in duration,
|
|
but can be extended by a not-ready signal (LRDY low). The timing for each
|
|
cycle is identical to that of a RAS-only DRAM-refresh cycle, including the bus
|
|
status codes output during the row and column address times. The row ad~
|
|
dress for each of the eight RAS-only cycles is all Os.
|
|
|
|
|
|
|
|
|
|
FIRST OF 8 RAS-ONL Y
|
|
1 4 - - - - - 7t
|
|
a - - - - - I..-.t1 /
|
|
CYCLES BEGINS
|
|
|
|
|
|
|
|
|
|
LCLK1
|
|
|
|
|
|
|
|
LCLK2
|
|
|
|
|
|
|
|
|
|
RESET I I I
|
|
|
|
I I I I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
II I
|
|
I I
|
|
I I
|
|
I
|
|
I
|
|
I I
|
|
I I
|
|
I
|
|
II II I II II II II II
|
|
LADO-LAD15 ..... HI-Zr--I--..,--.l--r-~--.,.--.j....-I-""'--T--I--I\
|
|
II II Jt RO~
|
|
I: K '
|
|
|
|
|
|
|
|
|
|
I I I I I I
|
|
I,.. I I I I I
|
|
I I I I I
|
|
~~~~--+-~--~--~-+__~__~~__+-~-~~
|
|
III
|
|
I
|
|
I I I I I I I
|
|
I
|
|
RAS
|
|
I
|
|
I I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
|
|
|
|
|
|
~.W.ffi/Q£. ~~~-+--~~~~--+-~--~-r--+--~~~-r--+-~--~
|
|
DEN. DDOUT
|
|
|
|
|
|
|
|
|
|
Figure 11-17. Local Bus Timing Following Reset
|
|
|
|
|
|
|
|
|
|
11-22
|
|
Local Memory Interface Bus - Addressing Mechanisms
|
|
|
|
|
|
|
|
11.5 Addressing Mechanisms
|
|
The TMS3401 0 addresses memory by means of a 32-bit logical address. As
|
|
explained in Section 3, each 32-bit logical address points to a bit in memory.
|
|
Logical address bits are numbered from 0 to 31, where bit 0 is the LSB and
|
|
bit 31 is the MSB. Figure 11-18 illustrates the manner in which address bits
|
|
4-29 are output to physical memory. Each column in the figure indicates an
|
|
address/data bus pin, LADO-LAD15, and below it is the corresponding bit of
|
|
the logical address output at the LAD pin during the fall of RAS and during the
|
|
fall of CAS. Bus status bits RF, TR, and IAQ are output on LAD14-LAD15.
|
|
|
|
LAD Pin Numbers
|
|
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
TMS34010 At Fall RF 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12
|
|
Logical of RAS
|
|
Addfess At Fall lAC TR 29 28 27 14 13 12 11 10 9 8 7 6 5 4
|
|
Bits
|
|
of CAS
|
|
t Bus status signals:
|
|
RF - DRAM refresh cycle
|
|
IAQ - Instruction acquisition cycle
|
|
TR - Register-transfer cycle
|
|
|
|
Figure 11-18. External Address Format
|
|
|
|
|
|
Key features of the local bus addressing mechanism include the following:
|
|
|
|
• The two MSBs of the 32-bit logical address (bits 30 and 31) are not
|
|
output.
|
|
|
|
• The four LSBs of the 32-bit logical address (bits 0 to 3) are not output,
|
|
but are used internally to designate a bit boundary within a 16-bit word
|
|
accessed in the external memory.
|
|
|
|
• The address bits output on LADo-LAD10 during the falling edges of RAS
|
|
and CAS are aligned so that 16 consecutive bits from the logical address
|
|
are available at any eight consecutive pins in the range LADO to LAD10.
|
|
The address bits are output in this way in order that the 8-bit row ad-
|
|
dress and 8-bit column address presented to the dynamic RAMs can al-
|
|
ways be taken from the same eight address/data pins. This eliminates
|
|
the need for external address multiplexers.
|
|
|
|
• Logical address bits 12-14 are output twice during a memory cycle -
|
|
during both the RAS and CAS falling edges - but at different pins. This
|
|
allows a variety of memory organizations and decoding schemes to be
|
|
used.
|
|
Pins LADo-LAD10 form an 11 -bit zone in which logical address bits 12-14
|
|
are overlapped (that is, they are issued in both cycles, but on different pins).
|
|
The row and column address bus is connected to any eight consecutive pins
|
|
within this zone. The actual position is determined by the bank-decoding
|
|
scheme selected for a particular memory organization.
|
|
|
|
|
|
|
|
11-23
|
|
Local Memory Interface Bus - Addressing Mechanisms
|
|
|
|
|
|
|
|
Output along with the address are three bus status signals:
|
|
|
|
• The RF (DRAM refresh) bit is output on LAD15 during the fall of RAS.
|
|
It is low if the cycle that is just beginning is a DRAM-refresh cycle (ei-
|
|
ther RAS-only or CAS-before-RAS); otherwise, RF is high.
|
|
|
|
• The TR (VRAM register transfer) bit is output on LAD14 during the fall
|
|
of CAS, and is low· if the cycle in progress is a video RAM register
|
|
transfer. Otherwise, TR is high. In either event, the state of the TR bit
|
|
reflects the state of the TR/QE output during the falling edge of RAS
|
|
within the same cycle.
|
|
|
|
• The lAO bit is output on LAD15 during the fall of CAS, and is high if the
|
|
cycle is an instruction fetch; otherwise, lAO remains low. The term in-
|
|
struction fetch includes not only reads of opcodes, but also immediate
|
|
data, immediate addresses, and so on.
|
|
lAO is active high when words are fetched from memory to load the in-
|
|
struction cache. A cache subsegment (a block of four words) is loaded in a
|
|
series of read cycles, during which lAO is active high. The PC points to an
|
|
instruction word within the block, but the block may contain data as well as
|
|
instruction words (opcodes, immediate addresses, immediate data, and so on).
|
|
Only during execution can the TMS3401 0 distinguish instruction words from
|
|
data words residing in the cache. Instruction words are fetched from the
|
|
cache as they are needed, but data inadvertently loaded into the cache is ig-
|
|
nored and all memory data reads or writes result in accesses of the memory
|
|
rather than the cache.
|
|
When the cache is disabled, lAO is active high only when the first word of an
|
|
instruction is fetched; in the case of a mUltiple-word instruction, lAO is inac-
|
|
tive while the additional words are fetched.
|
|
|
|
11.5.1 Display Memory Hardware Requirements
|
|
The minimum number of bits of memory required to implement the display
|
|
memory is the product of the total number of pixels (on-screen and off-screen
|
|
areas combined) and the number of bits per pixel. The minimum number of
|
|
VRAMs required to contain the display memory is calculated as follows:
|
|
(pixels per line) x (lines per frame) x (bits per pixel)
|
|
N um b er 0 f VRAM s =
|
|
Number of bits per VRAM
|
|
This calculation yields the minimum number of VRAMs needed, but additional
|
|
VRAMs may be required in some applications. For instance, XY addressing
|
|
can be supported by making the number of pixels per line of the display me-
|
|
mory a power of two, but this may require more than the minimum number of
|
|
VRAMs needed to contain the display.
|
|
|
|
|
|
|
|
|
|
11-24
|
|
Local Memory Interface Bus - Addressing Mechanisms
|
|
|
|
|
|
|
|
11.5.2 Memory Organization and Bank Selecting
|
|
During a single local memory cycle, one data word (16 bits) is transferred
|
|
between the TMS34010 and the selected bank of memory. The memory is
|
|
partitioned into a number of banks, where each bank contains the number of
|
|
memory devices that can be accessed in a single memory cycle. The number
|
|
of devices per bank is therefore determined by dividing the width of the data
|
|
bus by the number of data pins per device. The TMS3401 0 data bus is 16 bits
|
|
wide, and can access 16 memory data pins during a single cycle. This means,
|
|
for example, that a bank composed of 64K-by-1 RAMs contains 16 RAM de-
|
|
vices. A bank composed of 64K-by-4 RAMs contains 4 RAM devices.
|
|
In a typical system, the local memory is divided into two parts, one consisting
|
|
of the display memory and the other consisting of additional DRAMs needed
|
|
to store programs and data. This additional RAM can be called the system
|
|
memory. A high-order address bit is typically used to select between the dis-
|
|
play memory and system memory. Within the display memory or system me-
|
|
mory, some address bits are provided as the row and column addresses to the
|
|
selected bank, while other address bits are used to select one of the banks.
|
|
The number of banks of VRAM needed for the display memory is calculated
|
|
by dividing the total number of VRAMs by the number of VRAMs per bank.
|
|
This in turn determines how many bank select bits must be decoded.
|
|
|
|
11.5.3 Dynamic RAM Refresh Addresses
|
|
DRAMs (and VRAMs) require periodic refreshing to retain their data. The
|
|
TMS34010 automatically generates DRAM-refresh cycles at regular intervals.
|
|
The interval between refresh cycles is programmable, and DRAM refreshing
|
|
can be disabled in systems that do not require it.
|
|
The TMS34010 can be configured to generate one of two types of DRAM-
|
|
refresh cycle timing:
|
|
|
|
• RAS-only (see Figure 11 -7) or
|
|
• CAS-before- RAS (see Figure 11-8).
|
|
During a RAS-only refresh cycle, the TMS34010 provides the 8-bit row ad-
|
|
dress needed to refresh a particular row within each of the DRAMs in the
|
|
memory system. DRAMs that support CAS-before-RAS cycles each contain
|
|
an on-chip counter which generates the row address needed during the cycle.
|
|
In other words, these devices do not rely on the TMS3401 0 to provide the row
|
|
address during the CAS-before-RAS cycle.
|
|
The row address output by the TMS3401 0 during a DRAM-refresh cycle is the
|
|
same regardless of whether the TMS34010 is configured for RAS-only or
|
|
CAS-before-RAS refresh timing. Since the TMS34010 outputs a valid row
|
|
address during a CAS-before-RAS cycle, a system can contain some DRAMs
|
|
that use CAS-before-RAS refresh timing and others that use RAS-only timing.
|
|
This hybrid approach configures the TMS34010 to perform CAS-before-RAS
|
|
refresh, and relies on external decode logic to prevent the active-low column
|
|
address strobe from reaching those DRAMs that require RAS-only refreshing.
|
|
The decode logic detects the fact that CAS falls before RAS during a CAS-be-
|
|
fore-RAS cycle, and uses this to inhibit transmitting the CAS signal to the
|
|
RAS-only DRAMs.
|
|
|
|
|
|
11-25
|
|
Local Memory Interface Bus - Addressing Mechanisms
|
|
|
|
|
|
Several bits in the CONTROL register determine the manner in which the
|
|
TMS34010 performs DRAM refreshing. The RM bit selects the type of
|
|
DRAM -refresh cycle:
|
|
|
|
• RM=O selects RAS-only cycles
|
|
• RM=1 selects CAS-before-RAS cycles
|
|
The RR bits determine the interval between DRAM-refresh cycles:
|
|
|
|
• RR=002 selects refreshing every 32 local clock periods.
|
|
• RR=012 selects refreshing every 64 local clock periods.
|
|
• RR = 1 02 is a reserved code.
|
|
• RR=112 inhibits DRAM refreshing.
|
|
At reset, internal logic forces the RM bit to 0 and the RR field to 002. While
|
|
the RESET signal to the TMS34010 is active, no DRAM-refresh cycles are
|
|
performed. Following reset, the TMS3401 0 begins to automatically perform
|
|
DRAM-refresh cycles at regular intervals.
|
|
Both the interval between DRAM-refresh cycles and the addresses output
|
|
during the cycles are generated within the REFCNT (DRAM-refresh count)
|
|
register. Bits 2-15 of REFCNT form a continuous binary counter. The RINTVL
|
|
field occupies bits 2-7, and counts the length of the interval between succes-
|
|
sive internal requests for DRAM-refresh cycles. The eight MSBs of REFCNT
|
|
form the ROWADR field, containing the row address output to memory during
|
|
the DRAM~refresh cycle.
|
|
|
|
|
|
|
|
|
|
11-26
|
|
Local Memory Interface Bus - Addressing Mechanisms
|
|
|
|
|
|
GSP
|
|
|
|
|
|
|
|
LAD16 ~ (DRAM Refreah
|
|
Bus Status BIt)
|
|
LAD1oi. ROWADR8 = REFCNT14
|
|
LAD13 ROWADR6 = REFCNT13
|
|
LAD12 ROWADRoi. = REFCNT12. eto.
|
|
LAD11 ROWADR3
|
|
LAD10 ROWADR2
|
|
LAD9 ROWADR1
|
|
LAD8 ROWADRO
|
|
LAD7 ROWADR7
|
|
Example:
|
|
LAD8 ROWADR8 LAD2-LAD9 provide the
|
|
LADS ROWADRS 8-bIt row address to a
|
|
blook of DRAMa or VRAMB.
|
|
LAD4 ROWADR4
|
|
LAD3 ROWADR3
|
|
LAD2 ROWADR2
|
|
LAD1 ROWADR1
|
|
LADO ROWADRO
|
|
|
|
|
|
|
|
|
|
Figure 11-19. Row Address for DRAM-Refresh Cycle
|
|
|
|
|
|
During a DRAM-refresh cycle, the 8-bit row address in the ROWADR field of
|
|
the REFCNT register is output on the LAD pins during the high-to-Iow tran-
|
|
sition of RAS. As shown in Figure 11 -19, the eight bits of ROWADR are out-
|
|
put on LADD-LAD7. The seven LSBs of ROWADR are also output on
|
|
LAD8-LAD14. LAD15 transmits the RF bus status signal, low during the fall
|
|
of RAS. .
|
|
|
|
Assume that LAD2-LAD9 are used as the 8-bit row address by a bank of
|
|
DRAMs, as indicated in Figure 11-19. The address bits output on
|
|
LAD2-LAD9 are the same eight bits output on LADD-LAD7, but in a different
|
|
order. During a series of 256 DRAM-refresh cycles, the row addresses output
|
|
on LADD-LAD7 and LAD2-LAD9 contain the same bits. Thus, if the ad-
|
|
dresses output on LADD-LAD7 cycle through all 256 row addresses then the
|
|
addresses output on LAD2-LAD9 also cycle through all 256 row addresses,
|
|
but in a different order.
|
|
|
|
|
|
|
|
|
|
11-27
|
|
Local Memory Interface Bus - Addressing Mechanisms
|
|
|
|
|
|
|
|
11.5.4 An Example - Memory Organization and Decoding
|
|
As an example, consider a memory organization based on the address decod-
|
|
ing scheme shown in Figure 11 -20. Three logical address bits (4, 21, and 26)
|
|
are used as bank-select bits. Logical address bits 5-12 are used as the 8-bit
|
|
column address, and bits 13-20 are used as the 8-bit row address. Referring
|
|
to Figure 11 -18, the row and column addresses are multiplexed out on the
|
|
same eight pins, LAD1-LAD8. The total number of address bits used to ad-
|
|
dress external memory is 19, for a total address reach of one megabyte. The
|
|
remaining address bits output by the TMS3401 0 are not used for this example.
|
|
|
|
~1f------------32-B1t Logical Addreas-----------~~
|
|
3222120191817161614131211109876
|
|
|
|
v v
|
|
Don' 8-B1t Row 8-BIt Column
|
|
Care Addreas Addreas
|
|
|
|
Bank Bank Bank
|
|
Select Select Select
|
|
BIt 2 Bit 1 BIt 0
|
|
(882) (881) (SSe)
|
|
|
|
Figure 11-20. Address Decode for Example System
|
|
|
|
|
|
Bank select bit 2 (BS2) in Figure 11-20 selects between the display memory
|
|
(BS2=O) and the system memory (8S2=1). System memory is a block of
|
|
conventional DRAM (such as the TMS4256 and TMS4C1 024) used for pro-
|
|
gram and data storage. BS2 becomes valid before RAS falls, and thus can be
|
|
used to determine whether the row-address strobe is gated to the display
|
|
memory or to the system memory. The average power dissipation is reduced
|
|
because only one or the other (the display memory or the system memory) is
|
|
enabled during a particular memory read or write cycle.
|
|
Figure 11-21 shows the structure of the display memory. Its dimensions are
|
|
1024 by 1024 at four bits per pixel. Bank select bit 1 (BS1) selects between
|
|
the top (BS1 =0) and bottom (BS1 =1) halves of the display memory. Since
|
|
BS1 becomes valid before the fall of RAS, it can be used to gate RAS to either
|
|
the upper or lower half of the display memory during a memory read or write
|
|
cycle. By transmitting the row address strobe to only half of the display me-
|
|
mory, the power dissipation for the cycle is significantly reduced.
|
|
Bank select bit 0 (BSO) selects between the even word and odd word of each
|
|
pair of adjacent words in the display memory. Each word contains four adja-
|
|
cent pixels. Odd and even words are stored in two separate banks of VRAMs,
|
|
and the decode logic gates the column address strobe to the selected bank
|
|
only. The row address strobe is gated to both banks (odd and even words).
|
|
This increases the power dissipation over that required if only one bank were
|
|
active. A compensating benefit of this organization, however, is that it reduces
|
|
the rate at which each VRAM must supply serial data to refresh the screen.
|
|
During screen refresh, the bank containing the even words and the bank con-
|
|
taining the odd words alternately provide data to the video monitor. Alter-
|
|
nating between the two banks in this fashion reduces the data bandwidth
|
|
|
|
|
|
|
|
11-28
|
|
Local Memory Interface Bus - Addressing Mechanisms
|
|
|
|
|
|
|
|
requirements of each bank to about 10M Hz, which is an eighth of the video
|
|
bandwidth.
|
|
Even Word Odd Word
|
|
(SSO = 0) (880 = 1)
|
|
|
|
|
|
/'\
|
|
(
|
|
//
|
|
/ /' /'
|
|
|
|
|
|
T
|
|
512 Unes
|
|
• l~ J
|
|
|
|
|
|
~r)
|
|
,I
|
|
|
|
|
|
|
|
512 Unes
|
|
|
|
~rfl
|
|
- - - 1 0 2 4 Pixels per Une
|
|
14'1_ -----1~-~ BIts
|
|
per Pixel
|
|
|
|
Figure 11-21. Display Memory Dimensions for the Example
|
|
|
|
|
|
The decode logic must be capable of more than just selecting a particular bank
|
|
of the display memory or system memory during a memory read or write cycle.
|
|
It must also be capable of enabling all DRAMs and VRAMs during a
|
|
DRAM-refresh cycle, and enabling all VRAMs during a screen-refresh (me-
|
|
mory-to-register) cycle. This means that the decode logic must distinguish
|
|
DRAM-refresh and screen-refresh cycles from memory access cycles, and
|
|
during a refresh cycle broadcast the row and column address strobes to all
|
|
devices that require them. The timing of the RF and TR bus status bits has
|
|
been designed to make these signals convenient for the design of the decode
|
|
logic ..
|
|
During a read or write cycle, the value of 8S2, output with the row address,
|
|
determines whether RAS is gated to the display memory or to system memory.
|
|
During a DRAM-refresh cycle, the decode logic must broadcast the row-
|
|
address strobe to all dynamic RAMs (including the VRAMs). The decode
|
|
logic must be able to determine prior to the fall of the row address strobe
|
|
whether the cycle that is beginning is a DRAM-refresh cycle, or a memory read
|
|
or write cycle. This is the reason the TMS34010 outputs the RF bus status
|
|
signal prior to the fall of RAS.
|
|
The decode logic uses the value of BS1 to determine whether the top or bot-
|
|
tom half of the display memory receives an active row-address strobe during
|
|
a memory read or write cycle. The same logic must also be capable of broad-
|
|
casting RAS to all VRAMs during either a DRAM-refresh cycle or a register-
|
|
transfer cycle. The decode logic therefore monitors the state of the
|
|
TMS3401 O's TR/OE output prior to the fall of RAS. A low level on TR/OE in-
|
|
dicates that the cycle just beginning is a register-transfer cycle, and that RAS
|
|
should be broadcast.
|
|
|
|
|
|
|
|
11-29
|
|
Local Memory Interface Bus - Addressing Mechanisms
|
|
|
|
|
|
While the decode logic uses the value of BSO to determine whether the even
|
|
or odd word receives a column-address strobe during a read or write cycle
|
|
involving the display memory, the same logic must be capable of broadcasting
|
|
CAS to all VRAMs during a screen-refresh cycle. Rather than require an ex-
|
|
ternal latch to capture the state of the TR/QE during the fall of RAS, the
|
|
TMS34010 outputs the same information a second time in the form of the TR
|
|
bus status signal, which is valid prior to and during the fall of CAS.
|
|
|
|
|
|
|
|
|
|
11-30
|
|
Section 12
|
|
TMS34010 Instruction Set
|
|
|
|
|
|
This section contains the TMS34010 instruction set (in alphabetical order).
|
|
Related subjects, such as addressing modes, are presented first.
|
|
Section Page
|
|
12.1 Style and Symbol Conventions .......................................................... 12-2
|
|
12.2 Addressing Modes and Operand Formats ........................................ 12-4
|
|
12.3 Instruction Set Summary Table ....................................................... 12-12
|
|
12.4 Arithmetic, Logical, and Compare Instructions ............................. 12-19
|
|
12.5 Move Instructions Summary ............................................................ 12-20
|
|
12.6 Graphics Instructions Summary ....................................................... 12-26
|
|
12.7 Program Control and Context Switching Instructions ................. 12-29
|
|
12.8 Shift Instructions ............................................................................... 12-32
|
|
12.9 XY Instructions ................................................................................... 12-33
|
|
12.10 Alphabetical Reference of Instructions ........................................... 12-34
|
|
|
|
|
|
|
|
|
|
12-1
|
|
Instruction Set - Style and Symbol Conventions
|
|
|
|
|
|
|
|
12.1 Style and Symbol Conventions
|
|
Table 12-1 defines symbols and abbreviations that are used throughout this
|
|
section; the list following the table describes style conventions used in the
|
|
instruction set descriptions. Section 12.2 (page 12-4) defines the symbols
|
|
that indicate various addressing modes.
|
|
Table 12-1. Instruction Set Symbol and Abbreviation Definitions
|
|
|
|
Symbol Definition Symbol Definition
|
|
Rs Source register Rd Destination register
|
|
RsX X half of source register RsY Y half of source register
|
|
RdX X half of destination register RdY Y half of destination register
|
|
An Register n in register file A Bn Register n in register file B
|
|
PC Program counter PC' PC prime, specifies the address of
|
|
Rp Pointer register the next instruction (current PC +
|
|
length of the current instruction)
|
|
|
|
ST Status Register SP Stack pointer (A15 or B15)
|
|
C Carry bit N Sign bit
|
|
V Overflow bit Z Zero bit
|
|
IE Global interrupt enable bit TOS Top of stack
|
|
SAddress Source address DAddress Destination address
|
|
SOffset Source offset DOffset Destination offset
|
|
LSB Least significant bit MSB Most significant bit
|
|
MSW Most significant word LSW Least significant word
|
|
IW 16-bit immediate value IL 32-bit immediate value
|
|
K 5- bit constant cc Condition code for a jump
|
|
F Optional field select parameter R Register file select, indicates
|
|
for MOVE instructions, which register file (A or B) the
|
|
F=O selects FSO/FEO, and operand registers are in. R=O
|
|
F=1 selects FS1/FE1 specifies register file A, R=1
|
|
specifies register file B
|
|
|
|
|
|
Program listings, coding examples, filenames, and symbol names are shown
|
|
in a special font. Some examples and listings use a bold version of
|
|
the special font for emphasis. Here is a sample program listing:
|
|
0011 00000210 0001 .field 1, 2
|
|
0012 00000212 0003 .field 3, 4
|
|
0013 00000215 0006 .field 6, 3
|
|
0014 00000220 .even
|
|
In syntax descriptions, the font indicates which parts of the syntax must
|
|
be entered as shown, and which parts act as place holders indicating the type
|
|
of information that should be entered. In addition, square brackets identify
|
|
optional parameters.
|
|
|
|
• The instruction and any part of the instruction that should be entered as
|
|
shown are in a bold face. Parameters that describe the type of infor-
|
|
mation that should be entered are in italics. Here is an example of an
|
|
instruction syntax:
|
|
|
|
|
|
12-2
|
|
Instruction Set - Style and Symbol Conventions
|
|
|
|
|
|
CVXVL Rs, Rd
|
|
CVXVL is an instruction that has two parameters, Rs and Rd Rs and Rd
|
|
are abbreviations for source register and destination register; when you
|
|
use CVXYL, these parameters must be real register names (such as AO,
|
|
B1, etc.). Applying these rules, a valid CVXYL instruction is CVXYL AO,
|
|
A3.
|
|
|
|
Another example of an instruction syntax is:
|
|
PIXBLT B,XV
|
|
In this case, B and XV do not specify values or data; they specify the
|
|
type of PIXBLT instruction, and the instruction should be entered as
|
|
shown: PIXBLT B,XY.
|
|
|
|
• Square brackets ( [ and ] ) identify an optional parameter. Here's an
|
|
example of an instruction that has an optional parameter:
|
|
CMPI IW, Rd [, W}
|
|
The CM PI instruction has three parameters. The first two parameters,
|
|
IW and Rd, indicate a 16-bit value and a destination register; these pa-
|
|
rameters are required. The third parameter, W, is optional. As this syntax
|
|
shows, if you use the optional third parameter, you must precede it with
|
|
a comma.
|
|
Each instruction contains an instruction execution field that describes the
|
|
actions that occur during instruction execution. These descriptions the fol-
|
|
lowing symbols and conventions:
|
|
|
|
• The -+ symbol means becomes the contents of. For example, Rs -+ PC
|
|
means that the contents of the source register become the contents of
|
|
the PC; that is, the contents of the source register are copied into the
|
|
PC.
|
|
|
|
• The I I symbols indicate an absolute value.
|
|
|
|
• The: symbol indicates concatenation. For example, Rd:Rd+ 1 identifies
|
|
the concatenation of two consecutive registers, such as AO and A 1.
|
|
Numeric constants such as hexadecimal, octal, and binary numbers are
|
|
identified by a letter suffix. Valid suffixes include:
|
|
|
|
• b or B (binary)
|
|
• q or Q (octal)
|
|
• h or H (hexadecimal)
|
|
Decimal constants have no suffix. Note that all constants must start with a
|
|
numeral; for example, ABCDh is an illegal constant; OABCDh is the legal form.
|
|
|
|
|
|
|
|
|
|
12-3
|
|
Instruction Set - Addressing Modes
|
|
|
|
|
|
|
|
12.2 Addressing Modes and Operand Formats
|
|
The TMS34010 instruction set supports eight addressing modes. Most in-
|
|
structions have register-direct operands or a combination of register-direct and
|
|
immediate operands; however, the move and graphics instructions use more
|
|
complex combinations of operands. This section discusses the TMS34010
|
|
addressing modes, and defines the symbols used in instruction syntax to in-
|
|
dicate an addressing mode.
|
|
|
|
12.2.1 Immediate Values and Constants
|
|
An instruction syntax may use one of these symbols to indicate an immediate
|
|
source operand:
|
|
IW is a 16-bit (short) signed immediate value.
|
|
IL is a 32-bit (long) signed immediate value.
|
|
K is a 5-bit constant.
|
|
Instructions that have immediate source operands have register-direct desti-
|
|
nation operands. Many instructions that have an immediate value can use ei-
|
|
ther a short or a long value.
|
|
Figure 12-1 illustrates a MOVI (move immediate) instruction whose first op-
|
|
erand is a 32-bit immediate value. The syntax for this MOVI is:
|
|
MOVI IL, Rd [, lJ
|
|
The instruction in Figure 12-1 is:
|
|
MOVI OFCOh, A2, L
|
|
Figure 12-1 shows the object code (at address N) in memory and the effect
|
|
of the instruction on the CPU registers. The value OFCOh is copied into reg-
|
|
ister A2 as a zero-extended 32-bit value. (Note that this is a 2-word in-
|
|
struction; the next instruction to be executed is at address N=2.)
|
|
Memory CPU Registers
|
|
/~O 31 o
|
|
15 ;'
|
|
\
|
|
r - .....
|
|
I L J AO
|
|
I I I J A1
|
|
I •••• •• A2
|
|
MOVI OFCOOh, A2,L { N+ ~ 09E2h
|
|
FCOOh ~ I l
|
|
N+2 next A14
|
|
instruction
|
|
I I
|
|
I'
|
|
60
|
|
|
|
|
|
|
|
1---------;I~pTC:4
|
|
N . PC'=N+2
|
|
|
|
Figure 12-1. An Example of Immediate Addressing
|
|
|
|
|
|
|
|
|
|
12-4
|
|
Instruction Set - Addressing Modes
|
|
|
|
|
|
|
|
12.2.2 Absolute Addresses
|
|
An instruction syntax may use one of these symbols to indicate an absolute
|
|
operand:
|
|
@SAddress is a source address that contains the source data.
|
|
@DAddress is a destination address.
|
|
Note that the @ character is entered as part of the operand (this distinguishes
|
|
it from an immediate operand).
|
|
Figure 12-2 illustrates a MOVB (move byte) instruction that has an absolute
|
|
operand (the first parameter is a 32-bit source address). The syntax for this
|
|
MOVB is:
|
|
MOVB @SAddress, Rd
|
|
The instruction in Figure 12-2 is:
|
|
MOVB @RoutineA, A13
|
|
|
|
Figure 12-2 shows the object code (at address N) in memory and the effect
|
|
of the instruction on the CPU registers. @RoutineA is the address of a byte;
|
|
this MOVB instruction copies the byte at address RoutineA into register A13.
|
|
(Note that this is a 3-word instruction; the next instruction to be executed is
|
|
at address N=3.)
|
|
|
|
|
|
|
|
|
|
Memory CPU Registers
|
|
31 o
|
|
1--------11I A~.
|
|
N 07EDh
|
|
MOVB@RoutineA, A13 N+ 1 RoutineA (MSW) r-~__I·II·I·I·II·I·IIII.._A13
|
|
{ N+2~~R-ou~ti~ne-A~(L~SW~)~ ~------------~A14
|
|
N+3~~~n~ex~t~~~ ~------------__iBO
|
|
|
|
B~4
|
|
instruction
|
|
'
|
|
RoutineA fZ~~~~~~~--_J
|
|
|
|
|
|
-----_ ... :~=~=~=~= = = =:N=:= -=-=-=-=-=-=-=-=-=-=~ E ~
|
|
I PC' N+ 3
|
|
|
|
"- ." .....
|
|
|
|
|
|
|
|
|
|
Figure 12-2. An Example of Absolute Addressing
|
|
|
|
|
|
|
|
12-5
|
|
Instruction Set - Addressing Modes
|
|
|
|
|
|
|
|
12.2.3 Register-Direct Operands
|
|
An instruction syntax may use one of these symbols to indicate a register-
|
|
direct operand:
|
|
Rs is a source register that contains the source data.
|
|
Rd is a destination register that will contain the result.
|
|
When both operands of an instruction are register-direct operands, the regis-
|
|
ters must be in the same file. (The MOVE Rs,Rd instruction is an exception
|
|
to this rule.)
|
|
Figure 12-3 illustrates a MOVE (move field) instruction that has two regis-
|
|
ter-direct operands. The syntax for this MOVE is:
|
|
MOVE Rs, Rd [, FJ
|
|
The example shows this instruction:
|
|
MOVE AO, Bl
|
|
Figure 12-3 shows the object code (at address N) in memory and the effect
|
|
of the instruction on the CPU registers. Assume that the field size for the move
|
|
is 32 bits; the entire contents of register AO are copied into register B1. (Note
|
|
that this is a 1 -word instruction; the next instruction to be executed is at ad-
|
|
dress N=1.)
|
|
|
|
|
|
|
|
|
|
CPU Registers
|
|
31 0
|
|
FCOOOCOOh AO
|
|
Memory
|
|
|
|
115_/-~ A14
|
|
80
|
|
I I 81
|
|
MOVE AO, Bl{ N 4E01h
|
|
next
|
|
I .
|
|
|
|
|
|
|
|
I~r
|
|
N+1 instruction
|
|
__I
|
|
l
|
|
'-- /"
|
|
N PC' = N+ 1
|
|
|
|
|
|
|
|
|
|
Figure 12-3. An Example of Register-Direct Addressing
|
|
|
|
|
|
|
|
|
|
12-6
|
|
Instruction Set - Addressing Modes
|
|
|
|
|
|
|
|
12.2.4 Register-Indirect Operands
|
|
An instruction syntax may use one of these symbols to indicate a register-
|
|
indirect operand:
|
|
* Rs is a register that contains the address of the source data.
|
|
* Rd is a register that contains the destination address.
|
|
Note that the * character is entered as part of the operand (this distinguishes
|
|
it from a register-direct operand).
|
|
Figure 12-4 illustrates a MOVE (move field) instruction that has two regis-
|
|
ter-indirect operands. The syntax for this MOVE is:
|
|
MOVE *Rs, *Rd
|
|
The example shows this instruction:
|
|
MOVE *A4, *A3
|
|
Figure 12-4 shows the object code (at address N) in memory and the effect
|
|
of the instruction on the destination address. The contents of register A4
|
|
specify the address of data to be moved; the contents of register A3 specify
|
|
the destination address. Assume that the field size for the move is 16 bits; the
|
|
16 bits of data at *A4 is moved to the location at *A3 .. (Note that this is a
|
|
1 -word instruction; the next instruction to be executed is at address N=1.)
|
|
|
|
|
|
|
|
|
|
Memory 0
|
|
15 ",,/,-,
|
|
r-..... ,
|
|
MOVE *A4, *A3 < N
|
|
N+1
|
|
8883h
|
|
next
|
|
31
|
|
CPU Registers
|
|
0
|
|
AO
|
|
instruction
|
|
|
|
'-- .....
|
|
" ,_ ..... )1
|
|
OOOOAOOOh
|
|
OOQOC080h
|
|
A3
|
|
1--"", A4
|
|
I '_ ..... 1 1
|
|
1 I
|
|
|
|
OOOOAOOOh
|
|
1 I
|
|
1~?4
|
|
1.
|
|
OOOOC080h __ I
|
|
,-..... /""" N
|
|
IE4 PC' = N+ 1
|
|
|
|
|
|
|
|
|
|
Figure 12-4. An Example of Register-Indirect Addressing
|
|
|
|
|
|
|
|
12-7
|
|
Instruction Set - Addressing Modes
|
|
|
|
|
|
|
|
12.2.5 Register-Indirect with Offset
|
|
An instruction syntax may use one of these symbols to indicate a register-
|
|
indirect operand that uses a signed offset:
|
|
*Rs(offset) is a source address formed by adding an offset to the contents
|
|
of the source register.
|
|
* Rd(offset) is a destination address formed by adding an offset to the
|
|
contents of the destination register.
|
|
The offset is only used to form an address - the contents of the register are
|
|
not affected. Note that the * character is entered as part of the operand. If
|
|
both operands use offsets, the syntax may list the operands as *Rs(SOffset)
|
|
or * Rd(DOffset).
|
|
Figure 12-5 illustrates a MOVE (move field) instruction; the first operand of
|
|
this instruction is a register-direct operand; the second operand is a register-
|
|
indirect operand with an offset. The syntax for this MOVE is:
|
|
MOVE Rs, *Rd(offsetj [, FJ
|
|
The example shows this instruction:
|
|
MOVE B5, *B7(32)
|
|
Figure 12-5 shows the object code (at address N) in memory and the effect
|
|
of the instruction on the destination location. The destination address is spe-
|
|
cified by adding the offset (32 bits, which is equivalent to 2 words) to the
|
|
contents of register 87; this yields a destination location of 05020h. Assume
|
|
that the field size for the move is 16 bits; the 16 LS8s in register 85 are copied
|
|
into the destination location. (Note that this is a 2-word instruction; the next
|
|
instruction to be executed is at address N=2.)
|
|
|
|
Memory
|
|
o
|
|
15 .,/--"';:
|
|
1-- \ CPU Registers
|
|
31 o
|
|
MOVE ".'.7(32).1 { N+ ~ :~~~ t--------IIA~
|
|
next 1.
|
|
N+2
|
|
~------------~1~4
|
|
instruction
|
|
|
|
|
|
|
|
I 1:
|
|
I '-. . .1 ,.---- 1234ABCDh B5
|
|
I I B6
|
|
|
|
I
|
|
00005000h
|
|
+20h I I
|
|
0OOO5000h
|
|
I
|
|
B7
|
|
|
|
|
|
'-v-'! I ~~4
|
|
1
|
|
00005020h ~:111!1'
|
|
I
|
|
SP
|
|
~=======_N-_-_-_-_-_-_---,-I PC pC' = N+ 2
|
|
Figure 12-5. An Example of Register-Indirect with Offset
|
|
Addressing
|
|
|
|
|
|
|
|
|
|
12-8
|
|
Instruction Set - Addressing Modes
|
|
|
|
|
|
|
|
12.2.6 Register-Indirect with Postincrement
|
|
An instruction syntax may use one of these symbols to indicate a register-
|
|
indirect operand that is postincremented:
|
|
* Rs+ is a register that contains the address of the source data.
|
|
* Rd+ is a register that contains the destination address.
|
|
After the operation is performed, the contents of the specified source or des-
|
|
tination register are incremented by the field size used for the operation.
|
|
Note that the * and + characters are entered as part of the operand.
|
|
Figure 12-6 illustrates a MOVE (move field) instruction; both the source and
|
|
the destination operands are postincremented register-indirect operands. The
|
|
syntax for this MOVE is:
|
|
MOVE *Rs+, *Rd+ [, FJ
|
|
The example shows this instruction:
|
|
MOVE *B4+ I *B14+
|
|
|
|
Figure 12-6 shows the object code (at address N) in memory and the effect
|
|
of the instruction on the destination location and the CPU registers. The
|
|
contents of register B4 are the address of the source data; the contents of re-
|
|
gister B14 specify the destination address. Assume that the field size for the
|
|
move is 16 bits; the 16 bits of data at the source address are copied into the
|
|
destination location. After the move, both registers are incremented by 16 bits
|
|
(1 word). (Note that this is a 1-word instruction; the next instruction to be
|
|
executed is at address N=1.)
|
|
|
|
|
|
|
|
15
|
|
Memory
|
|
|
|
,,"
|
|
_,0 CPU Registers
|
|
o
|
|
MOVE *B4+ ,*B14+ < N
|
|
N+1
|
|
r--
|
|
989Eh
|
|
next
|
|
31
|
|
~ ____--IIA~
|
|
I :
|
|
~------------------~1~4
|
|
instruction
|
|
|
|
|
|
|
|
o0 0 0 1 0 2 0 h IB4
|
|
10h"w.,.,
|
|
I--~;...;;.....::.......;.....;:;....;;...;;....;.;....---t .
|
|
~
|
|
.•.eH·.,.,W
|
|
+
|
|
After Move
|
|
I .
|
|
1---=0-::C:-:O:-:O:-:O~0::-2=-0=-=-0":'""h--t Bi 4 + 10h'E.,•.•,.,fi',iM
|
|
I--------------------~Sp
|
|
ST ~ After Move
|
|
|
|
~______~N~______~PC PC'=N+1
|
|
coo 0 0 2 0 0 h.ma.~--.J
|
|
|
|
|
|
|
|
|
|
Figure 12-6. An Example of Register-Indirect with Postincrement
|
|
Addressing
|
|
|
|
|
|
|
|
|
|
12-9
|
|
Instruction Set - Addressing Modes
|
|
|
|
|
|
|
|
12.2.7 Register-Indirect with Predecrement
|
|
An instruction syntax may use one of these symbols to indicate a register-
|
|
indirect operand that is predecremented.
|
|
Before the operation is performed, the contents of the specified source or
|
|
destination register are decremented by the field size used for the operation.
|
|
* -Rs the decremented register contents are the address of the source data.
|
|
* -Rd the decremented register contents specify the destination address.
|
|
Note that the * and - characters are entered as part of the operand.
|
|
Figure 12-7 illustrates a MOVE (move field) instruction; the source operand
|
|
is a register-direct operand the the destination operand is a predecremented
|
|
register-indirect operand. The syntax for this MOVE is:
|
|
MOVE Rs, *-Rd r FJ
|
|
The example shows this instruction:
|
|
MOVE A4, *-A3
|
|
Figure 12-7 shows the object code (at address N) in memory and the effect
|
|
of the instruction on the destination location and the CPU registers. Assume
|
|
that the field size for the move is 16 bits. Register A4 contains the source data.
|
|
The contents of register A3, minus the field size (16 bits, or 1 word) form the
|
|
destination address - 5150h. The 16 LSBs in A4 are copied to address 5150h.
|
|
(Note that this is a 1 -word instruction; the next instruction to be executed is
|
|
at address N=1.)
|
|
|
|
|
|
|
|
Memory
|
|
o
|
|
15 .,,/~' CPU Registers
|
|
|
|
MOVE A4,*A3 <
|
|
J.
|
|
N+1
|
|
N
|
|
1--
|
|
A083h
|
|
next
|
|
instruction
|
|
l
|
|
|
|
A3LI~o~o~O~O~5~1~6~O~h~
|
|
31
|
|
|
|
|
|
|
|
••••
|
|
0
|
|
|
|
IA~
|
|
A3
|
|
Before Move ABCD2222h A4
|
|
|
|
|
|
|
|
I~-
|
|
I
|
|
|
|
|
|
|
|
N
|
|
lE- PC'=N+1
|
|
|
|
|
|
|
|
|
|
Figure 12-7. An Example of Register-Indirect with Predecrement
|
|
Addressing
|
|
|
|
|
|
|
|
|
|
12-10
|
|
Instruction Set - Addressing Modes
|
|
|
|
|
|
|
|
12.2.8 Register-Indirect in XV Mode
|
|
An instruction syntax may use one of these symbols to indicate that the a re-
|
|
gister operands contains an XY address.
|
|
*Rs.XV is a register that contains the XY address of the source data.
|
|
* Rd.XV is a register that contains the XY destination address.
|
|
Note that the * and .XV characters are entered as part of the operand. Here's
|
|
an example that uses an indirect-XV destination operand:
|
|
PIXT AO, *A6.XY
|
|
This instruction moves the contents of register AO into the XY address speci-
|
|
fied by the contents of register A6.
|
|
|
|
|
|
|
|
|
|
12-11
|
|
Instruction Set - Summary Table
|
|
|
|
|
|
|
|
12.3 Instruction Set Summary Table
|
|
|
|
|
|
Arithmetic, Logical, and Compare Instructions
|
|
Machine 16-Bit Opcode
|
|
Syntax and Description Words States MSB LSB
|
|
ABSRd 1 1,4 0000 0011 100R DODD
|
|
Store absolute value
|
|
ADD Rs, Rd 1 1,4 0100 0005 SSSR DODD
|
|
Add registers
|
|
ADDC Rs, Rd 1 1,4 0100 001S SSSR DODD
|
|
Add registers with carry
|
|
ADDIIW, Rd 2 2,8 0000 1011 OOOR DODD
|
|
Add immediate (16 bits)
|
|
ADDIIL, Rd 3 3,12 0000 1011 001R DODD
|
|
Add immediate (32 bits)
|
|
ADDK K, Rd 1 1,4 0001 OOKK KKKR DODD
|
|
Add constant (5 bits)
|
|
ADDXY Rs, Rd 1 1,4 1110 0005 SSSR DODD
|
|
Add registers in XY mode
|
|
AND Rs, Rd 1 1,4 0101 OOOS SSSR DODD
|
|
AND registers
|
|
ANDIIL, Rd 3 3,12 0000 1011 100R DODD
|
|
AND immediate (32 bits)
|
|
ANON Rs, Rd 1 1,4 0101 001S SSSR DODD
|
|
AND register with complement
|
|
ANDNIIL, Rd 3 3,12 0000 1011 100R DODD
|
|
AND not immediate (32 bits)
|
|
BTST K, Rd 1 1,4 0001 11 KK KKKR DODD
|
|
Test register bit, constant
|
|
BTST Rs, Rd 1 2,5 0100 101S SSSR DODD
|
|
Test register bit, register
|
|
CLR Rd 1 1,4 0101 011 D DO DR DODD
|
|
Clear register
|
|
CLRC 1 1,4 0000 0011 0010 0000
|
|
Clear carry
|
|
CMP Rs, Rd 1 1,4 0100 100S SSSR DODD
|
|
Compare registers
|
|
CMPI/W, Rd 2 2,8 0000 101 1 010R DODD
|
|
Compare immediate (16 bits)
|
|
CMPI/L, Rd 3 3,12 0000 1011 011 R DODD
|
|
Compare immediate (32 bits)
|
|
CMPXY Rs, Rd 1 3,6 1110 010S SSSR DDDD
|
|
Compare X and Y halves of registers
|
|
DECRd 1 1,4 0001 0100 001R DDDD
|
|
Decrement register
|
|
|
|
|
|
|
|
|
|
12-12
|
|
Instruction Set - Summary Table
|
|
|
|
|
|
|
|
Arithmetic. Logical. and Compare Instructions (Continued)
|
|
Machine 16- Bit Opcode
|
|
Syntax and Description Words States MSB LSB
|
|
DIVS Rs, Rd 1 40,43 II 0101 100S SSSR DODD
|
|
Divide registers signed 39,42
|
|
DIVU Rs, Rd 1 37,40 0101 101 S SSSR DODD
|
|
Divide registers unsigned
|
|
LMO Rs, Rd 1 1,4 0110 101 S SSSR DODD
|
|
leftmost one
|
|
MODS Rs, Rd 1 40,43 0110 110S SSSR DODD
|
|
Modulus signed
|
|
MODU Rs, Rd 1 35,38 0110 111 S SSSR DODD
|
|
Modulus unsigned
|
|
MPYS Rs, Rd 1 20,23 0101 110S SSSR DODD
|
|
Multiply registers (signed)
|
|
MPYU Rs, Rd 1 21,24 0101 111 S SSSR DODD
|
|
Multiply registers (unsigned)
|
|
NEG Rd 1 1,4 0000 0011 101 R DODD
|
|
Negate register
|
|
NEGB Rd 1 1,4 0000 0011 110 R DODD
|
|
Negate register with borrow
|
|
NOTRd 1 1,4 0000 0011 111 R DODD
|
|
Complement register
|
|
OR Rs, Rd 1 1,4 0101 010S SSSR DODD
|
|
OR registers
|
|
ORIIL, Rd 3 3,12 0000 1011 101 R DODD
|
|
OR immediate (32 bits)
|
|
SETC 1 1,4 0000 1101 11 1 0 0000
|
|
Set carry
|
|
SEXT Rd, F 1 3,6 0000 01 F 1 OOOR DODD
|
|
Sign extend to long
|
|
SUB Rs, Rd 1 1,4 0100 010S SSSR DODD
|
|
Subtract registers
|
|
SUBB Rs, Rd 1 1,4 0100 011S SSSR DODD
|
|
Subtract registers with borrow
|
|
SUBI/W, Rd 2 2,8 0000 1011 111 R DODD
|
|
Subtract immediate (16 bits)
|
|
SUBIIL, Rd 3 3,12 0000 1101 OOOR DODD
|
|
Subtract immediate (32 bits)
|
|
SUBK K, Rd 1 1,4 0001 01KK KKKR DODD
|
|
S.ubtract constant (5 bits)
|
|
SUBXY Rs, Rd 1 1,4 1110 001S SSSR DODD
|
|
Subtract registers in XY mode
|
|
XOR Rs, Rd 1 1,4 0101 011S SSSR DODD
|
|
Exclusive OR registers
|
|
XORIIL, Rd 3 3,12 0000 1011 1100 DODD
|
|
Exclusive OR immediate value (32 bits)
|
|
ZEXT Rd, F 1 1,4 0000 01 F 1 001R DODD
|
|
Zero extend to long
|
|
II Rd even/Rd odd
|
|
|
|
|
|
12-13
|
|
Instruction Set - Summary Table
|
|
|
|
|
|
|
|
Move Instructions
|
|
Machine 16- Bit Opcode
|
|
Syntax and Description Words States MSB LSB
|
|
MMFM Rs [, List} 2 t 0000 1001 101 R DODD
|
|
Move multiple registers from memory
|
|
M MTM Rs {, List} 2 t 0000 1001 100R DODD
|
|
Move multiple registers to memory
|
|
MOVB Rs, *Rd 1 11' 1000 110S SSSR DODD
|
|
Move byte, register to indirect
|
|
MOVB *Rs, Rd 1 11' 1000 111 S SSSR DODD
|
|
Move byte, indirect to register
|
|
*
|
|
MOVB Rs, Rd * 1 11' 1001 110S SSSR DODD
|
|
Move byte, indirect to indirect
|
|
MOVB Rs, *Rd(offsetj 2 11' 1010 110S SSSR DODD
|
|
Move byte, register to indirect with offset
|
|
MOVB *Rs(offsetj, Rd 2 11' 1010 111 S SSSR DODD
|
|
Move byte, indirect with offset to register
|
|
* *
|
|
MOVB Rs(SOffset), Rd(DOffsetj 3 11' 1011 110S SSSR DODD
|
|
Move byte, indirect with offset to
|
|
indirect with offset
|
|
MOVB Rs, @DAddress 3 11' 0000 0101 111 R SSSS
|
|
Move byte, register to absolute
|
|
MOVB @SAddress, Rd 3 11' 0000 0111 111 R DODD
|
|
Move byte, absolute to register
|
|
MOVB @SAddress, @DAddress 5 11' 0000 0011 0100 0000
|
|
Move byte, absolute to absolute
|
|
MOVE Rs, Rd 1 1,4 0100 11MS SSSR DODD
|
|
Move register to register
|
|
*
|
|
MOVE Rs, Rd {, F} 1 11' 1000 OOFS SSSR DODD
|
|
Move field, register to indirect
|
|
MOVE Rs, -*Rd {, F}
|
|
Move field, register to indirect (predecrement)
|
|
1
|
|
'" 1010 OOFS SSSR DODD
|
|
|
|
* OOFS SSSR DODD
|
|
MOVE Rs, Rd+ {, F}
|
|
Move field, register to indirect (postincrement)
|
|
1
|
|
'" 1 001
|
|
|
|
MOVE * Rs, Rd {, F} 1 11' 1000 01FS SSSR DODD
|
|
Move field, indirect to register
|
|
MOVE -*Rs, Rd {, F} 1 11' 1010 01FS SSSR DODD
|
|
Move field, indirect (predecrement) to register
|
|
01FS SSSR DODD
|
|
MOVE *Rs+, Rd {, F}
|
|
Move field, indirect (postincrement) to register
|
|
1
|
|
'" 1 001
|
|
|
|
t See instruction
|
|
'" See Section 13.2, MOVE and MOVB Instructions Timing
|
|
|
|
|
|
|
|
|
|
12-14
|
|
Instruction Set - Summary Table
|
|
|
|
|
|
|
|
Move Instructions (Continued)
|
|
Machine 16- Bit Opcode
|
|
Syntax and Description Words States MSB LSB
|
|
MOVE *Rs, *Rd FJ r 1 11' 1000 10FS SSSR DODD
|
|
Move field, indirect to indirect
|
|
MOVE -*Rs, -*Rd [, FJ 1 11' 1010 10FS SSSR DODD
|
|
Move field, indirect (predecrement) to
|
|
indirect (predecrement)
|
|
MOVE * Rs+, * Rd+ [, FJ 1 11' 1001 10FS SSSR DODD
|
|
Move field, indirect (postincrement) to
|
|
indirect (postincrement)
|
|
MOVE Rs, * Rd(offset) [, FJ 2 11' 1011 OOFS SSSR DODD
|
|
Move field, register to indirect with offset
|
|
MOVE *Rs(offset), Rd [, FJ 2 11' 1011 01FS SSSR DODD
|
|
Move field, indirect with offset to register
|
|
MOVE *Rs(offset), *Rd+ [, FJ 2 11' 1101 OOFS SSSR DODD
|
|
Move field, indirect with offset to
|
|
indirect (postincrement)
|
|
MOVE * Rs(SOffset), * Rd(DOffset) [, FJ 3 11' 1011 10FS SSSR DODD
|
|
Move field, indirect with offset to
|
|
indirect with offset
|
|
MOVE Rs, @DAddress [, FJ 3 11' 0000 01 F 1 100R SSSS
|
|
Move field, register to absolute
|
|
MOVE @SAddress, Rd [, FJ 3 11' 0000 01 F1 101 R DODD
|
|
Move field, absolute to register
|
|
MOVE @SAddress, * Rd+ [, FJ 3 11' 1101 01FO OOOR DODD
|
|
Move field, absolute to indirect (postincrement
|
|
MOVE @SAddress, @DAddress [, FJ 5 11' 0000 01 F 1 1100 0000
|
|
Move field, absolute to absolute
|
|
MOVI/W, Rd 2 2,8 0000 1001 110 R DODD
|
|
Move immediate (16 bits)
|
|
MOVIIL, Rd 3 3,12 0000 1001 111 R DODD
|
|
Move immediate (32 bits)
|
|
MOVKK, Rd 1 1,4 0001 10KK KKKR DODD
|
|
Move constant (5 bits)
|
|
MOVX Rs, Rd 1 1,4 1110 110S SSSR DODD
|
|
Move X half of register
|
|
MOVY Rs, Rd 1 1,4 1110 111 S SSSR DODD
|
|
Move Y half of register
|
|
t See instruction
|
|
11' See Section 13.2, MOVE and MOVB Instructions Timing
|
|
|
|
|
|
|
|
|
|
12-15
|
|
Instruction Set - Summary Table
|
|
|
|
|
|
|
|
Graphics Instructions
|
|
Machine 16-Bit Opcode
|
|
Syntax and Description Words States MSB LSB
|
|
CPW Rs, Rd 1 1.4 1110 0115 555R DODD
|
|
Compare point to window
|
|
CVXVLRs, Rd 1 3,6 1110 1005 55SR DODD
|
|
Convert XV address to linear address
|
|
DRAV Rs, Rd 1 t 1111 0115 SSSR DODD
|
|
Draw and advance
|
|
FILL L 1 + 0000 1111 1100 0000
|
|
Fill array with processed pixels, linear
|
|
FILL XV 1 + 0000 111 1 1110 0000
|
|
Fill array with processed pixels, XV
|
|
LINE [0. 1] 1 t 1101 1111 Z001 1010
|
|
Line draw
|
|
PIXBLT B. L 1 ++ 0000 111 1 1000 0000
|
|
Pixel block transfer, binary to linear
|
|
PIXBLT B. XV 1 ++ 0000 1111 1010 0000
|
|
Pixel block transfer and expand, binary to XV
|
|
PIXBLT L. L 1 § 0000 1 11 1 0000 0000
|
|
Pixel block transfer, linear to linear
|
|
PIXBLT L. XV 1 § 0000 11 1 1 0010 0000
|
|
Pixel block transfer, linear to XV
|
|
PIXBLT XV, L 1 § 0000 1111 0100 0000
|
|
Pixel block transfer, XV to linear
|
|
PIXBLT XV, XV 1 § 0000 1 1 1 1 0110 0000
|
|
Pixel block transfer, XV to XV
|
|
PIXT Rs, *Rd 1 t 1111 1005 SSSR DODD
|
|
Pixel transfer, register to indirect
|
|
*
|
|
PIXT Rs, Rd.XY 1 t 1111 OOOS SSSR DODD
|
|
Pixel transfer, register to indirect XV
|
|
PIXT *Rs, Rd 1 t 11 1 1 101S SSSR DDDD
|
|
Pixel transfer, indirect to register
|
|
*
|
|
PIXT Rs, Rd * 1 t 11 1 1 1105 5SSR DODD
|
|
Pixel transfer, indirect to indirect
|
|
*
|
|
PIXT Rs.XY, Rd 1 t 1111 001S SSSR DODD
|
|
Pixel transfer, indirect XV to register
|
|
*
|
|
PIXT Rs.XY, Rd.XY * 1 t 11 1 1 010S SSSR DODD
|
|
Pixel transfer, indirect XV to indirect XV
|
|
t See instruction
|
|
+ See Section 13.3, FILL Instructions Timing
|
|
++ See Section 13.5, PIXB LT Expand Instructions Timing
|
|
§ See Section 13.4, PIXBLT Instructions Timing
|
|
|
|
|
|
|
|
|
|
12-16
|
|
Instruction Set - Summary Table
|
|
|
|
|
|
|
|
Program Control and Context Switching Instructions
|
|
Machine 16- Bit Opcode
|
|
Syntax and Description Words States MSB LSB
|
|
CALL Rs 1 3+(3),9 0000 1001 001 R DODD
|
|
Call subroutine indirect 3+(9),150
|
|
CALLA Address 3 4+(2),15 0000 1101 0101 1111
|
|
Call subroutine address 4+(8),21 0
|
|
CALLR Address 2 3+(2),11 0000 1101 0011 1111
|
|
Call subroutine relative 3+(8),1r0
|
|
DINT 1 3,6 0000 0011 0110 0000
|
|
Disable interrupts
|
|
EINT 1 3,6 0000 1101 0110 0000
|
|
Enable interrupts
|
|
EMU 1 6,9 0000 0001 0000 0000
|
|
Initiate emulation
|
|
EXGF Rd, F 1 1,4 1101 01 F1 OOOR DODD
|
|
Exchange field size
|
|
EXGPC Rd 1 2,5 0000 0001 001 R DODD
|
|
Exchange program counter with register
|
|
GETPC Rd 1 1,4 0000 0001 010R DODD
|
|
Get program counter into register
|
|
GETST Rd 1 1,4 0000 0001 100R DODD
|
|
Get status register into register
|
|
NOP 1 1,4 0000 0011 0000 0000
|
|
No operation
|
|
POPST 1 8,11 0000 0001 1100 0000
|
|
Pop status register from stack 10,130
|
|
PUSHST 1 2+(3),8 0000 0001 111 0 0000
|
|
Push status register onto stack 2+(8),130
|
|
PUTST Rs 1 3,6 0000 0001 101 R DODD
|
|
Copy register into status
|
|
RETI 1 11,1~ 0000 1001 0100 0000
|
|
Return from interrupt 15,1
|
|
RETS [NJ 1 7,1~ 0000 1001 011 N NNNN
|
|
Return from subroutine 9,1
|
|
REV Rd 1 1,4 0000 0000 001R DODD
|
|
Find TMS3401 0 revision level
|
|
SETF FS, FE, F 1 1,4 0000 01 F 1 01FS SSSS
|
|
Set field parameters 2,5 :I:
|
|
TRAPN 1 16,19 0000 1001 OOON NNNN
|
|
Software interrupt 0
|
|
30,33-
|
|
t See instruction
|
|
e First values for SP aligned, second values for SP nonaligned
|
|
|
|
|
|
|
|
|
|
12-17
|
|
Instruction Set - Summary Table
|
|
|
|
|
|
|
|
Jump Instructions
|
|
Machine 16-Bit Opcode
|
|
Syntax and Description Words States MSB LSB
|
|
DSJ Rd, Address 2 3,9 n 0000 1101 100R DODD
|
|
Decrement register and skip jump 2,8
|
|
DSJEQ Rd, Address 2 3,9 n 0000 1101 101 R DODD
|
|
Conditionally decrement register and 2,8
|
|
skip jump
|
|
DSJNE Rd, Address 2 3,9 n 0000 1101 110 R DODD
|
|
Conditionally decrement register and 2,8
|
|
skip jump
|
|
DSJS Rd, Address \
|
|
1 2,5 n 0011 lDxx xxxR DODD
|
|
Decrement register and skip jump short 3,6
|
|
JAcc Address 3 3,6 n 1100 code 1000 0000
|
|
Jump absolute conditional 4,7
|
|
JRcc Address 2 3,6 n 1100 code 0000 0000
|
|
Jump relative conditional 1,4
|
|
JRcc Address 1 2,5 n 1100 code xxxx xxxx
|
|
Jump relative conditional short 2,5
|
|
JUMP Rs 1 2,5 0000 0001 011R DODD
|
|
Jump indirect
|
|
Shift Instructions
|
|
Machine 16-Bit Opcode
|
|
Syntax and Description Words States MSB LSB
|
|
RLK, Rd 1 1,4 0011 OOKK KKKR DODD
|
|
Rotate left, constant
|
|
RL Rs, Rd 1 1,4 0110 100S SSSR DODD
|
|
Rotate left, register
|
|
SLAK, Rd 1 3,6 0010 OOKK KKKR DODD
|
|
Shift left arithmetic, constant
|
|
SLARs, Rd 1 3,6 0110 OOOS SSSR DODD
|
|
Shift left arithmetic, register
|
|
SLLK, Rd 1 1,4 0010 01KK KKKR DODD
|
|
Shift left logical, constant
|
|
SLL Rs, Rd 1 1,4 0110 001S SSSR DODD
|
|
Shift left logical, register
|
|
SRAK, Rd 1 1,4 0010 10KK KKKR DODD
|
|
Shift right arithmetic, constant
|
|
SRARs, Rd 1 1,4 0110 010S SSSR DODD
|
|
Shift right arithmetic, register
|
|
SRLK, Rd 1 1,4 0010 11 KK KKKR DODD
|
|
Shift right logical, constant
|
|
SRL Rs, Rd 1 1,4 0110 011S SSSR DODD
|
|
Shift right logical, register
|
|
n First values for jump, second values for no jump
|
|
|
|
|
|
|
|
|
|
12-18
|
|
Instruction Set - Arithmetic, Logical, and Compare Instructions
|
|
|
|
|
|
|
|
12.4 Arithmetic, Logical, and Compare Instructions
|
|
The TMS3401 0 supports a full range of arithmetic, logical, and compare in-
|
|
structions. Most of these instructions use register-direct operands; some use
|
|
a combination of immediate and register-direct operands. Some instructions
|
|
have several versions; each uses a different operand format. For example, the
|
|
ADD instruction has several versions:
|
|
|
|
• The ADD instruction uses register-direct operands for both the source
|
|
and destination operands.
|
|
|
|
• The ADDI instruction uses an immediate source with a destination reg-
|
|
ister.
|
|
|
|
• The ADDK instruction uses a 5-bit constant as the source operand with
|
|
a destination register.
|
|
|
|
• The ADDXV instruction is similar to the ADD instruction - both oper-
|
|
ands are register-direct operands - however, the registers contain XY
|
|
values.
|
|
Some instructions that have immediate values as source operands (such as the
|
|
ADDI instruction) have two forms: a short form and a long form. In the short
|
|
form, the source operand is a 16-bit immediate value and the instruction oc-
|
|
cupies two words. In the long form, the source operand is a 32-bit immediate
|
|
value and the instruction occupies three words. Each form of the instruction
|
|
has an optional third operand: W for short and L for long. If you don't use the
|
|
W or L operand, the assembler chooses the short or the long form, depending
|
|
on the size of the source operand. Using W or L forces the assembler to use
|
|
the short or long form, respectively. If you use Wand the source value is
|
|
greater than 16 bits, the assembler discards all but the 16 LSBs and issues a
|
|
warning message. If you use L and the source value is less than 32 bits, the
|
|
assembler sign-extends the value to 32 bits.
|
|
Some instructions that use immediate operands have only one version. In this
|
|
case, the operand is long (32-bits).
|
|
|
|
|
|
Note:
|
|
When an instruction's source and destination operands are both regis-
|
|
ter-direct operands, the registers must be in the same file. (The MOVE
|
|
Rs, Rd instruction is an exception to this rule.)
|
|
|
|
|
|
|
|
|
|
12-19
|
|
Instruction Set - Move Instructions
|
|
|
|
|
|
|
|
12.5 Move Instructions Summary
|
|
The TMS3401 0 supports a variety of move instructions, allowing you to move
|
|
immediate values into registers, move data between registers, and move data
|
|
between registers and memory. Table 12-2 summarizes the various types of
|
|
move instructions.
|
|
Table 12-2. Summary of Move Instructions
|
|
|
|
Move Type Mnemonic Description
|
|
Register MOVE Move register to register
|
|
Constant MOVK Move constant (5 bits)
|
|
MOVI Move immediate (16 bits)
|
|
MOVI Move immediate (32 bits)
|
|
XY MOVX Move 16 LSBs of register (X half)
|
|
MOVY Move 16 MSBs of register (Y half)
|
|
Multiple register MMFM Move multiple registers from memory
|
|
MMTM Move multiple registers to memory
|
|
Byte MOVB Move byte (8 bits, 9 addressing modes)
|
|
Field MOVE Move field to/from memory/register
|
|
(15 addressing modes)
|
|
|
|
|
|
|
|
12.5.1 Register-to-Register Moves
|
|
The MOVE Rs,Rd instruction is a register-to-register move; it moves a full 32
|
|
bits of data between any two general-purpose registers. This is the only
|
|
MOVE instruction that allows you to move data between register files A and
|
|
B.
|
|
|
|
12.5.2 Value-to-Register Moves
|
|
The MOVI and MOVK instructions move immediate values into registers.
|
|
MOVK moves a zero-extended value into a register; the value must be in the
|
|
range of 1 to 32. The MOVI instruction has two forms; it can move a 16-bit
|
|
or a 32-bit immediate value.
|
|
|
|
12.5.3 XV Moves
|
|
The MOVX and MOVY instructions move values into the 16 LSBs or 16
|
|
MSBs, respectively, of a register.
|
|
|
|
|
|
|
|
|
|
12-20
|
|
Instruction Set - Move Instructions
|
|
|
|
|
|
|
|
12.5.4 Multiple-Register Moves
|
|
The MMTM and MMFM instructions use register-direct operands. MMTM
|
|
allows you ,to save several register values in memory; MMFM allows you to
|
|
retrieve register values from memory. Both instructions have two types of
|
|
operands:
|
|
|
|
• The Rp operand is a register pointer. For the M MTM instruction, Rp
|
|
contains the memory address where MMTM stores the register values.
|
|
For the MMFM instruction, Rp contains the memory address from which
|
|
MMFM loads the stored register values.
|
|
|
|
• The register list operand is an optional list of registers. It specifies which
|
|
registers are stored or retrieved, and also indicates the storing or retrieval
|
|
order.
|
|
Note that Rp and all the registers in the list must be in the same register file.
|
|
|
|
12.5.5 Byte Moves
|
|
The MOVe instruction is a special form of the MOVE instruction; when you
|
|
use MOVB, the field size is restricted to 8 bits. MOVB supports nine combi-
|
|
nations of operand formats. There are three basic combinations:
|
|
|
|
• Register to memory (requires a field insertion),
|
|
• Memory to register (requires a field extraction), and
|
|
• Memory to memory (requires both field insertion and extraction).
|
|
Note that the MOVB instruction does not move data between registers.
|
|
The MOVB instruction allows a byte to begin on any bit boundary in memory.
|
|
The byte's memory address points to the LS B of the byte. When a byte is
|
|
moved into a register, the byte's LSB coincides with the register's LSB; the
|
|
byte is sign-extended into the 24 MSBs of the register.
|
|
Table 12-3 lists the valid combinations of operand formats for the MOVB in-
|
|
struction.
|
|
Table 12-3. Summary of Operand Formats for the MOVe
|
|
Instruction
|
|
|
|
Destination
|
|
Source Rd *Rd * Rd(DOffset @DAddress
|
|
Rs J J J
|
|
*Rs J J
|
|
* Rs(SOffset) J J
|
|
/
|
|
@SAddress 'V J
|
|
|
|
Sequences of byte moves are more efficient if the byte addresses are aligned
|
|
on even 8-bit boundaries. Twice as many memory cycles are required to ac-
|
|
cess a byte that straddles a word boundary.
|
|
|
|
|
|
|
|
12-21
|
|
Instruction Set - Move Instructions
|
|
|
|
|
|
|
|
12.5.6 Field Moves
|
|
The MOVE instruction supports eighteen combinations of operand formats.
|
|
There are four basic combinations:
|
|
|
|
• Register to register,
|
|
• Register to memory,
|
|
• Memory to register, and
|
|
• Memory to memory.
|
|
The MOVE instruction moves a field. A field is a configurable data structure
|
|
that is identified by its starting address and its length. Field lengths can range
|
|
from 1 to 32 bits. A field's memory address points to the LS B of the field; the
|
|
field occupies contiguous bits. A field in a register is right-justified within the
|
|
register; the field's LSB coincides with the register's LSB.
|
|
Note that a" forms of the MOVE instruction have an optional F parameter.
|
|
(MOVE Rs,Rd is an exception to this; it doesn't have an F parameter because
|
|
it always moves 32 bits.) F selects the field size and field extension for the
|
|
MOVE:
|
|
|
|
• If F=O, FSO and FEO determine the field size and extension.
|
|
|
|
• If F=1, FS1 and FE1 determine the field size and extension.
|
|
If you don't specify 0 or 1, 0 is used as the default. The selected field size
|
|
determines the size of the field that is moved. A moved field is either sign-
|
|
extended or zero-extended, depending on the value of the appropriate field
|
|
extension bit. You can use the SETF instruction to set the field size and ex-
|
|
tension.
|
|
Table 12-4 summarizes the valid combinations of operand formats for the
|
|
MOVE instruction.
|
|
Table 12-4. Summary of Operand Formats for the MOVE Instruction
|
|
|
|
Destination
|
|
Source Rd *Rd *Rd+ -*Rd * Rd(DOffset\ @DAddress
|
|
Rs J J J J J J
|
|
*Rs J J
|
|
*Rs+ J J
|
|
-*Rs J J
|
|
* Rs(SOffset) J J J
|
|
@SAddress J J J
|
|
|
|
|
|
|
|
|
|
12-22
|
|
Instruction Set - Move Instructions
|
|
|
|
|
|
|
|
12.5.6.1 Register-fa-Memory Field Moves
|
|
Figure 12-8 illustrates the register-to-memory move operation. In this type
|
|
of move, the source register contains the right-justified field data (width is
|
|
specified by the field size). The destination location is the bit position pointed
|
|
to by the destination memory address. The address consists of a portion de-
|
|
fining the starting word in which the field is to be written and an offset into
|
|
that word, the bit address. Depending on the bit address within this word and
|
|
the field size, the destination location may extend into two or more words.
|
|
Move from Register to Memory
|
|
31 4 3 0
|
|
Destination Memory Addr888 I..______w_o_r_d_A_dd_r_888_ _ _ _ _ _.......I...:.:,:Ad::.;r::.;re::.;88=--.111
|
|
|
|
31 0
|
|
Source Register
|
|
~ A~DaIa~
|
|
I+---; Reid Size
|
|
|
|
Word Addre.. + 18 \ ~rJr'" \
|
|
|
|
|
|
Dest~natlon Memory Location
|
|
|
|
|
|
|
|
|
|
Reid Size =1 to 32 bits
|
|
Figure 12-8. Register-to-Memory Moves
|
|
|
|
|
|
|
|
|
|
12-23
|
|
Instruction Set - Move Instructions
|
|
|
|
|
|
|
|
12.5.6.2 Memory-to-Register Field Moves
|
|
Figure 12-9 shows the memory-to-register move operation. The source me-
|
|
mory location is the bit position pointed to by the source address. The address
|
|
consists of a portion defining the starting word in which the field is to be
|
|
written and an offset into that word, the bit address. Depending on the bit
|
|
address Within this word and the field size, the source location may extend
|
|
into two or more words. After the move, the destination register LSBs contain
|
|
the right-justified field data (width is specified by the field size). The MSBs
|
|
of the register contain either all 1s or all Os.
|
|
Move from Memory to Register
|
|
31 4 3 0
|
|
Source Memory Addr888 1______w_o_rd_Ad_dr_888_ _ _ _ _ _'"""'-,~Ad::;r;;.re::;88-....,,1
|
|
...
|
|
|
|
|
|
|
|
|
|
Source Memory Location
|
|
|
|
|
|
|
|
|
|
0
|
|
DestInation Register, FE=O Field Data I
|
|
SlglBIt
|
|
31 0
|
|
DestInation Register, FE=1 14 Sign BIt
|
|
~ Field Data
|
|
I
|
|
Field IIze =1 to 32 bits
|
|
Figure 12-9. Memory-to-Register Moves
|
|
|
|
|
|
|
|
|
|
12-24
|
|
Instruction Set - Move Instructions
|
|
|
|
|
|
|
|
12.5.6.3 Memory-to-Memory Field Moves
|
|
Figure 12-10 shows a memory-to-memory field move operation. The source
|
|
memory location is the bit position pointed to by the source address. The
|
|
destination location is the bit position pointed to by the destination memory
|
|
address. Depending on the bit addresses within the respective words and the
|
|
field size, either the source location or destination locations may extend into
|
|
two or more words. After the move, the destination location contains the field
|
|
data from the source memory location.
|
|
Move from Memory to Memory
|
|
|
|
31 4 3 0
|
|
Souroe Memory Address Word Address A
|
|
|
|
Word Addreaa A+16
|
|
|
|
|
|
|
|
Souroe Memory Looatlon
|
|
|
|
|
|
|
|
|
|
31
|
|
DestInation Memory Address
|
|
|
|
Word Address 8+16 Word Addr•• B " \
|
|
|
|
15 o
|
|
Destination Memory Looatlon
|
|
Destination
|
|
- t M - - - BIt Addre.----tI
|
|
|
|
Field size = 1 to 32 bits
|
|
|
|
Figure 12-10. Memory-to-Memory Moves
|
|
|
|
|
|
|
|
|
|
12-25
|
|
Instruction Set - Graphics Instructions
|
|
|
|
|
|
|
|
12.6 Graphics Instructions Summary
|
|
The TMS3401 0 instruction set supports several fundamental graphics drawing
|
|
operations.
|
|
|
|
12.6.1 Comparing a Point to a Window
|
|
The CPW instruction compares a point to the window limits defined by the
|
|
WSTART and WEND registers. The source operand Rs contains an XY ad-
|
|
dress. After the compare operation is performed, bits 5-8 contain a code that
|
|
indicate the point's location with respect to the window limits. The de-
|
|
scription of the CPW instruction shows these point codes.
|
|
|
|
12.6.2 Converting an XV Address to a Linear Address
|
|
The CVXVL instruction converts an XY address to a 32-bit linear address. The
|
|
source register contains the XY address; the linear address is put in the desti-
|
|
nation register.
|
|
|
|
12.6.3 Drawing a Pixel and Advancing to the Next Pixel Address
|
|
The DRAV instruction draws the pixel value in the COLOR1 register to the
|
|
XY address specified by the destination register. After the pixel is drawn, the
|
|
Y half of Rs is added to the Y half of Rd, and the X half of Rs is added to the
|
|
X half of Rd.
|
|
|
|
12.6.4 Draw a Line
|
|
The LINE instruction performs the inner loop of Bresenham's line-drawing
|
|
algorithm to draw an arbitrarily oriented, straight line. The optional operand
|
|
may be a 0 or a 1; this selects one of two algorithms. The default for this op-
|
|
erand is O.
|
|
|
|
12.6.5 Filling a Pixel Block
|
|
The FILL instruction fills a two-dimensional pixel array with the value in the
|
|
COLOR1 register. Note that L and XV are not actually operands; they are part
|
|
of the instruction mnemonic, identifying the form of the FILL instruction. FILL
|
|
L specifies that the array has a linear starting address; FI LL XY specifies that
|
|
the array has an XY starting address.
|
|
|
|
|
|
|
|
|
|
12-26
|
|
Instruction Set - Graphics Instructions
|
|
|
|
|
|
|
|
12.6.6 Moving a Single Pixel
|
|
The PIXT instruction transfers a pixel from one location to another. PIXT can
|
|
transfer a pixel:
|
|
|
|
• From a register to memory,
|
|
• From memory to a register, or
|
|
• From memory to memory.
|
|
Table 12-5 summarizes the valid combinations of operand formats for the PIXT
|
|
instruction. Note that all addresses are linear unless the operand is suffixed
|
|
with .XV.
|
|
Table 12-5. Summary of Operand Formats for the PIXT Instruction
|
|
|
|
Destination Pixel
|
|
Source Rd *Rd *Rd.XV
|
|
Pixel
|
|
Rs J J
|
|
*Rs J J
|
|
*Rs.XV J J
|
|
|
|
12.6.7 Moving a Two-Dimensional Block of Pixels
|
|
The PIXBLT instruction moves a two-dimensional block of pixels from one
|
|
memory location to another. Note that B, L, and XV are not actually
|
|
operands; instead, they identify the source or destination array starting ad-
|
|
dresses as binary, linear, or XV addresses. The source and destination ad-
|
|
dresses of the arrays are designated by the SADDR and DADDR registers,
|
|
respectively.
|
|
Table 12-6 summarizes the various combinations of pixel block transfers.
|
|
Table 12-6. Summary of Array Types for the PIXBLT Instruction
|
|
|
|
Destination Array
|
|
Source Linear XV
|
|
Array
|
|
Binary J J
|
|
Linear J J
|
|
XV J J
|
|
|
|
The graphics instructions use the B-file registers and several I/O registers as
|
|
implied operands. These registers must be loaded with appropriate values
|
|
before the instruction is executed. The TMS3401 0 obtains information from
|
|
these registers during instruction execution. Table 12-7 summarizes the im-
|
|
plied operands that are used by the graphics instructions. The TMS34010
|
|
User's Guide contains a complete discussion of these registers and describes
|
|
the types of information they should contain.
|
|
|
|
|
|
|
|
12-27
|
|
Instruction Set - Graphics Instructions
|
|
|
|
|
|
|
|
12.6.8 Implied Operands
|
|
The graphics instructions require additional information that you supply by
|
|
loading appropriate values into specific B registers and I/O registers. When
|
|
these registers are used for this purpose, they are called implied operands.
|
|
Section 5 discusses the functions of B registers as implied operands; Section
|
|
5 discusses the functions of I/O registers as implied operands.
|
|
Note that the LINE instruction uses registers B1 o-B13 as implied operands;
|
|
as implied operands, these registers have the following functions:
|
|
B10: COUNT register B12: INC2 register
|
|
B11: INC1 register B13: PATTRN register
|
|
Table 12-7 identifies the implied operands that each graphics instruction uses.
|
|
Table 12-7. Implied Operands Used by Graphics Instructions
|
|
|
|
|
|
|
|
|
|
~:
|
|
}::::::::::::::: Changed by instruction execution t Changed as a result of common rectangle func-
|
|
J Used; no particular format tion with window hit operation (W=1)
|
|
XY Register is in XY format (1) CONTROL bits used: PP, W, T
|
|
L Register is in linear format (2) CONTROL bits used: PP, T
|
|
P Register is in pixel format (3) CONTROL bits used: pp, W, T, PBH, PBV
|
|
pat Register is in pattern format (4) CONTROL bits used: pp, T, PBH, PBV
|
|
(5) Used when PBV=1
|
|
|
|
|
|
|
|
|
|
12-28
|
|
Instruction Set - Program Control and Context Switching Instructions
|
|
|
|
|
|
|
|
12.7 Program Control and Context Switching Instructions
|
|
The TMS34010 supports a variety of instructions that allow you to control
|
|
program flow and to save and restore information by letting you:
|
|
|
|
• CaH and return from subroutines,
|
|
• Enable or disable interrupts,
|
|
• Set software interrupts,
|
|
• Set, save, or restore status information, and
|
|
• Use jump instructions to redirect program flow.
|
|
Most of these instructions use register-direct or absolute operands; however,
|
|
several of them have no operands.
|
|
|
|
12.7.1 Subroutine Calls and Returns
|
|
The TMS3401 0 allows you to call a subroutine in three ways:
|
|
|
|
• Indirectly, by loading an address into a register;
|
|
• Directly, by using an absolute address; and
|
|
• Relatively, by specifying an address that is an offset.
|
|
These CALL instructions automatically save status information on the stack.
|
|
The RETS (return from subroutine) instruction pops status information off of
|
|
the stack and returns control to the program or routine that called the sub-
|
|
routine.
|
|
|
|
12.7.2 Interrupt Handling
|
|
The TMS3401 O's EINT and DINT instructions allow you to enable or disable
|
|
hardware interrupts by providing control of the IE (global interrupt enable)
|
|
status bit. The TMS3401 0 also supports a TRAP instruction that provides you
|
|
with control over 32 software interrupts.
|
|
|
|
12.7.3 Setting, Saving, and Restoring Status Information
|
|
Although some instructions automatically save or restore status information,
|
|
you will often want explicit control over these functions. The TMS34010
|
|
supports several instructions that allow you to save and restore PC and ST
|
|
information. The TMS3401 0 also supports a SETF instruction that allows you
|
|
to set field-0/field-1 information in the status register.
|
|
|
|
|
|
|
|
|
|
12-29
|
|
Instruction Set - Program Control and Context Switching Instructions
|
|
|
|
|
|
|
|
12.7.4 Jump Instructions
|
|
The TMS34010 supports both conditional and unconditional jumps. The
|
|
conditional jumps use absolute operands or a combination of register-direct
|
|
and absolute operands.
|
|
|
|
• There are four DSJ instructions:
|
|
DSJ and DSJS decrement the contents of a register and jump to
|
|
the specified address if the new contents of Rd do not equal o. If
|
|
Rd is decremented to 0, then execution continues with the next
|
|
instruction.
|
|
DSJ provides a jump range of -32,768 to +32,767 words; DSJS
|
|
provides a jump range of ±32 words (excluding 0).
|
|
The operation of DSJ EO and DSJ N E depends on the value of the
|
|
Z (zero) status bit.
|
|
DSJEO decrements the contents of Rd when Z=1 and jumps to
|
|
the specified address if the new contents of Rd do not equal O. If
|
|
Rd is decremented to 0, then execution continues with the next
|
|
instruction. If Z=O, DSJEQ skips the jump and execution contin-
|
|
ues with the next instruction.
|
|
DSJNE decrements the contents of Rd when Z=O and jumps to
|
|
the specified address if the new contents of Rd do not equal O. If
|
|
Rd is decremented to 0, then execution continues with the next
|
|
instruction. If Z=O, DSJNE skips the jump and execution contin-
|
|
ues with the next instruction.
|
|
The address specified for the DSJ instructions is relative; the assembler
|
|
uses this address automatically to calculate a displacement, and then it
|
|
inserts the displacement into the instruction.
|
|
|
|
• The JUMP instruction is unconditional. The source register contains
|
|
the address for the jump.
|
|
|
|
• The conditional jump instructions, JAee and J Ree, use the condition
|
|
codes listed Table 12-8.
|
|
The J Ree instruction has a long and a short form. The short form sup-
|
|
ports a jump range of ±127 words (excluding 0). The long form sup-
|
|
ports a jump range of ±32K words (excluding 0).
|
|
The 32-bit address specified for the JAee instruction is absolute; the assembler
|
|
inserts this address into words 2 and 3 of the instruction. The address speci-
|
|
fied for the JRee instructions is relative; the assembler uses this address auto-
|
|
matically to calculate a displacement, and then it inserts the displacement into
|
|
the instruction. The short form has an 8-bit displacement that is inserted into
|
|
bits 0-7 of the opcode; the opcode is 1 word long. The long form has 16-bit
|
|
displacement; the opcode is 2 words long, and the displacement occupies the
|
|
entire 16 bits of the second word.
|
|
Table 12-8 lists the condition codes used with the J Ree and JAee in-
|
|
structions. (To use the codes, replace the ee with the appropriate mnemonic
|
|
code; for example, JRUC, JALS, JRYGT, etc.) Before using one of these jump
|
|
instructions, use the CMP, CMPI, or CMPXY instruction; the compare in-
|
|
structions set the condition codes for the jump by subtracting a source value
|
|
|
|
|
|
12-30
|
|
Instruction Set - Program Control and Context Switching Instructions
|
|
|
|
|
|
|
|
from a destination value. The first mnemonics code column in Table 12-8 lists
|
|
the codes that can be used for a jump following a CMP or CMPI. The second
|
|
mnemonics code column list codes that can be used for a jump following a
|
|
CMPXY (codes that are preceded with an X can be used with the result of the
|
|
X comparison and codes that are preceded with a Y can be used with the result
|
|
of the Y comparison).
|
|
Table 12-8. Condition Codes for JRcc and JAcc Instructions
|
|
|
|
Mnemonic
|
|
Code Result of Compare Status Bits Code
|
|
Unconditional
|
|
Compares
|
|
UC - Unconditional don't care 0000
|
|
|
|
Unsigned La (C) - Dst lower than Src C 0001
|
|
Compares LS YLE Dst lower or same as Src C+Z 0010
|
|
HI YGT Dst higher than Src CoZ 0011
|
|
HS (NC) - Dst higher or same as Src C 1001
|
|
EO (Z) - Dst = Src Z 1010
|
|
NE (NZ) - Dst ¢ Src Z 1011
|
|
Signed LT XLE Dst < Src (N o_V) +_( NoV) 0100
|
|
Compares LE - Dst S Src (N 0V_+ (N __V).± Z _ 0110
|
|
GT - Dst > Src (N 0 V Z) + ( £:! y.. Z)
|
|
0 0 0 0111
|
|
GE XGT Dst > Src (N V) + (N
|
|
0 V) 0 0101
|
|
EO (Z) - Dst ~ Src Z 1010
|
|
NE (NZ) - Dst ¢ Src Z 1011
|
|
Compare to Z YZ Result = zero Z 0101
|
|
Zero NZ YNZ Result ¢ zero Z 1011
|
|
P - Result is positive NoZ 0001
|
|
N XZ Result is negative N 1110
|
|
NN XNZ Result is nonnegative N 1111
|
|
General Z YZ Result is zero Z 1010
|
|
Arithmetic NZ YNZ Result is nonzero Z 1011
|
|
C YN Carry set on resu It C 1000
|
|
NC YNN No carryon result C 1001
|
|
B (C) - Borrow set on result C 1000
|
|
NB (NC) - No borrow on result C 1001
|
|
vt XN Overflow on result V 1100
|
|
NVt XNN No overflow on result V 1101
|
|
Note: A mnemonic code in parentheses is an alternate code for the preceding code.
|
|
t Also used for window clipping
|
|
+ Logical OR
|
|
o Logical AN D
|
|
Logical NOT
|
|
|
|
|
|
|
|
|
|
12-31
|
|
Instruction Set - Shift Instructions
|
|
|
|
|
|
|
|
12.8 Shift Instructions
|
|
The TMS3410 supports several instructions that left-rotate, left-shift, or
|
|
right-shift the contents of the destination register. These instructions use re-
|
|
gister-direct operands or a combination of register-direct and immediate op-
|
|
erands; the shift amount is specified by the value of a 5-bit constant or by the
|
|
value specified in the 5 LSBs of a source register. (Note that the SRA Rs, Rd
|
|
and SRL Rs, Rd use the 2s complement value of the 5 LSBs in Rs.)
|
|
|
|
• The RL instruction left-rotates the contents of the destination register
|
|
by. (This rotation is a barrel shift.) The bits shifted out of the MSB are
|
|
shifted into the LSB. The C (carry) bit is set to the final value shifted
|
|
out of the MSB.
|
|
|
|
• The SLA instruction left shifts the contents of the destination register.
|
|
Os are shifted into the LSBs. The MSBs are shifted out through the C
|
|
(carry) bit so that the C bit is set to the final value shifted out of the
|
|
MSB. If either the N (sign) bit or any of the bits shifted out differ from
|
|
the original sign bit, the V (overflow) bit is set.
|
|
|
|
• The SLL instruction left shifts the contents of the destination register.
|
|
Os are shifted into the LSBs. The MSBs are shifted out through the C
|
|
(carry) bit so that the C bit is set to the final value shifted out of the
|
|
MSB. The main difference between SLL and SLA is that SLL does not
|
|
check to see if the sign bit changes.
|
|
|
|
• The SRA instruction right shifts the contents of the destination register.
|
|
The value of the sign bit is shifted into the MSBs; this sign-extends the
|
|
value and preserves the original value of the sign bit. The LSBs are
|
|
shifted out through the C (carry) bit so that the C bit is set to the final
|
|
value shifted out of the LSB.
|
|
|
|
• The SRL instruction right shifts the contents of the destination register.
|
|
Os are shifted into the MSBs, beginning with bit 31. The LSBs are
|
|
shifted out through the C (carry) bit so that the C bit is set to the final
|
|
value shifted out of the LSB. The main difference between SRL and SRA
|
|
is that SRL does not preserve the original value of the sign bit.
|
|
|
|
|
|
|
|
|
|
12-32
|
|
Instruction Set - XV Instructions
|
|
|
|
|
|
|
|
12.9 XV Instructions
|
|
The TMS3401 0 allows you to use XV addresses. This is useful for specifying
|
|
pixel addresses on the screen. Many of the graphics instructions use XV ad-
|
|
dressing; the TMS34010 instruction set also supports several other in-
|
|
structions that allow you to manipulate XV addresses.
|
|
An XV address is a 32-bit address that is divided into two parts. The 16 LSBs
|
|
of the address are the X half of the address or register; the 16 MSBs of the
|
|
address are the V half of the address or register. The two parts are treated as
|
|
completely separate values; for example, using the ADDXV instruction, the X
|
|
half does not propagate into the V half.
|
|
Table 12-9 summarizes the instructions that use XV addresses.
|
|
Table 12-9. Summary of XV Instructions
|
|
Instruction Description Instruction Description
|
|
ADDXY Rs, Rd Add registers in XV PIXBLT B,XY Pixel block transfer
|
|
(binary to XV)
|
|
CPW Rs, Rd Compare point to window PIXBLT L, XV Pixel block transfer
|
|
(linear to XV)
|
|
CMPXY Rs, Rd Compare registers in XV PIXBLT XV, L Pixel block transfer (XV
|
|
mode to linear)
|
|
CVXVL Rs, Rd Convert XV address to PIXBLT XV, XV Pixel block transfer (XV
|
|
linear address to XV)
|
|
DRAV Rs, Rd Draw and advance PIXT Rs, *Rd.XY Pixel transfer (register to
|
|
indirect XV)
|
|
FILL XV Fill array with processed PIXT *Rs.XV, Rd Pixel transfer (indirect XV
|
|
pixels to register)
|
|
LINE [0, 1] Line draw with XV PIXT * Rs.XV, * Rd.XV Pixel transfer (indirect XV
|
|
addressing to indirect XV)
|
|
MOVX Rs, Rd Move X half of Rs to X SUBXV Rs, Rd Subtract registers in XV
|
|
half of Rd mode
|
|
MOVV Rs, Rd Move V half of Rs to V
|
|
half of Rd
|
|
|
|
|
|
• The PIXBlT and Fill instructions in Table 12-9 use XV source and/or
|
|
destination addresses.
|
|
|
|
• The PIXT instructions in Table 12-9 use the contents of registers as XV
|
|
addresses.
|
|
|
|
• The LINE instruction draws a line along points that are calculated as XV
|
|
addresses.
|
|
|
|
• The move instructions in Table 12-9 (MOVX and MOVV) move the X
|
|
or Y half of a source register into the X or Y half of a destination register.
|
|
|
|
• The arithmetic and logical instructions in Table 12-9 (ADDXY, SU BXY,
|
|
and eM PXV) add, subtract, or compare the X and V halves of the regis-
|
|
ters separately.
|
|
|
|
|
|
|
|
|
|
12-33
|
|
Instruction Set - Alphabetical Reference
|
|
|
|
|
|
|
|
12.10 Alphabetical Reference of Instructions
|
|
The remainder of this section is an alphabetical reference of the TMS34010
|
|
assembly language instructions. Each instruction discussion begins on a new
|
|
page, and contains the following information:
|
|
|
|
• Syntax: Shows you how to enter an instruction. (Section 12.1, page
|
|
12-2, describes the symbols used in instruction syntaxes.)
|
|
|
|
• Execution: Illustrates the effects of instruction execution on CPU reg-
|
|
isters and memory.
|
|
|
|
• Instruction Words: Shows the object code generated by an in-
|
|
struction.
|
|
|
|
• Description: Discusses the purpose of the instruction and any other
|
|
general information related to the instruction.
|
|
|
|
• Machine States: Lists the instruction cycle timing. Two timings are
|
|
listed for each instruction; the first number is the cache-enabled case, the
|
|
second number is the cache-disabled case.
|
|
|
|
• Status Bits: Lists the effects of instruction execution on the status bits
|
|
(N, C, Z, and V).
|
|
|
|
• Examples: Show the effects of the instruction on memory and registers
|
|
using various sets of data and initial conditions.
|
|
Several instructions discuss additional topics; for example, the conditional
|
|
jump instructions list the conditions codes and mnemonics for various jumps,
|
|
and the graphics instructions list the implied operands that they use.
|
|
|
|
|
|
|
|
|
|
12-34
|
|
Store Absolute Value ABS
|
|
|
|
|
|
Syntax ABS Rd
|
|
Execution IRdl -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I 0 0 0 0 0 0 0 o IR Rd I
|
|
Description ABS stores the absolute value of the contents of the destination register
|
|
back into the destination register. This is accomplished by:
|
|
|
|
• Subtracting the contents of the destination register data from 0 and
|
|
|
|
• Storing the result back into Rd if status bit N indicates that the result
|
|
is positive.
|
|
If the result of the subtraction is negative, then the original contents of the
|
|
destination register are retained.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Set to the sign of the result of 0 - Rd; typically, N =0 if the original
|
|
contents of Rd are negative (unless Rd = 80000000h), 1 otherwise
|
|
C Unaffected
|
|
Z 1 if the original data is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise; an overflow occurs if Rd contains
|
|
80000000h (80000000h is returned)
|
|
Examples Code Before After
|
|
A1 NCZV A1
|
|
ABS Al 7FFFFFFFh 1xOO 7FFFFFFFh
|
|
ABS Al FFFFFFFFh OxOO 00000001h
|
|
ABS Al 80000000h 1 x01 80000000h
|
|
ABS Al 80000001h OxOO 7FFFFFFFh
|
|
ABS Al 00000001h 1xOO 00000001h
|
|
ABS Al OOOOOOOOh Ox10 OOOOOOOOh
|
|
ABS Al FFFA0011h OxOO 0005FFEFh
|
|
|
|
|
|
|
|
|
|
12-35
|
|
ADD Add Registers
|
|
|
|
|
|
Syntax ADD Rs, Rd
|
|
Execution Rs + Rd -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
10 0 0 0 0 01 Rs 1R Rd I
|
|
Description ADD adds the contents of the source register to the contents of the desti-
|
|
nation register, and stores the result in the destination register.
|
|
You can is the ADD instruction with the ADDC instruction to perform
|
|
multiple-precision arithmetic.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if there is a carry, 0 otherwise
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Code Before After
|
|
A1 AO NCZV AO
|
|
ADD Al,AO FFFFFFFFh FFFFFFFFh 1100 FFFFFFFEh
|
|
ADD Al,AO FFFFFFFFh 00000001h 0110 OOOOOOOOh
|
|
ADD Al,AO FFFFFFFFh 00000002h 0100 00000001h
|
|
ADD Al,AO FFFFFFFFh 80000000h 0101 7FFFFFFFh
|
|
ADD Al,AO FFFFFFFFh 80000001h 1100 80000000h
|
|
ADD Al,AO 7FFFFFFFh 80000001h 0110 OOOOOOOOh
|
|
ADD Al,AO 7FFFFFFFh 80000000h 1000 FFFFFFFFh
|
|
ADD Al,AO 7FFFFFFFh 00000001h 1001 80000000h
|
|
ADD Al,AO 00000002h 00000002h 0000 00000004h
|
|
|
|
|
|
|
|
|
|
12-36
|
|
Add Register with Carry ADDC
|
|
|
|
|
|
Syntax ADDC Rs, Rd
|
|
Execution Rs + Rd + C -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 ,13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 Rs R Rd
|
|
|
|
Description ADDC adds the contents of the source register, the carry bit, and the con-
|
|
tents of the destination register, and then stores the result in the destination
|
|
register. Note that the status bits are set on the final result.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if there is a carry, 0 otherwise
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Code Before After
|
|
C A1 AO NCZV AO
|
|
ADDC Al,AO 1 FFFFFFFFh FFFFFFFFh 1100 FFFFFFFFh
|
|
ADDC Al,AO 1 FFFFFFFFh 00000001h 0100 0OOOOO01h
|
|
ADDC Al,AO 1 FFFFFFFFh 00000002h 0100 0OOOOO02h
|
|
ADDC Al,AO 1 FFFFFFFFh 80000000h 1100 80000000h
|
|
ADDC Al,AO 1 FFFFFFFFh 80000001h 1100 80000001h
|
|
ADDC Al,AO 1 FFFFFFFFh 80000001h 0100 80000001h
|
|
ADDC Al,AO 1 FFFFFFFFh 80000000h 0110 OOOOOOOOh
|
|
ADDC Al,AO 1 7FFFFFFFh 00000001h 1001 80000001h
|
|
ADDC Al,AO 1 000OOO02h 00000002h 0000 0OOOOO05h
|
|
ADDC Al,AO 0 FFFFFFFFh FFFFFFFFh 1100 FFFFFFFEh
|
|
ADDC Al,AO 0 FFFFFFFFh 00000001h 0110 OOOOOOOOh
|
|
ADDC Al,AO 0 FFFFFFFFh 00000002h 0100 0000000lh
|
|
ADDC Al,AO 0 FFFFFFFFh 80000000h 0101 7FFFFFFFh
|
|
ADDC Al,AO 0 FFFFFFFFh 80000001h 1100 80000000h
|
|
ADDC Al,AO 0 7FFFFFFFh ~0000001h 0110 OOOOOOOOh
|
|
ADDC Al,AO 0 7FFFFFFFh 80000000h 1000 FFFFFFFFh
|
|
ADDC Al,AO 0 7FFFFFFFh 00000001h 1001 80000000h
|
|
ADDC Al,AO 0 00000002h 00000002h 0000 0OOOOO04h
|
|
|
|
|
|
|
|
|
|
12-37
|
|
ADDI Add Immediate - 16 Bits
|
|
|
|
|
|
Syntax ADDI IW, Rd [, W}
|
|
Execution IW + Rd -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 987 6 5 4 3 2 o
|
|
o o 0 o R Rd
|
|
16-bit value
|
|
|
|
Description This ADDI instruction adds a sign-extended, 16-bit immediate value to the
|
|
contents of the destination register, and stores the result in the destination
|
|
register. (The symbol IW in the syntax above represents a 16-bit, sign-
|
|
extended immediate value.)
|
|
The assembler uses the short (16-bit) add if the immediate value is previ-
|
|
ously defined and is in the range -32,768 to 32,767. You can force the
|
|
assembler to use the short form by following the register operand with a
|
|
W:
|
|
ADDI IW,Rd,W
|
|
If you use the W parameter and the value is outside the legal range, the
|
|
assembler discards all but the 16 LSBs and issues an appropriate warning
|
|
message.
|
|
You can use the ADDI instruction with the ADDC instruction to perform
|
|
multiple-precision arithmetic.
|
|
Machine
|
|
States 2,8
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if there is a carry, 0 otherwise
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Code Before After
|
|
AO NCZV AO
|
|
ADDI l,AO FFFFFFFFh 0110 OOOOOOOOh
|
|
ADDI 2,AO FFFFFFFFh 0100 00000001h
|
|
ADDI l,AO 7FFFFFFFh 1001 80000000h
|
|
ADDI 2,AO 00000002h 0000 00000004h
|
|
ADDI 32767,AO 00000002h 0000 00008001h
|
|
ADDI OFFFFOO1Oh,AO,W FFFFFFFOh 0110 OOOOOOOOh
|
|
|
|
|
|
|
|
|
|
12-38
|
|
Add Immediate - 32 Bits ADDI
|
|
|
|
|
|
Syntax ADDI IL, Rd [, lJ
|
|
Execution IL + Rd -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 1 0 1 1 0 0 1 IR I Rd
|
|
16 LSBs of IL
|
|
16 MSBs of IL
|
|
|
|
Description This ADDI instruction adds a 32-bit, signed immediate value to the con-
|
|
tents of the destination register, and stores the result in the destination re-
|
|
gister. (The symbol IL in the syntax above represents a 32-bit, signed
|
|
immediate value.)
|
|
The assembler uses the long (32-bit) ADDI if it cannot use the short form.
|
|
You can force the assembler to use the long form by following the register
|
|
operand with an L:
|
|
ADDI IL,Rd,L
|
|
Machine
|
|
States 3,12
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if there is a carry, 0 otherwise
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Code Before After
|
|
AO NCZV AO
|
|
ADDI OFFFFFFFFh,AO FFFFFFFFh 1100 FFFFFFFEh
|
|
ADDI 80000000h,AO FFFFFFFFh 0101 7FFFFFFFh
|
|
ADDI 80000000h,AO 7FFFFFFFh 1000 FFFFFFFFh
|
|
ADDI 32768,AO 7FFFFFFFh 1001 80007FFFh
|
|
ADDI 2,AO,L FFFFFFFFh 0100 00000001h
|
|
|
|
|
|
|
|
|
|
12-39
|
|
ADDK Add Constant (5 Bits)
|
|
|
|
|
|
Syntax ADDK K,Rd
|
|
Execution K + Rd -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
10 0 0 0 01 K 1R Rd 1
|
|
Description ADDK adds a 5-bit constant to the contents of the destination register and
|
|
stores the result in the destination register. (The symbol K in the syntax
|
|
above represents a 5-bit constant.)
|
|
The constant is treated as an unsigned number in the range 1-32; if the or-
|
|
iginal value of K=32, then K is converted to 0 in the opcode. The assembler
|
|
issues an error if you try to add 0 to a register.
|
|
You can use the ADDK instruction with the ADDC instruction to perform
|
|
multiple-precision arithmetic.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if there is a carry, 0 otherwise
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Code Before After
|
|
AO NCZV AO
|
|
ADDK l,AO FFFFFFFFh 0110 OOOOOOOOh
|
|
ADDK 2,AO FFFFFFFFh 0100 0OOOOO01h
|
|
ADDK l,AO 7FFFFFFFh 1001 80000000h
|
|
ADDK l,AO 80000000h 1000 80000001h
|
|
ADDK 32,AO 80000000h 1000 80000020h
|
|
ADDK 32,AO 00000002h 0000 0OOOO022h
|
|
|
|
|
|
|
|
|
|
12-40
|
|
Add Registers in XV Mode ADDXV
|
|
|
|
|
|
Syntax ADDXY Rs, Rd
|
|
Execution RsX + RdX ~ RdX
|
|
RsY + RdY ~ RdY
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
1 1 0 0 0 01 Rs Rd
|
|
|
|
Description ADDXY adds the signed source X value to the signed destination X value,
|
|
adds the signed source Y value to the signed destination Y value, and stores
|
|
the result in the destination register. The source and destination registers
|
|
are treated as if they contained separate X and Y values. Any carry out from
|
|
the lower (X) half of the register does not propagate into the upper (Y) half.
|
|
If you only want to add the X halves together, then one of the Y values must
|
|
be 0 (the method for adding the Y halves is similar).
|
|
You can use this instruction to manipulate XY addresses in the register file;
|
|
ADDXY is also useful for incremental figure drawing.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if resulting X field is all Os, 0 otherwise
|
|
C The sign bit of the Y half of the result
|
|
Z 1 if Y field is all Os, 0 otherwise
|
|
V The sign bit of the X half of the result
|
|
Examples Code Before After
|
|
A1 AO AO NCZV
|
|
ADDXY AI,AD OOOOOOOOh OOOOOOOOh OOOOOOOOh 1010
|
|
ADDXY AI,AD OOOOOOOOh 00000001h 00000001h 0010
|
|
ADDXY AI,AD OOOOOOOOh 00010000h 00010000h 1000
|
|
ADDXY AI,AD OOOOOOOOh 00010001h 00010001h 0000
|
|
ADDXY AI,AD OOOOFFFFh 00000001h OOOOOOOOh 1010
|
|
ADDXY AI,AD OOOOFFFFh 00010001h 00010000h 1000
|
|
ADDXY AI,AD OOOOFFFFh 00000002h 00000001h 0010
|
|
ADDXY AI,AD OOOOFFFFh 00010002h 00010001h 0000
|
|
ADDXY AI,AD FFFFOOOOh 00010000h OOOOOOOOh 1010
|
|
ADDXY AI,AD FFFFOOOOh 00010001h 00000001h 0010
|
|
ADDXY AI,AD FFFFOOOOh 00020000h 00010000h 1000
|
|
ADDXY AI,AD FFFFOOOOh 00020001h 00010001h 0000
|
|
ADDXY AI,AD FFFFFFFFh 00010001h OOOOOOOOh 1010
|
|
ADDXY AI,AD FFFFFFFFh 00010002h 00000001h 0010
|
|
ADDXY AI,AD FFFFFFFFh 00020001h 00010000h 1000
|
|
ADDXY AI,AD FFFFFFFFh 00020002h 00010001h 0000
|
|
|
|
|
|
|
|
|
|
12-41
|
|
AND AND Registers
|
|
|
|
|
|
Syntax AND Rs, Rd
|
|
Execution Rs AND Rd ~ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
10 0 0 0 01 Rs 1R Rd 1
|
|
Description AND bitwise-ANDs the contents of the source register with the contents
|
|
of the destination register and stores the result in the destination register.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z 1 if the result is 0, a otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
A1 AO NCZV AO
|
|
AND Al,AO FFFFFFFFh FFFFFFFFh xxOx FFFFFFFFh
|
|
AND Al,AO FFFFFFFFh OOOOOOOOh x x 1x OOOOOOOOh
|
|
AND Al,AO OOOOOOOOh OOOOOOOOh x x1x OOOOOOOOh
|
|
AND Al,AO AAAAAAAAh 55555555h x x1x OOOOOOOOh
|
|
AND Al,AO AAAAAAAAh AAAAAAAAh xxOx AAAAAAAAh
|
|
AND Al,AO 55555555h 55555555h xxOx 55555555h
|
|
AND Al,AO 55555555h AAAAAAAAh xx1 x OOOOOOOOh
|
|
|
|
|
|
|
|
|
|
12-42
|
|
AND Immediate (32 Bits) ANDI
|
|
|
|
|
|
Syntax ANDI IL, Rd
|
|
Execution IL AND Rd .... Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 1 0 1 1 1 0 oI R I Rd
|
|
1s complement of 16 LSBs of IL
|
|
1s complement of 16 MSBs of IL
|
|
|
|
Description ANDI bitwise-ANDs the value of a 32-bit immediate value with the con-
|
|
tents of the destination register, and stores the result in the destination re-
|
|
gister. (The symbol IL in the syntax above represents a 32-bit immediate
|
|
value.)
|
|
This is an alternate mnemonic for ANDNI IL,Rd. Note that the assembler
|
|
stores the 1 s complement of I L in the two extension words.
|
|
Machine
|
|
States 3,12
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
AO NCZV AO
|
|
ANDI OFFFFFFFFh,AO FFFFFFFFh xxOx FFFFFFFFh
|
|
ANDI OFFFFFFFFh,AO OOOOOOOOh xx1x OOOOOOOOh
|
|
ANDI oOOOOOOOh,AO OOOOOOOOh xx1x OOOOOOOOh
|
|
ANDI OAAAAAAAAh,AO 55555555h xx1x OOOOOOOOh
|
|
ANDI OAAAAAAAAh,AO AAAAAAAAh xxOx AAAAAAAAh
|
|
ANDI 55555555h,AO 55555555h xxOx 55555555h
|
|
ANDI 55555555h,AO AAAAAAAAh xx1x OOOOOOOOh
|
|
|
|
|
|
|
|
|
|
12-43
|
|
ANON AND Register with Complement
|
|
|
|
|
|
Syntax ANON Rs, Rd
|
|
Execution (NOT Rs) AND Rd -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 Rs IR Rd I
|
|
Description ANON bitwise-ANDs the 1s complement of the contents of Rs with the
|
|
contents of Rd, and stores the result in the qestination register.
|
|
Rs and Rd must be in the same register file. Note that ANDN Rn, Rn has the
|
|
same effect as CLR Rn.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
A1 AO NC ZV AO
|
|
ANON Al,AO FFFFFFFFh FFFFFFFFh xx 1 x OOOOOOOOh
|
|
ANDN Al,AO FFFFFFFFh OOOOOOOOh xx 1 x OOOOOOOOh
|
|
ANON Al,AO OOOOOOOOh OOOOOOOOh xx 1 x OOOOOOOOh
|
|
ANDN Al,AO AAAAAAAAh 55555555h x x Ox 55555555h
|
|
ANON Al,AO AAAAAAAAh AAAAAAAAh x x 1 x OOOOOOOOh
|
|
ANON Al,AO 55555555h 55555555h xx 1 x OOOOOOOOh
|
|
ANON Al,AO 55555555h AAAAAAAAh x x Ox AAAAAAAAh
|
|
|
|
|
|
|
|
|
|
12-44
|
|
AND Not Immediate (32 Bits) ANONI
|
|
|
|
|
|
Syntax ANONI IL, Rd
|
|
Execution (NOT IL) AND Rd -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 1 0 1 1 1 0 oIR I Rd
|
|
16 LSBs of IL
|
|
16 MSBs of IL
|
|
|
|
Description ANDNI bitwise-ANDs the 1s complement of a 32-bit immediate value with
|
|
the contents of the destination register, and stores the result in the desti-
|
|
nation register. (The symbol IL in the syntax above represents a 32-bit
|
|
immediate value.) ANDI also uses this opcode.
|
|
Machine
|
|
States 3,12
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
AO NCZV AO
|
|
ANDNI OFFFFFFFFh,AO FFFFFFFFh xx1x OOOOOOOOh
|
|
ANDNI OFFFFFFFFh,AO OOOOOOOOh xx1x OOOOOOOOh
|
|
ANDNI oOOOOOOOh,AO OOOOOOOOh xx1x OOOOOOOOh
|
|
ANDNI OAAAAAAAAh,AO 55555555h xxOx 55555555h
|
|
ANDNI OAAAAAAAAh,AO AAAAAAAAh xx1x OOOOOOOOh
|
|
ANDNI 55555555h,AO 55555555h xx1x OOOOOOOOh
|
|
ANDNI 55555555h,AO AAAAAAAAh xxOx AAAAAAAAh
|
|
|
|
|
|
|
|
|
|
12-45
|
|
BTST Test Register Bit - Constant
|
|
|
|
|
|
Syntax BTST K, Rd
|
|
Execution Set status on value of bit K in Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I0 0 0 1 I R Rd
|
|
|
|
Description BTST tests a bit in the destination register bit and sets status bit Z accord-
|
|
ingly. This form of the BTST instruction uses a 5-bit constant to specify the
|
|
bit in Rd that is tested (the symbol K in the syntax above represents a 5-bit
|
|
constant). The K value must be an absolute expression that evaluates to a
|
|
number in the range 0 to 31; if the value is greater than 31, the assembler
|
|
issues a warning and truncates the K operand value to the five LSBs.
|
|
Note that the assembler 1s-complements the value of K before inserting it
|
|
into the opcode.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z 1 if the bit tested is 0, 0 if the bit tested is 1 .
|
|
V Unaffected
|
|
Examples Code Before After
|
|
AO NCZV
|
|
BTST O,AO 55555555h xxOx
|
|
BTST 15,AO 55555555h xx1x
|
|
BTST 31,AO 55555555h xx1x
|
|
BTST O,AO AAAAAAAAh xx1x
|
|
BTST 15,AO AAAAAAAAh xxOx
|
|
BTST 31,AO AAAAAAAAh xxOx
|
|
BTST O,AO FFFFFFFFh xxOx
|
|
BTST 15,AO FFFFFFFFh xxOx
|
|
BTST 31,AO FFFFFFFFh xxOx
|
|
BTST O,AO OOOOOOOOh xx1x
|
|
BTST 15,AO OOOOOOOOh xx1x
|
|
BTST 31,AO OOOOOOOOh xx1x
|
|
|
|
|
|
|
|
|
|
12-46
|
|
Test Register Bit - Register BTST
|
|
|
|
|
|
Syntax BTST Rs, Rd
|
|
Execution Set status on value of specified bit in Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I0 0 0 0 Rs IR Rd
|
|
|
|
Description BTST tests a bit in the destination register bit and sets status bit Z accord-
|
|
ingly. This form of the BTST instruction uses the 5 LSBs of the source re-
|
|
gister to specify the bit in Rd that is tested (the symbol Rs in the syntax
|
|
above represents the source register). Note that the 27 MSBs of Rs are
|
|
ignored.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 2,5
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z 1 if the bit tested is 0, 0 if the bit tested is 1
|
|
V Unaffected
|
|
Examples Code Before After
|
|
A1 AO NCZV
|
|
BTST Al,AO OOOOOOOOh 55555555h xxOx
|
|
BTST Al,AO OOOOOOOFh 55555555h xx1x
|
|
BTST Al,AO 0000001Fh 55555555h xx1x
|
|
BTST Al,AO OOOOOOOOh AAAAAAAAh xx1x
|
|
BTST Al,AO OOOOOOOFh AAAAAAAAh xxOx
|
|
BTST Al,AO 0000001Fh AAAAAAAAh xxOx
|
|
BTST Al,AO FFFFFF8Fh FFFF7FFFh xxOx
|
|
BTST Al,AO OOOOOOOOh FFFFFFFFh xxOx
|
|
BTST Al,AO OOOOOOOFh FFFFFFFFh xxOx
|
|
BTST Al,AO 0000001Fh FFFFFFFFh xxOx
|
|
BTST Al,AO OOOOOOOOh OOOOOOOOh xx1x
|
|
BTST Al,AO OOOOOOOFh OOOOOOOOh xx1x
|
|
BTST Al,AO 0000001Fh OOOOOOOOh xx1x
|
|
|
|
|
|
|
|
|
|
12-47
|
|
CALL Call Subroutine - Indirect
|
|
|
|
|
|
Syntax CALL Rs
|
|
Execution PC' -+ TOS
|
|
Rs -+ PC
|
|
SP - 32 -+ SP
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 0 R Rs I
|
|
Description CALL pushes the address of the next instruction (PC') onto the stack, then
|
|
jumps to a subroutine whose address is contained in the source register.
|
|
You can use this instruction for indexed subroutine calls. Note that when
|
|
Rs is the SP, Rs is decremented after being written to the PC (the PC
|
|
contains the original value of Rs).
|
|
The TMS3401 0 always sets the four LSBs of the program counter to 0, so
|
|
instructions are always word aligned.
|
|
The stack pointer (SP) points to the top of the stack; the stack is located
|
|
in external memory. The stack grows in the direction of decreasing linear
|
|
addresses. PC' is pushed onto the stack and the SP is predecremented by
|
|
32 before the return address is loaded onto the stack. Stack pointer align-
|
|
ment affects timing as indicated in Machine States, below.
|
|
Use the RETS instruction to return from a subroutine.
|
|
Machine
|
|
States 3+ (3),9 (SP aligned)
|
|
3+ (9),15 (SP nonaligned)
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Example CALL AO
|
|
Before After
|
|
AO PC SP PC SP
|
|
01234560h 04442210h F000020h 01 234560h FOOOOOOh
|
|
|
|
Memory contains the following values after instruction execution:
|
|
Address Data
|
|
F000010h 2220h
|
|
F000020h 0444h
|
|
|
|
|
|
|
|
|
|
12-48
|
|
Call Subroutine - Absolute CALLA
|
|
|
|
|
|
Syntax CALLA Address
|
|
Execution PC' -+ TOS
|
|
Address -+ PC
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1
|
|
16 LSBs of Address
|
|
16 MSBs of Address
|
|
|
|
Description CALLA pushes the address of the next instruction (PC') onto the stack,
|
|
then jumps to the address contained in the two extension words. The Ad-
|
|
dress operand is a 32-bit absolute address. This instruction is used for long
|
|
(greater than ±32K words) or externally referenced calls.
|
|
The lower four bits of the program counter are always set to 0, so in-
|
|
structions are always word-aligned.
|
|
The stack pointer (SP) points to the top of the stack; the stack is located
|
|
in external memory. The stack grows in the direction of decreasing linear
|
|
address. PC' is pushed onto the stack and the SP is predecremented by 32
|
|
before the return address is loaded onto the stack. Stack pointer alignment
|
|
affects timing as indicated in Machine States, below.
|
|
Use the RETS instruction to return from a subroutine.
|
|
Machine
|
|
States 4+(2),15 (SP aligned)
|
|
4+ (8),21 (SP nonaligned)
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Example CALLA 01234560h
|
|
Before After
|
|
PC SP PC SP
|
|
04442210h OF000020h 01234560h OFOOOOOOh
|
|
Memory contains the following values after instruction execution:
|
|
Address Data
|
|
F000010h 2240h
|
|
F000020h 0444h
|
|
|
|
|
|
|
|
|
|
12-49
|
|
CALLR Call Subroutine - Relative
|
|
|
|
|
|
Syntax CALLR Address
|
|
Execution PC' -+ TOS
|
|
PC' + (offset x 16) -+ PC
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
|
|
I0
|
|
0 0 0 0 0
|
|
offset
|
|
0
|
|
1 I
|
|
Description CALLR pushes the address of the next instruction (PC') onto the stack,
|
|
then jumps to the subroutine at the address specified by the sum of the next
|
|
instruction address and the signed word offset. This instruction is used for
|
|
calls within a specified module or section.
|
|
The Address operand is a 32-bit address within ±32K words (-32,768 to
|
|
32,767) of the PC. The address must be defined within the current section;
|
|
the assembler does not accept an address value that is externally defined
|
|
or defined within a different section than PC'. The assembler calculates the
|
|
offset value for the opcode as (Address - PC') /16.
|
|
The lower four bits of the program counter are always set to 0, so in-
|
|
structions are always word aligned.
|
|
The stack pointer (SP) points to the top of the stack; the stack is located
|
|
in external memory. The stack grows in the direction of decreasing linear
|
|
address. The PC is pushed on to the stack and the S P is predecremented
|
|
by 32 before the return address is loaded onto the stack. Stack pointer
|
|
alignment affects timing as indicated in Machine States, below.
|
|
Use the RETS instruction to return from a subroutine.
|
|
Machine
|
|
States 3+ (2),11 (SP aligned)
|
|
3+ (8),17 (SP nonaligned)
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Before After
|
|
PC SP PC SP
|
|
CALLR 0447FFFOh 04400000h OF000020h 0447FFFOh OFOOOOOOh
|
|
CALLR 04480000h 04400000h OF000020h 04480000h OFOOOOOOh
|
|
Memory contains the following values after instruction execution:
|
|
Address Data
|
|
F000010h OOOOh
|
|
F000020h 0440h
|
|
|
|
|
|
|
|
|
|
12-50
|
|
Clear Register CLR
|
|
|
|
|
|
Syntax CLR Rd
|
|
Execution Rd XOR Rd -. Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 Rd IR Rd I
|
|
Description CLR clears the destination register by XORing the contents of the register
|
|
with itself. This is an alternate mnemonic for XOR Rd,Rd.
|
|
Machine
|
|
States 1,4
|
|
Status Bits NUn affected
|
|
C Unaffected
|
|
Z 1
|
|
V Unaffected
|
|
Examples Before After
|
|
AO AO NCZV
|
|
CLR AO FFFFFFFFh OOOOOOOOh xx1x
|
|
CLR AO 00000001h OOOOOOOOh xx1x
|
|
CLR AO 80000000h OOOOOOOOh xx1x
|
|
CLR AO AAAAAAAAh OOOOOOOOh xx1x
|
|
|
|
|
|
|
|
|
|
12-51
|
|
CLRC Clear Carry
|
|
|
|
|
|
Syntax CLRC
|
|
Execution o -. C
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 0 0 0 0 0 01
|
|
|
|
Description CLRC sets the C (carry) bit in the status register to 0; the rest of the status
|
|
register is unaffected. (Note that the SETC instruction sets the C bit.)
|
|
This instruction is useful for returning a true/false value (in the carry bit)
|
|
from a subroutine without using a general-purpose register.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C 0
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Before After
|
|
ST NCZV ST NCZV
|
|
CLRC FOOOOOOOh 1111 BOOOOOOOh 1011
|
|
CLRC 40000010h 0100 00000010h 0000
|
|
CLRC BOOOO01Fh 1011 BOOOO01Fh 1011
|
|
|
|
|
|
|
|
|
|
12-52
|
|
Compare Registers CMP
|
|
|
|
|
|
Syntax CMP Rs, Rd
|
|
Execution Set status bits on the result of Rd - Rs
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
10 0 0 0 01 Rs R Rd
|
|
|
|
Description CMP sets the status bits on the result of subtracting the contents of Rs from
|
|
the contents of Rd. This is a nondestructive compare; the contents of the
|
|
registers are not affected. This instruction is often used in conjunction with
|
|
the JAcc or J Rcc conditional jump instructions.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if a there is a borrow, 0 otherwise
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Code Before After Jumps Taken
|
|
A1 AO NCZV
|
|
eMP Al,AO 00000001h 00000001h 0010 UC,NN,NC,Z,NV,LS,GE,LE,HS
|
|
eMP Al,AO 00000001h 00000002h 0000 UC,NN,NC,NZ,NV,P,HI,GE,GT,HS
|
|
eMP Al,AO 00000001h FFFFFFFFh 1000 UC,N,NC,NZ,NV,P,HI,LT,LE,HS
|
|
eMP Al,AO 00000001h 80000000h 0001 UC,NN,NC,NZ,V,HI,LT,LE,HS
|
|
eMP Al,AO FFFFFFFFh 7FFFFFFFh 1101 UC,N,C,NZ,V,LS,GE,GT,LO
|
|
eMP Al,AO FFFFFFFFh 80000000h 1100 UC,N,C,NZ,NV,LS,LT,LE,LO
|
|
eMP Al,AO 80000000h 7FFFFFFFh 1101 UC,N,C,NZ,V,LS,GE,GT,LO
|
|
|
|
|
|
|
|
|
|
12-53
|
|
CMPI Compare Immediate - 16 Bits
|
|
|
|
|
|
Syntax CM PI IW, Rd [, WJ
|
|
Execution Set status bits on the resu It of Rd - IW
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
o 0 0 IR Rd
|
|
1 s complement of IW
|
|
|
|
Description CMPI sets the status bits on the result of subtracting a 16-bit, sign-
|
|
extended immediate value from the contents of the destination register.
|
|
(The symbol IW in the syntax above represents a 16-bit, signed immediate
|
|
value.) This is a nondestructive compare; the contents of the destination
|
|
register are not affected. This instruction is often used in conjunction with
|
|
the JAee or J Ree conditional jump instructions.
|
|
Note that the assembler inserts the 1 s complement of the 16-bit value into
|
|
the second instruction word.
|
|
The assembler uses the short form of the CMPI instruction if the immediate
|
|
value is previously defined and is in the range -32,768 to 32,767. You can
|
|
force the assembler to use the short form by following the register operand
|
|
withW:
|
|
eMP! !W,Rd,W
|
|
The assembler truncates the upper bits and issues an appropriate warning
|
|
message if the value is greater than 16 bits.
|
|
Machine
|
|
States 2,8
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if there is a borrow, 0 otherwise
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Code Before After Jumps Taken
|
|
AO NCZV
|
|
eMP! 1,AO 00000002h 0000 UC,NN,NC,NZ,NV,P,HI,GE,GT,HS
|
|
eMP! 1,AO 00000001h 0010 UC,NN,NC,Z,NV,LS,GE,LE,HS
|
|
eMP! 1,AO OOOOOOOOh 1100 UC,N,C,NZ,NV,LS,LT,LE,LO
|
|
eMP! 1,AO FFFFFFFFh 1000 UC,N,NC,NZ,NV,P,HI,LT,LE,HS
|
|
eMP! 1,AO 80000000h 0001 UC,NN,NC,NZ,V,HI,LT,LE,HS
|
|
eMP! -2,AO OOOOOOOOh 0100 UC,NN,C,NZ,NV,P,LS,GE,GT,LO
|
|
eMP! -2,AO FFFFFFFFh 0000 UC,NN,NC,NZ,NV,P,LI,GE,GT,HS
|
|
eMP! -2,AO FFFFFFFEh 0010 UC,NN,NC,Z,NV,LS,GE,LE,HS
|
|
eMP! -2,AO FFFFFFFDh 1100 UC,N,C,NZ,NV,LS,LT,LE,LO
|
|
eMP! -l,AO 7FFFFFFFh 1101 UC,N,C,NZ,V,LS,GE,GT,LO
|
|
|
|
|
|
|
|
|
|
12-54
|
|
Compare Immediate - 32 Bits CMPI
|
|
|
|
|
|
Syntax CM PilL, Rd [, LJ
|
|
Execution Set status bits on the resu It of Rd - I L
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 1 0 1 1 0 1 1 IR I Rd
|
|
1s complement of 16 LSBs of IL
|
|
1 s complement of 16 MSBs of IL
|
|
|
|
Description CMPI sets the status bits on the result of subtracting a 32-bit, signed im-
|
|
mediate value from the contents of the destination register. (The IL symbol
|
|
in the syntax above represents a 32-bit, signed immediate value.) This is a
|
|
nondestructive compare; the contents of the destination register are not af-
|
|
fected.
|
|
Note that the assembler inserts the 1 s complement of the 16 LSBs of the
|
|
value into the second instruction word, and inserts the 1s complement of
|
|
the 16 MSBs of the value into the third instruction word.
|
|
The assembler uses this form of the CMPI instruction if it cannot use the
|
|
short form. You can force the assembler to use the long form by following
|
|
the register operand with an L:
|
|
CMPI IL,Rd,L
|
|
This instruction is often used in conjunction with the JAcc or J Rcc condi-
|
|
tional jump instructions.
|
|
Machine
|
|
States 3,12
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if there is a borrow, 0 otherwise
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Before After Jumps Taken
|
|
AO NCZV
|
|
CMPI 8000h,AO 00008001h 0000 UC, N N, NC, NZ, NV, p, H I,G E,GT, HS
|
|
CMPI 8000h,AO 00008000h 0010 UC,NN,NC,Z,NV,LS,GE,LE,HS
|
|
CMPI 8000h,AO 00007FFFh 1100 UC,N,C,NZ,NV,LS,LT,LE,LO
|
|
CMPI 8000h ,AO FFFFFFFFh 1000 UC,N,NC,NZ,NV,P,HI,LT,LE,HS
|
|
CMPI 8000h,AO 80007FFFh 0001 UC,NN,NC,NZ,V,HI,LT,LE,HS
|
|
CMPI OFFFF7FFFh,AO OOOOOOOOh 0100 UC,NN,C,NZ,NV,P,LS,GE,GT,LO
|
|
CMPI OFFFF7FFEh,AO FFFF7FFFh 0000 UC,NN,NC,NZ,NV,P,HI,GE,GT,HS
|
|
CMPI OFFFF7FFEh,AO FFFF7FFEh 0010 UC,NN,NC,Z,NV,LS,GE,LE,HS
|
|
CMPI OFFFF7FFEh, AO FFFF7FFDh 1100 UC,N,C,NZ,NV,LS,LT,LE,LO
|
|
CMPI OFFFF7FFFh,AO 7FFF7FFFh 1101 UC,N,C,NZ,V,LS,GE,GT,LO
|
|
|
|
|
|
|
|
|
|
12-55
|
|
CMPXY Compare X and V Halves of Registers
|
|
|
|
|
|
Syntax CMPXV Rs, Rd
|
|
Execution Set status bits on the results of:
|
|
RdX - RsX
|
|
RdV - RsV
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
11 0 0 01 Rs R Rd
|
|
|
|
Description CMPXY compares the source register to the destination register in XY mode
|
|
and sets the status bits as if a subtraction had been performed. This is a
|
|
nondestructive compare; the contents of the register are not affected. The
|
|
source and destination registers are treated as signed XY registers. Note
|
|
that no overflow detection is provided.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if source X field = destination X field, 0 otherwise
|
|
C Sign bit of Y half of the result
|
|
Z 1 if source Y field = destination Y field, 0 otherwise
|
|
V Sign bit of X half of the result
|
|
Examples Code Before After Jumps Taken
|
|
A1 AO NCZV
|
|
CMPXY Al,AO 00090009h 00010001 h 0101 NN,C,NZ,V,LS,LT
|
|
CMPXY Al,AO 00090009h 00090001 h 0011 NN,NC,Z,V,LS,LT
|
|
CMPXY Al,AO 00090009h 00010009h 1100 N,C,NZ,NV,LS,LT
|
|
CMPXY Al,AO 00090009h 00090009h 1010 N,NC,Z,NV,LS,LT
|
|
CMPXY Al,AO 00090009h 00000010h 0100 NN,C,NZ,NV,LS,GE
|
|
CMPXY Al,AO 00090009h 00090010h 0010 NN,NC,Z,NV,LS,GE
|
|
CMPXY Al,AO 00090009h 00100000h 0001 NN,NC,NZ,V,HI,LT
|
|
CMPXY Al,AO 00090009h 00100009h 1 000 N,NC,NZ,NV,HI,LT
|
|
CMPXY Al,AO 00090009h 001 0001 Oh 0000 NN,NC,NZ,NV,HI,GE
|
|
|
|
|
|
|
|
|
|
12-56
|
|
Compare Point to Window CPW
|
|
|
|
|
|
Syntax CPW Rs, Rd
|
|
Execution point code -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I1 0 0 Rs R Rd
|
|
|
|
Description CPW compares a point represented by an XY value in the source register to
|
|
the window limits in the WSTART and WEND registers. The contents of
|
|
the source register are treated as an XY address that consists of 16-bit
|
|
signed X and Y values. WSTART and WEN 0 are also treated as signed
|
|
XY -format registers. WST ART and WEN 0 must contain positive values;
|
|
negative values produce unpredictable results. The location of the point
|
|
with respect to the window is encoded as shown below; the code is loaded
|
|
into the destination register.
|
|
Codes:
|
|
|
|
|
|
0101 0100 0110
|
|
|
|
|
|
|
|
~1UI= 1~10
|
|
31 98 5.. 0
|
|
1000....000 ICODe I000001 Rd
|
|
|
|
1001 1000 1010
|
|
|
|
|
|
|
|
The following list describes the contents of the destination register after
|
|
CPWexecution:
|
|
Bit Postion: Contents:
|
|
0-4 Os
|
|
5 1 if WST ART.X > Rs.X, 0 otherwise
|
|
6 1 if Rs.X > WEND.X, 0 otherwise
|
|
7 1 if WSTART.Y > Rs.Y, 0 otherwise
|
|
8 1 if Rs.Y > WEND.Y, 0 otherwise
|
|
9-31 Os
|
|
This instruction can also be used to trivially reject lines that do not intersect
|
|
with a window. The CPW codes for the two points defining the line are
|
|
AN Oed together. If the result is nonzero, then the line must lie completely
|
|
outside the window (and does not intersect it). A 0 result indicates that the
|
|
line may intersect the window, and a more rigorous test must be applied.
|
|
Rs and Rd must be in the same register file.
|
|
Implied
|
|
Operands B Fi Ie Reg isters
|
|
Register Name Format Description
|
|
85 WSTART XY Window start. Defines inclusive starting
|
|
corner of window (lesser value corner).
|
|
86 WEND XY Window end. Defines inclusive ending
|
|
corner of window (greater value corner).
|
|
|
|
|
|
|
|
12-57
|
|
CPW Compare Point to Window
|
|
|
|
|
|
Machine
|
|
States 1,4
|
|
Status Bits NUn affected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V 1 if point lies outside window, a otherwise
|
|
Examples You must select appropriate implied operand values before executing the
|
|
CPW instruction. In this example, the implied operands are set up as fol-
|
|
lows, specifying a block of 36 pixels.
|
|
WSTART = 5,5
|
|
WEND = A,A
|
|
|
|
CPW Al/AO
|
|
|
|
Before After
|
|
A1 NCZV AO NCZV
|
|
0OO40004h xxxO OOOOOOAOh xxx1
|
|
0OO40005h xxxO 0OOOOO80h xxx1
|
|
0OO4000Ah xxxO 0OOOOO80h xxx1
|
|
0OO4000Bh xxx1 OOOOOOCOh xxx1
|
|
0OO50004h xxx1 0OOOOO20h xxx1
|
|
0OO50005h xxxO OOOOOOOOh xxxO
|
|
0OO5000Ah xxxO OOOOOOOOh xxxO
|
|
0OO5000Bh xxxO 0OOOOO40h xxx1
|
|
OOOAOOO4h xxxO 0OOOOO20h xxx1
|
|
OOOAOOO5h xxx1 OOOOOOOOh xxxO
|
|
OOOAOOOAh xxx1 OOOOOOOOh xxxO
|
|
OOOAOOOBh xxxO 0OOOOO40h xxx1
|
|
OOOBOOO4h xxxO 0OOOO120h xxx1
|
|
OOOBOOO5h xxxO 0OOOO100h xxx1
|
|
OOOBOOOAh xxxO 0OOOO100h xxx1
|
|
OOOBOOOBh xxxO 0OOOO140h xxx1
|
|
|
|
|
|
|
|
|
|
12-58
|
|
Convert XV Address to Linear Address CVXVL
|
|
|
|
|
|
Syntax CVXVl Rs, Rd
|
|
Execution RsXV ..... linear address in Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I 1 0 0 01 Rs R Rd
|
|
|
|
Description CVXYL converts an XY address to a linear address:
|
|
|
|
• The source register contains an XY address. The signed X value oc-
|
|
cupies the 16 LSBs of the register and the signed Y value occupies
|
|
the 16 MSBs. The X value must be positive.
|
|
|
|
• The XY address is converted into a 32-bit linear address which is
|
|
stored in the destination register.
|
|
The following conversion formula is used:
|
|
Address = [(V x Display Pitch) OR (X x Pixel Size)] + Offset
|
|
Since the TMS3401 0 restricts the screen pitch and pixel size to powers of
|
|
two (for XY addressing), the multiply operations in this conversion are ac-
|
|
tually shifts. The offset value is in the OFFSET register. The CONVDP value
|
|
is used to determine the shift amount for the Y value, while the PSIZE reg-
|
|
ister determines the X shift amount.
|
|
Rs and Rd must be in the same register file.
|
|
Implied
|
|
Operands B File Registers
|
|
Register Name Format Description
|
|
B3 DPTCH Linear Destination pitch
|
|
B4 OFFSET Linear Screen origin (location 0,0)
|
|
I/O Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOO0140h CONVDP XY-to-linear conversion (destination pitch)
|
|
COOO0150h PSIZE Pixel size (1,2,4,8,16)
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
CVXYL instruction. To ensure that this register contains the correct value
|
|
for execution, you may want to follow the write to that location with an
|
|
instruction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
Machine
|
|
States 3,6
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
|
|
|
|
|
|
|
|
12-59
|
|
CVXVL Convert XV Address to Linear Address
|
|
|
|
|
|
Examples
|
|
|
|
Before After
|
|
AO OFFSET PSIZE CONVDP A1
|
|
CVXYL AD,Ai 00400030h OOOOOOOOh 0010h 0014h 00020300h
|
|
CVXYL AD,Ai 00400030h OOOOOOOOh 0008h 0014h 00020180h
|
|
CVXYL AD,Ai 00400030h OOOOOOOOh 0004h 0014h 00020000h
|
|
CVXYL AO,Al 00400030h 00008000h 0004h 0014h 00028000h
|
|
CVXYL AO,Al 00400030h oFOOOOOOh 0004h 0014h OF020000h
|
|
CVXYL AO,Al 00400030h OOOOOOOOh 0002h 0014h 00020060h
|
|
CVXYL AO,Al 00400030h OOOOOOOOh 0001h 0014h 00020030h
|
|
CVXYL AO,Al 00400030h OOOOOOOOh 0001h 0013h 00040030h
|
|
CVXYL AO,Al 00400030h OOOOOOOOh 0001h 0015h 00010000h
|
|
CONVDP = 0013h corresponds to DPTCH = 00001000h
|
|
CONVDP = 0014h corresponds to DPTCH = 00000800h
|
|
CONVDP = 0015h corresponds to DPTCH = 00000400h
|
|
|
|
|
|
|
|
|
|
12-60
|
|
Decrement Register DEC
|
|
|
|
|
|
Syntax DEC Rd
|
|
Execution Rd - 1 -+ Rd
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 0 R Rd I
|
|
Description DEC subtracts 1 from the contents of the destination register and stores the
|
|
result in the destination register. This instruction is an alternate mnemonic
|
|
for SUBK 1, Rd.
|
|
You can use the DEC instruction with the SUBB instruction to perform
|
|
multiple-precision arithmetic.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N a
|
|
1 if the result is negative, otherwise
|
|
C a
|
|
1 if there is a borrow, otherwise
|
|
Z a
|
|
1 if the result is 0, otherwise
|
|
V a
|
|
1 if there is an overflow, otherwise
|
|
Examples Code Before After
|
|
A1 A1 NCZV
|
|
DEC Al 00000010h OOOOOOOFh 0000
|
|
DEC Al 00000001h OOOOOOOOh 0010
|
|
DEC Al OOOOOOOOh FFFFFFFFh 1100
|
|
DEC Al FFFFFFFFh FFFFFFFEh 1000
|
|
DEC Al 80000000h 7FFFFFFFh 0001
|
|
|
|
|
|
|
|
|
|
12-61
|
|
DINT Disable Interrupts
|
|
|
|
|
|
Syntax DINT
|
|
Execution o ~ IE
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 0 0 0 0 oI
|
|
Description DINT disables interrupts by setting the global interrupt enable bit (IE, status
|
|
bit 21) to O. All interrupts except reset and NMI are disabled; the interrupt
|
|
enable mask in the INTENB register is ignored. The remainder of the status
|
|
register is unaffected.
|
|
The EINT instruction enables interrupts.
|
|
Machine
|
|
States 3,6
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
IE 0
|
|
Examples Before After
|
|
ST ST
|
|
DINT 00000010h 00000010h
|
|
DINT 00200010h 00000010h
|
|
|
|
|
|
|
|
|
|
12-62
|
|
Divide Registers - Signed DIVS
|
|
|
|
|
|
Syntax DIVS Rs, Rd
|
|
Execution Rd Even: Rd:Rd+1/Rs -+ Rd, remainder -+ Rd+1
|
|
Rd Odd: Rd/Rs -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
10 0 0 01 Rs R Rd
|
|
|
|
Description DIVS performs a signed 32-bit or 64-bit divide. The source register con-
|
|
tains the 32-bit signed divisor. The destination register contains a 32-bit
|
|
signed dividend or the most significant half of a 64-bit signed dividend,
|
|
depending on whether Rd is an odd register (for example, A1 or 83) or an
|
|
even register (for example, A8 or B2):
|
|
Rd Even DIVS performs a signed divide of the 64-bit operand contained
|
|
in the two consecutive registers, starting at the specified desti-
|
|
nation register, by the 32-bit contents of the source register.
|
|
The specified even-numbered destination register, Rd, contains
|
|
the 32 MSBs of the dividend. The next consecutive register
|
|
(which is odd-numbered) contains the 32 LSBs of the divi-
|
|
dend. The quotient is stored in the destination register, and the
|
|
remainder is stored in the following register (Rd+1). The re-
|
|
mainder is always the same sign as the dividend (in Rd:Rd+1).
|
|
Avoid using A14 or B14 as the destination register, since this
|
|
overwrites the SP; the assembler issues a warning in this case.
|
|
Rd Odd DIVS performs a signed divide of the 32-bit operand contained
|
|
in the destination register by the 32-bit value in the source re-
|
|
gister. The quotient is stored in the destination register; the re-
|
|
mainder is not returned.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States Rd Odd Rd Even
|
|
Normal 39,42 40,43
|
|
Result = 80000000h 41,44 41,44
|
|
Rs = 0 7,10 7,10
|
|
Rd.?:. Rs treated as normal 7,10
|
|
Status Bits N 0 if:
|
|
|
|
• Rs = 0, or
|
|
• Rd is even and Rd .?:. Rs, or
|
|
• Quotient is nonnegative.
|
|
1 if:
|
|
|
|
• Result = 80000000h or
|
|
• Quotient is negative.
|
|
C Unaffected
|
|
Z 0 if:
|
|
|
|
• Rs = 0, or
|
|
• Rd is even and Rd .?:. Rs, or
|
|
|
|
12-63
|
|
DIVS Divide Registers - Signed
|
|
|
|
|
|
|
|
• Result = 80000000h, or
|
|
•
|
|
1 if:
|
|
Quotient ¢ O.
|
|
|
|
|
|
|
|
• Quotient = O.
|
|
V 1 if quotient overflows (cannot be represented by 32 bits), 0 other-
|
|
wise
|
|
The following conditions cause an overflow and set the overflow flag:
|
|
|
|
• Divisor (Rs) is 0
|
|
• Quotient cannot be contained within 32 bits
|
|
|
|
Example 1 This example divides the contents of register AO by the contents of register
|
|
A2, and stores the result in register AO. Note that the contents of reg-
|
|
ister A2 are not affected by instruction execution.
|
|
DIVS A2,AO
|
|
|
|
Before After
|
|
AO A1 A2 AO A1 A2 NCZV
|
|
12345678h 87654321h 87654321h D95BC60Ah 15CA1DD7h 87654321h 1xOO
|
|
EDCBA987h 789ABCDFh 87654321h 26A439F6h EA35E229h 87654321h OxOO
|
|
EDCBA987h 789ABCDFh 789ABCDFh D95BC60Ah EA35E229h 789ABCDFh 1xOO
|
|
12345678h 87654321h 789ABCDFh 26A439F6h 15CA1DD7h 789ABCDFh OxOO
|
|
12345678h 87654321h OOOOOOOOh 12345678h 87654321h OOOOOOOOh Ox01
|
|
OOOOOOOOh OOOOOOOOh OOOOOOOOh OOOOOOOOh OOOOOOOOh OOOOOOOOh Ox01
|
|
OOOOOOOOh OOOOOOOOh 87654321h OOOOOOOOh OOOOOOOOh 87654321h Ox10
|
|
87654321h OOOOOOOOh 87654321h 87654321h OOOOOOOOh 87654321h Ox01
|
|
Example 2 This example divides the contents of register A1 by the contents of of reg-
|
|
ister A2, and stores the result in register AO. Note that the contents of
|
|
register A2 are not affected by instruction execution.
|
|
DIVS A2,Al
|
|
|
|
Before After
|
|
AO A1 A2 AO A1 A2 NCZV
|
|
OOOOOOOOh 87654321h 12345678h OOOOOOOOh FFFFFFFAh 12345678h 1xOO
|
|
OOOOOOOOh 87654321h OEDCBA988h OOOOOOOOh 0OOOOOO6h EDCBA988h OxOO
|
|
OOOOOOOOh 789ABCDFh OEDCBA988h OOOOOOOOh FFFFFFFAh EDCBA988h 1xOO
|
|
OOOOOOOOh 789ABCDFh 12345678h OOOOOOOOh 0OOOOOO6h 12345678h OxOO
|
|
OOOOOOOOh 87654321h OOOOOOOOh OOOOOOOOh 87654321h OOOOOOOOh Ox01
|
|
OOOOOOOOh OOOOOOOOh OOOOOOOOh OOOOOOOOh OOOOOOOOh OOOOOOOOh Ox01
|
|
|
|
|
|
|
|
|
|
12-64
|
|
Divide Registers - Unsigned DIVU
|
|
|
|
|
|
Syntax DIVU Rs, Rd
|
|
Execution Rd Even: Rd:Rd+1/Rs -+ Rd, remainder -+ Rd+1
|
|
Rd Odd: Rd/Rs -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 Rs R Rd I
|
|
Description DIVU performs an unsigned 32-bit or 64-bit divide. The source register
|
|
contains the 32-bit divisor. The destination register contains a 32-bit divi-
|
|
dend or the most significant half of a 64-bit dividend, depending on
|
|
whether Rd is an odd register (for example, A 1 or B3) or an even register
|
|
(for example, A8 or B2):
|
|
Rd Even DIVU performs an unsigned divide of the 64-bit operand con-
|
|
tained in the two consecutive registers, starting at the destina-
|
|
tion register, by the 32-bit contents of the source register. The
|
|
specified even-numbered destination register, Rd, contains the
|
|
32 MSBs of the dividend. The next consecutive register
|
|
(which is odd-numbered) contains the 32 LSBs of the divi-
|
|
dend. The quotient is stored in the destination register, and the
|
|
remainder is stored in the following register (Rd+1). Avoid
|
|
using A14 or B14 as the destination register, since this over-
|
|
writes the SP; the assembler issues a warning in this case.
|
|
Rd Odd DIVU performs an unsigned divide of the 32-bit operand con-
|
|
tained in the destination register by the 32-bit value in the
|
|
source register. The quotient is stored in the destination regis-
|
|
ter; the remainder is not returned.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States Rd Odd Rd Even
|
|
Normal 37,40 37,40
|
|
Rs:;:: 0 5,8, 5,8
|
|
Rd ~ Rs treated as normal 5,8
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z 0 if:
|
|
|
|
• Rs = 0, or
|
|
• Rd is even and Rd ..:::. Rs, or
|
|
• Quotient ¢ O.
|
|
1 if:
|
|
|
|
• Quotient = O.
|
|
V 1 if quotient overflows (cannot be represented by 32 bits), 0 other-
|
|
wise
|
|
The following conditions cause an overflow and set the overflow flag:
|
|
|
|
• Divisor (Rs) is 0
|
|
|
|
|
|
12-65
|
|
DIVU Divide Registers - Unsigned
|
|
|
|
|
|
• Quotient cannot be contained within 32 bits
|
|
|
|
Example 7 This instruction divides the contents of register AO by the contents of reg-
|
|
ister A2, and stores the unsigned result in register AO. Note that the
|
|
contents of register A2 are not affected by instruction execution.
|
|
DIVU A2,AO
|
|
Before After
|
|
AO A1 A2 AO A1 A2 NCZV
|
|
12345678h 87654321h 789ABCDFh 26A439F6h 15CA1DD7h 789ABCDFh xxOO
|
|
12345678h 87654321h OOOOOOOOh 12345678h 87654321h OOOOOOOOh xx01
|
|
OOOOOOOOh OOOOOOOOh OOOOOOOOh OOOOOOOOh OOOOOOOOh OOOOOOOOh xx01
|
|
OOOOOOOOh OOOOOOOOh 87654321h OOOOOOOOh OOOOOOOOh 87654321h xx10
|
|
87654321h OOOOOOOOh 87654321h 87654321h OOOOOOOOh 87654321h xx01
|
|
|
|
Example 2 This instruction divides the contents of register A1 by the contents of reg-
|
|
ister A2, and stores the unsigned result in register A1. Note that the
|
|
contents of register A2 are not affected by instruction execution.
|
|
DIVU A2,Al
|
|
|
|
Before After
|
|
AO A1 A2 AO A1 A2 NCZV
|
|
OOOOOOOOh 789ABCDFh 12345678h OOOOOOOOh 0OOOOOO6h 12345678h xxOO
|
|
OOOOOOOOh 12345678h OOOOOOOOh OOOOOOOOh 12345678h OOOOOOOOh xx01
|
|
OOOOOOOOh OOOOOOOOh OOOOOOOOh OOOOOOOOh OOOOOOOOh OOOOOOOOh xx01
|
|
OOOOOOOOh OOOOOOOOh 87654321h OOOOOOOOh OOOOOOOOh 87654321h xx10
|
|
OOOOOOOOh 87654321h 87654321h OOOOOOOOh 0OOOOOO1h 87654321h xxOO
|
|
|
|
|
|
|
|
|
|
12-66
|
|
Draw and Advance DRAV
|
|
|
|
|
|
Syntax DRAV Rs, Rd
|
|
Execution COLOR1 pixels -+ * Rd
|
|
RsX + RdX -+ RdX
|
|
RsY + RdY -+ RdY
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I1 0 Rs R Rd
|
|
|
|
Description DRAV writes the pixel value in the COLOR1 register to the location pointed
|
|
to by the XY address in the destination register. Following the write, the
|
|
XYaddress in the destination register is incremented by the value in the
|
|
source register: the X half of Rs is added to the X half of Rd, and the Y half
|
|
of Rs is added to the Y half of Rd. Any carry out from the lower (X) half
|
|
of the register does not propagate into the upper (Y) half.
|
|
COLOR1 bits 0-15 are output on data bus lines 0-15, respectively. The
|
|
pixel data used from COLOR1 is that which aligns to the destination lo-
|
|
cation, so 16-bit patterns can be implemented. Rs and Rd must be in the
|
|
same register file.
|
|
Implied
|
|
Operands B File Registers
|
|
Register Name Format Description
|
|
83 DPTCH Linear Destination pitch
|
|
84 OFFSET Linear Screen origin (location 0,0)
|
|
85 WSTART XY Window starting corner
|
|
86 WEND XY Window ending corner
|
|
89 COLOR1 Pixel Pixel color
|
|
I/O Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOOO080h CONTROL PP- Pixel processing operations (22 options)
|
|
W - Window checking operation
|
|
T - Transparency operation
|
|
COOO0140h CONVDP XY -to-linear conversion (destination pitch)
|
|
COOO0150h PSIZE Pixel size (1,2,4,8,16)
|
|
COOO0160h PMASK Plane mask - pixel format
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
DRAV instruction. To ensure that this register contains the correct value for
|
|
execution, you may want to follow the write to that location with an in-
|
|
struction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
Pixel
|
|
Processing Set the PPOP field in the CONTROL register to select a pixel processing
|
|
operation. This operation is applied to the pixel as it is moved to the des-
|
|
tination location. At reset, the default pixel processing operation is replace
|
|
(S -+ D). For more information, see Section 7.7, Pixel Processing, on page
|
|
7-15.
|
|
|
|
|
|
|
|
12-67
|
|
DRAV Draw and Advance
|
|
|
|
|
|
Window
|
|
Checking Select a window checking mode by setting the W bits in the CONTROL
|
|
register. If you select an active window checking mode (W = 1, 2, or 3),
|
|
the WSTART and WEND registers define the XY starting and ending corners
|
|
of a rectangular window. The X and Y values in both WSTART and WEND
|
|
must be positive.
|
|
When the TMS3401 0 attempts to write a pixel inside or outside a defined
|
|
value, the following actions may occur:
|
|
W=O No window operation. The pixel is drawn and the WVP and V bits
|
|
are unaffected.
|
|
W=1 Window hit. No pixels are drawn. The V bit is set to 0 if the pixel lies
|
|
within the window; otherwise, it is set to 1. The WVP bit is set to 1
|
|
if the pixel lies within the window; otherwise, it is not affected.
|
|
W=2 Window miss. If the pixel lies outside the window, the WVP and V
|
|
bits are set to 1 and the instruction is aborted (no pixel is drawn).
|
|
Otherwise, the pixel is drawn, the V bit is set to 0, and the WVP bit
|
|
is unaffected.
|
|
W=3 Window clip. If the pixel lies outside the window, the V bit is set to
|
|
1 and the instruction is aborted (no pixels are drawn). Otherwise,
|
|
the pixel is drawn and the V bit is set to O.
|
|
For more information, see Section 7.10, Window Checking, on page 7 -27.
|
|
Transparency You can enable transparency for this instruction by setting the T bit in the
|
|
CONTROL I/O register to 1. The TMS34010 checks for 0 (transparent)
|
|
source pixels after it processes the source data. At reset, the default case
|
|
for transparency is off.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
Shift Register
|
|
Transfers When this instruction is executed and the SRT bit is set, normal memory
|
|
read and write operations become SRT reads and writes. Refer to Section
|
|
9.10.2, Video Memory Bulk Initialization, on page 9-28 for more informa-
|
|
tion.
|
|
Machine
|
|
States The states consumed depend on the operation selected, as indicated below.
|
|
|
|
Pixel Processing Operation Window
|
|
Violation
|
|
PSIZE Replace Boolean ADD ADDS SUB SUBS MIN/MAX W=1 W=2 W=3
|
|
1,2,4,8 4+(3).10 6+(3),12 7+(3),13 7+(3),13 7+(3),13 8+(3),14 7+(3),13 5,8 3,6 5,8
|
|
16 4+(1 ),8 6+(1 ),10 6+(1),10 7+(1),11 7+(1 ),11 8+(1),12 7+(1),11 5,8 3,6 5,8
|
|
|
|
Status Bits NUn affected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V 1 if a window violation occurs, 0 otherwise; unaffected if window
|
|
clipping is not used.
|
|
|
|
|
|
|
|
|
|
12-68
|
|
Draw and Advance DRAV
|
|
|
|
|
|
Examples These DRAV examples use the following implied operand setup.
|
|
Register File B: I/O Registers:
|
|
DPTCH (83) = 200h CONVDP = 0016h
|
|
OFFSET (84) = 00010000h
|
|
WST ART (85) = 001 OOOOOh
|
|
WEND (86) = 003C0040h
|
|
COLOR1 (89) = FFFFFFFFh
|
|
Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
00018040h 8888h
|
|
Code Before After
|
|
AO A1 PSIZE PP W PMASK AO @18040h
|
|
DRAV Al,AO 00400040h 00100010h 0001h 00000 00 OOOOh 00500050h 8889h
|
|
DRAV Al,AO 00400020h 00100010h 0002h 00000 00 OOOOh 00500030h 888Bh
|
|
DRAV Al,AO 00400010 00100010h 0004h 00000 00 OOOOh 00500020h 888Fh
|
|
DRAV Al,AO 00400008 00100010h 0008h 00000 00 OOOOh 00500018h 88FFh
|
|
DRAV Al,AO 00400004 00100010h 0010h 00000 00 OOOOh 00500014h FFFFh
|
|
DRAV Al,AO 00400004 OOOOFFFFh 0010h 01010 00 OOOOh 00400003h OOOOh
|
|
DRAV Al,AO 00400004 FFFFOOOOh 0010h 10011 00 OOOOh 003FOO04h OOOOh
|
|
DRAV Al,AO 00400004 00010001h 0010h 00000 11 OOOOh 00410005h OOOOh
|
|
DRAV Al,AO 00400004h 00400004h 0010h 00000 00 OOFFh 00800008h FFOOh
|
|
|
|
|
|
|
|
|
|
12-69
|
|
DSJ Decrement Register and Skip Jump
|
|
|
|
|
|
Syntax DSJ Rd, Address
|
|
Execution Rd - 1 -+ Rd
|
|
If Rd ¢ 0, then (offset x 16) + PC' -+ PC
|
|
If Rd = 0, then go to next instruction
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
o o oIR Rd
|
|
offset
|
|
|
|
Description DSJ decrements the contents of the destination register by 1. Depending
|
|
on the decremented value of Rd, the TMS3401 0 either jumps or skips the
|
|
jump:
|
|
|
|
• Rd - 1 ¢ 0
|
|
The TMS3401 0 jumps. The current PC points to the instruction word
|
|
that immediately follows the second word of the DSJ instruction. The
|
|
signed word offset is converted to a bit offset by multiplying by 16.
|
|
The new PC address is then obtained by adding the resulting signed
|
|
offset (offset x 16) to the address of the next instruction.
|
|
|
|
• Rd - 1 = 0
|
|
The TMS3401 0 skips the jump and continues and program execution
|
|
with the next sequential instruction.
|
|
The Address operand is a 32-bit address. The assembler calculates the
|
|
offset as (Address - PC')/16; this results in a jump range of -32,768 to
|
|
+32,767 words. (The offset is the second instruction word of the opcode.)
|
|
The DSJ instruction is useful for large loops involving a counter. For
|
|
shorter loops, the assembler translates this into a DSJS instruction.
|
|
Machine
|
|
States 3,9 (Jump)
|
|
2,8 (No jump)
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Before After
|
|
A5 A5 Jump taken?
|
|
DSJ A5,LOOP 00000009h 00000008h Yes
|
|
DSJ A5,LOOP 00000001h OOOOOOOOh No
|
|
DSJ A5,LOOP OOOOOOOOh FFFFFFFFh Yes
|
|
|
|
|
|
|
|
|
|
12-70
|
|
Conditionally Decrement Register
|
|
and Skip Jump DSJEQ
|
|
|
|
|
|
Syntax DSJ EQ Rd, Address
|
|
Execution If Z = 1, then Rd - 1 -+ Rd
|
|
If Rd ¢ 0, then PC' + (offset x 16) -+ PC
|
|
If Rd = 0, then go to next instruction
|
|
If Z = 0, then go to next instruction
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
o o R Rd
|
|
offset
|
|
|
|
Description The DSJ EO instruction evaluates the status Z bit. Depending on the value
|
|
of that bit, the TMS3401 0 either skips the jump, or decrements Rd and then
|
|
makes a decision to jump or skip the jump:
|
|
|
|
• Z :::: 1
|
|
The TMS34010 decrements the contents of the destination register
|
|
by 1.
|
|
Rd - 1 ¢ 0
|
|
The TMS34010 jumps relative to the current PC. The current
|
|
PC points to the instruction word that immediately follows the
|
|
second word of the DSJ EO instruction. The signed word offset
|
|
is converted to a bit offset by multiplying by 16. The new PC
|
|
address is then obtained by adding the resulting signed offset
|
|
(offset x 16) to the address of the next instruction.
|
|
Rd - 1 :::: 0
|
|
The TMS34010 skips the jump and continues program exe-
|
|
cution at the next sequential instruction.
|
|
|
|
• Z:::: 0
|
|
The TMS3401 0 skips the jump and continues program execution at
|
|
the next sequential instruction.
|
|
The Address operand is a 32-bit address. The assembler calculates the
|
|
offset as (Address - PC')/16; this results in a jump range of -32,768 to
|
|
+32,767 words. (The offset is the second instruction word of the opcode.)
|
|
You can use this instruction after an explicit or implicit compare to O. Ad-
|
|
ditional information on these types of compares can be obtained in the
|
|
CMP and CMPI, and MOVE-to-register instructions, respectively.
|
|
Machine
|
|
States 3,9 (Jump)
|
|
2,8 (No jump)
|
|
Status Bits NUn affected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
|
|
|
|
|
|
12-71
|
|
Conditionally Decrement Register
|
|
DSJEQ and Skip Jump
|
|
|
|
|
|
Examples Before After
|
|
A5 NCZV A5 Jump taken?
|
|
DSJEQ AS,LOOP 00000009h xx1x 00000008h Yes
|
|
DSJEQ AS,LOOP 00000001h xx1x OOOOOOOOh No
|
|
DSJEQ AS,LOOP OOOOOOOOh xx1x FFFFFFFFh Yes
|
|
DSJEQ AS,LOOP 00000009h xxOx 00000009h No
|
|
DSJEQ AS,LOOP 00000001h xxOx 00000001 h No
|
|
DSJEQ AS,LOOP OOOOOOOOh xxOx OOOOOOOOh No
|
|
|
|
|
|
|
|
|
|
12-72
|
|
Conditionally Decrement Register
|
|
and Skip Jump DSJNE
|
|
|
|
|
|
Syntax DSJNE Rd. Address
|
|
Execution If Z = 0, then Rd - 1 -+ Rd
|
|
If Rd ¢ 0, then PC' + (offset x 16) -+ PC
|
|
If Rd = 0. then go to next instruction
|
|
If Z = 1, then to to next instruction
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
o oIR Rd
|
|
offset
|
|
|
|
Description The DSJ N E instruction evaluates the status Z bit. Depending on the value
|
|
of that bit, the TMS3401 0 either skips the jump, or decrements Rd and then
|
|
makes a decision to jump or skip the jump:
|
|
|
|
• Z == 0,
|
|
The TMS34010 decrements the contents of the destination register
|
|
by 1.
|
|
Rd - 1 ¢ 0
|
|
The TMS34010 jumps relative to the current PC. The current
|
|
PC points to the instruction word that immediately follows the
|
|
second word of the DSJ N E instruction. The signed word offset
|
|
is converted to a bit offset by mUltiplying by 16. The new PC
|
|
address is then obtained by adding the resulting signed offset
|
|
(offset x 16) to the address of the next instruction.
|
|
Rd - 1 == 0
|
|
The TMS34010 skips the jump and continues program exe-
|
|
cution at the next sequential instruction.
|
|
|
|
• Z == 1
|
|
The TMS3401 0 skips the jump and continues program execution at
|
|
the next sequential instruction.
|
|
The Address operand is a 32-bit address. The assembler calculates the
|
|
offset as (Address - PC')/16; this results in a jump range of -32,768 to
|
|
+32,767 words. (The offset is the second instruction word of the opcode.)
|
|
You can use this instruction after an explicit or implicit compare to O. Ad-
|
|
ditional information on these types of compares can be obtained in the
|
|
CMP, CMPI, and MOVE-to-register instructions.
|
|
Machine
|
|
States 3,9 (Jump)
|
|
2,8 (Nojump)
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
|
|
|
|
|
|
12-73
|
|
Conditionally Decrement Register
|
|
DSJNE and Skip Jump
|
|
|
|
|
|
Examples Code Before After
|
|
A5 NCZV A5 Jump taken?
|
|
DSJNE AS,LOOP 00000009h xx1x 00000009h No
|
|
DSJNE AS,LOOP 00000001h xx1x 00000001 h No
|
|
DSJNE AS,LOOP OOOOOOOOh xx1x OOOOOOOOh No
|
|
DSJNE AS,LOOP 00000009h xxOx 00000008h Yes
|
|
DSJNE AS,LOOP 00000001h xxOx OOOOOOOOh No
|
|
DSJNE AS,LOOP OOOOOOOOh xxOx FFFFFFFFh Yes
|
|
|
|
|
|
|
|
|
|
12-74
|
|
Decrement Register and Skip Jump - Short DSJS
|
|
|
|
|
|
Syntax OSJS Rd, Address
|
|
Execution Rd - 1 -+ Rd
|
|
If Rd :to 0, then PC' + (offset x 16) -+ PC
|
|
If Rd = 0, then go to next instruction
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I0 0 ID I offset IR Rd
|
|
|
|
Fields o is a 1 -bit direction bit (from PC' to Address):
|
|
0=0 - forward jump
|
|
0=1 - backward jump
|
|
Description DSJS decrements the contents of the destination register by 1. Depending
|
|
on the result, the TMS3401 0 either jumps or skips the jump:
|
|
|
|
• Rd - 1 :to 0
|
|
The TMS34010 jumps relative to PC'. PC' points to the instruction
|
|
word that immediately follows the DSJS instruction. Internally, the
|
|
5-bit offset is multiplied by 16 to convert it to a bit offset. This allows
|
|
a jump range of -30 to +32 words from the PC.
|
|
If direction bit 0 = 0
|
|
The new PC address is obtained by adding the resulting offset
|
|
to PC'.
|
|
If direction bit 0 = 1
|
|
The new PC address is obtained by subtracting the resulting
|
|
offset from PC'.
|
|
|
|
• Rd - 1 = 0
|
|
The TMS34010 skips the jump and continues program execution at
|
|
the next sequential instruction.
|
|
The Address operand is a 32-bit address. The assembler calculates the
|
|
offset as (Address - PC')/16; this results in a jump range of -30 to +32
|
|
words from the PC. (The offset is encoded as part of the instruction word.)
|
|
This instruction is useful for coding tight loops for cache-resident routines.
|
|
Machine
|
|
States 2,5 (Jump)
|
|
3,6 (No jump)
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Before After
|
|
A5 A5 Jump taken?
|
|
DSJS A5,LOOP 00000009h 00000008h Yes
|
|
DSJS A5,LOOP 00000001h OOOOOOOOh No
|
|
DSJS A5,LOOP OOOOOOOOh FFFFFFFFh Yes
|
|
|
|
12-75
|
|
EINT Enable Interrupts
|
|
|
|
|
|
Syntax EINT
|
|
EXBcution 1 -+ IE
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
1 0 0 0 0 0 0 0 0 0 0 01
|
|
|
|
Description EINT sets the global interrupt enable bit (IE) to 1, allowing interrupts to be
|
|
enabled. When IE=1, individual interrupts are enabled by setting the ap-
|
|
propriate bits in the INTENB interrupt mask register. The rest of the status
|
|
register is unaffected.
|
|
The DINT instruction disables interrupts.
|
|
Machine
|
|
States 3,6
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
IE 1
|
|
Examples Code Before After
|
|
ST ST
|
|
EINT 00000010h 00200010h
|
|
EINT 00200010h 00200010h
|
|
|
|
|
|
|
|
|
|
12-76
|
|
Initiate Emulation EMU
|
|
|
|
|
|
Syntax EMU
|
|
Execution ST -+ Rd and conditionally enter emulator mode
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01
|
|
|
|
Description The EMU instruction pulses the EMUA pin and samples the RUN/EMU pin.
|
|
If the RUN/EMU pin is in the RUN state, the EMU instruction acts as a NOP.
|
|
If the pin is in the EMU state, emulation mode is entered. This instruction
|
|
is not intended for general use; refer to the TMS34010 XDS/22 User's
|
|
Guide for more information.
|
|
Machine
|
|
States 8,11 (or more if EMU mode is entered)
|
|
Status Bits N Indeterminate
|
|
C Indeterminate
|
|
Z Indeterminate
|
|
V Indeterminate
|
|
|
|
|
|
|
|
|
|
12-77
|
|
EXG F Exchange Field Definition
|
|
|
|
|
|
Syntax EXGF Rd [, FJ
|
|
Execution Rd -+ FSO, FEO or Rd -+ FS1, FE1
|
|
FSO, FEO -+ Rd or FS1, FE1 -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
11 0 0 1 1F 0 0 01 Rd 1
|
|
Description EXGF exchanges the six LSBs of the destination register with the selected
|
|
six bits of field information (field size and field extension). Bit 5 of the 6-bit
|
|
quantity in Rd is exchanged with the field extension value. The upper 26
|
|
bits of Rd are cleared.
|
|
|
|
|
|
|
|
|
|
Status Register
|
|
|
|
EXG F's F parameter is optional:
|
|
F::O selects FSO, FEO to be exchanged
|
|
F::1 selects FS1, FE1 to be exchanged
|
|
If you do not specify an F parameter, the default is O.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Before
|
|
A5 ST A5 ST
|
|
EXGF AS,O FFFFFFCOh FOOOOFFFh 0000003Fh FOOOOFCOh
|
|
EXGF AS,l FFFFFFCOh FOOOOFFFh 0000003Fh F000003Fh
|
|
|
|
|
|
|
|
|
|
12-78
|
|
Exchange Program Counter EXGPC
|
|
|
|
|
|
Syntax EXGPC Rd
|
|
Execution Rd --+ PC, PC' --+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 0 0 1 IR Rd
|
|
I
|
|
Description EXGPC exchanges the next program counter value with the destination re-
|
|
gister contents. After this instruction has been executed, the destination
|
|
register contains the address of the instruction immediately following the
|
|
EXG PC instruction.
|
|
Note that the TMS34010 sets the four LSBs of the program counter to 0
|
|
(word aligned).
|
|
This instruction provides a "quick call" capability by saving the return ad-
|
|
dress in a register (rather than on the stack). The return from the call is
|
|
accomplished by repeating the instruction at the end of the "subroutine."
|
|
Note that the subroutine address must be reloaded following each call-
|
|
return operation.
|
|
Machine
|
|
States 2,5
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Before After
|
|
A1 PC A1 PC
|
|
EXGPC Al 00001C10h 00002080h 00002090h 00001C10h
|
|
EXGPC Al 00001C50h 00002080h 00002090h 00001C50h
|
|
|
|
|
|
|
|
|
|
12-79
|
|
FILL Fi II Array with Processed Pixels - Linear
|
|
|
|
|
|
Syntax FILL L
|
|
Execution COLOR1 pixels -+ pixel array (with processing)
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
10000 0000 o 01
|
|
|
|
Description FILL processes a set of source pixel values (specified by the COLOR1 reg-
|
|
ister) with a destination pixel array.
|
|
This instruction operates on a two-dimensional array of pixels using pixels
|
|
defined in the COLOR1 register. As the FILL proceeds, the source pixels
|
|
are combined with destination pixels based on the selected graphics oper-
|
|
ations.
|
|
Note that the L parameter in the instruction syntax does not represent a
|
|
value or a register - the L is entered as part of the instruction and identifies
|
|
the starting address of the pixel array as an L address. That is, the in-
|
|
struction is entered as FILL L.
|
|
The following set of implied operands govern the operation of the in-
|
|
struction and define both the source pixels and the destination array.
|
|
Implied
|
|
Operands B File Registers
|
|
Register Name Format Description
|
|
92t DADDR Linear Pixel array starting address
|
|
93 DPTCH Linear Pixel array pitch
|
|
97 DYDX XY Pixel array dimensions (rows:columns)
|
|
99 COLOR1 Pixel Fill color or 16-bit pattern
|
|
91o-914t Reserved registers
|
|
I/O Registers
|
|
Address Name Description and Operations
|
|
COOOO090h CONTROL PP- Pixel processing operations (22 options)
|
|
T - Transparency operation
|
|
COOO0150h PSIZE Pixel size (1,2,4,8,16)
|
|
COOO0160h PMASK Plane mask - pixel format
|
|
t Changed by FI LL during execution.
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
FILL instruction. To ensure that this register contains the correct value for
|
|
execution, you may want to follow the write to that location with an in-
|
|
struction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
Destination
|
|
Array The contents of the DADDR, DPTCH, and DYDX registers define the lo-
|
|
cation of the destination pixel array:
|
|
|
|
• At the outset of the instruction, DADDR contains the linear address
|
|
. of the pixel with the lowest address in the array.
|
|
|
|
|
|
|
|
|
|
12-80
|
|
Fi II Array with Processed Pixels - Linear FILL
|
|
|
|
|
|
During instruction execution, DADDR points to the next pixel (or
|
|
word of pixels) to be modified in the destination array. When the ar-
|
|
ray transfer is complete, DADDR points to the linear address of the
|
|
pixel following the last pixel written.
|
|
|
|
• DPTCH contains the linear difference in the starting addresses of ad-
|
|
jacent rows of the destination array. DPTCH must be a multiple of
|
|
16, except when a single pixel-width line is drawn (DY=1). In this
|
|
case, DPTCH may be any value.
|
|
|
|
• DYDX specifies the dimensions of the destination array in pixels. The
|
|
DY portion of DYDX contains the number of rows in the array, while
|
|
the DX portion contains the number of columns.
|
|
|
|
Pixel
|
|
Processing Set the PPOP field in the CONTROL register to select a pixel processing
|
|
operation. This operation is applied to the pixel as it is moved to the des-
|
|
tination location. There are 16 Boolean and e arithmetic operations; the
|
|
default operation at reset is replace (S ... D). Note that the destination data
|
|
is read through the plane mask and then processed. The 6 arithmetic op-
|
|
erations do not operate with pixel sizes of one or two bits per pixel. For
|
|
more information, see Section 7.7, Pixel Processing, on page 7-15.
|
|
Window
|
|
Checking Window checking cannot be used with this instruction. The contents of
|
|
the WSTART and WEN D registers are ignored.
|
|
Corner Adjust There is no corner adjust for this instruction. The direction of the FI LL is
|
|
fixed as increasing linear addresses.
|
|
Transparency You can enable transparency for this instruction by setting the T bit in the
|
|
CONTROL I/O register to 1. The TMS34010 checks for 0 (transparent)
|
|
source pixels after it processes the source data. At reset, the default case
|
|
for transparency is off.
|
|
Interrupts This instruction can be interrupted at a word or row boundary of the desti-
|
|
nation array. When the FILL is interrupted, the TMS34010 sets the PBX
|
|
bit in the status register and then pushes the status register on the stack.
|
|
At this time, DPTCH and B1 o-B14 contain intermediate values. DADDR
|
|
points to the linear address of the next word of pixels to be modified after
|
|
the interrupt is processed.
|
|
Before executing the RETI instruction to return from the interrupt, restore
|
|
any B-file registers that were modified (also restore the CONTROL register
|
|
if it was modified). This allows the TMS34010 to resume the FILL cor-
|
|
rectly.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
Shift Register
|
|
Transfers If the SRT bit in the DPYCTL register is set, each memory read or write in-
|
|
itiated by the FI LL generates a shift reg ister transfer read or write cycle at
|
|
the selected address. This operation can be used for bulk memory clears
|
|
or transfers. (Not all VRAMs support this capability.) See Section 9.10.2,
|
|
Video Memory Bulk Initialization, on page 9-28 for more information.
|
|
Machine
|
|
States See Section 13.3, FILL Instructions Timing.
|
|
|
|
|
|
12-81
|
|
FILL Fill Array with Processed Pixels - Linear
|
|
|
|
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples These FILL examples use the following implied operand setup.
|
|
Register File B: I/O Registers:
|
|
DADDR (B2) = 00002010h PSIZE = 0008h
|
|
DPTCH (B3) = 00000080h
|
|
DYDX (B7) = 0002000Dh
|
|
COLOR1 (B9) = 30303030h
|
|
Assume that memory contains the following values before instruction exe-
|
|
cution.
|
|
Linear Data
|
|
Address
|
|
02000h 1100h, 3322h, 5544h, 7766h, 9988h, BBAAh, DDCCh, FFEEh
|
|
02080h 1100h, 3322h, 5544h, 7766h, 9988h, BBAAh,DDCCh, FFEEh
|
|
|
|
Example 1 This example uses the pixel processing replace (S -+ D) operation. Before
|
|
instruction execution, PMASK = OOOOh and CONTROL = OOOOh (T=O,
|
|
PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
Linear Data
|
|
Address
|
|
02000h 1100h, 3030h, 3030h, 3030h, 3030h, 3030h, 3030h, FF30h
|
|
02080h 1100h, 3030h, 3030h, 3030h, 3030h, 3030h, 3030h, FF30h
|
|
|
|
Example 2 This example uses the (S and 0) -+ 0 pixel processing operation. Before
|
|
instruction execution, PMASK = OOOOh and CONTROL = 2COOh (T=O,
|
|
PP=01 01 0).
|
|
After instruction execution, memory contains the following values:
|
|
Linear Data
|
|
Address
|
|
02000h 1100h, 0302h, 4544h, 4746h, 8988h, 8B8Ah, CDCCh,FFCEh
|
|
02080h 1100h, 0302h, 4544h, 4746h, 8988h, 8B8Ah, CDCCh,FFCEh
|
|
Example 3 This example uses transparency and the (S and D) -+ 0 pixel processing
|
|
operation. Before instruction execution, PMASK = OOOOh and CONTROL
|
|
= 0420h (T=1, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
Linear Data
|
|
Address
|
|
02000h 1100h, 3020h, 1 044h, 3020h, 1 088h, 3020h, 10CCh, FF20h
|
|
02080h 1100h, 3020h, 1044h, 3020h, 1088h, 3020h, 10CCh, FF20h
|
|
|
|
|
|
|
|
|
|
12-82
|
|
Fill Array with Processed Pixels - Linear FILL
|
|
|
|
|
|
Example 4 This example uses plane masking - the four MSBs are masked. Before in-
|
|
struction execution, PMASK = OFOFOh and CONTROL = OOOOh (T=O,
|
|
PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
linear Data
|
|
Address
|
|
02000h 1100h, 3020h, 5040h, 7060h, 9080h, BOAOh, DOCOh, FFEOh
|
|
02080h 1100h, 3020h, 5040h, 7060h, 9080h, BOAOh, DOCOh, FFEOh
|
|
|
|
|
|
|
|
|
|
12-83
|
|
FILL Fill Array with Processed Pixels - XY
|
|
|
|
|
|
Syntax FILL XV
|
|
Execution COLOR1 pixels ~ pixel array (with processing)
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 432 o
|
|
I0 0 0 0 000 o 0
|
|
|
|
Description FILL processes a set of source pixel values (specified by the COLOR1 reg-
|
|
ister) with a destination pixel array.
|
|
This instruction operates on a two-dimensional array of pixels using pixels
|
|
defined in the COLOR1 register. As the FILL proceeds, the source pixels
|
|
are combined with destination pixels based on the selected graphics oper-
|
|
ations.
|
|
Note that the XV parameter in the instruction syntax does not represent a
|
|
value or a register - it is entered as part of the instruction and identifies the
|
|
starting address of the pixel array as an XY address. That is, the instruction
|
|
is entered as FILL L, XY.
|
|
The following set of implied operands govern the operation of the in-
|
|
struction and define both the source pixels and the destination array.
|
|
Implied
|
|
Operands B File Registers
|
|
Register Name Format Description
|
|
82tt: DADDR XV Pixel array starting address
|
|
83 DPTCH Linear Pixel array pitch
|
|
84 OFFSET Linear Screen origin (address of 0,0)
|
|
85 WSTART XV Window starting corner
|
|
86 WEND XV Window ending corner
|
|
87tt: DVDX XV Pixel array dimensions (rows:columns)
|
|
89 COLOR1 Pixel Fill color or 16-bit pattern
|
|
81o-814t Reserved registers
|
|
I/O Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOOO080h CONTROL PP- Pixel processing operations (22 options)
|
|
W - Window checking operation
|
|
T - Transparency operation
|
|
COOO0140h CONVDP XV -to-linear conversion (destination pitch)
|
|
COOO0150h PSIZE Pixel size (1,2,4,8,16)
|
|
COOO0160h PMASK Plane mask - pixel format
|
|
t Changed by FI LL during execution.
|
|
t: Used for common rectangle function with window hit operation (W=1).
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
FILL instruction. To ensure that this register contains the correct value for
|
|
execution, you may want to follow the write to that location with an in-
|
|
struction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
|
|
|
|
|
|
12-84
|
|
Fill Array with Processed Pixels - XY FILL
|
|
|
|
|
|
Destination
|
|
Array The location of the destination pixel array is defined by the contents of the
|
|
DADDR, DPTCH, CONVDP, OFFSET, and DYDX registers. At the outset
|
|
of the instruction, DADDR contains the XV address of the pixel with the
|
|
lowest address in the array. It is used with OFFSET and CONVDP to cal-
|
|
culate the linear address of the starting location of the array. DPTCH con-
|
|
tains the linear difference in the starting addresses of adjacent rows of the
|
|
destination array (typically this is the screen pitch). DPTCH must be a
|
|
power of two (greater than or equal to 16) and CONVDP must be set to
|
|
correspond to the DPTCH value. CONVDP is computed by operating on
|
|
the DPTCH register with the LMO instruction; it is used for the XY calcu-
|
|
lations involved in XY addressing and window clipping. DYDX specifies
|
|
the dimensions of the destination array in pixels. The DY portion of DYDX
|
|
contains the number of rows in the array, while the DX portion contains the
|
|
number of columns. During instruction execution, DADDR points to the
|
|
next pixel (or word of pixels) to be modified in the destination array. When
|
|
the array transfer is complete, DADDR points to the linear address of the
|
|
pixel following the last pixel written. This is that pixel on the last row that
|
|
would have been written had the array transfer been wider in the X dimen-
|
|
sion.
|
|
Pixel
|
|
Processing Pixel processing can be used with this instruction. The PPOP field of the
|
|
CONTROL register specifies the pixel processing operation that is applied
|
|
to pixels as they are processed with the destination array. There are 16
|
|
Boolean and 6 arithmetic operations; the default case at reset is the replace
|
|
(S -+ D) operation. Note that the destination data is read through the plane
|
|
mask and then processed. The 6 arithmetic operations do not operate with
|
|
pixel sizes of one or two bits per pixel. For more information, see Section
|
|
7.7, Pixel Processing, on page 7-15.
|
|
Window
|
|
Checking The window operations described in Section 7.10, Window Checking, on
|
|
page 7-27. can be used with this instruction. You can select window pick,
|
|
violation detect, or preclipping by setting the W bits in the CONTROL reg-
|
|
ister to 1, 2, or 3, respectively. Window pick modifies the DADDR and
|
|
DYDX registers to correspond to the common rectangle formed by the
|
|
destination array and the clipping window defined by WSTART and WEND.
|
|
DADDR is set to the XY address of the pixel with the lowest address in the
|
|
common rectangle, while DYDX is set to the X and Y dimensions of the
|
|
rectangle. If no window operations are selected, the WSTART and WEN D
|
|
registers are ignored. At reset, no window operations are enabled.
|
|
Corner Adjust There is no corner adjust for this instruction. The direction of the FILL is
|
|
fixed as increasing linear addresses.
|
|
Transparency You can enable transparency for this instruction by setting the T bit in the
|
|
CONTROL I/O register to 1. The TMS34010 checks for 0 (transparent)
|
|
source pixels after it processes the source data. At reset, the default case
|
|
for transparency is off.
|
|
Interrupts This instruction can be interrupted at a word or row boundary of the desti-
|
|
nation array. When the FI LL is interrupted, the TMS34010 sets the PBX
|
|
bit in the status register and then pushes the status register on At this time,
|
|
DPTCH and B1 o-B14 contain intermediate values. DADDR points to the
|
|
linear address of the next word of pixels to be modified after the interrupt
|
|
is processed.
|
|
|
|
|
|
12-85
|
|
FILL Fill Array with Processed Pixels - XY
|
|
|
|
|
|
Before executing the RETI instruction to return from the interrupt, restore
|
|
any B-file registers that were modified (also restore the CONTROL register
|
|
if it was modified). This allows the TMS34010 to resume the FI LL cor-
|
|
rectly.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
Shift Register
|
|
Transfers If the SRT bit in the DPYCTL register is set, each memory read or write in-
|
|
itiated by the FI LL generates a shift register transfer read or write cycle at
|
|
the selected address. This operation can be used for bulk memory clears
|
|
or transfers. (Not all VRAMs support this capability.) See Section 9.10.2,
|
|
Video Memory Bulk Initialization, on page 9-28 for more information.
|
|
Machine
|
|
States See Section 13.3, FILL Instructions Timing.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V 1 if a window violation occurs, 0 otherwise; unaffected if window
|
|
clipping is not enabled
|
|
Examples These FILL examples use the following implied operand setup.
|
|
Register File B: I/O Registers:
|
|
DADDR (B2) = 00520007h CONVDP = 0017h
|
|
DPTCH (B3) = 00000100h PSIZE = 0004h
|
|
OFFSET (B4) = 00010000h PMASK = OOOOh
|
|
WSTART (B5) = 0030000Ch CONTROL = OOOOh
|
|
WEND (B6) = 00530014h (W=OO, T=O, PP=OOOOO)
|
|
DYDX (B7) = 00030012h
|
|
COLOR1 (B9) = FFFFFFFFh
|
|
Assume that memory contains the following values before instruction exe-
|
|
cution.
|
|
linear Data
|
|
Address
|
|
15200h 3210h, 7654h, BA98h, FEDCh, 321 Oh, 7654h, BA98h, FEDCh
|
|
15300h 3210h, 7654h, BA98h, FEDCh, 321 Oh, 7654h, BA98h, FEDCh
|
|
15400h 3210h, 7654h, BA98h, FEDCh, 321 Oh, 7654h, BA98h, FEDCh
|
|
|
|
Example 1 This example uses the replace (S -+ D) pixel processing operation. Before
|
|
instruction execution, PMASK = OOOOh and CONTROL = OOOOh (T=O,
|
|
W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
linear Data
|
|
Address
|
|
15200h 3210h, F654h, FFFFh, FFFFh, FFFFh, FFFFh, BA9Fh, FEDCh
|
|
15300h 3210h, F654h, FFFFh, FFFFh, FFFFh, FFFFh, BA9Fh, FEDCh
|
|
15400h 3210h, F654h, FFFFh, FFFFh, FFFFh, FFFFh, BA9Fh, FEDCh
|
|
|
|
|
|
|
|
|
|
12-86
|
|
Fill Array with Processed Pixels - XY FILL
|
|
|
|
|
|
XV Addressing
|
|
X Address
|
|
Y 0 0 0 0 0 000 000 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 111
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d 52 0 1 2 3 4 5 6 F F F F F F F F F F F F F F F F F F 9 ABC 0 E F
|
|
d
|
|
r 53 0 1 2 3 4 5 6 F F F F F F F F F F F F F F F F F F 9 ABC 0 E F
|
|
e
|
|
s 54 0 1 2 3 4 5 6 F F F F F F F F F F F F F F F F F F 9 ABC 0 E F
|
|
s
|
|
|
|
Example 2 This example uses the (D XOR S) -+ D pixel processing operation. Before
|
|
instruction execution, PMASK = OOOOh and CONTROL = 2800h (T=O,
|
|
W=OO, PP=01 01 0).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
Y 0 0 0 000 0 0 0 0 000 000 1 1 1 1 1 1 1 1 1 111 1 111
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d 52 0 1 2 3 4 5 6 8 7 6 5 4 3 2 1 0 FED C B A 9 8 7 9 ABC 0 E F
|
|
d
|
|
r 53 0 1 2 3 4 5 6 8 7 6 5 4 3 2 1 0 FED C B A 9 8 7 9 ABC 0 E F
|
|
e
|
|
s 54 0 1 2 3 4 5 6 8 7 6 5 4 3 2 1 0 FED C B A 9 8 7 9 ABC 0 E F
|
|
s
|
|
|
|
Example 3 This example uses transparency, the (D subs S) -+ D pixel processing op-
|
|
eration. Before instruction execution, COLOR1 = 88888888h, PMASK =
|
|
OOOOh, and CONTROL = 4C20h (T=1, W=OO, PP=1 0011).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
Y 0 0 0 000 0 0 0 0 000 0 0 0 1 111 1 1 1 1 1 1 1 1 1 111
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d 52 0 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 9 ABC D E F
|
|
d
|
|
r 53 0 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 9 ABC D E F
|
|
e
|
|
s 54 0 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 9 ABC D E F
|
|
s
|
|
|
|
|
|
|
|
|
|
12-87
|
|
FILL Fill Array with Processed Pixels - XY
|
|
|
|
|
|
Example 4 This example uses window operation 3 - the destination is clipped. Before
|
|
instruction execution, PMASK = OOOOh and CONTROL = OOCOh (T=O,
|
|
W=11, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
Y 0 0 000 0 0 0 0 0 0 0 0 000 1 1 111 111 1 1 1 1 1 1 1 1
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d 520123456789ABFFFFFFFFF56789ABCDEF
|
|
d
|
|
r ~0123456789ABFFFFFFFFF56789ABCDEF
|
|
e
|
|
s 540123456789ABCDEF0123456789ABCDEF
|
|
s
|
|
|
|
Example 5 This example uses plane masking - the most significant bit is masked. Be-
|
|
fore instruction execution, PMASK = 8888h and CONTROL = OOOOh
|
|
(T=O, W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
Y 0 0 0 0 0 0 0 0 0 0 000 000 1 1 1 1 1 1 1 1 1 1 111 1 1 1
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d 52 0 1 2 3 4 5 6 7 F F F F F F F F 7 7 7 7 7 7 7 7 F 9 ABC D E F
|
|
d
|
|
r 53 0 1 2 3 4 5 6 7 F F F F F F F F 7 7 7 7 7 7 7 7 F 9 ABC D E F
|
|
e
|
|
s 54 0 1 2 3 4 5 6 7 F F F F F F F F 7 7 7 7 7 7 7 7 F 9 ABC D E F
|
|
s
|
|
|
|
|
|
|
|
|
|
12-88
|
|
Get Program Counter into Register GETPC
|
|
|
|
|
|
Syntax GETPC Rd
|
|
Execution PC' -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
1 0 0 0 0 0 0 0 0 01 R Rd I
|
|
Description GETPC increments the PC contents by 16 to point past the GETPC in-
|
|
struction, and copies the value into the destination register. Execution
|
|
continues with the next instruction. You can use GETPC with the EXGPC
|
|
and JUMP instructions for quick call on jump operations. You can also use
|
|
G ETPC to access relocatable data areas whose position relative to the code
|
|
area is known at assembly time.
|
|
Machine
|
|
States 1,4
|
|
Status Bits NUn affected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Before After
|
|
PC A1
|
|
GETPC Al 00001 BDOh 00001BEOh
|
|
GETPC Al 00001C10h 00001C20h
|
|
|
|
|
|
|
|
|
|
12-89
|
|
GETST Get Status Register into Register
|
|
|
|
|
|
Syntax GETST Rd
|
|
Execution ST -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 0 oIR Rd I
|
|
Description GETST copies the contents of the status register into the destination regis-
|
|
ter.
|
|
|
|
|
|
|
|
|
|
Status Register
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Before After
|
|
PC A1
|
|
GETST Al 20200010h 20200010h
|
|
GETST Al 00000010h 00000010h
|
|
|
|
|
|
|
|
|
|
12-90
|
|
Increment Register INC
|
|
|
|
|
|
Syntax INC Rd
|
|
Execution Rd + 1 -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 0 0 R Rd I
|
|
Description INC adds 1 to the contents of the destination register and stores the result
|
|
in the destination register. This instruction is an alternate mnemonic for
|
|
ADDK 1,Rd.
|
|
|
|
You can accomplish multiple-precision arithmetic by using INC in con-
|
|
junction with the ADDC instruction.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N a
|
|
1 if the result is negative, otherwise
|
|
C 1 if there is a carry, 0 otherwise
|
|
Z a
|
|
1 if the result is 0, otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Code Before After
|
|
A1 A1 NCZV
|
|
INC Al OOOOOOOOh 00000001h 0000
|
|
INC Al OOOOOOOFh 00000010h 0000
|
|
INC Al FFFFFFFFh OOOOOOOOh 0110
|
|
INC Al FFFFFFFEh FFFFFFFFh 1000
|
|
INC Al 7FFFFFFFh 80000000h 1001
|
|
|
|
|
|
|
|
|
|
12-91
|
|
JAcc Jump Absolute Conditional
|
|
|
|
|
|
Syntax JAcc Address
|
|
Execution If condition true, then Address ~ PC
|
|
If condition false, then go to next instruction
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
1 1 0 01 code 1 1 0 0 0 0 0 0 0
|
|
16 LSBs of Addre.ss
|
|
16 MSBs of Address
|
|
|
|
Fields code is a 4-bit digit that identifies the condition for the jump within
|
|
the opcode. (See the conditioncodes table below.)
|
|
Description The JAcc instruction conditionally jumps to an absolute address. The cc
|
|
is part of a mnemonic that represents the condition for the jump; for exam-
|
|
ple, if cc is UC, then the instruction is JAUC. (See the condition mne-
|
|
monics and codes listed below.) If the specified condition is true, the
|
|
TMS34010 jumps to the address and continues execution from that point.
|
|
If the specified condition is false, the TMS3401 0 skips the jump and con-
|
|
tinues execution at the next sequential instruction. Note that the lower four
|
|
bits of the program counter are set to 0 (word aligned).
|
|
The Address operand in the syntax represents the 32-bit absolute address.
|
|
Note that the second and third instruction words contain the address for the
|
|
jump.
|
|
The JAcc instructions are usually used in conjunction with the CMP and
|
|
CMPI instructions. The JAV and JANV instructions can also be used to
|
|
detect window violations or CPW status.
|
|
Condition
|
|
Codes Mnemonic Result of Compare Status Bits Code
|
|
Unconditional JAUC - Unconditional don't care 0000
|
|
Compares
|
|
Unsigned JALO - Ost lovverthan Src C 0001
|
|
Compares (JAC)
|
|
JALS JAYLE Ost lovver or same as Src C+Z 0010
|
|
JAHI JAYGT Ost higher than Src CoZ 0011
|
|
JAHS - Ost higher or same as Src C 1001
|
|
JANC
|
|
JAEO
|
|
(JAZ)
|
|
- Ost = Src Z 1010
|
|
|
|
JANE - Ost ¢ Src Z 1011
|
|
(JANZ) .
|
|
Signed JALT JAXLE Ost < Src (N o_V) +_( NoV) 0100
|
|
Compares JALE - Ost :S Src (N ° V + (N ° V) + Z 0110
|
|
JAGT - Ost> Src (N ° V Z) + ( N ° y ° Z)
|
|
0 0111
|
|
JAGE JAXGT Ost> Src (N ° V) + (N ° V) 0101
|
|
JAEO - Ost ~ Src Z 1010
|
|
(JAZ)
|
|
JANE - Ost ¢ Src Z 1011
|
|
(JANZ)
|
|
Compare to JAZ JAYZ Result = zero Z 0101
|
|
Zero JANZ JAYNZ Result ¢ zero Z 1011
|
|
JAP - Result is positive i'Joz 0001
|
|
JAN JAXZ Result is negative N 1110
|
|
JANN JAXNZ Result is nonnegative i'J 1111
|
|
|
|
|
|
12-92
|
|
Jump Absolute Conditional JAcc
|
|
|
|
|
|
Condition
|
|
Codes
|
|
(continued) Mnemonic Result of Compare Status Bits Code
|
|
General JAZ JAYZ Result is zero Z 1010
|
|
Arithmetic JANZ JAYNZ Result is nonzero Z 1011
|
|
JAC JAYN Carry set on resu It C 1000
|
|
JANC JAYNN No carryon result C 1001
|
|
JAB - Borrow set on result C 1000
|
|
(JAC)
|
|
JANB - No borrow on result C 1001
|
|
JANC
|
|
JAVt JAXN Overflow on result V 1100
|
|
JANVt JAXNN No overflow on result V 1101
|
|
Note: A mnemonic code in parentheses is an alternate code for the preceding code.
|
|
t Also used for window clipping
|
|
+ Logical OR
|
|
.: Logical AND
|
|
Logical NOT
|
|
|
|
Machine
|
|
States 3,6 (Jump)
|
|
4,7 (No jump)
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Flags for Branch Code Flags for Branch
|
|
NCZV NCZV NCZV NCZV NCZV NCZV
|
|
JAUC HERE xxxx JAV HERE xxx1
|
|
JAP HERE OxOx JANZ HERE xxOx
|
|
JALS HERE xx1x x1xx JANN HERE Oxxx
|
|
JAHI HERE xOOx JANV HERE xxxO
|
|
JALT HERE Oxx1 1xxO JAN HERE 1xxx
|
|
JAGE HERE OxxO 1xx1 JAB HERE x1xx
|
|
JALE HERE Oxx1 1xxO xx1x JANB HERE xOxx
|
|
JAGT HERE OxOO 1 x01 JALO HERE x1xx
|
|
JAC HERE x1xx JAHS HERE xOOx xx1x
|
|
JANC HERE xOxx JANE HERE xxOx
|
|
JAZ HERE xx1x JAEQ HERE xx1x
|
|
Note that the TMS34010 jumps when anyone or more of the Flags for
|
|
Branch listed above are set as indicated.
|
|
|
|
|
|
|
|
|
|
12-93
|
|
JRcc Jump Relative Conditional - ± 127 Words
|
|
|
|
|
|
Syntax J Ree Address
|
|
Execution If condition true, then offset + PC' ~ PC
|
|
If condition false, then go to next instruction
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I1 0 0 I code offset
|
|
|
|
Fields code is a 4-bit digit that identifies the condition for the jump within
|
|
the opcode. (See the condition codes table below.)
|
|
Description The J Ree instruction conditionally jumps to an address that is relative to the
|
|
current PC. The ee is part of a mnemonic that represents the condition for
|
|
the jump; for example, if ee is UC, then the instruction is JAUC. (See the
|
|
condition mnemonics and codes listed below.) If the specified condition
|
|
is true, the TMS3401 0 jumps to a new location. The assembler calculates
|
|
the address of this location by adding the address of the next instruction
|
|
(PC') to the signed word offset. The TMS3401 0 then continues execution
|
|
from this point. If the specified condition is false, the TMS3401 0 skip the
|
|
jump and continues execution at the next sequential instruction.
|
|
The Address operand in the syntax represents the 32-bit relative address.
|
|
The assembler calculates the offset as (Address - PC')/16 and inserts the
|
|
resulting 8-bit offset into the opcode. The range for this form of the JRee
|
|
instruction is ± 127 words (excluding 0).
|
|
If the offset is outside the range of ±127 words, the assembler automat-
|
|
ically substitutes the longer form of the J Ree instruction. If the offset is 0,
|
|
the assembler substitutes a NOP instruction. The assembler does not ac-
|
|
cept an address which is externally defined or an address which is relative
|
|
to a different section than the PC. Note that the four LSBs of the program
|
|
counter are always 0 (word aligned).
|
|
The JRee instructions are usually used in conjunction with the CMP and
|
|
CMPI instructions. The JRV and JRNV instructions can also be used to
|
|
detect window violations or CPW status.
|
|
Condition
|
|
Codes Mnemonic Result of Compare Status Bits Code
|
|
Unconditional JRUC - Unconditional don't care 0000
|
|
Compares
|
|
Unsigned JRLO - Ost lower than Src C 0001
|
|
Compares (JRC)
|
|
JRLS JRYLE 05t lower or same as Src C+Z 0010
|
|
JRHI JRYGT 05t higher than Src CoZ 0011
|
|
JRHS - 05t higher or same as Src C 1001
|
|
JRNC
|
|
JREQ - 05t = Src Z 1010
|
|
(JRZ)
|
|
JRNE - 05t ¢: Src Z 1011
|
|
(JRNZ)
|
|
|
|
|
|
|
|
|
|
12-94
|
|
Jump Relative Conditional - ±127 Words JRcc
|
|
|
|
|
|
Condition
|
|
Codes
|
|
(continued) Mnemonic Result of Compare Status Bits Code
|
|
Signed JRLT JRXLE Dst < Src (N ·_V) "t....( N • V) 0100
|
|
Compares JRLE - Ost S Src (N • V_+ (N __V)..± Z_ 0110
|
|
JRGT - Ost > Src (N • V • Z) + ( N . Y.. • Z) 0111
|
|
JRGE JRXGT Ost > Src (N • V) + (N • V) 0101
|
|
JREQ - Ost ;;- Src Z 1010
|
|
(JRZ)
|
|
JRNE - Ost ¢ Src Z 1011
|
|
(JRNZ)
|
|
Compare to JRZ JRYZ Result = zero Z 0101
|
|
Zero JRNZ JRYNZ Result ¢ zero Z 1011
|
|
JRP - Result is positive N·Z 0001
|
|
JRN JRXZ Result is negative N 1110
|
|
JRNN JRXNZ Result is nonnegative N 1111
|
|
General JRZ JRYZ Result is zero Z 1010
|
|
Arithmetic JRNZ JRYNZ Result is nonzero Z 1011
|
|
JRC JRYN Carry set on resu It C 1000
|
|
JRNC JRYNN No carryon result C 1001
|
|
JRB - Borrow set on result C 1000
|
|
(JRC)
|
|
JRNB - No borrow on result C 1001
|
|
JRNC
|
|
JRVt JRXN Overflow on result V 1100
|
|
JRNVt JRXNN No overflow on result V 1101
|
|
Note: A mnemonic code in parentheses is an alternate code for the preceding code.
|
|
t Also used for window clipping
|
|
+ Logical OR
|
|
• Logical ANO
|
|
- Logical NOT
|
|
|
|
Machine
|
|
States 2,5 (Jump)
|
|
1,4 (No jump)
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Flags for Branch Code Flags for Branch
|
|
NCZV NCZV NCZV NCZV NCZV NCZV
|
|
JRUC HERE xxxx JRC HERE x1xx
|
|
JRP HERE OxOx JRNC HERE xOxx
|
|
JRLS HERE xx1x x1xx JRZ HERE xx1x
|
|
JRHI HERE xOOx JRNZ HERE xxOx
|
|
JRLT HERE Oxx1 1xxO JRV HERE xxx1
|
|
JRGE HERE OxxO 1 xx1 JRNV HERE xxxO
|
|
JRLE HERE Oxx1 1xxO xx1x JRN HERE 1xxx
|
|
JRGT HERE OxOO 1 x01 JRNN HERE Oxxx
|
|
Note that the TMS34010 jumps when anyone or more of the Flags for
|
|
Branch listed above are set as indicated.
|
|
|
|
|
|
|
|
|
|
12-95
|
|
JRcc Jump Relative Conditional - ±32K Words
|
|
|
|
|
|
Syntax J Rcc Address
|
|
Execution If condition true, then offset + PC' - PC
|
|
If condition false, then go to next instruction
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
code o o o o o o o
|
|
offset
|
|
|
|
Fields code is a 4-bit digit that identifies the condition for the jump within
|
|
the opcode. (See the condition codes table below.)
|
|
Description The J Rce instruction conditionally jumps to an address that is relative to the
|
|
current PC. The cc is part of a mnemonic that represents the condition for
|
|
the jump; for example, if cc is UC, then the instruction is JAUC. (See the
|
|
condition mnemonics and codes listed below.) If the specified condition
|
|
is true, the TMS3401 0 jumps to a new location. The assembler calculates
|
|
the address of this location by adding the address of the next instruction
|
|
(PC') to the signed word offset. The TMS3401 0 then continues execution
|
|
from this point. If the specified condition is false, the TMS3401 0 skips the
|
|
jump and continues execution at the next sequential instruction.
|
|
The Address operand in the syntax represents the 32-bit relative address.
|
|
The assembler calculates the offset as (Address - PC')/16 and inserts the
|
|
resulting offset into the second instruction word of the opcode. The range
|
|
for this form of the JRcc instruction is -32,768 to +32,767 words (ex-
|
|
cluding 0).
|
|
If the offset is 0, the assembler substitutes a NOP instruction. If the address
|
|
is out of range, the assembler uses the JAcc instruction instead. The as-
|
|
sembler does not accept an address which is externally defined or an ad-
|
|
dress which is relative to a different section than the PC. Note that the four
|
|
LSBs of the program counter are always 0 (word aligned).
|
|
The JRcc instructions are usually used in conjunction with the CMP and
|
|
CMPI instructions. The JRV and JRNV instructions can also be used to
|
|
detect window violations or CPW status.
|
|
Condition
|
|
Codes Mnemonic Result of Compare Status Bits Code
|
|
Unconditional JRUC - Unconditional don't care 0000
|
|
Compares
|
|
Unsigned JRLO - Ost lower than Src C 0001
|
|
Compares (JRC)
|
|
JRLS JRYLE Ost lower or same as Src C+Z 0010
|
|
JRHI JRYGT Ost higher than Src CoZ 0011
|
|
JRHS - Ost higher or same as Src C 1001
|
|
JRNC
|
|
JREQ - Ost = Src Z 1010
|
|
(JRZ)
|
|
JRNE - Ost ¢ Src Z 1011
|
|
(JRNZ)
|
|
|
|
|
|
|
|
|
|
12-96
|
|
Jump Relative Conditional - ±32K Words JRcc
|
|
|
|
|
|
Condition
|
|
Codes
|
|
(continued) Mnemonic Result of Compare Status Bits Code
|
|
Signed JRLT JRXLE Dst < Src (N "_V) "t..( N " V) 0100
|
|
Compares JRLE - Ost S Src (N " V_+ (N :.Y).:!: Z _ 0110
|
|
JRGT - Ost> Src (N " V " Z) + ( N " Y.. " Z) 0111
|
|
JRGE JRXGT Ost> Src (N " V) + (N " V) 0101
|
|
JREQ - Ost -;;- Src Z 1010
|
|
(JRZ)
|
|
JRNE - Ost ¢ Src Z 1011
|
|
(JRNZ)
|
|
Compare to JRZ JRYZ Result = zero Z 0101
|
|
Zero JRNZ JRYNZ Result ¢ zero Z 1011
|
|
JRP - Result is positive N"Z 0001
|
|
JRN JRXZ Result is negative N 1110
|
|
JRNN JRXNZ Result is nonnegative N 1111
|
|
General JRZ JRYZ Result is zero Z 1010
|
|
Arithmetic JRNZ JRYNZ Result is nonzero Z 1011
|
|
JRC JRYN Carry set on resu It C 1000
|
|
JRNC JRYNN No carryon result C 1001
|
|
JRB - Borrow set on result C 1000
|
|
(JRC)
|
|
JRNB - No borrow on result C 1001
|
|
JRNC
|
|
JRVt JRXN Overflow on result V 1100
|
|
JRNVt JRXNN No overflow on result V 1101
|
|
Note: A mnemonic code in parentheses is an alternate code for the preceding code.
|
|
t Also used for window clipping
|
|
+ Logical OR
|
|
" Logical AN 0
|
|
- Logical NOT
|
|
|
|
Machine
|
|
States 3,6 (Jump)
|
|
4,7 (No jump)
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Flags for Branch Code Flags for Branch
|
|
NCZV NCZV NCZV NCZV NCZV NCZV
|
|
JRUC HERE xxxx JRV HERE xxx1
|
|
JRP HERE OxOx JRNZ HERE xxOx
|
|
JRLS HERE xx1x x1xx JRNN HERE Oxxx
|
|
JRHI HERE xOOx JRNV HERE xxxO
|
|
JRLT HERE Oxx1 1xxO JRN HERE 1xxx
|
|
JRGE HERE OxxO 1 xx1 JRB HERE x1xx
|
|
JRLE HERE Oxx1 1xxO xx1x JRNB HERE xOxx
|
|
JRGT HERE OxOO 1 x01 JRLO HERE x1xx
|
|
JRC HERE x1xx JRHS HERE xOOx xx1x
|
|
JRNC HERE xOxx JRNE HERE xxOx
|
|
JRZ HERE xx1x JREQ HERE xx1x
|
|
Note that the TMS34010 jumps when anyone or more of the Flags for
|
|
Branch listed above are set as indicated.
|
|
|
|
|
|
|
|
12-97
|
|
JUMP Jump Indirect
|
|
|
|
|
|
Syntax JUMP Rs
|
|
Execution Rs -+ PC
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 0 1 IR Rs I
|
|
Description JUMP jumps to the address contained in the source register. The
|
|
TMS34010 sets the four LSBs of the program counter to 0 (word aligned).
|
|
This instruction can be used in conjunction with the GETPC and/or EXGPC
|
|
instructions.
|
|
Machine
|
|
States 2,5
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Before After
|
|
A1 PC PC
|
|
JUMP Al 00001EEOh 00555550h 00001EEOh
|
|
JUMP Al 00001EE5h 00555550h 00001EEOh
|
|
JUMP Al FFFFFFFFh 00555550h FFFFFFFOh
|
|
|
|
|
|
|
|
|
|
12-98
|
|
Line Draw with XV Addressing LINE
|
|
|
|
|
|
Syntax LINE {O,1}
|
|
Execution The two execution algorithms for the LINE instruction are explained below.
|
|
These algorithms are similar, varying only in their treatment of d=O.
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
11 0 zoo 0 o
|
|
Fields The assembler sets bit 7 in the instruction word (the Z bit) to 0 or 1, de-
|
|
pending on which LINE algorithm you select:
|
|
Z=O selects algorithm 0
|
|
Z=1 selects algorithm 1
|
|
Description LINE performs the inner loop of Bresenham's line-drawing algorithm. This
|
|
type of line draw plots a series of points (Xj,yj) either diagonally or laterally
|
|
with respect to the previous point. Movement from pixel to pixel always
|
|
proceeds in a dominant lateral direction. The algorithm mayor may not also
|
|
increment in the direction with the smaller dimension (this produces a di-
|
|
agonal movement). Two XV -format registers supply the XV increment val-
|
|
ues for the two possible movements. The LINE instruction maintains a
|
|
decision variable, d, that acts as an error term, controlling movement in ei-
|
|
ther the dominant or diagonal direction. The algorithm operates in one of
|
|
two modes, depending on how the condition d=O is treated.
|
|
During LINE execution, some portion of a line [(XO,yO)(X1,y1)] is drawn.
|
|
The line is drawn so that the axis with the largest extent has dimension a
|
|
and the axis with the least extent has dimension b. Thus, a is the larger (in
|
|
absolute terms) of Y1 - YO or x1 - Xo and b is the smaller of the two. This
|
|
means that a .?: b .?: O.
|
|
The following values must be supplied to draw a line from (XO,YO) to
|
|
(X1,Y1):
|
|
1) Set the XV pointer (Xi,Yi) in the DADDR register to the initial value
|
|
of (xO'YO).
|
|
2) Use the line endpoints to determine the major and minor dimensions
|
|
(a and b, respectively) for the line draw; then set the DVDX register
|
|
to this value (b:a).
|
|
3) Place the signed XV increment for a movement in the diagonal (or
|
|
minor) direction (d .?: 0 for Z=O, d > 0 for Z=1) in the I NC1 register.
|
|
4) Place the signed XV increment for a movement in the dominant (or
|
|
major) direction (d < 0 for Z=O, d S 0 for Z=1) in the INC2 register.
|
|
5) Set the initial value of the decision variable in register BO to 2b - a.
|
|
6) Set the initial count value in the COUNT register to a + 1.
|
|
7) Set the LINE color in the COLOR1 register.
|
|
8) Set the PATTRN register to all 1s.
|
|
|
|
|
|
|
|
|
|
12-99
|
|
LINE Line Draw with XV Addressing
|
|
|
|
|
|
The LINE instruction may use one of two algorithms, depending on the
|
|
value of Z:
|
|
Algorithm 0 (Z=O):
|
|
While COUNT> 0
|
|
COUNT = COUNT - 1
|
|
Draw the next pixel
|
|
If d > 0
|
|
-d = d + 2b - 28
|
|
POINTER = POINTER + INC1
|
|
Else d = d + 2b;
|
|
POINTER = POINTER + INC2
|
|
Algorithm 1 (Z=1):
|
|
While COUNT> 0
|
|
COUNT = COUNT - 1
|
|
Draw the next pixel
|
|
If d > 0
|
|
d = d + 2b - 2a
|
|
POINTER = POINTER + INC1
|
|
Else d = d + 2b;
|
|
POINTER = POINTER + INC2
|
|
LINE 1 is commonly used to draw lines with decreasing y values; LINE 0
|
|
is used to draw lines with increasing y values. For horizontal lines, use FILL
|
|
or LINE O.
|
|
Implied
|
|
Operands B File Registers
|
|
Register Name Format Description
|
|
BOt SADDR Integer Decision variable, d
|
|
B2t DADDR XY Starting point (Yj:Xj), usually (YO:xO)
|
|
B4 OFFSET Linear Screen origin (0,0)
|
|
B5 WSTART XY Window starting corner
|
|
B6 WEND XY Window ending corner
|
|
B7 DYDX XY b:a minor:major line dimensions
|
|
B9 COLOR1 Pixel Pixel color to be replicated
|
|
B10t COUNT Integer Loop count
|
|
B11 INC1 XY Minor axis (diagonal) increment, INC1
|
|
B12 INC2 XY Major axis (dominant) increment, INC2
|
|
B13t PATTRN Pattern Future pattern register, must be set to all 1s
|
|
B14 TEMP - Temporary reg ister
|
|
I/O Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOOOOBOh CONTROL PP- Pixel processing operations
|
|
W - Window clipping operation
|
|
T - Transparency operation
|
|
COOO0140h CONVDP XY-to-linear conversion (destination pitch)
|
|
COOO0150h PSIZE Pixel size (1,2,4,8,16)
|
|
COOOO160h PMASK Plane mask - pixel format
|
|
t These registers are changed by instruction execution
|
|
|
|
|
|
|
|
12-100
|
|
Line Draw with XV Addressing LINE
|
|
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
LINE instruction. To ensure that this register contains the correct value for
|
|
execution, you may want to follow the write to that location with an in-
|
|
struction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
Pixel
|
|
Processing The PP field in the CONTROL I/O register specifies the operation to be
|
|
applied to the pixel as it is written. There are 22 operations; the default case
|
|
at reset is the pixel processing replace (S -+ D) operation. For more infor-
|
|
mation, see Section 7.7, Pixel Processing, on page 7-15.
|
|
Window
|
|
Checking Window clipping or pick is selected by setting the W bits in the CONTROL
|
|
I/O register to the appropriate value. The WSTART and WEND registers
|
|
define the window in XY -coordinate space.
|
|
Options include:
|
|
o No window clipping. LINE draws the entire line. Neither the WVP or
|
|
V bit are affected. WSTART and WEN D are ignored.
|
|
1 Window hit. The instruction calculates points but no pixels are actually
|
|
drawn. As soon as the pixel to be drawn lies inside the window, the
|
|
WVP bit is set, the V bit is cleared, and the instruction is aborted. At
|
|
this point, registers BO, B2, B10, B13, and B14 are set so as to draw
|
|
the next pixel in the line; BO is set to the value for the pixel beyond the
|
|
next pixel on the line. If the line lies entirely outside the window, then
|
|
the WVP bit is not affected, the V bit in the status is set, and the in-
|
|
struction completes execution.
|
|
2 Clip and set WVP. LINE draws pixels until the pixel to be drawn lies
|
|
outside the window. At this point, the WVP bit is set, the V bit is set,
|
|
and the instruction is aborted. At this point, registers BO, B2, B10, B13,
|
|
and B14 are set so as to draw the next pixel in the line; BO is set to the
|
|
value for the pixel beyond the next pixel on the line. If the entire line
|
|
lies within the window, then the WVP bit is not affected, the V bit
|
|
is cleared and the instruction completes execution. The initial value of
|
|
WVP does not affect instruction execution.
|
|
3 Clip. LINE calculates all the points, but only draws the points that lie
|
|
inside the window. The V bit tracks the state of the last pixel. If the
|
|
pixel was outside the window, V is set to 1; otherwise, it is O. The in-
|
|
struction traverses the entire line.
|
|
The default case at reset is no window clipping. For more information, see
|
|
Section 7.10, Window Checking, on page 7-25.
|
|
Transparency You can enable transparency for this instruction by setting the T bit in the
|
|
CONTROL I/O register t01. The TMS34010 checks for 0 (transparent)
|
|
source pixels after it processes the source data. At reset, the default case
|
|
for transparency is off.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
Interrupts LINE may be interrupted after every pixel in the line draw except for the last
|
|
pixel. If the instruction is interrupted, the PC is decremented by 16 to point
|
|
back to the LINE instruction (the one being executed) before the PC is
|
|
|
|
|
|
12-101
|
|
LINE Line Draw with XV Addressing
|
|
|
|
|
|
pushed on the stack. Thus, the LINE instruction is resumed upon return
|
|
from the interrupt. In order for the LINE to be resumed correctly, any B-file
|
|
registers that are modified by the interrupting routine must be restored, and
|
|
the RETI instruction must be executed. Note that a LINE instruction that
|
|
is aborted because of window checking options 1 or 2 does not decrement
|
|
the PC before pushing it on the stack. In this case, the LINE is not resumed
|
|
after returning from the interrupt service routine.
|
|
Machine
|
|
States The total LINE instruction timing is obtained by adding a setup time to a
|
|
transfer time:
|
|
LINE time = LINE setup time + LINE transfer time
|
|
|
|
• LINE setup time is the overhead incurred from initiating the LINE
|
|
instruction. The setup sequence executes an initialization sequence,
|
|
performing any necessary setup operations and translations. The
|
|
setup time is a/ways 4 machine states.
|
|
• The transfer sequence performs the actual data transfer from the
|
|
source register to the destination pixels. Table 12-10 shows LINE
|
|
transfer timing. LI N E transfer timing may be influenced by window
|
|
and pixel processing operations; their affects are discussed in the list
|
|
that follows Table 12-10.
|
|
|
|
Table 12-10. LINE Transfer Timing
|
|
|
|
Window Option
|
|
W=1 W=2, Interrupt W=3
|
|
Instruction W=O (Off) Window Hit On Clip Clipping
|
|
LlNEO (3+P)E 5q + 5 (3+ P)E t (3+ P)E + 5q
|
|
LINE 1 (3+P)E 5q + 5 (3+ P)E t (3+ P)E + 5q
|
|
t Add 5 for a window violation
|
|
Key:
|
|
E Number of pixels written
|
|
q Number of pixels calculated, but not written
|
|
P Selected pixel processing operation
|
|
|
|
Although window operations affect the setup time of most instructions,
|
|
they are performed during transfer execution of the LINE instruction, af-
|
|
fecting it on a per-pixel basis. Window operations that affect the LINE in-
|
|
struction include:
|
|
|
|
• No window checking
|
|
• Window clip: V flag set, LINE aborted on first write outside window
|
|
• Window hit: WVP flag set, V flag cleared, abort LINE on first write
|
|
inside window
|
|
Pixel processing operations influence the LINE transfer timing. (The effects
|
|
of other graphics operations, such as plane masking and transparency, are
|
|
already included.) Pixel processing consumes 2, 4, 5, or 6 machine states
|
|
per pixel, depending on the operation selected. Table 12-11 shows the
|
|
effects of pixel processing on LINE timing.
|
|
|
|
|
|
|
|
|
|
12-102
|
|
Line Draw with XV Addressing LINE
|
|
|
|
|
|
Table 12-11. Per-Word Timing Values for Pixel Processing (P)
|
|
|
|
Other ADDS,SUBS
|
|
Replace Booleans SUBS
|
|
or ADD MAX or MIN
|
|
2 4 5 6
|
|
|
|
|
|
Figure 12-11 illustrates timing for a LIN E 0, drawing a line from (3h,52h)
|
|
to (19h,55h).
|
|
|
|
**************************************************
|
|
* Implied operand setup for LINE example (assume *
|
|
* that B register and I/O register names are *
|
|
* equated with the proper registers) *
|
|
**************************************************
|
|
MOVI OFFFFFFFOh, BO Decision variable d=2b-a=-16
|
|
MOVI 00S20003h, B2 DADDR
|
|
MOVI 00000800h, B3 DPTCH (CONVDP=14)
|
|
MOVI 00000100h, B4 OFFSET
|
|
MOVI 00300003h, BS WSTART
|
|
MOVI 00SS002Sh, B6 WEND
|
|
MOVI 00030016h, B7 b:a; b=3 and a=22
|
|
MOVI 44444444h, B9 COLORI (color of the line)
|
|
MOVI 00000017h, BI0 COUNT (a+l)
|
|
MOVI 00010001h, Bll Diagonal increment (+1,+1)
|
|
MOVI 00000001h, B12 Nondiagonal increment (0,+1)
|
|
MOVI OFFFFFFFFh, B13 PATTRN (all Is)
|
|
MOVI OOCOh, AO
|
|
MOVE AO, @CONTROL W=3, T=O, PP=O,
|
|
CLR AO
|
|
MOVE AO, @PMASK No plane masking
|
|
|
|
Figure 12-11. Implied Operand Setup for LINE Timing Example
|
|
|
|
|
|
|
|
|
|
Figure 12-12. LINE Timing Example
|
|
|
|
|
|
Follow these steps to determine the number of machine states consumed
|
|
by this LINE example:
|
|
1) The setup time for a LINE instruction is always 4 machine states.
|
|
2) Determine the transfer time. Transfer time comprehends window-
|
|
ing, the number of pixels drawn, and graphi,cs operations.
|
|
a) Windowing: is on for this LINE 0 instruction; as Table 12-10
|
|
shows, the transfer timing is (3+P)E + 5Q.
|
|
b) Graphics operations: The pixel processing replace operation has
|
|
been selected; according to Table 12-11, P=2.
|
|
|
|
|
|
12-103
|
|
LINE Line Draw with XV Addressing
|
|
|
|
|
|
c) Number of pixels drawn: Register B10 indicates the total num-
|
|
ber of pixels in the line (23). Since the line fits within the win-
|
|
dow, all pixels calculated are drawn; thus, E = 23 and 0=0.
|
|
The total machine states required for this instruction are:
|
|
LINE time = LINE setup time + LI N E transfer time
|
|
= 4 + (3+P)E + 50
|
|
= 4 + (3+2) x 23 + 0
|
|
= 119 states
|
|
119 states are needed to draw these 23 pixels.
|
|
The LINE instruction may be interrupted on any pixel boundary during the
|
|
transfer portion of the algorithm. The context of the LI N E is saved in re-
|
|
served registers; the PC is decremented before it is pushed on the stack, so
|
|
that execution returns to the LINE opcode. This operation takes 20 ma-
|
|
chine states for the interrupt to be recognized. The time for the context
|
|
switch must be added; see the TRAP instruction for context switch timing.
|
|
Status Bits N Undefined
|
|
C Undefined
|
|
Z Undefined
|
|
V Set depending upon window operation.
|
|
|
|
|
|
|
|
|
|
12-104
|
|
Line Draw with XV Addressing LINE
|
|
|
|
|
|
Linedraw Code
|
|
The following code segment shows setup and execution of the LINE in-
|
|
struction.
|
|
*********************************************************************
|
|
* Draw a line from point (xs,¥s) to point (xe,¥e) using Bresenham's *
|
|
* algorithm. When -draw_line ~s called, xs is ~n the 16 LSBs of B2, *
|
|
* ¥s is in the 16 MSBs of B2, xe is in the 16 LSBs of BO, and ye is *
|
|
* ~n the 16 MSBs of BO. *
|
|
*********************************************************************
|
|
. global -draw-line
|
|
-draw_line:
|
|
SUBXY B2, BO ; Calculate a and b
|
|
* Now set up B7 (a,b) and B11 = (dx-diag,dy-diag). Assume that
|
|
* a < 0 and b < 0; if a >= 0 or b >= 0, make corrections later.
|
|
* Register B11 (INC1) contains dy-diag::dx-diag
|
|
* Register B12 (INC2) contains dy-nondiag::dx-nondiag
|
|
MOVI -1, B11 dx-diag = dy-diag- - 1
|
|
MOVK 1, B12 Constant = 1
|
|
CLR B7
|
|
SUBXY BO, B7 B7 = (-a,-b)
|
|
JRNC L1 Jump if b < 0
|
|
* Handle case where b >= 0:
|
|
MOVY BO, B7 Make a in B7 positive
|
|
SRL 15, B11 Change dy-diag to +1
|
|
L1:
|
|
JRNV L2 Jump if a < 0
|
|
* Handle case where a >= 0:
|
|
MOVX BO, B7 Take absolute value of a
|
|
MOVX B12, B11 Change dx-diag to +1
|
|
L2:
|
|
MOVX B11, B12 dx-nondiag=dx-diag, dy-nondiag=O
|
|
* Compare magnitudes of a and b:
|
|
MOVE B7, BO Copy a and b
|
|
SRL 16, BO Move b into 16 LSBs
|
|
CMPXY BO, B7 Compare a and b
|
|
JRNV L3 Jump if a )= b
|
|
* Handle case where a < b; must swap a and b so that a >= b:
|
|
MOVX B7, BO Copy b into BO
|
|
RL 16, B7 Swap a and b halves of B7
|
|
CLR B12
|
|
MOVY B11, B12 dx_nondiag=O, dy-nondiag=dy_diag
|
|
* Calculate initial values of decision variable (d) and
|
|
* loop counter:
|
|
L3: ADD BO, BO BO = 2 x b
|
|
MOVX B7, BID BID = a
|
|
SUB BID, BO BO = d (2 x b - a)
|
|
ADDK I, BID Loop count = a + I (in BID)
|
|
* Draw line and return to caller:
|
|
LINE 0 ; Inner loop of line algorithm
|
|
RETS 0 ; Return to caller
|
|
|
|
|
|
|
|
|
|
12-105
|
|
LINE Line Draw with XV Addressing
|
|
|
|
|
|
Example 1 This example draws a line from (3,52) to (19,55). Window checking is off,
|
|
transparency and the pixel processing replace operation are selected, and
|
|
plane masking is disabled. Assume the following registers have been
|
|
loaded with these values:
|
|
BO = FFFFFFF1 h Decision variable d = 2b - a = -1 5
|
|
B2 = 00520003h DADDR
|
|
B3 = 00000800h DPTCH (CONVDP=13)
|
|
B4 = 00000100h OFFSET
|
|
B5 = 00300003h WSTART
|
|
B6 = 00550025h WEND
|
|
B7 = 00030016h b:a; b=3 and a=22
|
|
B9 = 44444444h COLOR1 (color of the line)
|
|
B10 = 00000017h COUNT (a+1)
|
|
B11 = 00010001 h Diagonal increment (+ 1, + 1 )
|
|
B1 2 = 00000001 h Nondiagonal increment (0, +1 )
|
|
B13 = FFFFFFFFh PATTRN (all 1 s)
|
|
|
|
This line is shown in Figure 12-13, represented by.s.
|
|
Before LINE execution, DADDR contains the first pixel to be drawn. During
|
|
LINE execution, DADDR is updated so that it always points to the next
|
|
pixel to be drawn. After this example is completed, DADDR equals
|
|
0055001 Ah. Register B7 contains the X and Y dimensions of the line.
|
|
Register B10 indicates the number of pixels that are drawn; if you want the
|
|
endpoint to be drawn (in this case, (19,55)), B10 should equal a+1.
|
|
B11 contains the XY increment for diagonal moves. You can see the line
|
|
progressing in a diagonal direction when it moves from (6,52) to (7,53); it
|
|
is incremented by 1 in both the X and the Y dimensions. B12 contains the
|
|
XY increment for nondiagonal moves. You can see the line progressing in
|
|
a nondiagonal direction when it moves from (3,52) to (4,52); it is incre-
|
|
mented by 1 in the X dimension.
|
|
|
|
|
|
|
|
|
|
~--------------~v~------------~
|
|
a=22
|
|
|
|
Figure 12-13. LINE Examples
|
|
|
|
|
|
|
|
|
|
12-106
|
|
Line Draw with XV Addressing LINE
|
|
|
|
|
|
Example 2 This example draws a line from (19,52) to (3,55). Window checking is off,
|
|
transparency and the pixel processing replace operation are selected, and
|
|
plane masking is disabled. Assume the following registers have been
|
|
loaded with these values:
|
|
BO = FFFFFFF1 h Decision variable d = 2b - a = -1 5
|
|
B2 = 00520019h DADDR
|
|
B3 = 00000800h DPTCH (CONVDP=13)
|
|
B4 = 000001 OOh OFFSET
|
|
B5 = 00300003 h WSTART
|
|
B6 = 00550025h WEND
|
|
B7 = 00030016h b:a; b=3 and a=22
|
|
B9 = 22222222h COLOR1 (color of the line)
|
|
B10 = 00000017h COUNT (a+1)
|
|
B11 = 0001 FFFFh Diagonal increment (+1,-1)
|
|
B12 = OOOOFFFFh Nondiagonal increment (0,-1 )
|
|
B13 = FFFFFFFFh PATTRN (all 1s)
|
|
This line is shown in Figure 12-13, represented by Xs.
|
|
Before LINE execution, DADDR contains the first pixel to be drawn. During
|
|
LINE execution, DADDR is updated so that it always points to the next
|
|
pixel to be drawn. After this example is completed, DADDR equals
|
|
00550002h. Register B7 contains the X and Y dimensions of the line.
|
|
Register B10 indicates the number of pixels that are drawn; if you want the
|
|
endpoint to be drawn (in this case, (3,55)), B10 should equal a+1.
|
|
B11 contains the XY increment for diagonal moves. You can see the line
|
|
progressing in a diagonal direction when it moves from (F,53) to (E,54); it
|
|
is decremented by 1 in the X dimension and incremented by 1 in the Y di-
|
|
mension. B12 contains the XY increment for nondiagonal moves. You can
|
|
see the line progressing in a nondiagonal direction when it moves from
|
|
(14,53) to (13,53); it is decremented by 1 in the X dimension.
|
|
|
|
|
|
|
|
|
|
12-107
|
|
LMO Find Leftmost One
|
|
|
|
|
|
Syntax LMO Rs, Rd
|
|
Execution 31 - (bit number of leftmost 1 in Rs) -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 Rs R Rd I
|
|
Description LMO locates the leftmost (most significant) 1 in the source register. It then
|
|
loads the 1s complement of the bit number of the leftmost-1 bit into me
|
|
five LSBs of the destination register. The 27 MSBs of the destination reg-
|
|
ister are loaded with Os. Bit 31 of Rs is the MSB (leftmost) and bit 0 is the
|
|
LSB. If the source register contains all Os, then the destination register is
|
|
loaded with all Os and status bit Z is set.
|
|
You can normalize the contents of the source register by following the LMO
|
|
instruction with an RL Rs,Rd instruction, where Rs is the destination reg-
|
|
ister of the LMO instruction and Rd is the source register.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z 1 if the source register contents are 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
AO NCZV A1
|
|
LMO AO,Al OOOOOOOOh xx1x OOOOOOOOh
|
|
LMO AO,Al 00OOOOO1h xxOx 0OOOOO1Fh
|
|
LMO AO,Al 00OOOO10h xxOx 0OOOOO1Bh
|
|
LMO AO,Al 08000000h xxOx 0OOOOO04h
|
|
LMO AO,Al 80000000h xxOx OOOOOOOOh
|
|
|
|
|
|
|
|
|
|
12-108
|
|
Move Multiple Registers from Memory MMFM
|
|
|
|
|
|
Syntax M M FM Rp, register list
|
|
Execution For each register Rn in the register list,
|
|
32 bits of data at the address specified in Rp -+ Rn
|
|
Rp + 32 -+ Rp
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2
|
|
000 0 o 0 o R Rs °
|
|
binary representation of the register list
|
|
|
|
Description MMFM loads the contents of a specified list of either A or B file registers
|
|
(not both) from a block of memory.
|
|
|
|
• The Rp operand is a register that points to the first location in the
|
|
block of memory.
|
|
|
|
• The register list is a list of registers separated by commas (such as AO,
|
|
A1, A9). These are the registers that MMFM loads new values into.
|
|
The MMTM and MMFM instructions are "stack" instructions for storing
|
|
multiple registers in memory and then retrieving their values. Both in-
|
|
structions use Rp as a "stack pointer" that contains the bit address of the
|
|
top of the stack. The stack grows toward lower addresses so that the bot-
|
|
tom of the stack is the highest address in the stack. M MTM stores the re-
|
|
gisters in memory. MMFM reverses the action of the MMTM instruction
|
|
by "popping" register values from memory. At the outset of the MMFM
|
|
instruction, Rp must contain the address of the 16 LS Bs of the highest or-
|
|
der register in the list. The LSW is moved into the register, and then the
|
|
contents of the next consecutive word are moved into the MSW of the re-
|
|
gister. After a register is "popped", the contents of Rp are incremented by
|
|
32 to point to the address of the LSW of the next register to be restored.
|
|
Rp and the registers in the list must all be in the same register file. The re-
|
|
gisters in the list can be specified in any order; the highest order register is
|
|
always restored first (that is, the value at the top of the stack - the lowest
|
|
address in the stack - is loaded into the highest order register). Don't in-
|
|
clude Rp as one of the registers in the register list, because this produces
|
|
unpredictable results. The original contents of Rp should be aligned on a
|
|
word-boundary; the alignment of Rp affects the instruction timing as indi-
|
|
cated in Machine States, below.
|
|
The second word of the MMFM instruction is a binary-mask representation
|
|
of the registers in the list. The R bit (bit 4) in the first word indicates which
|
|
register file is affected; the bits that are set to 1 in the mask indicate which
|
|
registers are restored. The bit assignments in the mask are:
|
|
|
|
|
|
|
|
|
|
12-109
|
|
MMFM Move Multiple Registers from Memory
|
|
|
|
|
|
Machine
|
|
States Cache Enabled Cache Disabled
|
|
Rp Aligned: 3 + 4n + (2) 11 + 4n
|
|
Rp Nonaligned: 3 + 6n + (4) 13 + 6n
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples This example restores several B-file registers:
|
|
MMFM BO,Bl,B2,B3,B7,B12,B13,B14,SP
|
|
This instruction uses register BO as the stack pointer. Assume that BO =
|
|
00010000h; this is the address of the top of the stack. MMFM moves the
|
|
data at this location into the LSW of the SP (which is the highest order
|
|
register listed in this example). Assume that memory contains the following
|
|
values before instruction execution:
|
|
Address Data Address Data
|
|
000100FOh 1111h 00010070h CCCCh
|
|
000100EOh 01 B1 h 00010060h BCBCh
|
|
000100DOh 2222h 00010050h DDDDh
|
|
000100COh OB2B2h 00010040h BDBDh
|
|
000100BOh 3333h 00010030h EEEEh
|
|
000100AOh 03B3h 00010020h BEBEh
|
|
00010090h 7777h 00010010h FFFFh
|
|
00010080h B7B7h 00010000h BFBFh
|
|
After the MMFM instruction is executed, the registers in the list have the
|
|
following values:
|
|
BO = 000101 OOh B12 = CCCCBCBCh
|
|
B1 = 1111 B1 B1 h B13 = DDDDBDBDh
|
|
B2 = 2222B2B2h B14 = EEEEBEBEh
|
|
B4 = 3333B3B3h SP = FFFFBFBFh
|
|
B8 = 7777B7B7h
|
|
The other B-file registers (which weren't specified in the register list) are
|
|
not affected by this instruction. Note that 80 now contains the value
|
|
10100h; the last part of the data that was restored was for B1, and BO
|
|
points to the word past that data.
|
|
|
|
|
|
|
|
|
|
12-110
|
|
Move Multiple Registers to Memory MMTM
|
|
|
|
|
|
Syntax M MTM Rp, register list
|
|
Execution For each register Rnin the register list,
|
|
Rp - 32 -+ Rp
|
|
32 bits of data at the address specified in Rn -+ Rp
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2
|
|
o 0 0 0 o 0 o 0 R Rd °
|
|
binary representation of the register list
|
|
|
|
Description M MTM stores the contents of a specified list of either A or B file registers
|
|
(not both) in memory.
|
|
|
|
• The Rp operand is a register that points to the first location in a block
|
|
of memory.
|
|
|
|
• The register list is a list of registers that are separated by commas
|
|
(such as AO, A1, A9). These are the registers that MMTM stores in
|
|
memory.
|
|
The MMTM and MMFM instructions are "stack" instructions for storing
|
|
multiple registers in memory and then retrieving their values. Both in-
|
|
structions use Rp as a "stack pointer" that contains the bit address of the
|
|
top of the stack. The stack grows toward lower addresses so that the bot-
|
|
tom of the stack is the highest address in the stack. MMTM stores the re-
|
|
gisters in memory. Before a register's contents are "pushed" onto the stack,
|
|
the Rp is decremented by 32 bits; the register is then pushed, LSW first.
|
|
Thus, at the outset of the M MTM instruction, Rp must contain an incre-
|
|
mented value. This value is the address where you want to store the LSW
|
|
of the lowest-order register, plus 32 bits; this assures that Rp is predecre-
|
|
mented to point to the correct location in memory.
|
|
When MMTM execution is complete, the contents of the lowest-order reg-
|
|
ister in the list reside at the highest address in the memory "stack," and Rp
|
|
points to the address of the highest-order register in the list.
|
|
Rp and the registers in the list must all be in the same register file. The re-
|
|
gisters in the list can be specified in any order; the lowest order register is
|
|
always saved first. Don't include Rp as one of the registers in the register
|
|
list, because this produces unpredictable results. The original contents of
|
|
Rp should be aligned on a word boundary; the alignment of Rp affects the
|
|
instruction timing as shown in Machine States, below.
|
|
The second word of the MMFM instruction is a binary-mask representation
|
|
of the registers in the list. The R bit (bit 4) in the first word indicates which
|
|
register file is affected; the bits that are set to 1 in the mask indicate which
|
|
registers are restored. The bit assignments in the mask are:
|
|
|
|
|
|
|
|
|
|
12-111
|
|
MMTM Move Multiple Registers to Memory
|
|
|
|
|
|
Machine
|
|
States Cache Enabled Cache Disabled
|
|
Rp Aligned: 2 + 4n + (2) 8 + 4n + 2
|
|
Rp Nonaligned: 2 + 10n + (8) 10(n+1)
|
|
Status Bits N Set to the sign of the result of 0 - Rp. (This value is typically 1 if the
|
|
original contents of Rp are positive; otherwise, it is O. The only ex-
|
|
ceptions to this are when Rp=80000000h, N is set to 0, and when
|
|
Rp=O, N is set to 1.)
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples This example saves the values of several A-file registers in memory:
|
|
MMTM Al,AO,A2,A4,A8,A12,A13,A14,SP
|
|
This instruction uses register A1 as the stack pointer. Assume that A1
|
|
100000h before instruction execution; this value is decremented by 32 to
|
|
point to the address where the contents of AO (the lowest order register in
|
|
the list) are stored. Assume that the registers in the list contain the fol-
|
|
lowing values before instruction execution:
|
|
AO = OOOOAOAOh A 12 = CCCCACACh
|
|
A2 = 2220A2A2h A13 = DDDDADADh
|
|
A4 = 4444A4A4h A14 = EEEEAEAEh
|
|
A8 = 8888A8A8h SP = FFFFAFAFh
|
|
M MTM saves these register values in memory as shown below:
|
|
Address Data Address Data
|
|
OOOFFFOOh AFAFh 000FFF80h A8A8h
|
|
000FFF10h FFFFh 000FFF90h 8888h
|
|
000FFF20h AEAEh OOOFFFAOh A4A4h
|
|
000FFF30h EEEEh OOOFFFBOh 4444h
|
|
000FFF40h ADADh OOOFFFCOh A2A2h
|
|
000FFF50h DDDDh OOOFFFDOh 2222h
|
|
OOOFFF60h ACACh OOOFFFEOh AOAOh
|
|
00OFFF70h CCCCh OOOFFFFOh OOOOh
|
|
After instruction execution, register A1 = OOOFFFOOh. Note that A1 now
|
|
contains the value OFFFOOh; this is the address of the last portion of register
|
|
data that is saved.
|
|
|
|
|
|
|
|
|
|
12-112
|
|
Modulus - Signed MODS
|
|
|
|
|
|
Syntax MODS Rs, Rd
|
|
Execution Rd mod Rs -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 01 Rs IR Rd I
|
|
Description MODS performs a 32-bit signed divide of the 32-bit dividend in the desti-
|
|
nation register by the 32-bit value in the source register, and returns a
|
|
32-bit remainder in the destination register. The remainder is the same sign
|
|
as the dividend. The original contents of the destination register are always
|
|
overwritten.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 40,43 (normal case)
|
|
41,44 if result = 80000000
|
|
3,6 if Rs = 0
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected if RS=O, 1 if quotient is 0, 0 otherwise
|
|
V 1 if the quotient overflows (cannot be represented by 32 bits), 0 oth-
|
|
erwise
|
|
The following conditions set the overflow flag:
|
|
|
|
• The divisor is 0
|
|
• The quotient cannot be contained within 32 bits
|
|
Examples Code Before After
|
|
AO A1 NCZV AO
|
|
MODS AD,AI OOOOOOOOh OOOOOOOOh Ox01 OOOOOOOOh
|
|
MODS AD,AI OOOOOOOOh 00000007h Ox01 00000OO7h
|
|
MODS AD,AI OOOOOOOOh FFFFFFF9h Ox01 FFFFFFF9h
|
|
MODS AD,AI 00OOOO04h 00000008h Ox10 OOOOOOOOh
|
|
MODS AD,AI 00000004h 000OOO07h OxOO 000OOOO3h
|
|
MODS AD,AI 00000004h OOOOOOOOh Ox10 OOOOOOOOh
|
|
MODS AD,AI 00000004h FFFFFFF9h 1xOO FFFFFFFDh
|
|
MODS AD,AI 00000004h FFFFFFF8h Ox10 OOOOOOOOh
|
|
MODS AD,AI FFFFFFFCh 000OOO08h Ox10 OOOOOOOOh
|
|
MODS AD,AI FFFFFFFCh 000OOO07h OxOO 000OOOO3h
|
|
MODS AD,AI FFFFFFFCh OOOOOOOOh Ox10 OOOOOOOOh
|
|
MODS AD,AI FFFFFFFCh FFFFFFF9h 1xOO FFFFFFFDh
|
|
MODS AD,AI FFFFFFFCh FFFFFFF8h Ox10 OOOOOOOOh
|
|
|
|
|
|
|
|
|
|
12-113
|
|
MODU Modulus - Unsigned
|
|
|
|
|
|
Syntax MODU Rs, Rd
|
|
Execution Rd mod Rs ~ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 1 I Rs IR Rd I
|
|
Description MODU performs a 32-bit unsigned divide of the 32-bit dividend in the
|
|
destination register by the 32-bit value in the source register, and returns a
|
|
32-bit remainder in the destination register. The original contents of the
|
|
destination register are always overwritten.
|
|
|
|
Rs and Rd must be in the same register file.
|
|
|
|
Machine
|
|
States 35,38
|
|
3,6 if Rs = 0
|
|
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected if RS=O, 1 if quotient is 0, 0 otherwise
|
|
V 1 if divisor Rs equals 0,0 otherwise
|
|
|
|
Examples Code Before After
|
|
AO A1 NCZV A1
|
|
MODU AO,AI OOOOOOOOh OOOOOOOOh xx01 OOOOOOOOh
|
|
MODU AO,AI OOOOOOOOh 00000007h xx01 00OOOOO7h
|
|
MODU AO,AI OOOOOOOOh FFFFFFF9h xx01 FFFFFFF9h
|
|
MODU AO,AI 0000OOO4h 0OOOOOO8h xx10 OOOOOOOOh
|
|
MODU AO,AI 0000OO04h 00000OO7h xxOO 00OOOO03h
|
|
MODU AO,AI 00OOOOO4h OOOOOOOOh xx10 OOOOOOOOh
|
|
MODU AO,AI 0OOOOOO4h FFFFFFF9h xxOO 00OOOOO1h
|
|
|
|
|
|
|
|
|
|
12-114
|
|
Move Byte - Register to Indirect MOVB
|
|
|
|
|
|
Syntax MOVB Rs, *Rd
|
|
Execution 8 LSBs of Rs -+ *Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
11 0 0 0 01 Rs IR Rd I
|
|
Description MOVB moves a byte from the source register to the memory address con-
|
|
tained in the destination register. The source operand byte is right justified
|
|
in the source register; only the 8 LSBs of the register are moved. The me-
|
|
mory address is a bit address and the field size for the move is 8 bits.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1 + (3),7 (when the destination address is aligned on a byte boundary)
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
5000h OOOOh
|
|
5010h OOOOh
|
|
Code Before After
|
|
AO A1 @5000h @5010h
|
|
MOVB AO,*Al 89ABCDEFh 00005000h OOEFh OOOOh
|
|
MOVB AO,*Al 89ABCDEFh 00005001h 01 DEh OOOOh
|
|
MOVB AO, *Al 89ABCDEFh 00005009h ODEOOh 0001h
|
|
MOVB AO, *Al 89ABCDEFh 0000500Ch FOOOh OOOEh
|
|
|
|
|
|
|
|
|
|
12-115
|
|
MOVB Move Byte - Register to Indirect with Offset
|
|
|
|
|
|
Syntax MOVB Rs, *Rd(offset)
|
|
Execution 8 LSBs of Rs ~ *Rd + offset
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 987 6 5 4 3 2 o
|
|
o oI Rs R Rd
|
|
offset
|
|
|
|
Description MOVB moves a byte from the source register to the destination memory
|
|
address. The source operand byte is right justified in the source register;
|
|
only the 8 LSBs of the register are moved. The destination memory address
|
|
is a bit address and is formed by adding the contents of the specified reg-
|
|
ister to the signed 16-bit offset. This is a field move, and the field size for
|
|
the move is 8 bits.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 3+ (3),9 (when the destination address is aligned on a byte boundary)
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
10000h OOOOh
|
|
10010h OOOOh
|
|
Before After
|
|
AO A1 @1 OOOOh @1 001 Oh
|
|
MOVB AO, *Al( 0) 89ABCDEFh 00010000hOOEFh OOOOh
|
|
MOVB AO, *A1 (1) 89ABCDEFh 00010000h01DEh OOOOh
|
|
MOVB AO,*A1(9) 89ABCDEFh 0001 OOOOh DEOOh 0001h
|
|
MOVB AO, *Al( 12) 89ABCDEFh 0001 OOOOh FOOOh OOOEh
|
|
MOVB AO,*A1(32767) 89ABCDEFh 00008001hOOEFh OOOOh
|
|
MOVB AO,*A1(-32768) 89ABCDEFh 00018000hOOEFh OOOOh
|
|
|
|
|
|
|
|
|
|
12-116
|
|
Move Byte - Register to Absolute MOVB
|
|
|
|
|
|
Syntax MOVB Rs, *DAddress
|
|
Execution 8 LSBs of'Rs ~ DAddress
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 0 1 0 1 1 1 1 IR I Rs
|
|
1 6 LS Bs of destination address
|
|
16 MSBs of destination address
|
|
|
|
Description MOVB moves a byte from the source register to the destination memory
|
|
address. The source operand byte is right justified in the source register;
|
|
only the 8 LSBs of the register are moved. The specified destination mem-
|
|
ory address is a bit address and the field size for the move is 8 bits.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1 + (3),7 (when the destination address is aligned on a byte boundary)
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits NUn affected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
5000h OOOOh
|
|
5010h OOOOh
|
|
Code Before After
|
|
AO @5000h @5010h
|
|
MOVB AO,@5000h 89ABCDEFh OOEFh OOOOh
|
|
MOVB AO,@5001h 89ABCDEFh 01 DEh OOOOh
|
|
MOVB AO,@5009h 89ABCDEFh DEOOh 0001h
|
|
MOVB AO,@500Ch 89ABCDEFh FOOOh OOOEh
|
|
|
|
|
|
|
|
|
|
12-117
|
|
MOVB Move Byte - Indirect to Register
|
|
|
|
|
|
Syntax MOVB *Rs, Rd
|
|
Execution byte at *Rs -. Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I1 0 0 0 Rs R Rd I
|
|
Description MOVB moves a byte from the memory address contained in the source re-
|
|
gister to the destination register. The source memory address is a bit ad-
|
|
dress and the field size for the move is 8 bits. When the byte is moved into
|
|
the destination register, it is right justified and sign extended to 32 bits.
|
|
This instruction also performs an implicit compare to 0 of the field data.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 3,6 (when the source data is aligned on a byte boundary)
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N 1 if the sign-extended data moved into register is negative, 0 otherwise
|
|
C Unaffected
|
|
Z 1 if the sign-extended data moved into register is 0, 0 otherwise
|
|
V 0
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
5000h OOEFh
|
|
5010h 89ABh
|
|
Code Before After
|
|
AO A1 NCZV
|
|
MOVB *AO,Al 00005000h FFFFFFEFh 1xOO
|
|
MOVB *AO,Al 00005001h 00000077h OxOO
|
|
MOVB *AO,Al 00005008h OOOOOOOOh Ox10
|
|
MOVB *AO,Al 0000500Ch FFFFFFBOh 1xOO
|
|
|
|
|
|
|
|
|
|
12-118
|
|
Move Byte - Indirect to Indirect MOVB
|
|
|
|
|
|
Syntax MOVB *Rs, *Rd
|
|
Execution byte at *Rs -+ *Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
Rs Rd
|
|
11
|
|
° ° 01 1R 1
|
|
Description MOVB moves a byte from the source memory address to the destination
|
|
memory address. The source address is specified by the contents of Rs, and
|
|
the destination address is specified by the contents of Rd. Both memory
|
|
addresses are bit addresses and the field size for the move is 8 bits.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 3+(3),7 (when the source data and destination address are aligned on byte
|
|
boundaries)
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
5000h CDEF
|
|
5010h 89AB
|
|
6000h 0000
|
|
6010h 0000
|
|
Code Before After
|
|
AO A1 @6000h @6010h
|
|
MOVB *AO,*Al 00005000h 00006000h OOEFh OOOOh
|
|
MOVB *AO, *Al 00005000h 00006001h 01 DEh OOOOh
|
|
MOVB *AO,*Al 00005000h 00006009h DEOOh 0001h
|
|
MOVB *AO,*Al 00005000h 0000600Ch FOOOh OOOEh
|
|
MOVB *AO,*Al 0OO05001h 0OOO6000h 00F7h OOOOh
|
|
MOVB *AO,*Al 0OO05001h 00006001h 01EEh OOOOh
|
|
MOVB *AO,*Al 00005001h 0OOO6009h EEOOh 0001h
|
|
MOVB *AO,*Al 0OO05001h 0OOO600Ch 7000h OOOFh
|
|
MOVB *AO, *Al 0OO05009h 0OOO6000h OOE6h OOOOh
|
|
MOVB *AO,*Al 0OO05009h 0OOO6001h 01CCh OOOOh
|
|
MOVB *AO,*Al 0OOO5009h 0OOO6009h CCOOh 0001h
|
|
MOVB *AO,*Al 0OOO5009h 0OOO600Ch 6000h OOOEh
|
|
MOVB *AO,*Al 0OOO500Ch 0OOO6000h OOBCh OOOOh
|
|
MOVB *AO,*Al 0OO0500Ch 0OO06001h 0178h OOOOh
|
|
MOVB *AO,*Al 0OO0500Ch 0OOO6009h 7800h 0001h
|
|
MOVB *AO,*Al 0OO0500Ch 0OOO600Ch COOOh OOOBh
|
|
|
|
|
|
|
|
12-119
|
|
MOVB Move Byte - Indirect with Offset to Register
|
|
|
|
|
|
Syntax MOVB *Rs(offset), Rd
|
|
Execution byte at (*Rs + offset) -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 876 5 4 3 2 o
|
|
o Rs R Rd
|
|
offset
|
|
|
|
Description MOVB moves a byte from the source memory address to the destination
|
|
register. The source memory address is a bit address and is formed by ad-
|
|
ding the contents of the specified register to the signed 16-bit offset. The
|
|
field size is 8 bits. When the byte is moved into the destination register, it
|
|
is right justified and sign extended to 32 bits. This instruction also performs
|
|
an implicit compare to 0 of the field data.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 5,11 (when the source data is aligned on a byte boundary)
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N 1 if the sign-extended data moved into register is negative, a otherwise
|
|
C Unaffected
|
|
Z 1 if the sign-extended data moved into register is 0, a otherwise
|
|
V a
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
10000h OOEFh
|
|
10010h 89ABh
|
|
Code Before After
|
|
AO A1 NCZV
|
|
MOVB *AO (0) ,Al 00010000h FFFFFFEFh 1xOO
|
|
MOVB *AO(l) ,Al 0OO10000h 0OOOOO77h OxOO
|
|
MOVB *AO(8) ,Al 00010000h OOOOOOOOh Ox10
|
|
MOVB *AO(12) ,Al 0OO10000h FFFFFFBOh 1xOO
|
|
MOVB *AO(32767) ,Al 00OO8001h FFFFFFEFh 1xOO
|
|
MOVB *AO(-32768),Al 00018000h FFFFFFEFh 1xOO
|
|
|
|
|
|
|
|
|
|
12-120
|
|
Move Byte - Indirect with Offset
|
|
to Indirect with Offset MOVB
|
|
|
|
|
|
Syntax MOVB *Rs(SOffset), *Rd(DOffset)
|
|
Execution byte at (* Rs + SOffset) -+ (* Rd + DOffset)
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
1 0 1 1 1 1 01 Rs 1R 1 Rd
|
|
source offset
|
|
destination offset
|
|
|
|
Description MOVB moves a byte from the source memory address to the destination
|
|
memory address. Both the source and destination memory addresses are
|
|
bit addresses and are formed by adding the contents of the specified regis-
|
|
ter to its respective signed 16-bit offset. The field size is 8 bits.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 5+ (3),9 (when the source data and destination address are aligned on byte
|
|
boundaries)
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits NUn affected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
|
|
|
|
|
|
|
|
12-121
|
|
Move Byte - Indirect with Offset
|
|
MOVB to Indirect with Offset
|
|
|
|
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
10000h CDEFh
|
|
10010h 89ABh
|
|
11000h OOOOh
|
|
11010h OOOOh
|
|
Code Before After
|
|
AO A1 @11000h @11010h
|
|
MOVB *AO(O) ,*A1(O) 00010000h 00011000h OOEFh OOOOh
|
|
MOVB *AO(O) ,*A1(l) 00010000h 00011 OOOh 01 DEh OOOOh
|
|
MOVB * AO ( 0) , * A1 ( 9 ) 00010000h 00011000h DEOOh 0001h
|
|
MOVB *AO(O) ,*A1(l2) 00010000h 00011000h FOOOh OOOEh
|
|
MOVB *AO(O),*A1(32767) 00010000h 00009001h OOEFh OOOOh
|
|
MOVB *AO(O),*A1(-32768) 00010000h 00019000h OOEFh OOOOh
|
|
MOVB *AO(12) ,*A1(O) 00010000h 00011000h OOBCh OOOOh
|
|
MOVB *AO(l2) ,*Al(l) 00010000h 00011000h 0178h OOOOh
|
|
MOVB *AO(12) ,*A1(9) 00010000h 00011000h 7800h 0001h
|
|
MOVB *AO (12) , *A1 (12) 00010000h 00011 OOOh COOOh OOOBh
|
|
MOVB *AO(12),*A1(32767) 00010000h 00009001 h OOBCh OOOOh
|
|
MOVB *AO(12),*A1(-32768) 00010000h 00019000h OOBCh OOOOh
|
|
MOVB *AO(32767),*A1(O) 00008001h 00011000h OOEFh OOOOh
|
|
MOVB *AO(32767),*A1(l) 00008001h 00011000h 01 DEh OOOOh
|
|
MOVB *AO(32767),*A1(9) 00008001h 00011 OOOh DEOOh 0001h
|
|
MOVB *AO(32767),*A1(12) 00008001h 00011 OOOh FOOOh OOOEh
|
|
MOVB *AO(32767),*A1(32767) 00008001h 00009001h OOEFh OOOOh
|
|
MOVB *AO(32767),*A1(-32678) 00008001h 00019000h OOEFh OOOOh
|
|
MOVB *AO(-32768),*A1(O) 00018000h 00011000h OOEFh OOOOh
|
|
MOVB *AO(-32768),*A1(l) 00018000h 00011000h 01 DEh OOOOh
|
|
MOVB *AO(-32768),*A1(9) 00018000h 00011000h DEOOh 0001h
|
|
MOVB *AO(-32768),*A1(12) 00018000h 00011000h FOOOh OOOEh
|
|
MOVB *AO(-32768),*A1(32767) 00018000h 00009001h OOEFh OOOOh
|
|
MOVB *AO(-32768),*A1(-32678) 00018000h 00019000h OOEFh OOOOh
|
|
|
|
|
|
|
|
|
|
12-122
|
|
Move Byte - Absolute to Register MOVB
|
|
|
|
|
|
Syntax MOVB @SAddress, Rd
|
|
Execution byte at SAddress -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 0 1 1 1 1 1 1 IR I Rd
|
|
16 LSBs of source address
|
|
16 MSBs of source address
|
|
|
|
Description MOVB moves a byte from the source memory address to the destination
|
|
register. The specified source memory address is a bit address and the field
|
|
size for the move is 8 bits. When the byte is moved into the destination
|
|
register, it is right justified and sign extended to 32 bits. This instruction
|
|
also performs an implicit compare to 0 of the field data.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 5,14 (when the source data is aligned on a byte boundary)
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N 1 if the sign-extended data moved into register is negative, 0 otherwise
|
|
C Unaffected
|
|
Z 1 if the sign-extended data moved into register is 0, 0 otherwise
|
|
V 0
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
10000h OOEFh
|
|
10010h 89ABh
|
|
Code After
|
|
A1 NCZV
|
|
MOVB @lOOOOh,Al FFFFFFEFh 1xOO
|
|
MOVB @lOOOlh,Al 00000077h OxOO
|
|
MOVB @lOOO8h,Al OOOOOOOOh Ox10
|
|
MOVB @lOOOCh,Al FFFFFFBOh 1xOO
|
|
|
|
|
|
|
|
|
|
12-123
|
|
MOVB Move Byte - Absolute to Absolute
|
|
|
|
|
|
Syntax MOVB @SAddress, @DAddress
|
|
Execution byte at SAddress -+ DAddress
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0
|
|
16 LSBs of source address
|
|
16 MSBs of source address
|
|
16 LSBs of destination address
|
|
16 MSBs of destination address
|
|
|
|
Description MOVB moves a byte from the source memory address to the destination
|
|
memory address. Both the source and destination addresses are interpreted
|
|
as bit addresses and the field size for the move is 8 bits.
|
|
Machine
|
|
States 7 + (3) ,25 (when the source data and destination address are aligned on
|
|
byte boundaries)
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
10000h CDEFh
|
|
10010h 89ABh
|
|
11000h OOOOh
|
|
11010h OOOOh
|
|
|
|
|
|
|
|
|
|
12-124
|
|
Move Byte - Absolute to Absolute MOVB
|
|
|
|
|
|
Code After
|
|
@11000h @11010h
|
|
MOVB @lOOOOh,@llOOOh OOEFh OOOOh
|
|
MOVB @l{)OOOh,@llOOlh 01DEh OOOOh
|
|
MOVB @lOOOOh,@11OO9h DEOOh 0001h
|
|
MOVB @lOOOOh,@llOOCh FOOOh OOOEh
|
|
MOVB @lOOOlh,@llOOOh 00F7h OOOOh
|
|
MOVB @lOOOlh,@llOOlh 01EEh OOOOh
|
|
MOVB @lOOOlh,@11OO9h EEOOh 0001h
|
|
MOVB @lOOOlh,@llOOCh 7000h OOOFh
|
|
MOVB @lOOO9h,@11OOOh 00E6h OOOOh
|
|
MOVB @lOOO9h,@11OOlh 01CCh OOOOh
|
|
MOVB @lOOO9h,@11OO9h CCOOh 0001h
|
|
MOVB @lOOO9h,@11OOCh 6000h OOOEh
|
|
MOVB @lOOOCh,@llOOOh OOBCh OOOOh
|
|
MOVB @lOOOCh,@llOOlh 0178h OOOOh
|
|
MOVB @lOOOCh,@11OO9h 7800h 0001h
|
|
MOVB @lOOOCh,@llOOCh COOOh OOOBh
|
|
|
|
|
|
|
|
|
|
12-125
|
|
MOVE Move - Register to Register
|
|
|
|
|
|
Syntax MOVE Rs, Rd
|
|
Execution Rs -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 1 IM I Rs R Rd I
|
|
Description MOVE moves the 32 bits of data from the source register to the destination
|
|
register. Note that this is not a field move; therefore, the field size has no
|
|
effect. The source and destination registers can be any of the 31 locations
|
|
in the on-chip register file. Note that this is the only MOVE instruction that
|
|
allows the source and destination registers to be in different files. This in-
|
|
struction also performs an implicit compare to 0 of the register data.
|
|
Fields The assembler sets bit 9 (the M bit) in the instruction word to specify
|
|
whether the move is within a register file or if it crosses the register files.
|
|
The assembler sets M to 0 if the source and destination registers are in the
|
|
same file; it sets M to 1 if the registers are in different files.
|
|
The assembler sets bit 4 (the R bit) in the instruction word to specify which
|
|
file the registers are in. The assembler sets R to 0 if the registers are in file
|
|
A; it sets R to 1 if the registers are in file B.
|
|
Note that when M=O, R specifies the register file for both registers; if M=1,
|
|
R specifies the register file for the source register
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if the 32-bit data moved is negative, a otherwise
|
|
C Unaffected
|
|
Z 1 if the 32-bit data moved is 0, a otherwise
|
|
V a
|
|
Examples Code Before After
|
|
AO A1 B1 NCZV
|
|
MOVE AO,AI OOOOFFFFh OOOOFFFFh xxxxxxxxh OxOO
|
|
MOVE AO,AI OOOOOOOOh OOOOOOOOh xxxxxxxxh Ox10
|
|
MOVE AO,AI FFFFFFFFh FFFFFFFFh xxxxxxxxh 1xOO
|
|
MOVE AO,BI OOOOFFFFh xxxxxxxxh OOOOFFFFh OxOO
|
|
MOVE AO,BI OOOOOOOOh xxxxxxxxh OOOOOOOOh Ox10
|
|
MOVE AO,BI FFFFFFFFh xxxxxxxxh FFFFFFFFh 1xOO
|
|
|
|
|
|
|
|
|
|
12-126
|
|
Move Field - Register to Indirect MOVE
|
|
|
|
|
|
Syntax MOVE Rs, *Rd [, FJ
|
|
Execution field in Rs -+ *Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I1 0 0 0 0 01 F Rs IR Rd 1
|
|
|
|
Description MOVE moves a field from the source register to the memory address con-
|
|
tained in the destination register. This memory address is a bit address.
|
|
The field size for the move is 1-32 bits, depending on the selected field size;
|
|
the field is right justified within the source register. The optional F param-
|
|
eter determines the field size and extension for the move:
|
|
F =0 selects FSO
|
|
F=1 selects FS1
|
|
The SETF instruction sets the field size and extension. Rs and Rd must be
|
|
in the same register file.
|
|
Machine
|
|
States The following typical cases assume that the destination address is aligned
|
|
on a 16-bit boundary:
|
|
16- Bit Field 32- Bit Field
|
|
1 +(1 ),5 1+(3),7
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
15500h OOOOh
|
|
15510h OOOOh
|
|
15520h OOOOh
|
|
Register AO = FFFFFFFFh
|
|
Code Before After
|
|
A1 FSO/1 @15500h @15510h @15520h
|
|
MOVE AO,*Al,O 00015500h 5/x 001Fh OOOOh OOOOh
|
|
MOVE AO,*Al,l 00015503h x/8 07F8h OOOOh OOOOh
|
|
MOVE AO,*Al,O 00015508h 13/x FFOOh 001Fh OOOOh
|
|
MOVE AO,*Al,l 0001550Bh x/16 F800h 07FFh OOOOh
|
|
MOVE AO,*Al,O 0001550Dh 19/x EOOOh FFFFh OOOOh
|
|
MOVE AO,*Al,l 0001550Ch x/24 FOOOh FFFFh OOOFh
|
|
MOVE AO,*Al,O 00015512h 27/x OOOOh FFFCh 1 FFFh
|
|
MOVE AO,*Al,l 00015510h x/32 OOOOh FFFFh FFFFh
|
|
|
|
|
|
|
|
12-127
|
|
Move Field - Register to
|
|
MOVE Indirect (Postincrement)
|
|
|
|
Syntax MOVE Rs, *Rd+ [, FJ
|
|
Execution field in Rs -+ * Rd
|
|
Rd + field size -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
11 0 0 0 01 F Rs R Rd I
|
|
Description MOVE moves a field from the source register to the memory address COFt--
|
|
tained in the destination register. This memory address is a bit address.
|
|
After the move, the contents of the destination register are postincremented
|
|
by the selected field size. The field size for the move is 1-32 bits, depending
|
|
on the selected field size; the field is right justified within the source regis-
|
|
ter. The optional F parameter determines the field size and extension for the
|
|
move:
|
|
F =0 selects FSO
|
|
F=1 selects FS1
|
|
The SETF instruction sets the field size and extension. Rs and Rd must be
|
|
in the same register file.
|
|
Machine
|
|
States The following typical cases assume that the destination address is aligned
|
|
on a 16-bit boundary:
|
|
16-Bit Field 32- Bit Field
|
|
1+(1),5 1+(3),7
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
15500h OOOOh
|
|
15510h OOOOh
|
|
15520h OOOOh
|
|
Register AO = FFFFFFFFh
|
|
|
|
|
|
|
|
|
|
12-128
|
|
Move Field - Register to
|
|
Indirect (Postincrement) MOVE
|
|
|
|
|
|
Code Before After
|
|
A1 FSO/1 A1 @15500h @15510h @15520h
|
|
MOVE AO,*Al+,O 0OO15528h 5/x 0OO1552Dh OOOOh OOOOh 1 FOOh
|
|
MOVE AO,*Al+,l 0OO15525h x/8 0OO1552Dh OOOOh OOOOh 1FEOh
|
|
°
|
|
MOVE AO, *Al+,
|
|
MOVE AO,*Al+,l
|
|
0OO15520h
|
|
0OO1551Dh
|
|
13/x
|
|
x/16
|
|
0OO1552Dh
|
|
0OO1552Dh
|
|
OOOOh
|
|
OOOOh
|
|
OOOOh
|
|
EOOOh
|
|
1 FFFh
|
|
1 FFFh
|
|
°
|
|
MOVE AO, *Al+,
|
|
MOVE AO,*Al+,l
|
|
0OO15516h
|
|
0OO15507h
|
|
19/x
|
|
x/24
|
|
0OO15529h
|
|
0OO1551Fh
|
|
OOOOh
|
|
FF80h
|
|
FFCOh
|
|
7FFFh
|
|
01 FFh
|
|
OOOOh
|
|
MOVE AO,*Al+,O 0OO15507h 27/x 0OO1551Fh FF80h FFFFh 0OO3h
|
|
MOVE AO,*Al+,l 0OO15500h x/32 0OO15520h FFFFh FFFFh OOOOh
|
|
|
|
|
|
|
|
|
|
12-129
|
|
Move Field - Register to
|
|
MOVE Indirect (Predecrement)
|
|
|
|
|
|
Syntax MOVE Rs, -*Rd [, FJ
|
|
Execution Rd - field size -+ Rd
|
|
field in Rs -+ * Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I1 0 0 0 o IF Rs R Rd
|
|
|
|
Description MOVE moves a field from the source register to the memory address con-
|
|
tained in the destination register; the destination address is predecremented
|
|
by the field size. The memory address is a bit address. Before the move,
|
|
the field size is subtracted from the contents of the destination register to
|
|
determine the location that the field is moved to. (This value is also the fi-
|
|
nal value for the register.)
|
|
The field size for the move is 1-32 bits, depending on the selected field size;
|
|
the field is right justified within the source register. The optional F param-
|
|
eter determines the field size and extension for the move:
|
|
F=O selects FSO
|
|
F=1 selects FS1
|
|
The SETF instruction sets the field size and extension. Rs and Rd must be
|
|
in the sam,e register file.
|
|
Machine
|
|
States The following typical cases assume that the destination address is aligned
|
|
on a 16-bit boundary:
|
|
16- Bit Field 32-Bit Field
|
|
2+(1),6 2+(3),8
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
15500h OOOOh
|
|
15510h OOOOh
|
|
15520h OOOOh
|
|
Register AO = FFFFFFFFh
|
|
|
|
|
|
|
|
|
|
12-130
|
|
Move Field - Register to
|
|
Indirect (Predecrement) MOVE
|
|
|
|
|
|
Code Before After
|
|
A1 FSO/1 A1 @15500h @15510h @15520h
|
|
MOVE AO,-*Al,O 0OO1530h 5/x 0OO152Bh OOOOh OOOOh F800h
|
|
MOVE AO,-*Al,l 0OO152Dh x/B 0OO1525h OOOOh OOOOh 1FEOh
|
|
MOVE AO,-*Al,O 0OO1528h 13/x 0OO151Bh OOOOh FBOOh OOFFh
|
|
MOVE AO,-*Al,l 0OO152Bh x/16 0OO1518h OOOOh FFOOh OOFFh
|
|
MOVE AO,-*Al,O 0OO1523h 19/x 0OO1510h OOOOh FFFFh 0OO7h
|
|
MOVE AO,-*Al,l 0OO1520h x/24 0OO1508h FFOOh FFFFh OOOOh
|
|
MOVE AO,-*Al,O 0OO1524h 27/x 0OO1509h FEOOh FFFFh OOOFh
|
|
MOVE AO,-*Al,l 0OO1520h x/32 0OO1500h FFFFh FFFFh OOOOh
|
|
|
|
|
|
|
|
|
|
12-131
|
|
Move Field - Register to
|
|
MOVE Indirect with Offset
|
|
|
|
|
|
Syntax MOVE Rs, *Rd(offset) [, FJ
|
|
Execution field in Rs -+ * (Rd + offset)
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 876 5 4 3 2 o
|
|
o o oIF Rs Rd
|
|
offset
|
|
|
|
Description MOVE moves a field from the source register to the destination memory
|
|
memory address. The destination memory address is a bit address and is
|
|
formed by adding the contents of the destination register to the signed
|
|
16-bit offset. The field size for the move is 1-32 bits, depending on the
|
|
selected field size; the field is right justified within the source register. The
|
|
optional F parameter determines the field size and extension for the move:
|
|
F =0 selects FSO
|
|
F=1 selects FS1
|
|
The SETF instruction sets the field size and extension. Rs and Rd must be
|
|
in the same register file.
|
|
Machine
|
|
States The following typical cases assume that the destination address is aligned
|
|
on a 16-bit boundary:
|
|
16- Bit Field 32-Bit Field
|
|
3+ (1 ),7 3+(3),9
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
|
|
|
|
|
|
|
|
12-132
|
|
Move Field - Register to
|
|
Indirect with Offset MOVE
|
|
|
|
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
15530h OOOOh
|
|
15540h OOOOh
|
|
15550h OOOOh
|
|
Register AO = FFFFFFFFh
|
|
Code Before After
|
|
A1 FSO/1 @15530h @15540h @15550h
|
|
MOVE AO,*Al(OOOOh),1 00015530h x/1 0001h OOOOh OOOOh
|
|
MOVE AO,*Al(OOOlh),O 0001552Fh 5/x 001Fh OOOOh OOOOh
|
|
MOVE AO,*Al(OOOFh),O 00015520h 8/x FOOOh OOOFh OOOOh
|
|
MOVE AO,*Al(0020h),1 0001551Ch x/13 FOOOh 01FFh OOOOh
|
|
MOVE AO,*Al(OOFFh),O 00015435h 16/x FFFOh OOOFh OOOOh
|
|
MOVE AO,*Al(OFFFh),O 00014531h 19/x FFFFh 0007h OOOOh
|
|
MOVE AO,*Al(7FFFh),1 00000531 h x/22 FFFFh 003Fh OOOOh
|
|
MOVE AO,*Al(OFFF2h),1 00015540h x/25 FFFCh 07FFh OOOOh
|
|
MOVE AO,*Al(8000h),0 00010530h 27/x FFFFh 07FFh OOOOh
|
|
MOVE AO,*Al(OFFFOh),O 00015540h 31/x FFFFh 7FFFh OOOOh
|
|
MOVE AO,*Al(OFFECh),l 00015548h x/31 FFFOh FFFFh 0007h
|
|
MOVE AO,*Al(OFFECh),O 00015540h 32/x FEOOh FFFFh 01FFh
|
|
MOVE AO,*Al(OOIDh),O 00015520h 32/x EOOOh FFFFh 1 FFFh
|
|
MOVE AO,*Al(0020h),1 00015520h x/32 OOOOh FFFFh FFFFh
|
|
|
|
|
|
|
|
|
|
12-133
|
|
MOVE Move Field - Register to Absolute
|
|
|
|
|
|
Syntax MOVE Rs, @DAddress [, FJ
|
|
|
|
Execution field in Rs -+ DAddress
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 0 1 IF I 1 1 0 oIR I Rs
|
|
16 LSBs of destination address
|
|
16 MSBs of destination address
|
|
|
|
Description MOVE moves a field from the source register to the destination memory
|
|
address. The specified destination memory address is a linear bit address.
|
|
The field size for the move is 1-32 bits, depending on the selected field size;
|
|
the field is right justified within the source register. The optional F param-
|
|
eter determines the field size and extension for the move:
|
|
F=O selects FSO
|
|
F=1 selects FS1
|
|
SETF sets the field size and extension.
|
|
Machine
|
|
States The following typical cases assume that the destination address is aligned
|
|
on a 16-bit boundary:
|
|
16- Bit Field 32- Bit Field
|
|
3+(1),7 3+(3),9
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Assume that memory contains these values before instruction execution:
|
|
Address Data
|
|
15500h OOOOh
|
|
15510h OOOOh
|
|
15520h OOOOh
|
|
Register AO = FFFFFFFFh
|
|
Code Before After
|
|
FSO/1 @15500h @15510h @15520h
|
|
MOVE AO,@15500h,O 5/x 001Fh OOOOh OOOOh
|
|
MOVE AO,@15503h,1 x/8 07F8h OOOOh OOOOh
|
|
MOVE AO,@15508h,O 13/x FFOOh 001 Fh OOOOh
|
|
MOVE AO,@1550Bh,1 x/16 F800h 07FFh OOOOh
|
|
MOVE AO,@1550Dh,O 19/x EOOOh FFFFh OOOOh
|
|
MOVE AO,@15510h,1 x/24 OOOOh FFFFh OOFFh
|
|
MOVE AO,@15512h,O 27/x OOOOh FFFCh 1 FFFh
|
|
MOVE AO,@1550Ch,1 x/32 FOOOh FFFFh OFFFh
|
|
|
|
|
|
12-134
|
|
Move Field - Indirect to Register MOVE
|
|
|
|
|
|
Syntax MOVE *Rs, Rd [, FJ
|
|
Execution field at * Rs -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I1 0 0 0 0 1 IF Rs R Rd I
|
|
Description MOVE moves a field from the source memory address to the destination
|
|
register. The contents of the source register specify the address of the field.
|
|
When the field is moved into the destination register, it is right justified and
|
|
sign extended or zero extended to 32 bits, according to the value of FE.
|
|
This instruction also performs an implicit compare to 0 of the field data.
|
|
The field size for the move is 1-32 bits, depending on the selected field size;
|
|
the optional F parameter determines the field size and extension for the
|
|
move:
|
|
F=O selects FSO
|
|
F=1 selects FS1
|
|
The SETF instruction sets the field size and extension. Rs and Rd must be
|
|
in the same register file.
|
|
Machine
|
|
States The following typical cases assume that the source data is aligned on a
|
|
16-bit boundary:
|
|
16-Bit Field 32- Bit Field
|
|
3,6 5,8
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N 1 if the field-extended data moved to register is negative, 0 otherwise
|
|
C Unaffected
|
|
Z 1 if the field-extended data moved to register is 0, 0 otherwise
|
|
V 0
|
|
|
|
|
|
|
|
|
|
12-135
|
|
MOVE Move Field - Indirect to Register
|
|
|
|
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
15500h 7770h
|
|
15510h 7777h
|
|
Register AO = 0001 5500h
|
|
Code Before After
|
|
FSO/1 FEO/1 A1 NCZV
|
|
MOVE *AO,Al,l x/1 x/1 OOOOOOOOh Ox10
|
|
MOVE *AO,Al,O 5/x O/x 00000010h OxOO
|
|
MOVE *AO,Al,l x/5 x/1 FFFFFFFOh 1xOO
|
|
MOVE *AO,Al,O 12/x 1/x 00OOO770h OxOO
|
|
MOVE *AO,Al,l x/12 x/O 00000770h OxOO
|
|
MOVE *AO,Al,O 18/x O/x 00037770h OxOO
|
|
MOVE *AO,Al,l x/18 x/1 FFFF7770h 1xOO
|
|
MOVE *AO,Al,O 27/x 1/x FF777770h 1xOO
|
|
MOVE *AO,Al,l x/27 x/O 07777770h OxOO
|
|
MOVE *AO,Al,O 31/x O/x 77777770h OxOO
|
|
MOVE *AO,Al,l x/31 x/1 F7777770h 1xOO
|
|
MOVE *AO,Al,O 32/x x/x 77777770h OxOO
|
|
|
|
|
|
|
|
|
|
12-136
|
|
Move Field - Indirect to Indirect MOVE
|
|
|
|
|
|
Syntax MOVE *Rs, *Rd [, FJ
|
|
Execution field at *Rs ~ *Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
11 0 0 0 01 F Rs R Rd
|
|
|
|
Description MOVE moves a field from a source address to a destination address. Both
|
|
memory addresses are bit addresses; the source register contains the ad-
|
|
dress of the field and the destination register specifies the address that the
|
|
field is moved to. The field size for the move is 1-32 bits, depending on the
|
|
selected field size; the optional F parameter determines the field size and
|
|
extension for the move:
|
|
F =0 selects FSO
|
|
F=1 selects FS1
|
|
SETF sets the field size and extension. Rs and Rd must be in the same re-
|
|
gister file.
|
|
Machine
|
|
States The following typical cases assume that the source data and the destination
|
|
address are aligned on 16-bit boundaries:
|
|
16- Bit Field 32-Bit Field
|
|
3+(1 ),7 5+(3),11
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits NUn affected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
|
|
|
|
|
|
|
|
12-137
|
|
MOVE Move Field - Indirect to Indirect
|
|
|
|
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data Address Data
|
|
15500h FFFFh 15530h OOOOh
|
|
15510h FFFFh 15540h OOOOh
|
|
15520h FFFFh 15550h OOOOh
|
|
Code Before After
|
|
AO A1 FSO/1 @15530h @15540h @15550h
|
|
MOVE *AO,*Al,l 0OO15500h 0OO15530h x/1 0OO1h OOOOh OOOOh
|
|
MOVE *AO,*Al,O 0OO15500h 0OO15534h 5/x 01FOh OOOOh OOOOh
|
|
MOVE *AO,*Al,l 0OO15500h 0OO1553Ah x/10 FCOOh OOOFh OOOOh
|
|
MOVE *AO,*Al,O 0OO15500h 0OO1553Fh 19/x 8000h FFFFh 0OO3h
|
|
MOVE *AO,*Al,l 0OO15504h 0OO15530h x/7 007Fh OOOOh OOOOh
|
|
MOVE *AO,*Al,O 0OO1550Ah 0OO15530h 13/x 1 FFFh OOOOh OOOOh
|
|
MOVE *AO,*Al,l 0OO1550Dh 0OO15534h x/8 OFFOh OOOOh OOOOh
|
|
MOVE *AO,*Al,O 0OO1550Dh 0OO15530h 28/x FFFFh OFFFh OOOOh
|
|
MOVE *AO,*Al,l 0OO15505h 0OO15535h x/23 FFEOh OFFFh OOOOh
|
|
MOVE *AO,*Al,O 0OO15508h 0OO15536h 31/x FFCOh FFFFh 001Fh
|
|
MOVE *AO,*Al,l 0OO15508h 0OO15531h x/31 FFFEh FFFFh OOOOh
|
|
MOVE *AO,*Al,O 0OO1550Ah 0OO15530h 32/x FFFFh FFFFh OOOOh
|
|
MOVE *AO,*Al,O 0OO15500h 0OO1553Ah x/32 FCOOh FFFFh 03FFh
|
|
|
|
|
|
|
|
|
|
12-138
|
|
Move Field - Indirect
|
|
(Postincrement) to Register MOVE
|
|
|
|
|
|
Syntax MOVE *Rs+, Rd [, FJ
|
|
Execution field at * Rs -+ Rd
|
|
Rs + field size -+ Rs
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I1 0 0 0 1 I F Rs R Rd
|
|
|
|
Description MOVE moves a field from memory to the destination register. The source
|
|
register contains the address of the field; after the move, the contents of the
|
|
source register are incremented by the field size. When the field is moved
|
|
into the destination register, it is right justified and sign extended or zero
|
|
extended, as specified by the selected field extension. This instruction also
|
|
performs an implicit compare to 0 of the field data.
|
|
The field size for the move is 1-32 bits, depending on the selected field size;
|
|
the optional F parameter determines the field size and extension for the
|
|
move:
|
|
F=O selects FSO
|
|
F=1 selects FS1
|
|
The SETF instruction sets the field size and extension. Rs and Rd must be
|
|
in the same register file.
|
|
Machine
|
|
States The following typical cases assume that the source data is aligned on a
|
|
16-bit boundary: .
|
|
16- Bit Field 32-Bit Field
|
|
3,6 5,8
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N 1 if the field-extended data moved to register is negative, 0 otherwise
|
|
C Unaffected
|
|
Z 1 if the field-extended data moved to register is 0,0 otherwise
|
|
V 0
|
|
|
|
|
|
|
|
|
|
12-139
|
|
Move Field - Indirect
|
|
MOVE (Postincrement) to Register
|
|
|
|
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
15500h 7770h
|
|
15510h 7777h
|
|
Register AO = 00015500h
|
|
Code Before After
|
|
FSO/1 FEO/1 AO A1 NCZV
|
|
MOVE *AO+,Al,l x/1 x/O 00015501h OOOOOOOOh Ox10
|
|
MOVE *AO+,Al,l x/5 x/O 00015505h 00000010h OxOO
|
|
MOVE *AO+,Al,O 5/x 1/x 00015505h FFFFFFFOh 1xOO
|
|
MOVE *AO+,Al,O 12/x O/x 0001550Ch 00000770h OxOO
|
|
MOVE *AO+,Al,l x/12 x/1 0001550Ch 00000770h OxOO
|
|
MOVE *AO+,Al,O 18/x 1/x 00015512h FFFF7770h 1xOO
|
|
MOVE *AO+,Al,l x/18 x/O 00015512h 00037770h OxOO
|
|
MOVE *AO+,Al,O 27/x O/x 0001551Bh 07777770h OxOO
|
|
MOVE *AO+,Al,l x/27 x/1 0001551 Bh FF777770h 1xOO
|
|
MOVE *AO+,Al,O 31/x 1/x 0001551Fh F7777770h 1xOO
|
|
MOVE *AO+,Al,l x/31 x/O 0001551Fh 77777770h OxOO
|
|
MOVE *AO+,Al,O 32/x x/x 00015520h 77777770h OxOO
|
|
|
|
|
|
|
|
|
|
12-140
|
|
Move Field - Indirect (Postincrement)
|
|
to Indirect (Postincrement) MOVE
|
|
|
|
|
|
Syntax MOVE *Rs+, *Rd+ [, F]
|
|
Execution field at * Rs -+ *Rd
|
|
Rs + field size -+ Rs
|
|
Rd + field size -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
11 0 0 01 F Rs R Rd
|
|
|
|
Description MOVE moves a field from one memory address to another. The source re-
|
|
gister contains the bit address of the field; the destination register contains
|
|
the bit address of field's destination. After the move, the contents of both
|
|
instructions are incremented by the field size.
|
|
The field size for the move is 1-32 bits, depending on the selected field size;
|
|
the optional F parameter determines the field size and extension for the
|
|
move:
|
|
F =0 selects FSO
|
|
F=1 selects FS1
|
|
The SETF instruction sets the field size and extension.
|
|
If Rs and Rd specify the same register, the data read from the location
|
|
pointed to by the original contents of Rs is written to the location pointed
|
|
to by the incremented value of Rs(Rd). Rs and Rd must be in the same
|
|
register file.
|
|
Machine
|
|
States The following typical cases assume that the source data and the destination
|
|
address are aligned on 16-bit boundaries:
|
|
16-Bit Field 32-Bit Field
|
|
4,7 6+(2),11
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits NUn affected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
|
|
|
|
|
|
|
|
12-141
|
|
Move Field - Indirect (Postincrement)
|
|
MOVE to Indirect (Postincrement)
|
|
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data Address Data
|
|
15500h FFFFh 15530h OOOOh
|
|
15510h FFFFh 15540h OOOOh
|
|
15520h FFFFh 15550h OOOOh
|
|
MOVE *AO+,*Al+,F
|
|
Before After
|
|
F AO A1 FSO/1 AO A1 @15530h @15540h @15550h
|
|
1 0OO15500h 0OO1553Dh x/1 0OO15501h 0OO1553Eh 2000h OOOOh OOOOh
|
|
0 0OO15505h 0OO1553Bh 5/x 0OO1550Ah 0001553Dh 1 FOOh OOOOh OOOOh
|
|
1 0OO1550Ah 0OO1553Fh x/10 0OO15514h 0OO15549h BOOOh 01FFh OOOOh
|
|
0 0OO1550Dh 0OO15530h 19/x 0OO15520h 0OO15543h FFFFh 0OO7h OOOOh
|
|
1 0OO15510h 0OO15532h x/7 0OO15517h 0OO15539h 01FCh OOOOh OOOOh
|
|
0 0OO15511h 0001553Ah 13/x 0OO1551Eh 0OO15547h FCOOh 007Fh OOOOh
|
|
1 0OO15513h 0OO1553Fh x/B 0OO1551Bh 0OO15547h BOOOh 007Fh OOOOh
|
|
0 0OO15510h 0001553Ah 2B/x 0OO1552Ch 0OO15556h FCOOh FFFFh 003Fh
|
|
1 0OO1551Bh 0OO15534h x/23 0OO1552Fh 0001554Bh FFFOh 07FFh OOOOh
|
|
0 0OO15510h 0OO15530h 31/x 0OO1552Fh 0OO1554Fh FFFFh 7FFFh OOOOh
|
|
1 0OO15511h 0001553Dh x/31 0OO15530h 0001555Ch EOOOh FFFFh OFFFh
|
|
0 0OO15510h 0OO1553Fh 32/x 0OO15530h 0OO1555Fh BOOOh FFFFh 7FFFh
|
|
1 0OO15500h 0OO15530h x/32 0OO15520h 0OO15550h FFFFh FFFFh OOOOh
|
|
|
|
|
|
|
|
|
|
12-142
|
|
Move Field - Indirect
|
|
(Predecrement) to Register MOVE
|
|
|
|
|
|
Syntax MOVE -*Rs, Rd [, F}
|
|
Execution Rs - field size -+ Rs
|
|
field at * Rs -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I1 0 0 0 1 IF Rs R Rd
|
|
|
|
Description MOVE moves a field from memory to the destination register. The source
|
|
register contains a bit address; before the move, the contents of the source
|
|
register are decremented by the field size to form the address of the field.
|
|
(This value is also the final value for the register.)
|
|
The field size for the move is 1-32 bits, depending on the selected field size;
|
|
the optional F parameter determines the field size and extension for the
|
|
move:
|
|
F=O selects FSO
|
|
F=1 selects FS1
|
|
The SETF instruction sets the field size and extension.
|
|
When the field is moved into the destination register, it is right justified and
|
|
sign extended or zero extended to 32 bits according to the value of FE for
|
|
the particular F bit selected. This instruction also performs an implicit
|
|
compare to 0 of the field data.
|
|
Rs and Rd must be in the same register file. If Rs and Rd are the same re-
|
|
gister, the pointer information is overwritten by the data fetched.
|
|
Machine
|
|
States The following typical cases assume that the source data is aligned on a
|
|
16-bit boundary:
|
|
16- Bit Field 32-Bit Field
|
|
4,7 6,9
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N 1 if the field-extended data moved to register is negative, 0 otherwise
|
|
C Unaffected
|
|
Z 1 if the field-extended data moved to register is 0, 0 otherwise
|
|
V 0
|
|
|
|
|
|
|
|
|
|
12-143
|
|
Move Field - Indirect
|
|
MOVE (Predecrement) to Register
|
|
|
|
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
15500h 7770h
|
|
15510h 7777h
|
|
Register AO = 00015520h
|
|
Code Before After
|
|
FSO/1 FEO/1 AO A1 NCZV
|
|
MOVE -*AO,Al,l x/1 x/O 0001551Fh OOOOOOOOh Ox10
|
|
MOVE -*AO,Al,O 5/x 1/x 0001551Bh OOOOOOOEh OxOO
|
|
MOVE -*AO,Al,l x/5 x/O 0001551Bh OOOOOOOEh OxOO
|
|
MOVE -*AO,Al,O 12/x O/x 00015514h 00000777h OxOO
|
|
MOVE -*AO,Al,l x/12 x/1 00015514h 00000777h OxOO
|
|
MOVE -*AO,Al,O 18/x 1/x 0001550Eh 0001 DDDDh OxOO
|
|
MOVE -*AO,Al,l x/18 x/O 0001550Eh 0001 DDDDh OxOO
|
|
MOVE -*AO,Al,O 27/x O/x 00015505h 03BBBBBBh OxOO
|
|
MOVE -*AO,Al,l x/27 x/1 00015505h 03BBBBBBh OxOO
|
|
MOVE -*AO,Al,O 31/x 1/x 00015501h 3BBBBBB8h OxOO
|
|
MOVE -*AO,Al,l x/31 x/O 00015501h 3BBBBBB8h OxOO
|
|
MOVE -*AO,Al,O 32/x x/x 00015500h 77777770h OxOO
|
|
|
|
|
|
|
|
|
|
12-144
|
|
Move Field - Indirect (Predecrement)
|
|
to Indirect (Predecrement) MOVE
|
|
|
|
|
|
Syntax MOVE -*Rs, -*Rd [, FJ
|
|
Execution Rs - field size -+ Rs
|
|
Rd - field size -+ Rd
|
|
(field) * Rs -+ (field) * Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I1 0 0 01 F Rs R Rd I
|
|
Description MOVE moves a field from one memory address to another. Both registers
|
|
contain bit addresses; before the move, the contents of both registers are
|
|
decremented by the field size. The source register then contains the address
|
|
of the field, and the destination register specifies the destination address for
|
|
the move.
|
|
The field size for the move is 1-32 bits, depending on the selected field size;
|
|
the optional F parameter determines the field size and extension for the
|
|
move:
|
|
F =0 selects FSO
|
|
F=1 selects FS1
|
|
The SETF instruction sets the field size and extension.
|
|
Rs and Rd must be in the same register file. If Rs and Rd are the same re-
|
|
gister, then the final contents of the register are its original contents decre-
|
|
mented by twice the field size.
|
|
Machine
|
|
States The following typical cases assume that the source data and the destination
|
|
address are aligned on 16-bit boundaries:
|
|
16-Bit Field 32- Bit Field
|
|
4+ (1 ),8 6+(3),12
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
|
|
|
|
|
|
|
|
12-145
|
|
Move Field - Indirect (Predecrement)
|
|
MOVE to Indirect (Predecrement)
|
|
|
|
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data Address Data
|
|
15500h FFFFh 15530h OOOOh
|
|
15510h FFFFh 15540h OOOOh
|
|
15520h FFFFh 15550h OOOOh
|
|
MOVE -*AO,-*Al,F
|
|
Before After
|
|
F AO A1 FSO/1 AO A1 @15530h @15540h @15550h
|
|
|
|
1 0OO15501h 0OO15531h x/1 0OO15500h 0OO15530h 0OO1h OOOOh OOOOh
|
|
0 0OO15505h 0OO15539h 5/x 0OO15500h 0OO15534h 01FOh OOOOh OOOOh
|
|
1 0OO1550Ah 0OO15544h x/10 0OO1550hO 0OO1553Ah FCOOh OOOFh OOOOh
|
|
0 0OO15513h 0OO15552h 19/x 0OO15500h 0OO1553Fh 8000h FFFFh 0OO3h
|
|
1 0OO1550Bh 0OO15537h x/7 0OO15504h 0OO15530h 007Fh OOOOh OOOOh
|
|
0 0OO15517h 0OO1553Dh 13/x 0OO1550Ah 0OO15530h 1 FFFh OOOOh OOOOh
|
|
1 0OO15515h 0OO1553Ch x/8 0OO1550Dh 0OO15534h OFFOh OOOOh OOOOh
|
|
0 0OO15529h 0OO1554Ch 28/x 0OO1550Dh 0OO15530h FFFFh OFFFh OOOOh
|
|
1 0OO1551Ch 0OO1554Ch x/23 0OO15505h 0OO15535h FFEOh OFFFh OOOOh
|
|
0 0OO15527h 0OO15555h 31/x 0OO15508h 0OO15536h FFCOh FFFFh 001Fh
|
|
1 0OO15527h 0OO15550h x/31 0OO15508h 0OO15531h FFFEh FFFFh OOOOh
|
|
0 0OO1552Ah 0OO15550h 32/x 0OO1550Ah 0OO15530h FFFFh FFFFh OOOOh
|
|
1 0OO15520h 0OO1555Ah x/32 0OO15500h 0OO1553Ah FCOOh FFFFh 03FFh
|
|
|
|
|
|
|
|
|
|
12-146
|
|
Move Field - Indirect with Offset to Register MOVE
|
|
|
|
|
|
Syntax MOVE *Rs(offset), Rd [, FJ
|
|
Execution field at (* Rs + offset) -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
|
|
11
|
|
0 0
|
|
I F Rs R Rd
|
|
offset 1
|
|
Description This MOVE instruction moves a field from a memory address to the desti-
|
|
nation register. The address of the source data is formed by adding a
|
|
signed, 16-bit offset to the contents of Rs. When the field is moved into
|
|
the destination register, it is right justified and sign extended or zero ex-
|
|
tended to 32 bits, according to the value of the current FE bit. This in-
|
|
struction also performs an implicit compare to 0 of the field data.
|
|
The field size for the move is 1-32 bits, depending on the selected field size;
|
|
the field is right justified within the source register. The optional F param-
|
|
eter determines the field size and extension for the move:
|
|
F ==0 selects FSO
|
|
F==1 selects FS1
|
|
The SETF instruction sets the field size and extension.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States The following typical cases assume that the source data is aligned on a
|
|
16-bit boundary:
|
|
16-Bit Field 32- Bit Field
|
|
5,11 7,13
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N 1 if the field-extended data moved to register is negative, 0 otherwise
|
|
C Unaffected
|
|
Z 1 if the field-extended data moved to register is 0, 0 otherwise
|
|
V 0
|
|
|
|
|
|
|
|
|
|
12-147
|
|
MOVE Move Field - Indirect with Offset to Register
|
|
|
|
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
15530h 3333h
|
|
15540h 4444h
|
|
15550h 5555h
|
|
Code Before After
|
|
AO FSO/1 FEO/1 A1 NCZV.
|
|
MOVE *AO(OOOOh),Al,l 00015530h x/1 x/1 FFFFFFFFh 1xOO
|
|
MOVE *AO(OOO3h),Al,1 0001552Fh x/2 x/O OOOOOOOOh Ox10
|
|
MOVE *AO(OOOlh),Al,O 0001552Fh 5/x O/x 00000013h OxOO
|
|
MOVE *AO(OOOFh),Al,O 0001552Dh 8/x 1/x 00000043h OxOO
|
|
MOVE *AO(OO20h),Al,1 0001551Ch x/13 x/O 00000443h OxOO
|
|
MOVE *AO(OOFFh) ,Al,O 00015435h 16/x 1/x 00004333h OxOO
|
|
MOVE *AO(OFFFh) ,Al,O 00014531h 19/x 1/x FFFC3333h 1xOO
|
|
MOVE *AO (7FFFh) ,Al, 1 0000D531 h x/22 x/1 00043333h OxOO
|
|
MOVE *AO(OFFF2h),Al,1 00015540h x/25 x/O 01110CCCh OxOO
|
|
MOVE *AO(8000h),Al,O 0001 D530h 27/x 1/x FC443333h 1xOO
|
|
MOVE *AO(OFFFOh),Al,O 00015540h 31/x O/x 44443333h OxOO
|
|
MOVE *AO(OFFEOh),Al,l 00015558h x/31 x/1 D5444433h 1xOO
|
|
MOVE *AO(OFFECh),Al,O 0001554Dh 32/x O/x AAA22219h 1xOO
|
|
MOVE *AO(OOlDh),Al,O 00015520h 32/x 1/x AAAA2221 h 1 xOO
|
|
MOVE *AO(OO20h),Al,1 00015520h x/32 x/O 55554444h OxOO
|
|
|
|
|
|
|
|
|
|
12-148
|
|
Move Field - Indirect with Offset
|
|
to Indirect (Postincrement) MOVE
|
|
|
|
|
|
Syntax MOVE *Rs(offset), *Rd+ [, FJ
|
|
Execution field at (*Rs + offset) ... *Rd
|
|
Rd + field size ... Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 876 5 4 3 2 o
|
|
o o oIF Rs R Rd
|
|
offset
|
|
|
|
Description MOVE moves a field from the one memory location to another. Both the
|
|
source and destination registers contain bit addresses. The source memory
|
|
address is formed by adding the contents of the source register to the
|
|
signed 16-bit offset. The destination register contains the address of the
|
|
field's destination; after the move, the contents of Rd are incremented by
|
|
the selected field size.
|
|
The field size for the move is 1-32 bits, depending on the selected field size;
|
|
the field is right justified within the source register. The optional F param-
|
|
eter determines the field size and extension for the move:
|
|
F =0 selects FSO
|
|
F=1 selects FS1
|
|
The SETF instruction sets the field size and extension.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States The following typical cases assume that the source data and the destination
|
|
address are aligned on 16-bit boundaries:
|
|
16-Bit Field 32- Bit Field
|
|
5+(1),12 7+(3),16
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
|
|
|
|
|
|
|
|
12-149
|
|
Move Field - Indirect with Offset
|
|
MOVE to Indirect (Postincrement)
|
|
|
|
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data Address Data
|
|
15500h OOOOh 15530h 3333h
|
|
15510h OOOOh 15540h 4444h
|
|
15520h OOOOh 15550h 5555h
|
|
Before After
|
|
@15500h @15520h
|
|
AO A1 FSO/1 A1 @15510h
|
|
MOVE *AO(OOOOh),*Al+,l 00015530h 0015500h x/1 00015501h 0001h OOOOh OOOOh
|
|
MOVE *AO(OOOlh),*Al+,l 0001552Fh 00015504h 5/x 00015509h 0130h OOOOh OOOOh
|
|
MOVE *AO(OOOFh),*Al+,l 00015520h 0001550Ch 8/x 00015514h 3000h 0004h OOOOh
|
|
MOVE *AO(0020h),*Al+,1 0001551 Ch 00015E )Oh x/13 0001551 Ah 6000h 0088h OOOOh
|
|
MOVE *AO(OOFFh),*Al+,l 00015535h 0001550Ch16/x 0001551Ch3000h 0433h OOOOh
|
|
MOVE *AO(OFFFh),*Al+,l 00015531 h 00015510h 19/x 00015523h OOOOh 3333h 0004h
|
|
MOVE *AO(7FFFh),*Al+,1 00000531 h 00015508h x/22 0001551Eh 3300h 0433h OOOOh
|
|
MOVE *AO(OFFF2h),*Al+,1 0001 5540h 0015500h x/25 00015519h OCCCh 0111 h OOOOh
|
|
MOVE *AO(8000h),*Al+,1 0001 0530h 00015503h 27 Ix 0001551Eh 9998h 2221h OOOOh
|
|
MOVE *AO(OFFFOh),*Al+,l 00015540h 00015501 h 31 Ix 0001552Ah 6666h 8888h OOOOh
|
|
MOVE *AO(OFFEOh),*Al+,l 00015558h 00015508h x/31 00015527h 3300h 4444h 0055h
|
|
MOVE *AO(OFFECh),Al+,l 00015540h 0001550Ah 32/x 00015528h 3200h 4444h 0155h
|
|
MOVE *AO(OOlDh),Al+,l 00015520h 00015510h 32/x 00015530h OOOOh 2221 h AAAAh
|
|
MOVE *AO(0020h),Al+,1 00015520h 00015510h x/32 00015530h OOOOh 4444h 5555h
|
|
|
|
|
|
|
|
|
|
12-150
|
|
Move Field - Indirect with Offset
|
|
to Indirect with Offset MOVE
|
|
|
|
|
|
Syntax MOVE *Rs(SOffset), *Rd(DOffset) [, FJ
|
|
Execution field at (*Rs + SOffset) -+ (*Rd + DOffset)
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
1 0 1 1 1 oI F I Rs IR I Rd
|
|
source offset
|
|
destination offset
|
|
|
|
Description This MOVE instruction moves a field from one memory location to another.
|
|
Both the source and destination registers contain bit addresses. The ad-
|
|
dress of the source address is formed by adding a signed 16-bit offset to
|
|
the contents of the source register. The address of the destination location
|
|
is formed by adding a signed 16-bit offset to the contents of the destination
|
|
register.
|
|
The field size for the move is 1-32 bits, depending on the selected field size;
|
|
the field is right justified within the source register. The optional F param-
|
|
eter determines the field size and extension for the move:
|
|
F =0 selects FSO
|
|
F=1 selects FS1
|
|
The SETF instruction sets the field size and extension.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States The following typical cases assume that the source data and the destination
|
|
address are aligned on 16-bit boundaries:
|
|
16- Bit Field 32-Bit Field
|
|
5+(1),15 7+(3),19
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
|
|
|
|
|
|
|
|
12-151
|
|
Move Field - Indirect with Offset
|
|
MOVE to Indirect with Offset
|
|
|
|
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data Address Data
|
|
15500h OOOOh 15530h 3333h
|
|
15510h OOOOh 15540h 4444h
|
|
15520h OOOOh 15550h 5555h
|
|
Code Before After
|
|
@15500h @15520h
|
|
AO A1 FSO/1 @15510h
|
|
MOVE *AO(OOOOh),*Al(OOOOh),l 00015530h 0015500h x/1 0001h OOOOh OOOOh
|
|
MOVE *AO(OOOlh),*Al(OOOOh),O 0001552Fh 00015504h 5/x 0130h OOOOh OOOOh
|
|
MOVE *AO(OOOFh),*Al(OOOFh),O 00015520h 000154FOh 8/x 3000h 0004h OOOOh
|
|
MOVE *AO(OO20h),*Al(OOlDh),1 0001551Ch 000154FOh x/13 5000h 0088h OOOOh
|
|
MOVE *AO(OOFFh),*Al(OFFF8h),O 00015435h 00015514h 16/x 3000h 0433h OOOOh
|
|
MOVE *AO(OFFFh),*Al(OFFFh),O 00014531h 00014511 h 19/x OOOOh 3333h 0004h
|
|
MOVE *AO(7FFFh),*Al(8000h),1 00000531 h 0001 0508h x/22 3300h 0433h OOOOh
|
|
MOVE *AO(OFFF2h),*Al(7FFFh),1 00015540h 00000501 h x/25 OCCCh 0111 h OOOOh
|
|
MOVE *AO(8000h),*Al(0020h),O 0001D530h 000154E3h 27/x 9998h 2221h OOOOh
|
|
MOVE *AO(OFFFOh),*Al(OOlOh),O 0OO15540h 000154F1 h 31/x 6666h 8888h OOOOh
|
|
MOVE *AO(OFFEOh),*Al(OFFEOh),l 00015558h 00015528h x/31 3300h 4444h 0055h
|
|
MOVE *AO(OFFECh),*Al(OFFECh),O 00015540h 00015510h 32/x 3200h 4444h 0155h
|
|
MOVE *AO(OOlDh),*Al(0020h),O 00015520h 000154FOh 32/x OOOOh 2221h ~Ah
|
|
MOVE *AO(OO20h),*Al(0020h),1 00015520h 000154FOh x/32 OOOOh 4444h 5555h
|
|
|
|
|
|
|
|
|
|
12-152
|
|
Move Field - Absolute to Register MOVE
|
|
|
|
|
|
Syntax MOVE. @SAddress, Rd [, FJ
|
|
Execution field at SAddress -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 0 1 IF I 1 1 0 1 IR I Rd
|
|
16 LSBs of source address
|
|
16 MSBs of source address
|
|
|
|
Description This MOVE instruction moves a field from memory to the destination reg-
|
|
ister. The field data for the move is contained at a source-memory bit ad-
|
|
dress. When the field is moved into the destination register, it is right
|
|
justified and sign extended or zero extended to 32 bits according to the
|
|
selected value of FE. This instruction also performs an implicit compare to
|
|
o of the field data.
|
|
The field size for the move is 1-32 bits, depending on the selected field size;
|
|
the field is right justified within the source register. The optional F param-
|
|
eter determines the field size and extension for the move:
|
|
F =0 selects FSO
|
|
F=1 selects FS1
|
|
The SETF instruction sets the field size and extension.
|
|
Machine
|
|
States The following typical cases assume that the source data is aligned on a
|
|
16-bit boundary:
|
|
16- Bit Field 32-Bit Field
|
|
5,15 7,13
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N 1 if the field-extended data moved to register is negative, 0 otherwise
|
|
C Unaffected
|
|
Z 1 if the field-extended data moved to register is 0, 0 otherwise
|
|
V 0
|
|
|
|
|
|
|
|
|
|
12-153
|
|
MOVE Move Field - Absolute to Register
|
|
|
|
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
15500h 7770h
|
|
15510h 7777h
|
|
Code Before After
|
|
FEO/1 FSO/1 A1 NCZV
|
|
MOVE @15500h,Al,1 x/O x/1 OOOOOOOOh Ox10
|
|
MOVE @15500h,Al,O O/x 5/x 0OOOOO10h OxOO
|
|
MOVE @15503h,Al,1 x/1 x/5 OOOOOOOEh OxOO
|
|
MOVE @15500h,Al,O O/x 12/x 0OOOO770h OxOO
|
|
MOVE @1550Dh,Al,1 x/1 x/12 FFFFFBBBh 1xOO
|
|
MOVE @15504h,Al,O 1/x 18/x FFFF7777h 1xOO
|
|
MOVE @15500h,Al,1 x/O x/18 0OO37770h OxOO
|
|
MOVE @15500h,Al,O O/x 27/x 07777770h OxOO
|
|
MOVE @15500h,Al,1 x/1 x/27 FF777770h 1xOO
|
|
MOVE @15501h,Al,O O/x 30/x 3BBBBBB8h OxOO
|
|
MOVE @15501h,Al,1 x/1 x/30 FBBBBBB8h 1xOO
|
|
MOVE @15500h,Al,O x/x 32/x 77777770h OxOO
|
|
|
|
|
|
|
|
|
|
12-154
|
|
Move Field - Absolute to Indirect (Postincrement) MOVE
|
|
|
|
|
|
Syntax MOVE @SAddress, *Rd+ [, FJ
|
|
Execution field at SAddress ... * Rd
|
|
Rd + field size ... Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
1 1 0 1 0 1 I Flo 0 0 oIR I Rd
|
|
16 LSBs of source address
|
|
16 MSBs of source address
|
|
|
|
Description This MOVE instruction moves a field from one location in memory to an-
|
|
other. The source address is a 32-bit address; the destination address is
|
|
specified by the contents of Rd. After the move, the contents of the desti-
|
|
nation register are incremented by the field size.
|
|
The field size for the move is 1-32 bits, depending on the selected field size;
|
|
the field is right justified within the source register. The optional F param-
|
|
eter determines the field size and extension for the move:
|
|
F=O selects FSO
|
|
F=1 selects FS1
|
|
The SETF instruction sets the field size and extension.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States The following typical cases assume that the source data and the destination
|
|
address are aligned on 16-bit boundaries:
|
|
16-Bit Field 32-Bit Field
|
|
5+(1),15 7+(3),19
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
|
|
|
|
|
|
|
|
12-155
|
|
MOVE Move Field - Absolute to Indirect (Postincrement)
|
|
|
|
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data Address Data
|
|
15500h FFFFh 15530h OOOOh
|
|
15510h FFFFh 15540h OOOOh
|
|
15520h FFFFh 15550h OOOOh
|
|
Code Before After
|
|
@15500h @15526h
|
|
AO A1 FEO!1 A1 @15510h
|
|
MOVE @15500,*Al+,1 0OO15530h 0OO15531h x/1 0OO15531h 0001h OOOOh OOOOh
|
|
MOVE @15500,*Al+,O 0OO15534h 0OO15539h 5/x 0OO15539h 01FOh OOOOh OOOOh
|
|
MOVE @15500,*Al+,1 0OO1553Ah 0OO15544h x/10 0OO15544h FCOOh OOOFh OOOOh
|
|
MOVE @15500,*Al+,O 0OO1553Fh 0OO15552h 19/x 0OO15552h 8000h FFFFh 0OO3h
|
|
MOVE @15504,*Al+,1 0OO15530h 0OO15537h x/7 00015537h 007Fh OOOOh OOOOh
|
|
MOVE @1550A,*Al+,O 0OO15530h 0OO1553Dh 13/x 0001553Dh 1FFFh OOOOh OOOOh
|
|
MOVE @1550D,*Al+,1 0OO15534h 0OO15536h x/8 00015536h OFFOh OOOOh OOOOh
|
|
MOVE @1550D,*Al+,O 0OO15530h 0OO1554Ch 28/x 0001554Ch FFFFh OFFFh OOOOh
|
|
MOVE @15505,*Al+,1 0OO15535h 0OO1554Dh x/23 0001554Dh FFEOh OFFFh OOOOh
|
|
MOVE @15508,*Al+,O 0OO15536h 0OO15555h 31/x 00015555h FFCOh FFFFh 001Fh
|
|
MOVE @15508,*Al+,1 0OO15531h 0OO15548h x/31 00015548h FFFEh FFFFh OOOOh
|
|
MOVE @1550A,*Al+,O 0OO15530h 0OO15550h 32/x 00015550h FFFFh FFFFh OOOOh
|
|
MOVE @15500,*Al+,1 0OO1553Ah 0OO1555Ah x/32 0001555Ah FCOOh FFFFh 03FFh
|
|
|
|
|
|
|
|
|
|
12-156
|
|
Move Field - Absolute to Absolute MOVE
|
|
|
|
|
|
Syntax MOVE @SAddress, @DAddress [, FJ
|
|
|
|
Execution field at SAddress -+ DAddress
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 0 1 JF I 1 1 1 0 0 0 0 0 0
|
|
16 LSBs of source address
|
|
16 MSBs of source address
|
|
16 LSBs of destination address
|
|
16 MSBs of destination address
|
|
|
|
Description This MOVE instruction moves a field from one location in memory to an-
|
|
other. Both memory addresses are 32-bit addresses.
|
|
The field size for the move is 1-32 bits, depending on the selected field size;
|
|
the field is right justified within the source register. The optional F param-
|
|
eter determines the field size and extension for the move:
|
|
F=O selects FSO
|
|
F=1 selects FS1
|
|
The SETF instruction sets the field size and extension.
|
|
Machine
|
|
States The following typical cases assume that the source data and the destination
|
|
address are aligned on 16-bit boundaries:
|
|
16-Bit Field 32-Bit Field
|
|
7+(1),12 9+(3),27
|
|
For other cases, see MOVE and MOVB Instructions Timing, Section 13.2.
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
|
|
|
|
|
|
|
|
12-157
|
|
MOVE Move Field - Absolute to Absolute
|
|
|
|
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
15500h FFFFh
|
|
15510h FFFFh
|
|
15520h FFFFh
|
|
15530h OOOOh
|
|
15540h OOOOh
|
|
15550h OOOOh
|
|
Code Before After
|
|
FSO/1 @15530h @15540h @15550h
|
|
MOVE @15500h,@15530h,1 x/1 0OO1h OOOOh OOOOh
|
|
MOVE @15500h,@15534h,O 5/x 01FOh OOOOh OOOOh
|
|
MOVE @15500h,@1553Ah,1 x/10 FCOOh OOOFh OOOOh
|
|
MOVE @15500h,@1553Fh,O 19/x 8000h FFFFh 0OO3h
|
|
MOVE @15504h,@15530h,1 x/7 007Fh OOOOh OOOOh
|
|
MOVE @1550Ah,@15530h,O 13/x 1 FFFh OOOOh OOOOh
|
|
MOVE @1550Dh,@15534h,1 x/8 OFFOh OOOOh OOOOh
|
|
MOVE @1550Dh,@15530h,O 28/x FFFFh OFFFh OOOOh
|
|
MOVE @15505h,@15535h,1 x/23 FFEOh OFFFh OOOOh
|
|
MOVE @15508h,@15536h,O 31/x FFCOh FFFFh 001Fh
|
|
MOVE @15508h,@15531h,1 x/31 FFFEh FFFFh OOOOh
|
|
MOVE @1550Ah,@15530h,O 32/x FFFFh FFFFh OOOOh
|
|
MOVE @15500h,@1553Ah,O x/32 FCOOh FFFFh 03FFh
|
|
|
|
|
|
|
|
|
|
12-158
|
|
Move Immediate - 16 Bits MOVI
|
|
|
|
|
|
Syntax MOVI IW, Rd [, W}
|
|
Execution IW -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 987 6 5 4 3 2 o
|
|
o o o o o oIR Rd
|
|
16-bit value
|
|
|
|
Description MOVI stores a 16-bit, sign-extended immediate value in the destination
|
|
register. (/W in the instruction syntax represents the 16-bit value.)
|
|
The assembler uses the short form if the immediate value has been previ-
|
|
ously defined and is in the range -32,768 through 32,767. You can force
|
|
the assembler to use the short form by following the register operand with
|
|
,W:
|
|
MOVI IW,Rd,W
|
|
The assembler truncates the upper bits and issue an appropriate warning
|
|
message.
|
|
Machine
|
|
States 2,8
|
|
Status Bits N 1 if the data being moved is negative, 0 otherwise
|
|
C Unaffected
|
|
Z 1 if the data being moved is 0, 0 otherwise
|
|
V 0
|
|
Examples Code After
|
|
AO NCZV
|
|
MOVI 32767,AO 00007FFFh OxOO
|
|
MOVI 1,AO 00OOOO01h OxOO
|
|
MOVI O,AO OOOOOOOOh Ox10
|
|
MOVI -l,AO FFFFFFFFh 1xOO
|
|
MOVI -32768,AO FFFF8000h 1xOO
|
|
MOVI OOOOh,AO OOOOOOOOh Ox10
|
|
MOVI 7FFFh,AO 0OO07FFFh OxOO
|
|
|
|
|
|
|
|
|
|
12-159
|
|
MOVI Move Immediate - 32 Bits
|
|
|
|
|
|
Syntax MOVI IL, Rd {, l]
|
|
Execution IL -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 1 0 0 1 1 1 1 IR I Rd
|
|
16 LSBs of IL
|
|
16 MSBs of IL
|
|
|
|
Description MOVI stores a 32-bit immediate value in the destination register. (lL in the
|
|
instruction syntax represents the 32-bit value.)
|
|
The assembler uses this opcode if it cannot use the MOVI IW, Rd opcode,
|
|
or if the long opcode is forced by following the register operand with ,l:
|
|
MOVI IL,Rd,L
|
|
Machine
|
|
States 3,12
|
|
Status Bits N 1 if the data being moved is negative, 0 otherwise
|
|
C Unaffected
|
|
Z 1 if the data being moved is 0, 0 otherwise
|
|
V 0
|
|
Examples Code After
|
|
AO NCZV
|
|
MOVI 2147483647,AO 7FFFFFFFh OxOO
|
|
MOVI 32768,AO 00008000h OxOO
|
|
MOVI -32769,AO FFFF7FFFh 1xOO
|
|
MOVI -2147483648,AO 80000000h 1xOO
|
|
MOVI 8000h,AO 0OOO8000h OxOO
|
|
MOVI OFFFFFFFFh,AO FFFFFFFFh 1xOO
|
|
MOVI OFFFFh,AO,L FFFFFFFFh 1xOO
|
|
|
|
|
|
|
|
|
|
12-160
|
|
Move Constant (5 Bits) MOVK
|
|
|
|
|
|
Syntax MOVK K,Rd
|
|
Execution K -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
10 0 0 01 K R Rd I
|
|
Description MOVK stores a 5-bit constant in the destination register. (K in the in-
|
|
struction syntax represents the constant.) The constant is treated as an
|
|
unsigned number in the range 1-32, where K = 0 in the opcode corre-
|
|
sponds to a value of 32. The resulting constant value is zero extended to
|
|
32 bits.
|
|
Note that you cannot set a register to 0 with this instruction. You can clear
|
|
a register by XORing the register with itself; use CLR Rd (an alternate
|
|
mnemonic for XOR) to accomplish this. Both these methods alter the Z bit
|
|
(set it to 1 ).
|
|
Machine
|
|
States 1,4
|
|
Status Bits NUn affected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code After
|
|
AO
|
|
MOVK 1,AO 00000001h
|
|
MOVK S,AO 00000008h
|
|
MOVK 16,AO 00000010h
|
|
MOVK 32,AO 00000020h
|
|
|
|
|
|
|
|
|
|
12-161
|
|
MOVX Move X Half of Register
|
|
|
|
|
|
Syntax MOVX Rs,Rd
|
|
Execution RsX -+ RdX
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
11 0 01 Rs IR Rd
|
|
|
|
Description MOVX moves the X half of the source register (16 LSBs) to the X half of
|
|
the destination register. The Y halves of both registers are unaffected.
|
|
You an also use the MOVX and MOVY instructions for handling packed
|
|
16-bit quantities and XY addresses. You can use the RL instruction to
|
|
swap the contents of X and Y.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Before After
|
|
AO A1 A1
|
|
MOVX AO,Al OOOOOOOOh FFFFFFFFh FFFFOOOOh
|
|
MOVX AO,Al 12345678h OOOOOOOOh 00005678h
|
|
MOVX AO,Al FFFFFFFFh OOOOOOOOh OOOOFFFFh
|
|
|
|
|
|
|
|
|
|
12-162
|
|
Move Y Half of Register MOVY
|
|
|
|
|
|
Syntax MOVV Rs, Rd
|
|
Execution RsV -+ RdV
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I1 0 Rs R Rd I
|
|
Description MOVY moves the Y half of the source register (16 MSBs) to the Y half of
|
|
the destination register. The X halves of both registers are unaffected.
|
|
You an also use the MOVX and MOVY instructions for handling packed
|
|
16-bit quantities and XY addresses. You can use the RL instruction to
|
|
swap the contents of X and Y.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Before After
|
|
AO A1 A1
|
|
MOVY AO,Al OOOOOOOOh FFFFFFFFh OOOOFFFFh
|
|
MOVY AO,Al 12345678h OOOOOOOOh 12340000h
|
|
MOVY AO,Al FFFFFFFFh OOOOOOOOh FFFFOOOOh
|
|
|
|
|
|
|
|
|
|
12-163
|
|
MPYS Multiply Registers - Signed
|
|
|
|
|
|
Syntax MPYS Rs, Rd
|
|
Execution Rd Even: Rs x Rd -+ Rd:Rd+1
|
|
Rd Odd: Rs x Rd -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
10 0 01 Rs R Rd 1
|
|
Description MPYS performs a signed multiply of a variably-sized field in the source re-
|
|
gister by the 32 bits in the destination register. This produces a 32-bit to
|
|
a 64-bit result, depending on the register and field definitions. Note that
|
|
Rs and Rd must be in the same register file.
|
|
The value of field size 1 (FS1) defines the size of the multiplier in Rs. FS1
|
|
may have any even value n from 2 to 32 (that is, n = 2, 4, 6 ... 30, 32).
|
|
The instruction executes a 32-bit-by-n-bit multiply - multiplying the 32 bits
|
|
in Rd by the n bits in Rs. All values are signed. The MSB of the source field
|
|
(bit n - 1 in Rs) defines the sign of the field; the bits to the left of bit n are
|
|
ignored. The MSB of Rd defines the sign of the multiplicand.
|
|
Contents of Rs (n = FS1): Contents of Rd:
|
|
31 n n-1 o 31 o
|
|
n-bit multiplier 32-bit multiplicand
|
|
|
|
sign bit sign bit
|
|
|
|
M PYS has two modes, depending on whether Rd is even or odd:
|
|
|
|
• Rd Even:
|
|
M PYS multiplies the contents of Rd by the n-bit field in Rs, and stores
|
|
the result in two consecutive registers, Rd and Rd+1. (For example,
|
|
if Rd = B4, the result is stored in registers B4 and B5.) The result is
|
|
sign extended and right justified; the 32 MSBs are stored in Rd and
|
|
the 32 LSBs are stored in Rd+1. Note that all 32 bits of both registers
|
|
are used, regardless of the field size of the mUltiply.
|
|
Do not use A14 or B14 as the destination register, because Rd+1
|
|
(A15 or B15) is the stack pointer register (SP). It is not desirable to
|
|
write over the contents of the SP.
|
|
Contents of Rd (even register): Contents of Rd+1 (odd register):
|
|
~ 0 ~ 0
|
|
I sign I n MSBs of result I 32 LSBs of result I
|
|
• Rd Odd:
|
|
MPYS multiplies the contents of Rd by the n-bit field in Rs, and stores
|
|
the 32 LSBs of the result in Rd; Rs is not changed. If the result is
|
|
greater than 32 bits, the extra MSBs are discarded, regardless of the
|
|
field size.
|
|
Contents of Rd (odd register):
|
|
31 0
|
|
32 MSBs are discarded I 32 LSBs of result I
|
|
|
|
|
|
12-164
|
|
Multiply Registers - Signed MPYS
|
|
|
|
|
|
Machine
|
|
States 5 + FS1/2, 8 + FS1/2
|
|
Status Bits N 1 if the result is negative, a otherwise
|
|
C Unaffected
|
|
Z 1 if the result is 0, a otherwise
|
|
V Unaffected
|
|
Example 1 MPYS AI, AD
|
|
Before After
|
|
AO A1 FS1 AO A1 NCZV
|
|
OOOOOOOOh OOOOOOOOh 32 OOOOOOOOh OOOOOOOOh Ox1x
|
|
7FFFFFFFh 7FFFFFFFh 32 3FFFFFFFh 0000OOO1h OxOx
|
|
7FFFFFFFh FFFFFFFFh 32 FFFFFFFFh 80000001h 1xOx
|
|
FFFFFFFFh 7FFFFFFFh 32 FFFFFFFFh 80000001h 1xOx
|
|
FFFFFFFFh FFFFFFFFh 32 OOOOOOOOh 000OOO01h OxOx
|
|
80000000h 7FFFFFFFh 32 COOOOOOOh 80000000h 1xOx
|
|
80000000h 80000000h 32 40000000h OOOOOOOOh OxOx
|
|
80000001h 80000000h 32 3FFFFFFFh 80000000h OxOx
|
|
8040156Fh 7FF3B074h 32 C0262CDCh 53E486F8h 1xOx
|
|
8040156Fh 7FF3B074h 24 000624B1h 53E486F8h OxOx
|
|
8040156Fh 7FF3B074h 20 FFFE28B2h 594486F8h 1xOx
|
|
8040156Fh 7FF3B074h 16 0OOO27B2h 17EC86F8h OxOx
|
|
8040156Fh 7FF3B074h 14 0OOOO7C2h 1 C0206F8h OxOx
|
|
8040156Fh 7FF3B074h 8 FFFFFFC6h 1 D0766F8h 1 xOx
|
|
8040156Fh 7FF3B074h 6 0OOOOO05h FCFF3BF8h OxOx
|
|
8040156Fh 7FF3B074h 4 FFFFFFFEh 01004158h 1xOx
|
|
8040156Fh 7FF3B074h 2 OOOOOOOOh OOOOOOOOh Ox1x
|
|
Example 2 MPYS AD,AI
|
|
Before After
|
|
AO A1 FS1 AO A1 NCZV
|
|
OOOOOOOOh OOOOOOOOh 32 unchanged OOOOOOOOh Ox1x
|
|
7FFFFFFFh 7FFFFFFFh 32 unchanged 000OOO01h OxOx
|
|
7FFFFFFFh 7FFFFFFFh 32 unchanged 80000001h 1 xOx
|
|
FFFFFFFFh 7FFFFFFFh 32 unchanged 80000001h 1 xOx
|
|
FFFFFFFFh FFFFFFFFh 32 unchanged 0OOOOO01h OxOx
|
|
80000000h 7FFFFFFFh 32 unchanged 80000000h 1xOx
|
|
80000000h 80000000h 32 unchanged OOOOOOOOh OxOx
|
|
80000001h 80000000h 32 unchanged 80000000h OxOx
|
|
7FF3B074h 80401056h 32 unchanged 53E486F8h 1xOx
|
|
7FF3B074h 80401056h 24 unchanged 53E486F8h OxOx
|
|
7FF3B074h 80401056h 20 unchanged 594486F8h 1xOx
|
|
7FF3B074h 80401056h 16 unchanged 17EC86F8h OxOx
|
|
7FF3B074h 80401056h 14 unchanged 1 C0206F8h OxOx
|
|
7FF3B074h 80401056h 8 unchanged 1 D0766F8h 1 xOx
|
|
7FF3B074h 80401056h 6 unchanged FCFF3BF8h OxOx
|
|
7FF3B074h 80401056h 4 unchanged 01004158h 1xOx
|
|
7FF3B074h 80401056h 2 unchanged OOOOOOOOh Ox1x
|
|
|
|
|
|
|
|
12-165
|
|
MPYU Multiply Registers - Unsigned
|
|
|
|
|
|
Syntax MPYU Rs, Rd
|
|
Execution Rd Even: Rs x Rd
|
|
Rd Odd: Rs x Rd -- Rd:Rd+1
|
|
Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 Rs R Rd I
|
|
Description MPYU performs an unsigned multiply of a variably-sized field in the source
|
|
register by the 32 bits in the destination register. This produces a 32-bit to
|
|
a 54-bit result, depending on the register and field definitions. Note that
|
|
Rs and Rd must be in the same register file.
|
|
The value of field size 1 (FS1) defines the size of the multiplier in Rs. FS1
|
|
may have any even value n from 2 to 32 (that is, n = 2, 4, 6 ... 30, 32).
|
|
The instruction executes a 32-bit-by-n-bit multiply - multiplying the 32 bits
|
|
in Rd by the n bits in Rs. All values are unsigned.
|
|
Contents of Rs (n = FS1): Contents of Rd:
|
|
31 n n-1 o 31 o
|
|
I ignored I n-bit multiplier I 32-bit multiplicand
|
|
|
|
MPYS has two modes, depending on whether Rd is even or odd:
|
|
|
|
• Rd Even:
|
|
MPYU multiplies the contents of Rd by the n-bit field in Rs, and
|
|
stores the result in two consecutive registers, Rd and Rd+1. (For
|
|
example, if Rd=B4, the result is stored in registers B4 and B5.) The
|
|
result is zero extended and right justified; the 32 MSBs are stored in
|
|
Rd and the 32 LSBs are stored in Rd+1. Note that all 32 bits of both
|
|
registers are used, regardless of the field size of the mUltiply.
|
|
Do not use A14 or B14 as the destination register, because Rd+1
|
|
(A15 or B15) is the stack pointer register (SP). It is not desirable to
|
|
write over the contents of the S P.
|
|
Contents of Rd (even register): Contents of Rd+1 (odd register):
|
|
~ O~ 0
|
|
I Os I n MSBs of result I 32 LSBs of result I
|
|
• Rd Odd:
|
|
MPYU multiplies the contents of Rd by the n-bit field in Rs, and
|
|
stores the 32 LSBs of the result in Rd; Rs is not changed. If the result
|
|
is greater than 32 bits, the extra MSBs are discarded, regardless of the
|
|
field size.
|
|
Contents of Rd (odd register):
|
|
~ 0
|
|
32 MSBs are discarded I 32 LSBs of result I
|
|
|
|
|
|
12-166
|
|
Multiply Registers - Unsigned MPYU
|
|
|
|
|
|
Machine
|
|
States Rs nonnegative: 5 + FS1/2, 8 + FS1/2
|
|
Rs negative: 6 + FS1 /2, 9 + FS1/2
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Example 1 MPYU Al,AO
|
|
Before After
|
|
AO A1 FS1 AO A1 NCZV
|
|
FFFFOOOOh 10000000h 32 OFFFFOOOh OOOOOOOOh xxOx
|
|
FFFFOOOOh 10001 01 Oh 32 1000000Fh EFFOOOOOh xxOx
|
|
FFFFOOOOh 10001 01 Oh 16 0000100Fh EFFOOOOOh xxOx
|
|
FFFFOOOOh 10001010h 8 OOOOOOOFh FFFOOOOOh xxOx
|
|
FFFFOOOOh 10001010h 4 OOOOOOOOh OOOOOOOOh xx1x
|
|
08001056h 0003B074h 32 00001D83h DC4486F8h xxOx
|
|
08001056h 0003B074h 16 00000583h AB4286F8h xxOx
|
|
08001056h 0003B074h 14 00000183h A31786F8h xxOx
|
|
08001056h 0003B074h 8 00000003h A00766F8h xxOx
|
|
08001056h 0003B074h 6 00000001h A0035178h xxOx
|
|
08001056h 0003B074h 4 OOOOOOOOh 20004158h xxOx
|
|
08001056h 0003B074h 2 OOOOOOOOh OOOOOOOOh xx1x
|
|
Example 2 MPYU AO,Al
|
|
|
|
Before After
|
|
AO A1 FS1 AO A1 NCZV
|
|
10000000h FFFFOOOOh 32 unchanged OOOOOOOOh xxOx
|
|
10001010h FFFFOOOOh 32 unchanged EFFOOOOOh xxOx
|
|
10001 010h FFFFOOOOh 16 unchanged EFFOOOOOh xxOx
|
|
10001 010h FFFFOOOOh 8 unchanged FFFOOOOOh xxOx
|
|
10001 010h FFFFOOOOh 4 unchanged OOOOOOOOh xx1x
|
|
0003B074h 08001056h 32 unchanged DC4486F8h xxOx
|
|
0003B074h 08001056h 16 unchanged AB4286F8h xxOx
|
|
0003B074h 08001056h 14 unchanged A31786F8h xxOx
|
|
0003B074h 08001056h 8 unchanged A00766F8h xxOx
|
|
0003B074h 08001056h 6 unchanged A0035178h xxOx
|
|
0003B074h 08001056h 4 unchanged 20004158h xxOx
|
|
0003B074h 08001056h 2 unchanged OOOOOOOOh xx1x
|
|
|
|
|
|
|
|
|
|
12-167
|
|
NEG Negate Register
|
|
|
|
|
|
Syntax NEG Rd
|
|
Execution 2s complement of Rd - Rd
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 1 IR Rd
|
|
I
|
|
Description NEG stores the 2s complement of the contents of the destination register
|
|
back into the destination register.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if there is a borrow (Rd '¢ 0), 0 otherwise
|
|
Z a
|
|
1 if the result is 0, otherwise
|
|
V 1 if there is an overflow (Rd = 80000000h), 0 otherwise
|
|
Examples Code Before After
|
|
AO NCZV AO
|
|
NEG AD OOOOOOOOh 0010 OOOOOOOOh
|
|
NEG AD 55555555h 1100 AAAAAAABh
|
|
NEG AD 7FFFFFFFh 1100 80000001h
|
|
NEG AD 80000000h 1101 80000000h
|
|
NEG AO 80000001h 0100 7FFFFFFFh
|
|
NEG AD FFFFFFFFh 0100 00000001h
|
|
|
|
|
|
|
|
|
|
12-168
|
|
Negate Register with Borrow NEGB
|
|
|
|
|
|
Syntax NEGB Rd
|
|
Execution (2s complement of Rd) - C -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 oIR Rd I
|
|
Description NEG B takes the 2s complement of the destination register's contents and
|
|
decrements by 1 if the borrow bit (C) is set; the result is stored in the des-
|
|
tination register. This instruction can be used in sequence with itself and
|
|
with the NEG instruction for negating multiple-register quantities.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if there is a borrow, 0 otherwise
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Code Before After
|
|
AO C NCZV AO
|
|
NEGB AO OOOOOOOOh 0 0010 OOOOOOOOh
|
|
NEGB AO OOOOOOOOh 1 1100 FFFFFFFFh
|
|
NEGB AO 55555555h 0 1100 AAAAAAABh
|
|
NEGB AO 55555555h 1 1100 AAAAAAAAh
|
|
NEGB AO 7FFFFFFFh 0 1100 80000001h
|
|
NEGB AO 7FFFFFFFh 1 1100 80000000h
|
|
NEGB AO 80000000h 0 1101 80000000h
|
|
NEGB AO 80000000h 1 0100 7FFFFFFFh
|
|
NEGB AO 80000001h 0 0100 7FFFFFFFh
|
|
NEGB AO 80000001h 1 0100 7FFFFFFEh
|
|
NEGB AO FFFFFFFFh 0 0100 00000001h
|
|
NEGB AO FFFFFFFFh 1 0110 OOOOOOOOh
|
|
|
|
|
|
|
|
|
|
12-169
|
|
NOP No Operation
|
|
|
|
|
|
Syntax NOP
|
|
Execution No operation
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I0 0 0 0 0 0 0 0 0 0 0 0 0 01
|
|
Description The program counter is incremented to point to the next instruction. The
|
|
processor status is otherwise unaffected.
|
|
You an use the NOP instruction to pad loops and perform other timing
|
|
functions.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Example Before After
|
|
PC PC
|
|
NOP 00020000h 00020010h
|
|
|
|
|
|
|
|
|
|
12-170
|
|
Complement Register NOT
|
|
|
|
|
|
Syntax NOT Rd
|
|
Execution NOT Rd ... Rd
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 1 I R Rd I
|
|
Description NOT stores the 1s complement of the destination register's contents back
|
|
into the destination register.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
AO NCZV AO
|
|
NOT AO OOOOOOOOh xxOx FFFFFFFFh
|
|
NOT AO 55555555h xxOx AAAAAAAAh
|
|
NOT AO FFFFFFFFh xx1x OOOOOOOOh
|
|
NOT AO 80000000h xxOx 7FFFFFFFh
|
|
|
|
|
|
|
|
|
|
12-171
|
|
OR OR Registers
|
|
|
|
|
|
Syntax OR Rs, Rd
|
|
Execution Rs OR Rd -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
10 0 0 01 Rs 1R Rd I
|
|
Description This instruction bitwise-ORs the contents of the source register with -the
|
|
contents of the destination register; the result is stored in the destination
|
|
register.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
AO A1 A1 NCZV
|
|
OR AD,Al FFFFFFFFh OOOOOOOOh FFFFFFFFh xxOx
|
|
OR AD,Al OOOOOOOOh FFFFFFFFh FFFFFFFFh xxOx
|
|
OR AD,Al 55555555h AAAAAAAAh FFFFFFFFh xxOx
|
|
OR AD,Al OOOOOOOOh OOOOOOOOh OOOOOOOOh xx1x
|
|
|
|
|
|
|
|
|
|
12-172
|
|
OR Immediate (32 Bits) ORI
|
|
|
|
|
|
Syntax ORI IL, Rd
|
|
Execution IL DR Rd -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 1 0 1 1 1 0 1 IR I Rd
|
|
16 LSBs of IL
|
|
16 MSBs of IL
|
|
|
|
Description This instruction bitwise-DRs a 32-bit immediate value with the contents of
|
|
the destination register and stores the result in the destination register. (lL
|
|
in the syntax represents the 32-bit value.)
|
|
Machine
|
|
States 3,12
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z 1 if the result is 0, a otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
AO AO NCZV
|
|
ORI OFFFFFFFFh,AO OOOOOOOOh FFFFFFFFh xxOx
|
|
ORI oOOOOOOOh,AO FFFFFFFFh FFFFFFFFh xxOx
|
|
ORI OAAAAAAAAh,AO 55555555h FFFFFFFFh xxOx
|
|
ORI oOOOOOOOh,AO OOOOOOOOh OOOOOOOOh xx1x
|
|
|
|
|
|
|
|
|
|
12-173
|
|
PIXBLT Pixel Block Transfer - Binary to Linear
|
|
|
|
|
|
Syntax PIXBLT B, L
|
|
Execution binary pixel array -+ linear pixel array (with processing)
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 543 2 o
|
|
I0 0 0 0 00000 o 0
|
|
|
|
Description This PIXBLT instruction expands, transfers, and processes a binary source
|
|
pixel array with a destination pixel array.
|
|
This instruction operates on two-dimensional arrays of pixels using linear
|
|
starting addresses for both the source and the destination. The source pixel
|
|
array is treated as a one bit per pixel array. As the PixBlt proceeds, the
|
|
source pixels are expanded and then combined with the corresponding
|
|
destination pixels based on the selected graphics operations.
|
|
Note that the parameters are entered exactly as shown in the syntax; that
|
|
is, the instruction is entered as PIXBLT B, L. The first parameter, B, indi-
|
|
cates that the starting address of the source array is a linear address but the
|
|
source array is a binary array. The second parameter, L, indicates that the
|
|
starting address of the destination array is a linear address. The foilowing
|
|
set of implied operands govern the operation of the instruction and define
|
|
the source and destination arrays.
|
|
Implied
|
|
Operands B File Registers
|
|
Register Name Format Description
|
|
BOt SADDR Linear Source pixel array starting address
|
|
B1 SPTCH Linear Source pixel array pitch
|
|
B2t DADDR Linear Destination pixel array starting address
|
|
B3 DPTCH Linear Destination pixel array pitch
|
|
B7 DYDX XY Pixel array dimensions (rows:columns)
|
|
B8 COlORO Pixel Background expansion color
|
|
B9 COlOR1 Pixel Foreground expansion color
|
|
B1<rB14t Reserved registers
|
|
1/0 Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOOOOOBOh CONTROL PP- Pixel processing operations (22 options)
|
|
T - Transparency operation
|
|
COOOO150h PSIZE Pixel size (1,2,4,8,16)
|
|
COOOO160h PMASK Plane mask - pixel format
|
|
t These registers are changed by PIXBlT execution.
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
PIXBLT instruction. To ensure that this register contains the correct value
|
|
for execution, you may want to follow the write to that location with an
|
|
instruction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
|
|
12-174
|
|
Pixel Block Transfer - Binary to Linear PIXBLT
|
|
|
|
|
|
Source Array The source pixel array for the expand operation is defined by the contents
|
|
of the SADDR, SPTCH, and DYDX registers:
|
|
|
|
• At the outset of the instruction, SADDR contains the linear address
|
|
of the pixel with the lowest address in the array. During instruction
|
|
execution, SADDR points to the address of the next set of 32 pixels
|
|
to be read from the source array. When the transfer is complete,
|
|
SADDR points to the linear address of the first pixel on the next row
|
|
of pixels that would have been moved if the block transfer continued.
|
|
|
|
• SPTCH contains the linear difference in the starting addresses of ad-
|
|
jacent rows of the source array. For this PIXBLT instruction, SPTCH
|
|
can be any value.
|
|
|
|
• DYDX specifies the dimensions, in pixels, of both the source and
|
|
destination arrays. The DY portion of DYDX contains the number of
|
|
rows in the array; the DX portion contains the number of pixels per
|
|
row.
|
|
Source
|
|
Expansion The actual values of the source pixels are determined by the interaction of
|
|
the source array with the contents of the COLOR1 and COLORO registers.
|
|
In the expansion operation, a 1 bit in the source array selects a pixel from
|
|
the COLOR1 register for operation on the destination array. A 0 bit in the
|
|
source array selects a COLORO pixel for this purpose. The pixels selected
|
|
from the COLOR1 and COLORO registers are those that align directly with
|
|
their intended position in the destination array word.
|
|
Destination
|
|
Array The location of the destination pixel block is defined by the contents of the
|
|
DADDR, DPTCH, and DYDX registers:
|
|
|
|
• At the outset of the instruction, DADDR contains the linear address
|
|
of the pixel with the lowest address in the array. During instruction
|
|
execution, DADDR points to the next pixel (or word of pixels) to be
|
|
modified in the destination array. When the block transfer is com-
|
|
plete, DADDR points to the linear address of the first pixel on the
|
|
next row of pixels that would have been moved if the block transfer
|
|
continued.
|
|
|
|
• DPTCH contains the linear difference in the starting addresses of ad-
|
|
jacent rows of the destination array (typically this is the screen pitch).
|
|
DPTCH must be a multiple of 16. '
|
|
|
|
• DYDX specifies the dimensions, in pixels, of both the source and
|
|
destination arrays. The DY portion of DYDX contains the number of
|
|
rows in the array; the DX portion contains the number of pixels per
|
|
row.
|
|
Corner Adjust No corner adjust is performed for this instruction
|
|
PBH and PBV are' ignored. The pixel transfer simply proceeds in the order
|
|
of increasing linear addresses.
|
|
Window
|
|
Checking You cannot use window checking with this PixBlt instruction. The con-
|
|
tents of the WSTART and WEND registers are ignored.
|
|
|
|
12-175
|
|
PIXBLT Pixel Block Transfer - Binary to Linear
|
|
|
|
|
|
Pixel
|
|
Processing You can select a pixel processing option for this instruction by setting the
|
|
PPOP bits in the CONTROL register. The pixel processing operation is
|
|
applied to expanded pixels as they are processed with the destination array;
|
|
that is, the data is first expanded and then processed. There are 1 6 Boolean
|
|
and 6 arithmetic operations; the default case at reset is the replace (S -.
|
|
D) operation. The 6 arithmetic operations do not operate with pixel sizes
|
|
of one or two bits per pixel. For more information, see Section 7.7, Pixel
|
|
Processing, on page 7 -15.
|
|
Transparency You can enable transparency for this instruction by setting the T bit in the
|
|
CONTROL I/O register to 1. The TMS34010 checks for 0 (transparent)
|
|
pixels after it expands and processes the source data. At reset, the default
|
|
case for transparency is off.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
Interrupts This instruction can be interrupted at a word or row boundary of the desti-
|
|
nation array. When the PixBlt is interrupted, the TMS3401 0 sets the PBX
|
|
bit in the status register and then pushes the status register on the stack.
|
|
At this time, DPTCH, SPTCH, and B1 o-B14 contain intermediate values.
|
|
DADDR points to the linear address of the next word of pixels to be modi-
|
|
fied after the interrupt is processed. SADDR points to the address of the
|
|
next 32 pixels to be read from the source array after the interrupt is proc-
|
|
essed.
|
|
The PIXBLT instruction uses several I/O and B-file registers as implied op-
|
|
erands. If an interrupt service routine modifies a register that the PIXBLT
|
|
uses as an implied operand, you must restore that register to the value it had
|
|
when the routine began, before returning from the routine. (You can use
|
|
the MMFM and MMTM instructions to save and restore the B-file regis-
|
|
ters.) In order to maintain compatibility with future TMS340 devices, use
|
|
only the RETI instruction to return from an interrupt routine.
|
|
Shift Register
|
|
Transfers If the SRT bit in the DPYCTL I/O register is set, each memory read or write
|
|
initiated by the PixBlt generates a shift register transfer read or write cycle
|
|
at the selected address. This operation can be used for bulk memory clears
|
|
or transfers. (Not all VRAMs support this capability.)
|
|
Machine
|
|
States See PIXBLT Expand Instructions Timing, Section 13.5.
|
|
Status Bits N Undefined
|
|
C Undefined
|
|
Z Undefined
|
|
V Undefined
|
|
Examples Before executing the PIXBLT instruction, load the implied operand registers
|
|
with appropriate values. These PIXBLT examples use the following implied
|
|
operand setup:
|
|
Register File B: I/O Registers:
|
|
SADDR (BO) 00002030h PSIZE = 0010h
|
|
SPTCH (B1) 00000100h
|
|
DADDR (B2) 00033000h
|
|
|
|
|
|
12-176
|
|
Pixel Block Transfer - Binary to Linear PIXBLT
|
|
|
|
|
|
DPTCH (B3) 00001000h
|
|
DYDX (B7) 00020010h
|
|
COlORO (B8) FEDCFEDCh
|
|
COlOR1 (BS) BAS8BAS8h
|
|
Additional implied operand values are listed with each example.
|
|
For this example, assume that memory contains the following data before
|
|
instruction execution.
|
|
Linear Data
|
|
Address
|
|
02000h xxxxh, xxxxh, xxxxh, 1234h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02080h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02100h xxxxh, xxxxh, xxxxh, 5678h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02180h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
|
|
33000h FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh
|
|
33080h FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh
|
|
|
|
34000h FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh
|
|
34080h FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh
|
|
|
|
Example 1 This example uses the rep/ace (S ..... 0) pixel processing operation. Before
|
|
instruction execution, PMASK = OOOOh and CONTROL = OOOOh (T=O,
|
|
PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
|
|
Linear Data
|
|
Address
|
|
33000h FEDCh,FEDCh,BAS8h,FEDCh,BAS8h, BAS8h, FEDCh,FEDCh
|
|
33080h FEDCh, BAS8h, FEDCh, FEDCh, BAS8h, FEDCh, FEDCh, FEDCh
|
|
|
|
34000h FEDCh,FEDCh,FEDCh,BAS8h, BAS8h,BAS8h,BAS8h, FEDCh
|
|
34080h FEDCh,BAS8h, BAS8h,FEDCh,BAS8h,FEDCh,BAS8h,FEDCh
|
|
|
|
Example 2 This example uses the (0 - S) ..... 0 pixel processing operation. Before in-
|
|
struction execution, PMASK = OOOOh and CONTROL = 4800h (T=O,
|
|
PP=1 001 0).
|
|
After instruction execution, memory contains the following values:
|
|
|
|
Linear Data
|
|
Address
|
|
33000h 0123h, 0123h, 4567h, 0123h, 4567h, 4567h, 0123h, 0123h
|
|
33080h 0123h, 4567h, 0123h, 0123h, 4567h, 0123h, 0123h, 0123h
|
|
|
|
34000h 0123h, 0123h, 0123h, 4567h, 4567h, 4567h, 4567h, 0123h
|
|
34080h 0123h, 4567h, 4567h, 0123h, 4567h, 0123h, 4567h, 0123h
|
|
|
|
|
|
|
|
|
|
12-177
|
|
PIXBLT Pixel Block Transfer - Binary to Linear
|
|
|
|
|
|
Example 3 This example uses transparency with COLORO = OOOOOOOOh. Before in-
|
|
struction execution, PMASK = OOOOh and CONTROL = 0020h (T=1,
|
|
W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
|
|
Linear Data
|
|
Address
|
|
33000h FFFFh, FFFFh, BA98h, FFFFh, BA98h, BA98h, FFFFh, FFFFh
|
|
33080h FFFFh, BA98h, FFFFh, FFFFh, BA98h, FFFFh, FFFFh, FFFFh
|
|
|
|
34000h FFFFh, FFFFh, FFFFh, BA98h, BA98h, BA98h, BA98h, FFFFh
|
|
34080h FFFFh, BA98h, BA98h, FFFFh, BA98h, FFFFh, BA98h, FFFFh
|
|
|
|
Example 4 This example uses plane masking
|
|
the four LSBs are masked. Before instruction execution, PMASK = OOOFh
|
|
and CONTROL = OOOOh (T=O, W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
|
|
Linear Data
|
|
Address
|
|
33000h FEDFh, FEDFh, BA9Fh,FEDFh, BA9Fh, BA9Fh, FEDFh, FEDFh
|
|
33080h FEDFh, BA9Fh,FEDFh, FEDFh, BA9Fh,FEDFh, FEDFh, FEDFh
|
|
|
|
34000h FEDFh, FEDFh, FEDFh, BA9Fh, BA9Fh, BA9Fh, BA9Fh, FEDFh
|
|
34080h FEDFh, BA9Fh,BA9Fh,FEDFh, BA9Fh,FEDFh, BA9Fh,FEDFh
|
|
|
|
|
|
|
|
|
|
12-178
|
|
Pixel Block Transfer - Binary to XY PIXBLT
|
|
|
|
|
|
Syntax PIXBLT B, XV
|
|
Execution binary pixel array -+ XY pixel array (with processing)
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
10000 0 000 o 0
|
|
|
|
Description This PIXBLT instruction expands, transfers, and processes a binary source
|
|
pixel array with a destination pixel array.
|
|
This instruction operates on two-dimensional arrays of pixels using a linear
|
|
starting address for the source and an XY address for the destination. The
|
|
source pixel array is treated as a one bit per pixel array. As the PixBlt pro-
|
|
ceeds, the source pixels are expanded and then combined with the corre-
|
|
sponding destination pixels based on the selected graphics operations.
|
|
Note that the parameters are entered exactly as shown in the syntax; that
|
|
is, the instruction is entered as PIXBLT B,XY. The first parameter, B, indi-
|
|
cates that the starting address of the source array is a linear address but the
|
|
source array is a binary array. The second parameter, XV, indicates that the
|
|
starting address of the destination array is an XY address.
|
|
The following set of implied operands govern the operation of the in-
|
|
struction and define the source and destination arrays.
|
|
Implied
|
|
Operands B File Registers
|
|
Register Name Format Description
|
|
BOt SADDR Linear Source pixel array starting address
|
|
B1 SPTCH Linear Source pixel array pitch
|
|
B2t+ DADDR XV Destination pixel array starting address
|
|
B3 DPTCH Linear Destination pixel array pitch
|
|
B4 OFFSET Linear Screen origin (0,0)
|
|
B5 WSTART XV Window starting corner
|
|
B6 WEND XV Window ending corner
|
|
B7+ DVDX XV Pixel array dimensions (rows:columns)
|
|
B8 COLORO Pixel Background expansion color
|
|
B9 COLOR1 Pixel Foreground expansion color
|
|
B1O-B14t Reserved registers
|
|
I/O Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOOOOOBOh CONTROL PP- Pixel processing operations (22 options)
|
|
W - Window clipping or pick operation
|
|
T - Transparency operation
|
|
COOO0130h CONVSP XV -to-linear conversion (source pitch)
|
|
Used for source preclipping.
|
|
COOO0140h CONVDP XV -to-linear conversion (destination pitch)
|
|
COOO0150h PSIZE Pixel size (1,2.4,6,8,16)
|
|
COOO0160h PMASK Plane mask - pixel format
|
|
t These registers are changed by PIXBLT execution.
|
|
+ Used for common rectangle function with window hit operation (W=1).
|
|
|
|
|
|
|
|
12-179
|
|
PIXBlT Pixel Block Transfer - Binary to XY
|
|
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
PIXBLT instruction. To ensure that this register contains the correct value
|
|
for execution, you may want to follow the write to that location with an
|
|
instruction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
Source Array The source pixel array for the expand operation is defined by the contents
|
|
of the SADDR, SPTCH, DYDX, and (possibly) CONVSP registers:
|
|
|
|
• At the outset of the instruction, SADDR contains the linear address
|
|
of the pixel with the lowest address in the array. During instruction
|
|
execution, SADDR points to the address of the next set of 32 pixels
|
|
to be read from the source array. When the block transfer is complete,
|
|
SADDR points to the linear address of the first pixel on the next row
|
|
of pixels that would have been moved if the block transfer continued.
|
|
|
|
• SPTCH contains the linear difference in the starting addresses of ad-
|
|
jacent rows of the source array. SPTCH can be any value for this
|
|
PIXBLT. For window clipping, SPTCH must be a power of two, and
|
|
CONVSP must be set to correspond to the SPTCH value.
|
|
|
|
• CONVSP is calculated by taking the LMO of SPTCH; this value is
|
|
used for the XY calculations involved in XY addressing and window
|
|
clipping.
|
|
|
|
• DYDX specifies the dimensions, in pixels, of both the source and
|
|
destination arrays in pixels. The DY portion of DYDX contains the
|
|
number of rows in the array; the the DX portion contains the number
|
|
of pixels per row.
|
|
Source
|
|
Expansion The actual values of the source pixels are determined by the interaction of
|
|
the source array with contents of the COLOR1 and COLORO registers. In
|
|
the expansion operation, a 1 bit in the source array selects a pixel from the
|
|
COLOR1 register for operation on the destination array. A 0 bit in the
|
|
source array selects a COLORO pixel for this purpose. The pixels selected
|
|
from the COLOR1 and COLORO registers are those that align directly with
|
|
their intended position in the destination array word.
|
|
Destination
|
|
Array The location of the destination pixel block is defined by the contents of the
|
|
DADDR, DPTCH, CONVDP, OFFSET, and DYDX registers:
|
|
|
|
• At the outset of the instruction, DADDR contains the XV address of
|
|
the pixel with the lowest address in the array; it is used with OFFSET
|
|
and CONVDP to calculate the linear address of the array. During in-
|
|
struction execution, DADDR points to the linear address of next
|
|
pixel (or word of pixels) to be modified in the destination array. When
|
|
the block transfer is complete, DADDR points to the linear address
|
|
of the first pixel on the next row of pixels that would have been
|
|
moved if the block transfer continued.
|
|
|
|
• DPTCH contains the linear difference in the starting addresses of ad-
|
|
jacent rows of the destination array (typically this is the screen pitch).
|
|
DPTCH must be a power of two (greater than or equal to 16) and
|
|
CONVDP must be set to correspond to the DPTCH value.
|
|
|
|
|
|
12-180
|
|
Pixel Block Transfer - Binary to XY PIXBLT
|
|
|
|
|
|
• CONVOP is determined by taking the LMO of the OPTCH register;
|
|
this value is used for the XY calculations involved in XY addressing
|
|
and window clipping.
|
|
|
|
• OYOX specifies the dimensions, in pixels, of both the source and
|
|
destination arrays. The OY portion of OYOX contains the number of
|
|
rows in the array; the OX portion contains the number of pixels per
|
|
row.
|
|
Corner Adjust No corner adjust is performed for this instruction. The transfer executes in
|
|
the order of increasing linear addresses. PBH and PBV are ignored.
|
|
Window
|
|
Checking You can use window checking with this instruction by setting the W bits
|
|
in the CONTROL register to the desired value. If you select window
|
|
checking mode 1, 2, or 3, the WSTART and WEN 0 registers define the XY
|
|
starting and ending corners of a rectangular window.
|
|
o No windowing. The entire pixel array is drawn and the WVP and V bits
|
|
are unaffected.
|
|
1 Window hit. No pixels are drawn. The V bit is set to 0 if any portion of
|
|
the destination array lies within the window. Otherwise, the V bit is set
|
|
to 1.
|
|
If the V bit is set to 0, the OAOOR and OYOX registers are modified to
|
|
correspond to the common rectangle formed by the intersection of the
|
|
destination array with the rectangular window. OAOOR is set to the XY
|
|
address of the pixel in the starting corner of the common rectangle.
|
|
OYOX is set to the X and Y dimensions of the common rectangle.
|
|
If the V bit is set to 1, the array lies entirely outside the window, and the
|
|
values of OAOOR and OYOX are indeterminate.
|
|
2 Window miss. If the array lies entirely within the active window, it is
|
|
drawn and the V bit is set to O. Otherwise, no pixels are drawn, the V
|
|
and WVP bits are set to 1, and the instruction is aborted.
|
|
3 Window clip. The source and destination arrays are preclipped to the
|
|
window dimensions. Only those pixels that lie within the common rec-
|
|
tangle (corresponding to the intersection of the specified array and the
|
|
window) are drawn. If any preclipping is required, the V bit is set to 1.
|
|
Pixel
|
|
Processing You can select a pixel processing option for this instruction by setting the
|
|
PPOP bits in the CONTROL register. The pixel processing operation is
|
|
applied to expanded pixels as they are processed with the destination array;
|
|
that is, the data is first expanded and then processed. There are 16 Boolean
|
|
and 6 arithmetic operations; the default case at reset is the S ..... 0 operation.
|
|
The 6 arithmetic operations do not operate with pixel sizes of one or two
|
|
bits per pixel. For more information, see Section 7.7, Pixel Processing, on
|
|
page 7-15.
|
|
Transparency You can enable transparency for this instruction by setting the T bit in the
|
|
CONTROL I/O register to 1. The TMS34010 checks for 0 (transparent)
|
|
pixels after it expands and processes the source data. At reset, the default
|
|
case for transparency is off.
|
|
|
|
|
|
|
|
|
|
12-181
|
|
PIXBLT Pixel Block Transfer - Binary to XY
|
|
|
|
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
Interrupts This instruction can be interrupted at a word or row boundary of the desti-
|
|
nation array. When the PixBlt is interrupted, the TMS3401 0 sets the PBX
|
|
bit in the status register and then pushes the status register on the stack.
|
|
At this time, DPTCH, SPTCH, and B1 o-B14 contain intermediate values.
|
|
DADDR points to the linear address of the next word of pixels to be modi-
|
|
fied after the interrupt is processed. SADDR points to the address of the
|
|
next 32 pixels to be read from the source array after the interrupt is proc-
|
|
essed.
|
|
The PIXBLT instruction uses several I/O and B-file registers as implied op-
|
|
erands. If an interrupt service routine modifies a register that the PIXBLT
|
|
uses as an implied operand, you must restore that register to the value it had
|
|
when the routine began, before returning from the routine. (You can use
|
|
the MMFM and MMTM instructions to save and restore the B-file regis-
|
|
ters.) In order to maintain comnatibility with future TMS340 devices, use
|
|
only the RETI instruction to return from an interrupt routine.
|
|
Shift Register
|
|
Transfers If the SRT bit in the DPYCTL I/O register is set, each memory read or write
|
|
initiated by the PixBlt generates a shift register transfer read or write cycle
|
|
at the selected address. This operation can be used for bulk memory clears
|
|
or transfers. (Not all VRAMs support this capability.)
|
|
Machine
|
|
States See PIXBLT Expand Instructions Timing, Section 13.5.
|
|
Status Bits N Undefined
|
|
C Undefined
|
|
Z Undefined
|
|
V 1 if a window violation occurs, 0 otherwise; undefined if window
|
|
checking is not enabled (W=OO)
|
|
|
|
|
|
|
|
|
|
12-182
|
|
Pixel Block Transfer - Binary to XY PIXBLT
|
|
|
|
|
|
Examples Before executing a PIXBLT instruction, load the implied operand registers
|
|
with appropriate values. These PIXBLT examples use the following implied
|
|
operand setup.
|
|
Register File B: I/O Registers:
|
|
SADDR (BO) = 00002010h PSIZE = 0008h
|
|
SPTCH (B1) = 00000010h CONVSP = 001 Bh
|
|
DADDR (B2) = 00300022h CONVDP = 0013h
|
|
DPTCH (B3) = 00001000h
|
|
OFFSET (B4) = 00010000h
|
|
WSTART (B5) = 00000026h
|
|
WEND (B6) = 00400050h
|
|
DYDX (B7) = 00040010h
|
|
COLORO (B8) = OOOOOOOOh
|
|
COLOR1 (B9) = 7C7C7C7Ch
|
|
Additional implied operand values are listed with each example.
|
|
For this example, assume that memory contains the following data before
|
|
instruction execution.
|
|
Linear Data
|
|
Address
|
|
2000h xxxxh, 0123h, 4567h, 89ABh, CDEFh, xxxxh, xxxxh, xxxxh
|
|
40000hto
|
|
43200h FFFFh
|
|
|
|
Example 1 This example uses the rep/ace (S - D) pixel processing operation. Before
|
|
instruction execution, PMASK = OOOOh and CONTROL = OOOOh (T=O,
|
|
W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
Linear Data
|
|
Address
|
|
40100h FFFFh, 7C7Ch,0000h, 7COOh, OOOOh, 007Ch, OOOOh, OOOOh
|
|
40180h OOOOh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh
|
|
|
|
41100h FFFFh, 7C7Ch,007Ch, 7COOh, 007Ch, 007Ch, 007Ch, OOOOh
|
|
41180h 007Ch, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh
|
|
|
|
42100h FFFFh, 7C7Ch,7COOh, 7COOh, 7COOh, 007Ch, 7COOh, OOOOh
|
|
42180h 7COOh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh
|
|
|
|
43100h FFFFh, 7C7Ch, 7C7Ch, 7COOh, 7C7Ch,007Ch, 7C7Ch,OOOOh
|
|
43180h 7C7Ch, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh, FFFFh
|
|
|
|
|
|
|
|
|
|
12-183
|
|
PIXBLT Pixel Block Transfer - Binary to XY
|
|
|
|
|
|
XV Addressing
|
|
X Address
|
|
Y 222222222222222233333
|
|
0123456789ABCDEF01234
|
|
A
|
|
d ~FFFF7C7C0000007C00007COOOOOOOOOOOOOOFFFFFF
|
|
d
|
|
r 31 FF F F 7 C 7 C 7 C 00 00 7 C 7 C 00 7 C 00 7 C 00 00 00 7 C 00 FF FF F F
|
|
e
|
|
s 32 FF F F 7 C 7 C 00 7 C 00 7 C 00 7 C 7 C 00 00 7 C 00 00 00 7 C F F FF FF
|
|
s
|
|
33 FF FF 7 C 7 C 7 C 7 C 00 7 C 7 C 7 C 7 C 00 7 C 7 C 00 00 7 C 7 C FF FF FF
|
|
|
|
Example 2 This example uses the XOR pixel processing operation. Before instruction
|
|
execution, PMASK = OOOOh and CONTROL = 2800h (T=O, W=OO,
|
|
PP=01 01 0).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
Y 222222222222222233333
|
|
o 1 234 5 678 9 ABC 0 E F 0 1 234
|
|
A
|
|
d 30 FF FF 83 83 FF FF FF 83 FF FF 83 FF FF FF FF FF FF FF FF FF FF
|
|
d
|
|
r 31 FF FF 83 83 83 FF FF 83 83 FF 83 FF 83 FF FF FF 83 FF FF FF FF
|
|
e
|
|
s 32 FF FF 83 83 FF 83 FF 83 FF 83 83 FF FF 83 FF FF FF 83 FF FF FF
|
|
s
|
|
33 FF FF 83 83 83 83 FF 83 83 83 83 FF 83 83 FF FF 83 83 FF FF FF
|
|
|
|
Example 3 This example uses transparency. Before instruction execution, PMASK =
|
|
OOOOh and CONTROL = 0020h (T=1, W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
Y 222222222222222233333
|
|
o 1 2 345 6 7 8 9 ABC 0 E F 0 1 234
|
|
A
|
|
d 30 FF FF 7C 7C FF FF FF 7C FF FF 7C FF FF FF FF FF FF FF FF FF FF
|
|
d
|
|
r 31 F F FF 7 C 7 C 7 C FF FF 7 C 7 C FF 7 C FF 7 C FF FF F F 7 C F F FF FF FF
|
|
e
|
|
s 32 FF FF 7 C 7 C FF 7 C F F 7 C F F 7 C 7 C FF FF 7 C FF FF FF 7 C FF FF FF
|
|
s
|
|
33 FF FF 7C 7C 7C 7C FF 7C 7C 7C 7C FF 7C 7C FF FF 7C 7C FF FF FF
|
|
|
|
|
|
|
|
|
|
12-184
|
|
Pixel Block Transfer - Binary to XY PIXBLT
|
|
|
|
|
|
Example 4 This example uses window operation 3 (clipped destination). Before in-
|
|
struction execution, PMASK = OOOOh and CONTROL = OOCOh (T=O,
|
|
W=11, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
V 222222222222222233333
|
|
o 1 2 3 4 5 6 7 8 9 ABC D E F 0 1 2 3 4
|
|
A
|
|
d 30 FF FF FF FF FF FF 00 7C 00 00 7C 00 00 00 00 00 00 00 FF FF FF
|
|
d
|
|
r 31 FF FF FF FF FF FF 00 7C 7C 00 7C 00 7C 00 00 00 7C 00 FF FF FF
|
|
e
|
|
s 32 FF FF FF FF FF FF 00 7C 00 7C 7C 00 00 7C 00 00 00 7C FF FF FF
|
|
s
|
|
33 FF F F FF F F FF FF 00 7 C 7 C 7 C 7 C 00 7 C 7 C 00 00 7 C 7 C FF FF F F
|
|
|
|
Example 5 This example uses plane masking; the four LSBs of each pixel are masked.
|
|
Before instruction execution, PMASK = OFOFh and CONTROL = 0020h
|
|
(T=1, W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
V 222222222222222233333
|
|
o 1 2 3 4 5 6 7 8 9 ABC D E F 0 1 2 3 4
|
|
A
|
|
d 30 FF FF 7 F 7 F FF FF FF 7 F F F FF 7 F F F FF FF FF FF FF FF FF FF FF
|
|
d
|
|
r 31 FF FF 7F 7F 7F FF FF 7F 7F FF 7F FF 7F FF FF FF 7F FF FF FF FF
|
|
e
|
|
s 32 FF FF 7 F 7 F FF 7 F F F 7 F F F 7 F 7 F F F FF 7 F FF FF FF 7 F FF FF FF
|
|
5
|
|
33 FF F F 7 F 7 F 7 F 7 F FF 7 F 7 F 7 F 7 F F F 7 F 7 F F F FF 7 F 7 F FF FF F F
|
|
|
|
|
|
|
|
|
|
12-185
|
|
PIXBLT Pixel Block Transfer - Binary to XY
|
|
|
|
|
|
Example 6 This example shows how to use the PIXBLT B,XY instruction's window
|
|
preclipping capabilitied when the source pitch is not a power of 2.
|
|
*-----------------------------------------------------------------------
|
|
* Assume that the registers have been loaded as follows:
|
|
* BO linear start address of source bitmap
|
|
* B1 SPTCH (no restrictions)
|
|
* B2 start X coord. ytop in 16 MSBs, start x coord.
|
|
* xleft 1n 16 LSBs
|
|
* B3 DPTCH (must be power of 2)
|
|
* B4 OFFSET
|
|
* B5 WSTART
|
|
* B6 WEND
|
|
* B7 DY::DX (array height in 16 MSBs, array width in 16 LSBs)
|
|
* B8 COLORO
|
|
* B9 COLOR1
|
|
* FS1 >= 16 (assume multiplier for MPYS below is less than 16 bits)
|
|
* CONVSP will not be used.
|
|
* Implied operands in other I/O registers (incl. CONVDP) are valid.
|
|
* Window option = 3
|
|
*-----------------------------------------------------------------------
|
|
-color-expand:
|
|
MOVY B2,B10 ;copy ytop
|
|
SUBXY B5,B10 ;window y overlap = ytop - ystart
|
|
JRYNN INWINDOW ;jump if ytop below top of window
|
|
* Need to clip destination array to top edge of clippin9 window
|
|
MOVY B5,B2 ;clip ytop to top of w1ndow
|
|
SRA 16,B10 ;shift y overlap to 16 LSBs
|
|
MOVE B1,B11 ;copy SPTCH
|
|
MPYS B10,B11 ;(yoverlap) * SPTCH
|
|
SUB B11,BO ;clip SADDR to top of window
|
|
SLL 16,B10 ;shift y overlap to 16 MSBs
|
|
ADDXY B10,B7 ;clip DY to top of window
|
|
JRLS DONE ;done if DY<=O (completely
|
|
;above window)
|
|
* PIXBLT instruction will do any additional clipping required
|
|
INWINDOW:
|
|
PIXBLT B,XY ;color expand bitmap to screen
|
|
* Restore registers and return
|
|
DONE:
|
|
RETS o ;done
|
|
.end
|
|
|
|
|
|
|
|
|
|
12-186
|
|
Pixel Block Transfer - Linear to Linear PIXBLT
|
|
|
|
|
|
Syntax PIXBlT l, l
|
|
Execution linear pixel array -+ linear pixel array (with processing)
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
10000 000000 o 0
|
|
|
|
Description The PIXB LT instruction transfers and processes a source pixel array with a
|
|
destination pixel array.
|
|
This instruction operates on two-dimensional arrays of pixels using linear
|
|
starting addresses for both the source and the destination. As the PixBlt
|
|
proceeds, the source pixels are combined with the corresponding destina-
|
|
tion pixels based on the selected graphics operations.
|
|
Note that the parameters are entered exactly as shown in the syntax; that
|
|
is, the instruction is entered as PIXBLT L, L. The first parameter, l, indi-
|
|
cates that the starting address of the source array is a linear address; the
|
|
second parameter, l, indicates that the starting address of the destination
|
|
array is also a linear address.
|
|
The following set of implied operands govern the operation of the in-
|
|
struction and define the source and destination arrays.
|
|
Implied
|
|
Operands B File Registers
|
|
Register Name Format Description
|
|
BOt+ SADDR Linear Source pixel array starting address
|
|
B1t SPTCH Linear Source pixel array pitch
|
|
B2t+ DADDR Linear Destination pixel array starting address
|
|
B3 DPTCH Linear Destination pixel array pitch
|
|
B7 DYDX XY Pixel array dimensions
|
|
(rows:columns)
|
|
B1Q-B14t Reserved registers
|
|
I/O Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOOOOOBOh CONTROL PP- Pixel processing operations (22 options)
|
|
T - Transparency operation
|
|
PBH- PixBlt horizontal direction
|
|
PBV- PixBlt vertical direction
|
|
COOO0150h PSIZE Pixel size (1,2,4,8,16)
|
|
COOO0160h PMASK Plane mask - pixel format
|
|
t These registers are changed by PIXBLT execution.
|
|
+ You must adjust SADDR and DADDR to correspond to the corner selected by the
|
|
values of PBH and PBV. See Corner Adjust below for additional information.
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
PIXBLT instruction. To ensure that this register contains the correct value
|
|
for execution, you may want to follow the write to that location with an
|
|
instruction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
|
|
|
|
|
|
12-187
|
|
PIXBLT Pixel Block Transfer - Linear to Linear
|
|
|
|
|
|
Source Array The source pixel array for the processing operation is defined by the con-
|
|
tents of the SADDR, SPTCH, and DYDX registers:
|
|
|
|
• At the outset of the instrl.Jction, SADDR contains the linear address
|
|
of the pixel at the appropriate starting corner of the array as deter-
|
|
mined by the PBH and PBV bits in the CONTROL I/O register. (See
|
|
Corner Adjust below.) During instruction execution, SADDR
|
|
points to the next pixel (or word of pixels) to be read from the source
|
|
array. When the block transfer is complete, SADDR points to the
|
|
starting address of the next set of 32. pixels that would have been
|
|
moved had the block transfer continued.
|
|
|
|
• SPTCH contains the linear difference in the starting addresses of ad-
|
|
jacent rows of the source array. SPTCH must be a mUltiple of 16.
|
|
|
|
• DYDX specifies the dimensions, in pixels, of both the source and
|
|
destination arrays. The DY portion of DYDX contains the number of
|
|
rows in the array; the DX portion contains the number of pixels per
|
|
row.
|
|
Destination
|
|
Array The location of the destination pixel array is defined by the contents of the
|
|
DADDR, DPTCH, and DYDX registers:
|
|
|
|
• At the outset of the instruction, DADDR contains the linear address
|
|
of the pixel at the appropriate starting corner of the array as deter-
|
|
mined by the PBH and PBV bits in the CONTROL I/O register. (See
|
|
Corner Adjust below.) During instruction execution, DADDR
|
|
points to the next pixel (or word of pixels) to be modified in the des-
|
|
tination array. When the block transfer is complete, DADDR points
|
|
to the linear address of the first pixel on the next row of pixels that
|
|
would have been moved had the block transfer continued.
|
|
|
|
• DPTCH contains the linear difference in the starting addresses of ad-
|
|
jacent rows of the destination array. DPTCH must be a multiple of
|
|
16.
|
|
|
|
• DYDX specifies the dimensions, in pixels, of both the source and
|
|
destination arrays in pixels. The DY portion of DYDX contains the
|
|
number of rows in the array, while the DX portion contains the num-
|
|
ber of columns.
|
|
Corner Adjust The PBH and PBV bits in the CONTROL I/O register govern the direction
|
|
of the PixBlt. If the source and destination arrays overlap, then PBH and
|
|
PBV should be set to prevent any portion of the source array from being
|
|
overwritten before it is moved.
|
|
Note that this PIXBLT's corner adjustment is unique. The PBH and PBV
|
|
bits control the direction of the PIXBLT; however, the adjustment of
|
|
SADDR and DADDR to point to the appropriate starting corner is not au-
|
|
tomatic. You must explicitly set these two registers to point to the selected
|
|
starting corners of the source and destination arrays, respectively, as indi-
|
|
cated by PBH and PBV. This facility allows you to use corner adjust for
|
|
screen definitions that do not lend themselves to XY addressing (those not
|
|
binary powers of two). In effect, you supply your own corner adjust oper-
|
|
ation in software and the PixBlt instruction provides directional control.
|
|
|
|
|
|
|
|
12-188
|
|
Pixel Block Transfer - Linear to Linear PIXBLT
|
|
|
|
|
|
• For PBH = 0 and PBV = 0, set SADDR and DADDR as they are
|
|
normally set for linear PixBlts. Set both registers to correspond to the
|
|
linear address of the first pixel on the first line of the array (that is,
|
|
the pixel with the lowest address).
|
|
|
|
• For PBH = 0 and PBV = 1, set SADDR and DADDR to correspond
|
|
to the linear address of the first pixel on the last line of the array.
|
|
In other words,
|
|
SADDR = (linear address of 1st source pixel) + [(DY-1) x SPTCH)]
|
|
and
|
|
DADDR = (linear address of 1 st destination pixel) + [(DY -1) x DPTCH)]
|
|
|
|
• For PBH = 1 and PBV = 0, set SADDR and DADDR to correspond
|
|
to the linear address of the pixel fol/owing the last pixel on the first
|
|
line of the array. In other words,
|
|
SADDR = (linear address of 1st source pixel) + (OX x PSIZE)
|
|
and
|
|
DADDR- = (linear address of 1st destination pixel) + (OX x PSIZE)
|
|
|
|
• For PBH = 1 and PBV = 1, set SADDR and DADDR to correspond
|
|
to the linear address of the pixel fol/owing the last pixel on the last
|
|
line of the array. In other words,
|
|
SADDR = (linear address of 1st source pixel) + [(DY-1) x SPTCH)]
|
|
+ (OX x PSIZE)
|
|
and
|
|
DADDR = (linear address of 1st destination pixel) + [(DY-1) x
|
|
DPTCH)] + (OX x PSIZE)
|
|
Window
|
|
Checking Window operations are not enabled for this instruction. The contents of the
|
|
WSTART and WEND registers are ignored.
|
|
Pixel
|
|
Processing You can select a pixel processing option for this instruction by setting the
|
|
PPOP bits in the CONTROL register. The pixel processing option is applied
|
|
to pixels as they are processed with the destination array. Note that the
|
|
data is read through the plane mask and then processed. There are 16
|
|
Boolean and 6 arithmetic operations; the default case at reset is the replace
|
|
(S .... D) operation. The 6 arithmetic operations do not operate with pixel
|
|
sizes of 1 or 2 bits per pixel. For more information, see Section 7.7, Pixel
|
|
Processing, on page 7 -15.
|
|
Transparency You can enable transparency for this instruction by setting the T bit in the
|
|
CONTROL I/O register to 1. The TMS34010 checks for 0 (transparent)
|
|
pixels after it expands and processes the source data. At reset, the default
|
|
case for transparency is off.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
|
|
|
|
|
|
|
|
12-189
|
|
PIXBLT Pixel Block Transfer - Linear to Linear
|
|
|
|
|
|
Interrupts This instruction can be interrupted at a word or row boundary of the desti-
|
|
nation array. When the PixBlt is interrupted, the TMS3401 0 sets the PBX
|
|
bit in the status register and then pushes the status register on the stack.
|
|
At this time, DPTCH, SPTCH, and B10-B14 contain intermediate values.
|
|
DADDR points to the linear address of the next word of pixels to be modi-
|
|
fied after the interrupt is processed. SADDR points to the address of the
|
|
next 32 pixels to be read from the source array after the interrupt is proc-
|
|
essed.
|
|
The PIXBLT instruction uses several I/O and B-file registers as implied op-
|
|
erands. If an interrupt service routine modifies a register that the PIXBLT
|
|
uses as an implied operand, you must restore that register to the value it had
|
|
when the routine began, before returning from the routine. (You can use
|
|
the MMFM and MMTM instructions to save and restore the B-file regis-
|
|
ters.) In order to maintain compatibility with future TMS340 devices, use
|
|
only the RETI instruction to return from an interrupt routine.
|
|
Shift Register
|
|
Transfers If the SRT bit in the DPYCTL I/O register is set, each memory read or write
|
|
initiated by the PixBlt generates a shift register transfer read or write cycle
|
|
at the selected address. This operation can be used for bulk memory clears
|
|
or transfers. (Not all VRAMs support this capability.)
|
|
Machine
|
|
States See Section 13.4, PIXBLT Instructions Timing.
|
|
Status Bits N Undefined
|
|
C Undefined
|
|
Z Undefined
|
|
V Undefined
|
|
Examples Before executing a PIXBLT instruction, load the implied operand registers
|
|
with appropriate values. These PIXBLT examples use the following implied
|
|
operand setup.
|
|
Register File B: I/O Registers:
|
|
SADDR (BO) = 00002004h PSIZE = 0004h
|
|
SPTCH (B1) = 00000080h
|
|
DADDR (B2) = 00002228h
|
|
DPTCH (B3) = 00000080h
|
|
OFFSET (B4) = OOOOOOOOh
|
|
DYDX (B7) = 0002000Dh
|
|
|
|
Additional implied operand values are listed with each example.
|
|
For these examples, assume that memory contains the following data before
|
|
instruction execution.
|
|
linear Data
|
|
Address
|
|
02000h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02080h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02100h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02180h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02200h xxxxh, xxxxh, FFxxh, FFFFh, FFFFh, xFFFh, xxxxh, xxxxh
|
|
02280h xxxxh, xxxxh, FFxxh, FFFFh, FFFFh, xFFFh, xxxxh, xxxxh
|
|
02300h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
|
|
|
|
|
|
12-190
|
|
Pixel Block Transfer - Linear to Linear PIXBLT
|
|
|
|
|
|
Example 1 This example uses the replace (S -+ 0) pixel processing operation. Before
|
|
instruction execution, PMASK = OOOOh and CONTROL = OOOOh (T=O,
|
|
W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
Linear Data
|
|
Address
|
|
02000h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02080h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02100h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02180h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02200h xxxxh, xxxxh, OOxxh, 1110h, 2221 h, x332h, xxxxh, xxxxh
|
|
02280h xxxxh, xxxxh, OOxxh, 1110h, 2221 h, x332h, xxxxh, xxxxh
|
|
02300h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
|
|
Example 2 This example uses the (0 - S) -+ 0 pixel processing operation. Before in-
|
|
struction execution, PMASK = OOOOh and CONTROL = 4800h (T=O,
|
|
W=OO, PP=1 001 0).
|
|
After instruction execution, memory contains the following values:
|
|
Linear Data
|
|
Address
|
|
02000h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02080h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02100h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02180h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02200h xxxxh, xxxxh, FFxxh, EEEFh, DDDEh,xCCDh,xxxxh, xxxxh
|
|
02280h xxxxh, xxxxh, FFxxh, EEEFh, DDDEh,xCCDh, xxxxh, xxxxh
|
|
02300h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
|
|
Example 3 This example uses transparency. Before instruction execution, PMASK =
|
|
OOOOh and CONTROL = 0020h (T=1, W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
Linear Data
|
|
Address
|
|
02000h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02080h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02100h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02180h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02200h xxxxh, xxxxh, OFFxxh, 111 Fh, 2221 h, x332h, xxxxh, xxxxh
|
|
02280h xxxxh, xxxxh, OFFxxh, 111 Fh, 2221 h, x332h, xxxxh, xxxxh
|
|
02300h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
|
|
|
|
|
|
|
|
12-191
|
|
PIXBLT Pixel Block Transfer - Linear to Linear
|
|
|
|
|
|
Example 4 This example uses plane masking (the MSB of each pixel is masked). Be-
|
|
fore instruction execution, PMASK = 8888h and CONTROL = OOOOh
|
|
(T=O, W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
Linear Data
|
|
Address
|
|
02000h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02080h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02100h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02180h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02200h xxxxh, xxxxh, 88xxh, 9998h, AAA9h, xB BAh, xxxxh, xxxxh
|
|
02280h xxxxh, xxxxh, 88xxh, 9998h, AAA9h, xBBAh, xxxxh, xxxxh
|
|
02300h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
|
|
|
|
|
|
|
|
12-192
|
|
Pixel Block Transfer - Linear to XY PIXBLT
|
|
|
|
|
|
Syntax PIXBLT L, XV
|
|
Execution linear pixel array --. XV pixel array (with processing)
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
10000 00 00000
|
|
|
|
Description The PIXBLT instruction transfers and processes a source pixel array with a
|
|
destination pixel array.
|
|
This instruction operates on two-dimensional arrays of pixels using a linear
|
|
starting address for the source array and an XV address for the destination
|
|
array. As the PixBlt proceeds, the source pixels are combined with the
|
|
corresponding destination pixels based on the selected graphics operations.
|
|
Note that the parameters are entered exactly as shown in the syntax; that
|
|
is, the instruction is entered as PIXBLT L, XY. The first parameter, l, indi-
|
|
cates that the starting address of the source array is a linear address; the
|
|
second parameter, XV, indicates that the starting address of the destination
|
|
array is an XV address.
|
|
The following set of implied operands govern the operation of the in-
|
|
struction and define the source and destination arrays.
|
|
Implied
|
|
Operands B File Registers
|
|
Register Name Format Description
|
|
BOt SADDR Linear Source pixel array starting address
|
|
B1 SPTCH Linear Source pixel array pitch
|
|
B2t:l: DADDR XV Destination pixel array starting address
|
|
B3 DPTCH Linear Destination pixel array pitch
|
|
B4 OFFSET Linear Screen origin (0,0)
|
|
B5 WSTART XV Window starting corner
|
|
B6 WEND XV Window ending corner
|
|
B7:1: DVDX XV Pixel array dimensions (rows:columns)
|
|
B1 D-B14t Reserved registers
|
|
I/O Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOOOOOBOh CONTROL PP- Pixel processing operations (22 options)
|
|
W -Window operations
|
|
T - Transparency operation
|
|
PBH- PixBlt horizontal direction
|
|
PBV- PixBlt vertical direction
|
|
COOOO130h CONVSP XV -to-linear conversion (source pitch)
|
|
Used for preclipping and corner adjust
|
|
COOOO140h CONVDP XV -to-linear conversion (destination pitch)
|
|
COOOO150h PSIZE Pixel size (1,2,4,8,16)
|
|
COOOO160h PMASK Plane mask - pixel format
|
|
t These registers are changed by PIXBLT execution.
|
|
:I: Used for common rectangle function with window pick.
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
|
|
12-193
|
|
PIXBLT Pixel Block Transfer - Linear to XY
|
|
|
|
|
|
PIXBLT instruction. To ensure that this register contains the correct value
|
|
for execution, you may want to follow the write to that location with an
|
|
instruction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
Source Array The source pixel array for the processing operation is defined by the con-
|
|
tents of the SADDR, SPTCH, DYDX, and (possibly) CONVSP registers:
|
|
|
|
• At the outset of the instruction, SADDR contains the linear address
|
|
of the pixel with the lowest address in the array. During instruction
|
|
execution, SADDR points to the next pixel (or word of pixels) to be
|
|
accessed in the source array. When the block transfer is complete,
|
|
SADDR points to the linear address of the first pixel on the next row
|
|
of pixels that would have been moved had the block transfer contin-
|
|
ued.
|
|
|
|
• SPTCH contains the linear difference in the starting addresses of ad-
|
|
jacent rows of the source array. SPTCH must be a multiple of 16.
|
|
For window clipping or corner adjust, SPTCH must be a power of two
|
|
and CONVSP must be set to correspond to the SPTCH value.
|
|
|
|
• CONVSP is determined by taking the LMO of the SPTCH register; this
|
|
value is used for the XY calculations involved in window clipping and
|
|
corner adjust.
|
|
|
|
• DYDX specifies the dimensions, in pixels, of both the source and
|
|
destination arrays. The DY portion of DYDX contains the number of
|
|
rows in the array; the DX portion contains the number of pixels per
|
|
row.
|
|
Destination
|
|
Array The location of the destination pixel array is defined by the contents of the
|
|
DADDR, DPTCH, CONVDP, OFFSET, and DYDX registers:
|
|
|
|
• At the outset of the instruction, DADDR contains the XV address of
|
|
the pixel with the lowest address in the array; it is used with OFFSET
|
|
and CONVDP to calculate the linear address of the starting location
|
|
of the array. During instruction execution, DADDR points to the lin-
|
|
ear address of next pixel (or word of pixels) to be accessed in the
|
|
destination array. When the block transfer is complete, DADDR
|
|
points to the linear address of the first pixel on the next row of
|
|
pixels that would have been moved had the block transfer continued.
|
|
|
|
• DPTCH contains the linear difference in the starting addresses of ad-
|
|
jacent rows of the destination array (typically this is the screen pitch).
|
|
DPTCH must be a power of two (greater than or equal to 16).
|
|
|
|
• CONVDP must be set to correspond to the DPTCH value. CONVDP
|
|
is determined by taking The LMO of the DPTCH register; this value
|
|
is used for the XY calculations involved in XY addressing, window
|
|
clipping and corner adjust.
|
|
|
|
|
|
|
|
|
|
12-194
|
|
Pixel Block Transfer - Linear to XY PIXBLT
|
|
|
|
|
|
• DYDX specifies the dimensions of both the source and destination
|
|
arrays in pixels. The DY portion of DYDX contains the number of
|
|
rows in the array, while the DX portion contains the number of col-
|
|
umns.
|
|
Corner Adjust The PBH and PBV bits in the CONTROL I/O register govern the direction
|
|
of the PixBlt. If the source and destination arrays overlap, then PBH and
|
|
PBV should be set to prevent any portion of the source array from being
|
|
overwritten before it is moved. This PixBlt performs the corner adjust
|
|
function automatically under the control of the PBH and PBV bits. If
|
|
PBV=1, SPTCH must be a power of two and CONVSP should be valid.
|
|
The SADDR and DADDR registers should be set to correspond to the ap-
|
|
propriate format address of the first pixel on the first line of the source
|
|
(linear) and destination (XY) arrays, respectively.
|
|
Window
|
|
Checking You can use window checking with this instruction by setting the W bits
|
|
in the CONTROL register to the desired value. If you select window
|
|
checking mode 1, 2, or 3, the WSTART and WEN D registers define the XY
|
|
starting and ending corners of a rectangular window.
|
|
o No windowing. The entire pixel array is drawn and the WVP and V bits
|
|
are unaffected.
|
|
1 Window hit. No pixels are drawn. The V bit is set to 0 if any portion of
|
|
the destination array lies within the window. Otherwise, the V bit is set
|
|
to 1.
|
|
If the V bit is set to 0, the DADDR and DYDX registers are modified to
|
|
correspond to the common rectangle formed by the intersection of the
|
|
destination array with the rectangular window. DADDR is set to the XY
|
|
address of the pixel in the starting corner of the common rectangle.
|
|
DYDX is set to the X and Y dimensions of the common rectangle.
|
|
If the V bit is set to 1, the array lies entirely outside the window, and the
|
|
values of DADDR and DYDX are indeterminate.
|
|
2 Window miss. If the array lies entirely within the active window, it is
|
|
drawn and the V bit is set to O. Otherwise, no pixels are drawn, the V
|
|
and WVP bits are set to 1, and the instruction is aborted.
|
|
3 Window clip. The source and destination arrays are preclipped to the
|
|
window dimensions. Only those pixels that lie within the common rec-
|
|
tangle (corresponding to the intersection of the specified array and the
|
|
window) are drawn. If any preclipping is required, the V bit is set to 1.
|
|
Pixel
|
|
Processing You can select a pixel processing option to use with this instruction by
|
|
setting the PPOP bits in the CONTROL register. The pixel processing op-
|
|
eration is applied to pixels as they are processed with the destination array.
|
|
Note that the data is read through the plane mask and then processed.
|
|
There are 16 Boolean and 6 arithmetic operations; the default case at reset
|
|
is the replace (S -+ D) operation. The 6 arithmetic operations do not op-
|
|
erate with pixel sizes of 1 or 2 bits per pixel. For more information, see
|
|
Section 7.7, Pixel Processing, on page 7 -15.
|
|
|
|
|
|
12-195
|
|
PIXBLT Pixel Block Transfer - Linear to XY
|
|
|
|
|
|
Transparency You can enable transparency for this instruction by setting the T bit in the
|
|
CONTROL I/O register to 1. The TMS34010 checks for 0 (transparent)
|
|
pixels after it expands and processes the source data. At reset, the default
|
|
case for transparency is off.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
Interrupts This instruction can be interrupted at a word or row boundary of the desti-
|
|
nation array. When the PixBlt is interrupted, the TMS3401 0 sets the PBX
|
|
bit in the status register and then pushes the status register on the stack.
|
|
At this time, DPTCH, SPTCH, and B1 o-B14 contain intermediate values.
|
|
DADDR points to the linear address of the next word of pixels to be modi-
|
|
fied after the interrupt is processed. SADDR points to the address of the
|
|
next 32 pixels to be read from the source array after the interrupt is proc-
|
|
essed.
|
|
The PIXBLT instruction uses several I/O and B-file registers as implied op-
|
|
erands. If an interrupt service routine modifies a register that the PIXBLT
|
|
uses as an implied operand, you must restore that register to the value it had
|
|
when the routine began, before returning from the routine. (You can use
|
|
the MMFM and MMTM instructions to save and restore the B-file regis-
|
|
ters.) In order to maintain compatibility with future TMS340 devices, use
|
|
only the RETI instruction to return from an interrupt routine.
|
|
Shift Register
|
|
Transfers If the SRT bit in the DPYCTL I/O register is set, each memory read or write
|
|
initiated by the Pix Bit generates a shift register transfer read or write cycle
|
|
at the selected address. This operation can be used for bulk memory clears
|
|
or transfers (the TMS4461 VRAM supports this capability).
|
|
Machine
|
|
States See PIXBLT Instructions Timing, Section 13.4.
|
|
Status Bits N Undefined
|
|
C Undefined
|
|
Z Undefined
|
|
V If window clipping is enabled - 1 if a window violation occurs, 0 oth-
|
|
erwise; undefined if window clipping not enabled (W=002)
|
|
|
|
|
|
|
|
|
|
12-196
|
|
Pixel Block Transfer - Linear to XY PIXBLT
|
|
|
|
|
|
Examples Before executing a PIXBLT instruction, load the implied operand registers
|
|
with appropriate values. These PIXBLT examples use the following implied
|
|
operand'setup.
|
|
Register File B: I/O Registers:
|
|
SADDR (BO) = 00002004h CONVDP = 0017h
|
|
SPTCH (B1) = 00000080h PS IZE = 0004h
|
|
DADDR (B2) = 00520007h PMASK = OOOOh
|
|
DPTCH (B3) = 00000100h CONTROL = OOOOh
|
|
OFFSET (B4) = 00010000h (W=OO, T=O, PP=OOOOO)
|
|
WSTART (B5) = 0030000Ch
|
|
WEND (B6) = 00530014h
|
|
DYDX (B7) = 00030016h
|
|
Additional implied operand values are listed with each example.
|
|
For this example, assume that memory contains the following data before
|
|
instruction execution.
|
|
|
|
Linear Data
|
|
Address
|
|
02000h 3210h, 7654h, BA98h, FEDCh, 321 Oh, 7654h, BA98h, FEDCh
|
|
02080h 3210h, 7654h, BA98h, FEDCh, 321 Oh, 7654h, BA98h, FEDCh
|
|
02100h 3210h, 7654h, BA98h, FEDCh, 321 Oh, 7654h, BA98h, FEDCh
|
|
15200h to
|
|
15480h 8888h
|
|
|
|
Example 1 This example uses the replace (S -+ D) pixel processing operation. Before
|
|
instruction execution, PMASK = 7777h and CONTROL = OOOOh (T=O,
|
|
W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
Linear Data
|
|
Address
|
|
15200h 8888h, 1888h, 5432h, 9876h, DCBAh,10FEh, 5432h, 8886h
|
|
15300h 8888h, 1888h, 5432h, 9876h, DCBAh,10FEh, 5432h, 8886h
|
|
15400h 8888h, 1888h, 5432h, 9876h, DCBAh,10FEh, 5432h, 8886h
|
|
XV Addressing
|
|
X Address
|
|
y 0 0 000 0 0 0 0 0 0 0 0 000 1 111 1 1 1 1 1 1 1 1 1 111
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d 52 8 8 8 8 8 8 8 1 2 3 4 5 6 7 8 9 ABC D E F 0 1 2 3 4 5 8 8 8 8
|
|
d
|
|
r 53 8 8 8 8 8 8 8 1 2 3 4 5 6 7 8 9 ABC D E F 0 1 2 3 4 5 8 8 8 8
|
|
e
|
|
s 548888888123456789ABCDEF0123458888
|
|
s
|
|
|
|
|
|
|
|
|
|
12-197
|
|
PIXBLT Pixel Block Transfer - Linear to XY
|
|
|
|
|
|
Example 2 This example uses the (D subs S) -+ D pixel processing operation. Before
|
|
instruction execution, PMASK = OOOOh and CONTROL = 4COOh (T=O,
|
|
W=OO, PP=1 0011).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
Y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 111 1 111
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d 52 8 8 8 8 8 8 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 8 7 6 5 4 3 2 8 8 8
|
|
d
|
|
r 53 8 8 8 8 8 8 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 8 7 6 5 4 3 2 8 8 8
|
|
e
|
|
s ~88888887654321000000008765432888
|
|
s
|
|
|
|
Example 3 This example uses transparency with the (D subs S) -+ D pixel processing
|
|
operation. Before instruction execution, PMASK = OOOOh and CONTROL
|
|
= 4C20h (T=1, W=OO, PP=1 0011).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
Y 0 0 0 0 0 0 0 0 000 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 111
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d 52 8 8 8 8 8 8 8 7 6 5 4 3 2 1 8 8 8 8 8 8 8 8 8 7 6 5 4 3 2 8 8 8
|
|
d
|
|
r 53 8 8 8 8 8 8 8 7 6 5 4 3 2 1 8 8 8 8 8 8 8 8 8 7 6 5 4 3 2 8 8 8
|
|
e
|
|
s ~88888887654321888888888765432888
|
|
s
|
|
|
|
Example 4 This example uses window operation 3 (the destination is clipped). Before
|
|
instruction execution, PMASK = OOOOh and CONTROL = OOCOh (T=O,
|
|
W=11, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
Y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 111 111
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d 52 8 8 8 8 8 8 8 8 8 8 8 8 6 7 8 9 ABC 0 E 8 8 8 8 8 8 8 8 8 8 8
|
|
d
|
|
r 53 8 8 8 8 8 8 8 8 8 8 8 8 6 7 8 9 ABC 0 E 8 8 8 8 8 8 8 8 8 8 8
|
|
e
|
|
s ~88888888888888888888888888888888
|
|
s
|
|
|
|
|
|
|
|
|
|
12-198
|
|
Pixel Block Transfer - Linear to XY PIXBLT
|
|
|
|
|
|
Example 5 This example uses plane masking (the most significant bit is masked). Be-
|
|
fore instruction execution, PMASK = 8888h and CONTROL = OOOOh
|
|
(T=O, W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
Y 000 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 111
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d 52 8 8 8 8 8 8 8 9 ABC 0 E F 8 9 ABC 0 E F 8 9 ABC 0 E 8 8 8
|
|
d
|
|
r 53 8 8 8 8 8 8 8 9 ABC 0 E F 8 9 ABC 0 E F 8 9 ABC 0 E 8 8 8
|
|
e
|
|
s M 88888889ABCDEF89ABCDEF89ABCDE888
|
|
s
|
|
|
|
|
|
|
|
|
|
12-199
|
|
PIXBLT Pixel Block Transfer - XY to Linear
|
|
|
|
|
|
Syntax PIXBLT XV, L
|
|
Execution XY pixel array -+ linear pixel array (with processing)
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
10000 0 0000 o 0
|
|
|
|
Description The PIXBLT instruction transfers and processes a source pixel array with a
|
|
destination pixel array.
|
|
This instruction operates on two-dimensional arrays of pixels using an XY
|
|
starting address for the source pixel array and a linear address for the des-
|
|
tination array. As the PixBlt proceeds, the source pixels are combined with
|
|
the corresponding destination pixels based on the selected graphics oper-
|
|
ations.
|
|
Note that the parameters are entered exactly as shown in the syntax; that
|
|
is, the instruction is entered as PIXBLT XY, L. The first parameter, XV, in-
|
|
dicates that the starting address of the source array is an XY address; the
|
|
second parameter, L, indicates that the starting address of the destination
|
|
array is a linear address.
|
|
The following set of implied operands govern the operation of the in-
|
|
struction and define the source and destination arrays.
|
|
Implied
|
|
Operands B File Registers
|
|
Register Name Format Description
|
|
BOt SADDR XY Source pixel array starting address
|
|
B1 SPTCH linear Source pixel array pitch
|
|
B2t DADDR linear Destination pixel array starting address
|
|
B3 DPTCH linear Destination pixel array pitch
|
|
B4 OFFSET linear Screen origin (0,0)
|
|
B7 DYDX XY Pixel array dimensions (rows:columns)
|
|
B1 Q-B14t Reserved registers
|
|
I/O Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOOOOOBOh CONTROL PP - Pixel processing operations (22 options)
|
|
T - Transparency operation
|
|
PBH - PixBlt horizontal direction
|
|
PBV - PixBlt vertical direction
|
|
COOO0130h CONVSP XY-to-linear conversion (source pitch)
|
|
Used for XY operations
|
|
COOO0140h CONVDP XY -to-linear conversion (destination pitch)
|
|
Used for XY operations
|
|
COOO0150h PSIZE Pixel size (1,2,4,8,16)
|
|
COOO0160h PMASK Plane mask - pixel format
|
|
t These registers are changed by PIXBLT execution.
|
|
|
|
|
|
|
|
|
|
12-200
|
|
Pixel Block Transfer - XY to Linear PIXBLT
|
|
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
PIXBLT instruction. To ensure that this register contains the correct value
|
|
for execution, you may want to follow the write to that location with an
|
|
instruction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
Source Array The source pixel array for the processing operation is defined by the con-
|
|
tents of the SADDR, SPTCH, CONVSP, OFFSET, and DYDX registers:
|
|
|
|
• At the outset of the instruction, SADDR contains the XV address of
|
|
the pixel with the lowest address in the array; it is used with OFFSET
|
|
and CONVSP to calculate the linear address of the starting location
|
|
of the array. During instruction execution, SADDR points to the next
|
|
pixel (or word of pixels) to be accessed from the source array. When
|
|
the block transfer is complete, SADDR points to the linear address
|
|
of the first pixel on the next row of pixels that would have been
|
|
moved had the block transfer continued.
|
|
|
|
• SPTCH contains the linear difference in the starting addresses of ad-
|
|
jacent rows of the source array (typically this is the screen pitch).
|
|
SPTCH must be a power of two (greater than or equal to 16) unless
|
|
only one line is moved and CONVSP must be set to correspond to the
|
|
SPTCH value.
|
|
|
|
• CONVSP is determined by taking the LMO of the SPTCH register; this
|
|
value is used for the XY calculations involved in XY addressing, win-
|
|
dow clipping and corner adjust.
|
|
|
|
• DYDX specifies the dimensions, in pixels, of both the source and
|
|
destination arrays. The DY portion of DYDX contains the number of
|
|
rows in the array, while the OX portion contains the number of col-
|
|
umns.
|
|
Destination
|
|
Array The location of the destination pixel array is defined by the contents of the
|
|
DADDR, DPTCH, DYDX, and (potentially) CONVDP registers:
|
|
|
|
• At the outset of the instruction, DADDR contains the linear address
|
|
of the pixel with the lowest address in the array. During instruction
|
|
execution, DADDR points to the next pixel (or word of pixels) to be
|
|
modified in the destination array. When the block transfer is com-
|
|
plete, DADDR points to the linear address of the first pixel on the
|
|
next row of pixels that would have been moved had the block trans-
|
|
fer continued.
|
|
|
|
• DPTCH contains the linear difference in the starting addresses of ad-
|
|
jacent rows of the destination array. DPTCH must be a multiple of
|
|
16. For window clipping or corner adjust, DPTCH must be a power
|
|
of two and CONVDP must be set to correspond to the DPTCH value.
|
|
|
|
|
|
|
|
|
|
12-201
|
|
PIXBLT Pixel Block Transfer - XY to Linear
|
|
|
|
|
|
• CONVDP is determined by taking the LMO of the DPTCH register;
|
|
this value is used for the XY calculations involved in window clipping
|
|
and corner adjust.
|
|
|
|
• DYDX specifies the dimensions of both the source and destination
|
|
arrays in pixels. The DY portion of DYDX contains the number of
|
|
rows in the array; the DX portion contains the number of columns.
|
|
|
|
Corner Adjust The PBH and PBV bits in the CONTROL I/O register govern the direction
|
|
of the PixBIt. If the source and destination arrays overlap, then PBH and
|
|
PBV should be set to prevent any portion of the source array from being
|
|
overwritten before it is moved. This PixBlt performs the cornel' adjust
|
|
function automatically under the control of the PBH and PBV bits. If
|
|
PBV=1, DPTCH must be a power of two and CONVDP must be valid. The
|
|
SADDR and DADDR registers should be set to correspond to the appro-
|
|
priate format address of the first pixel on the first line of the source (XY)
|
|
and destination (linear) arrays, respectively.
|
|
Window
|
|
Checking Window operations are not enabled for this instruction. The contents of the
|
|
WSTART and WEN D registers are ignored.
|
|
Pixel
|
|
Processing You can select a pixel processing option to use with this instruction by
|
|
setting the PPOP bits in the CONTROL register. The pixel processing op-
|
|
eration is applied to pixels as they are processed with the destination array.
|
|
Note that the data is read through the plane mask and then processed.
|
|
There are 16 Boolean and 6 arithmetic operations; the default case at reset
|
|
is the S -+ D operation. The 6 arithmetic operations do not operate with
|
|
pixel sizes of one or two bits per pixel. For more information, see Section
|
|
7.7, Pixel Processing, on page 7-15.
|
|
Transparency You can enable transparency for this instruction by setting the T bit in the
|
|
CONTROL I/O register to 1. The TMS34010 checks for 0 (transparent)
|
|
pixels after it expands and processes the source data. At reset, the default
|
|
case for transparency is off.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
Interrupts This instruction can be interrupted at a word or row boundary of the desti-
|
|
nation array. When the PixBlt is interrupted, the TMS34010 sets the PBX
|
|
bit in the status register and then pushes the status register on the stack.
|
|
At this time, DPTCH, SPTCH, and B1 o-B14 contain intermediate values.
|
|
DADDR points to the linear address of the next word of pixels to be modi-
|
|
fied after the interrupt is processed. SADDR points to the address of the
|
|
next 32 pixels to be read from the source array after the interrupt is proc-
|
|
essed.
|
|
The PIXBLT instruction uses several I/O and B-file registers as implied op-
|
|
erands. If an interrupt service routine modifies a register that the PIXBLT
|
|
uses as an implied operand, you must restore that register to the value it had
|
|
when the routine began, before returning from the routine. (You can use
|
|
the MMFM and MMTM instructions to save and restore the B-file regis-
|
|
|
|
|
|
|
|
12-202
|
|
Pixel Block Transfer - XY to Linear PIXBLT
|
|
|
|
|
|
ters.) In order to maintain compatibility with future TMS340 devices, use
|
|
only the RETI instruction to return from an interrupt routine.
|
|
Shift Register
|
|
Transfers If the SRT bit in the DPYCTL I/O register is set, each memory read or write
|
|
initiated by the PixBlt generates a shift register transfer read or write cycle
|
|
at the selected address. This operation can be used for bulk memory clears
|
|
or transfers (not all VRAMs support this capability).
|
|
Machine
|
|
States See PIXBLT Instructions Timing, Section 13.4.
|
|
Status Bits N Undefined
|
|
C Undefined
|
|
Z Undefined
|
|
V Undefined
|
|
Examples Before executing a PIXBLT instruction, load the implied operand registers
|
|
with appropriate values. These PIXBLT examples use the following implied
|
|
operand setup.
|
|
Register File B: I/O Registers:
|
|
SADDR (BO) = 00400001 h CONVSP = 0018h
|
|
SPTCH (B1) = 00000080h PSIZE = 0004h
|
|
DADDR (B2) = 00002228h
|
|
DPTCH (B3) = 00000080h
|
|
OFFSET (B4) = OOOOOOOOh
|
|
DYDX (B7) = 0002000Dh
|
|
|
|
Additional implied operand values are listed with each example.
|
|
For this example, assume that memory contains the following data before
|
|
instruction execution.
|
|
Linear Data
|
|
Address
|
|
02000h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02080h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02100h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02180h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02200h xxxxh, xxxxh, FFxxh, FFFFh, FFFFh, xFFFh, xxxxh, xxxxh
|
|
02280h xxxxh, xxxxh, FFxxh, FFFFh, FFFFh, xFFFh, xxxxh, xxxxh
|
|
02300h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
|
|
|
|
|
|
|
|
12-203
|
|
PIXBLT Pixel Block Transfer - XY to Linear
|
|
|
|
|
|
Example 1 This example uses the replace (S -+ D) pixel processing operation. Before
|
|
instruction execution, PMASK = OOOOh and CONTROL = OOOOh (T=O,
|
|
W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
Linear Data
|
|
Address
|
|
02000h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02080h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02100h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02180h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02200h xxxxh, xxxxh, OOxxh, 1110h, 2221 h, x332h, xxxxh, xxxxh
|
|
02280h xxxxh, xxxxh, OOxxh, 1110h, 2221 h, x332h, xxxxh, xxxxh
|
|
02300h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
|
|
Example 2 This example uses the Os -+ D pixel processing operation. Before in-
|
|
struction execution, PMASK = OOOOh and CONTROL = OCOOh (T=O,
|
|
W=OO, PP=00011).
|
|
After instruction execution, memory contains the following values:
|
|
|
|
Linear Data
|
|
Address
|
|
02000h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02080h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02100h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02180h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02200h xxxxh, xxxxh, OOxxh, OOOOh, OOOOh, xOOOh, xxxxh, xxxxh
|
|
02280h xxxxh, xxxxh, OOxxh, OOOOh, OOOOh, xOOOh, xxxxh, xxxxh
|
|
02300h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
|
|
Example 3 This example uses transparency. Before instruction execution, PMASK =
|
|
OOOOh and CONTROL = 0200h (T=1, W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
Linear Data
|
|
Address
|
|
02000h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02080h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02100h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02180h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02200h xxxxh, xxxxh, FFxxh, 111 Fh, 2221 h, x332h, xxxxh, xxxxh
|
|
02280h xxxxh, xxxxh, FFxxh, 111 Fh, 2221 h, x332h, xxxxh, xxxxh
|
|
02300h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh,xxxxh
|
|
|
|
|
|
|
|
|
|
12-204
|
|
Pixel Block Transfer - XY to Linear PIXBLT
|
|
|
|
|
|
Example 4 This example uses plane masking
|
|
the two MSBs of each pixel are masked. Before instruction execution,
|
|
PMASK = CCCCh and CONTROL = OOOOh (T=O, W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
Linear Data
|
|
Address
|
|
02000h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02080h OOOxh, 1111 h, 2222h, xx33h, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02100h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02180h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
02200h xxxxh, xxxxh, CCxxh, DDDCh,EEEDh, xFFEh, xxxxh, xxxxh
|
|
02280h xxxxh, xxxxh, CCxxh, DDDCh,EEEDh, xFFEh, xxxxh, xxxxh
|
|
02300h xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh, xxxxh
|
|
|
|
|
|
|
|
|
|
12-205
|
|
PIXBLT Pixel Block Transfer - XY to XY
|
|
|
|
|
|
Syntax PIXBLT XV, XV
|
|
Execution XY pixel array ~ XY pixel array (with processing)
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 432 o
|
|
I0 0 0 0 0 000 o 0
|
|
|
|
Description The PIXBLT instruction transfers and processes a source pixel array with a
|
|
destination pixel array.
|
|
This instruction operates on two-dimensional arrays of pixels using XY
|
|
starting addresses for both the source and destination pixel arrays. As the
|
|
PixBlt proceeds, the source pixels are combined with the corresponding
|
|
destination pixels based on the selected graphics operations.
|
|
Note that the parameters are entered exactly as shown in the syntax; that
|
|
is, the instruction is entered as PIXBLT XY, XY. The first XV indicates that
|
|
the starting address of the source array is an XV address; the second XV
|
|
indicates that the starting address of the destination array is also an XV
|
|
address.
|
|
The following set of implied operands govern the operation of the in-
|
|
struction and define the source and destination arrays.
|
|
Implied
|
|
Operands B File Registers
|
|
Register Name Format Description
|
|
BOt SADDR XY Source pixel array starting address
|
|
B1 SPTCH Linear Source pixel array pitch
|
|
B2t:1: DADDR XY Destination pixel array starting address
|
|
B3 DPTCH Linear Destination pixel array pitch
|
|
B4 OFFSET Linear Screen origin (0,0)
|
|
B5 WSTART XY Window starting corner
|
|
B6 WEND XY Window ending corner
|
|
BTl: DYDX XY Pixel array dimensions (rows:columns)
|
|
B1o-B14t Reserved registers
|
|
I/O Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOOOOBOh CONTROL PP - Pixel processing operations (22 options)
|
|
W - Window clipping or pick operation
|
|
T - Transparency operation
|
|
PBH- PixBlt horizontal direction
|
|
PBV- PixBlt vertical direction
|
|
COOO0130h CONVSP XY -to-linear conversion (source pitch)
|
|
COOO0140h CONVDP XY -to-linear conversion (destination pitch)
|
|
COOO0150h PSIZE Pixel size (1,2,4,8,16)
|
|
COOO0160h PMASK Plane mask - pixel format
|
|
t These registers are changed by PIXBLT execution.
|
|
:t: Used for common rectangle function with window pick.
|
|
|
|
|
|
|
|
12-206
|
|
Pixel Block Transfer - XY to XY PIXBLT
|
|
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
PIXBLT instruction. To ensure that this register contains the correct value
|
|
for execution, you may want to follow the write to that location with an
|
|
instruction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
Source Array The source pixel array for the processing operation is defined by the con-
|
|
tents of the SADDR, SPTCH, CONVSP, OFFSET, and DYDX registers:
|
|
|
|
• At the outset of the instruction, SADDR contains the XV address of
|
|
the pixel with the lowest address in the array; it is used with OFFSET
|
|
and CONVSP to calculate the linear address of the starting location
|
|
of the array. During instruction execution, SADDR points to the next
|
|
pixel (or word of pixels) to be read from the source array. When the
|
|
block transfer is complete, SADDR points to the linear address of
|
|
the first pixel on the next row of pixels that would have been moved
|
|
had the block transfer continued.
|
|
|
|
• SPTCH contains the linear difference in the starting addresses of ad-
|
|
jacent rows of the source array (typically this is the screen pitch).
|
|
SPTCH must be a power of two (greater than or equal to 16) and
|
|
CONVSP must be set to correspond to the SPTCH value.
|
|
|
|
• CONVSP is determined by taking the LMO of the SPTCH register; this
|
|
value is used for the XY calculations involved in XY addressing, win-
|
|
dow clipping and corner adjust.
|
|
|
|
• DYDX specifies the dimensions of both the source and destination
|
|
arrays in pixels. The DY portion of DYDX contains the number of
|
|
rows in the array, while the OX portion contains the number of col-
|
|
umns.
|
|
Destination
|
|
Array The location of the destination pixel array is defined by the contents of the
|
|
DADDR, DPTCH, CONVDP, OFFSET, and DYDX registers:
|
|
|
|
• At the outset of the instruction, DADDR contains the XV address of
|
|
the pixel with the lowest address in the array; it is used with OFFSET
|
|
and CONVDP to calculate the linear address of the starting location
|
|
of the array. During instruction execution, DAD 0 R points to the next
|
|
pixel (or word of pixels) to be read from the destination array. When
|
|
the block transfer is complete, DADDR points to the linear address
|
|
of the first pixel on the next row of pixels that would have been
|
|
moved had the block transfer continued.
|
|
|
|
• DPTCH contains the linear difference in the starting addresses of ad-
|
|
jacent rows of the destination array (typically this is the screen pitch).
|
|
DPTCH must be a power of two (greater than or equal to 16) and
|
|
CONVDP must be set to correspond to the DPTCH value.
|
|
|
|
|
|
|
|
|
|
12-207
|
|
PIXBLT Pixel Block Transfer - XY to XY
|
|
|
|
|
|
|
|
• CONVDP is determined by taking the LMO of the DPTCH register;
|
|
this value is used for the XY calculations involved in XY addressing,
|
|
window clipping and corner adjust.
|
|
|
|
• DYDX specifies the dimensions of both the source and destination
|
|
arrays in pixels. The DY portion of DYDX contains the number of
|
|
rows in the array, while the OX portion contains the number of col-
|
|
umns.
|
|
|
|
Window
|
|
Checking You can use window checking with this instruction by setting the W bits
|
|
in the CONTROL register to the desired value. If you select window
|
|
checking mode 1,2, or 3, the WSTART and WEND registers define the XY
|
|
starting and ending corners of a rectangular window.
|
|
o No windowing. The entire pixel array is drawn and the WVP and V bits
|
|
are unaffected.
|
|
1 Window hit. No pixels are drawn. The V bit is set to 0 if any portion of
|
|
the destination array lies within the window; otherwise, the V bit is set
|
|
to 1.
|
|
If the V bit is set to 0, the DADDR and DYDX registers are modified to
|
|
correspond to the common rectangle formed by the intersection of the
|
|
destinatio.n array with the rectangular window. DADDR is set to the XY
|
|
address of the pixel in the starting corner of the common rectangle.
|
|
DYDX is set to the X and Y dimensions of the common rectangle.
|
|
If the V bit is set to 1, the array lies entirely outside the window, and the
|
|
values of DADDR and DYDX are indeterminate.
|
|
2 Window miss. If the array lies entirely within the active window, it is
|
|
drawn and the V bit is set to 0; otherwise, no pixels are drawn, the V and
|
|
WVP bits are set to 1, and the instruction is aborted.
|
|
3 Window clip. The source and destination arrays are preclipped to the
|
|
window dimensions. Only those pixels that lie within the common rec-
|
|
tangle (corresponding to the intersection of the specified array and the
|
|
window) are drawn. If any preclipping is required, the V bit is set to 1.
|
|
|
|
Pixel
|
|
Processing You can select a pixel processing option to use with this instruction by
|
|
setting the PPOP bits in the CONTROL register. The pixel processing op-
|
|
eration is applied to pixels as they are processed with the destination array.
|
|
Note that the data is read through the plane mask and then processed.
|
|
There are 16 Boolean and 6 arithmetic operations; the default case at reset
|
|
is the rep/ace (S -+ D) operation. The 6 arithmetic operations do not op-
|
|
erate with pixel sizes of one or two bits per pixel. For more information, see
|
|
Section 7.7, Pixel Processing, on page 7-15.
|
|
Corner Adjust The PBH and PBV bits in the CONTROL I/O register govern the direction
|
|
of the PixBlt. If the source and destination arrays overlap, then PBH and
|
|
PBV should be set to prevent any portion of the source array from being
|
|
overwritten before it is moved. This PixBlt performs the corner adjust
|
|
|
|
|
|
12-208
|
|
Pixel B lock Transfer - XY to XY PIXBLT
|
|
|
|
|
|
function automatically under the control of the PBH and PBV bits. The
|
|
SADDR and DADDR registers should be set to correspond to the appro-
|
|
priate format address of the first pixel on the first line of the source (XY)
|
|
and destination (XY) arrays, respectively.
|
|
Transparency You can enable transparency for this instruction by setting the T bit in the
|
|
CONTROL I/O register to 1. The TMS34010 checks for 0 (transparent)
|
|
pixels after it expands and processes the source data. At reset, the default
|
|
case for transparency is off.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
Interrupts This instruction can be interrupted at a word or row boundary of the desti-
|
|
nation array. When the PixBlt is interrupted, the TMS3401 0 sets the PBX
|
|
bit in the status register and then pushes the status register on the stack.
|
|
At this time, DPTCH, SPTCH, and B1 o-B14 contain intermediate values.
|
|
DADDR points to the linear address of the next word of pixels to be modi-
|
|
fied after the interrupt is processed. SADDR points to the address of the
|
|
next 32 pixels to be read from the source array after the interrupt is proc-
|
|
essed.
|
|
The PIXBLT instruction uses several I/O and B-file registers as implied op-
|
|
erands. If an interrupt service routine modifies a register that the PIXBLT
|
|
uses as an implied operand, you must restore that register to the value it had
|
|
when the routine began, before returning from the routine. (You can use
|
|
the MMFM and MMTM instructions to save and restore the B-file regis-
|
|
ters.) In order to maintain compatibility with future TMS340 devices, use
|
|
only the RETI instruction to return from an interrupt routine.
|
|
Shift Register
|
|
Transfers If the SRT bit in the DPYCTL I/O register is set, each memory read or write
|
|
initiated by the PixBlt generates a shift register transfer read or write cycle
|
|
at the selected address. This operation can be used for bulk memory clears
|
|
or transfers. (Not all VRAMs support this capability.)
|
|
Machine
|
|
States See Section 13.4, PIXBLT Instructions Timing.
|
|
Status Bits NUn affected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V If window clipping is enabled - 1 if a window violation occurs, 0 oth-
|
|
erwise; unaffected if window clipping not enabled
|
|
|
|
|
|
|
|
|
|
12-209
|
|
PIXBLT Pixel Block Transfer - XY to XY
|
|
|
|
|
|
Examples Before executing a PIXBL T instruction, load the implied operand registers
|
|
with appropriate values. These PIXBLT examples use the following implied
|
|
operand setup.
|
|
Register File B: I/O Registers:
|
|
SADDR (BO) = 00200004h CONVSP = 0016h
|
|
SPTCH (B1) = 00000200h CONVDP = 0016h
|
|
DADDR (B2) = 00410004h PS IZE = 0004h
|
|
DPTCH (B3) = 00000200h PMASK = OOOOh
|
|
OFFSET(B4) = 00010000h CONTROL = OOOOh
|
|
WSTART(B5) = 00300009h (W=OO, T=O, PP=OOOOO)
|
|
WEN 0 (B6) = 00420012h
|
|
DYDX (B7) = 00030016h
|
|
Additional implied operand values are listed with each example. For this
|
|
example, assume that memory contains the following data before in-
|
|
struction execution.
|
|
Linear Data
|
|
Address
|
|
14000h 3210h, 7654h, OBA98hFEDCh, 321 Oh, 7654h, OBA98hFEDCh
|
|
14200h 3210h, 7654h, OBA98hFEDCh, 321 Oh, 7654h, OBA98hFEDCh
|
|
14400h 3210h, 7654h, OBA98hFEDCh, 321 Oh, 7654h, OBA98hFEDCh
|
|
18200h to
|
|
18680h 3333h
|
|
|
|
Example 1 This example uses the replace (S -+D) pixel processing operation. Before
|
|
instruction execution, PMASK = OOOOh and CONTROL = OOOOh (T=O,
|
|
W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
|
|
Linear Data
|
|
Address
|
|
18200h 3333h, 7654h, BA98h, FEDCh, 321 Oh, 7654h, 3398h, 3333h
|
|
|
|
18400h 3333h, 7654h, BA98h, FEDCh, 321 Oh, 7654h, 3398h, 3333h
|
|
|
|
18600h 3333h, 7654h, BA98h, FEDCh, 321 Oh, 7654h, 3398h, 3333h
|
|
XV Addressing
|
|
X Address
|
|
Y 00 0 0 0 0 00 0 0 00 00 0 0 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d 41 3 3 3 3 4 5 6 7 8 9 ABC 0 E F 0 1 2 3 4 5 6 7 8 9 3 3 3 3 3 3
|
|
d
|
|
r 42 3333456789ABCDE F01 23456789333333
|
|
e
|
|
s 433333456789ABCDEF0123456789333333
|
|
s
|
|
|
|
|
|
|
|
|
|
12-210
|
|
Pixel Block Transfer - XY to XY PIXBLT
|
|
|
|
|
|
Example 2 This example uses the (D adds S) -+ D pixel processing operation. Before
|
|
instruction execution, PMASK = OOOOh and CONTROL = 4400h (T=O,
|
|
W=OO, PP=1 0001).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
y 000 0 0 0 0 0 0 0 0 0 0 000 1 1 1 1 1 1 1 1 1 1 1 1 1 111
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d ~ 3333789ABCDEFFFF3456789ABC333333
|
|
d
|
|
r 42 3 3 3 3 7 8 9 ABC D E F F F F 3 4 5 6 7 8 9 ABC 3 3 3 3 3 3
|
|
e
|
|
s 43 3 3 3 3 7 8 9 ABC D E F F F F 3 4 5 6 7 8 9 ABC 3 3 3 3 3 3
|
|
s
|
|
|
|
Example 3 This example uses transparency and the (D SUBS S) -+ D pixel processing
|
|
operation. Before instruction execution, PMASK = OOOOh and CONTROL
|
|
= 4C20h (T=1, W=OO, PP=1 0011).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
Y 000 0 0 0 0 0 0 0 0 0 0 000 1 1 1 1 1 1 1 1 1 1 1 1 1 111
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d 41 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 3 3 3 3 3 3 3 3 3 3 3 3 3
|
|
d
|
|
r 4233333333333333333213333333333333
|
|
e
|
|
s 4333333333333333333213333333333333
|
|
s
|
|
|
|
Example 4 This example uses window operation 3 (the destination is clipped). Before
|
|
instruction execution, PMASK = OOOOh and CONTROL = OOCOh (T=O,
|
|
W=11, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
Y 000 0 0 0 0 000 000 000 1 1 1 1 1 1 1 1 1 1 1 1 1 111
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d 41 3 3 3 3 3 3 3 3 3 9 ABC D E F 0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3
|
|
d
|
|
r 423333333339ABCDEF0123333333333333
|
|
e
|
|
s ~ 33333333333333333333333333333333
|
|
s
|
|
|
|
|
|
|
|
|
|
12-211
|
|
PIXBLT Pixel Block Transfer - XY to XY
|
|
|
|
|
|
Example 5 This example uses plane masking
|
|
the third least significant bit is masked. 8efore instruction execution,
|
|
PMASK = 5555h and CONTROL = OOOOh (T=O, W=OO, PP=OOOOO).
|
|
After instruction execution, memory contains the following values:
|
|
X Address
|
|
Y 0 0 000 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 111 1 1 1 111 1
|
|
0123456789ABCDEF0123456789ABCDEF
|
|
A
|
|
d 41 3 3 3 3 1 1 3 3 9 9 8 8 9 9 8 8 1 1 3 3 1 1 3 3 9 9 3 3 3 3 3 3
|
|
d
|
|
r 42 33331133998899881133113399333333
|
|
e
|
|
s 4333331133998899881133113399333333
|
|
s
|
|
|
|
|
|
|
|
|
|
12-212
|
|
Pixel Transfer - Register to Indirect PIXT
|
|
|
|
|
|
Syntax PIXT Rs, *Rd
|
|
Execution pixel in Rs -+ * Rd
|
|
(Note that Rd contains a linear address.)
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
1 1 0 01 Rs R Rd
|
|
|
|
Description This PIXT instruction transfers a pixel from a register to memory. The
|
|
source pixel is the 1, 2, 4, 8, or 16 LSBs of the source register, depending
|
|
on the pixel size specified in the PSIZE I/O register. The destination register
|
|
contains a linear address; the source pixel is transferred to this memory lo-
|
|
cation.
|
|
Rs and Rd must be in the same register file.
|
|
Implied
|
|
Operands I/O Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOOOOOBOh CONTROL PP- Pixel processing operations (22 options)
|
|
T - Transparency operation
|
|
COOO0150h PSIZE Pi)<el size (1,2,4,6,8,16)
|
|
COOO0160h PMASK Plane mask - pixel format
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
PIXT instruction. To ensure that this register contains the correct value for
|
|
execution, you may want to follow the write to that location with an in-
|
|
struction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
Pixel
|
|
Processing You can select a pixel processing option to use with this instruction by
|
|
setting the PPOP bits in the CONTROL register. The pixel processing op-
|
|
eration is applied to the pixel as it is transferred to the destination location.
|
|
The default case at reset is the replace option. For more information, see
|
|
Section 7.7, Pixel Processing, on page 7 -15.
|
|
Window
|
|
Checking Window checking cannot be used with this instruction. The W bits are
|
|
ignored.
|
|
Transparency You can enable transparency for this instruction by setting the T bit in the
|
|
CONTROL I/O register to 1. The TMS34010 checks for 0 (transparent)
|
|
source pixels after it processes the source data. At reset, the default case
|
|
for transparency is off.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
|
|
|
|
|
|
|
|
12-213
|
|
PIXT Pixel Transfer - Register to Indirect
|
|
|
|
|
|
Machine Pixel Processing Operation
|
|
States
|
|
PSIZE Replace Boolean ADD ADDS SUB SUBS MIN/MAX
|
|
1,2,4,8 2+(3),8 4+(3),10 ~+(3),11 ~+(3),11 5+(3),12 6+(3),11 5+(3),10
|
|
16 2+(1 ),6 4+(1 ),8 4+(1 ),8 5+(1 ),9 5+(1 ),9 6+(1),10 5+(1 ),9
|
|
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples PIXT AD, *Al
|
|
|
|
Before After
|
|
AO A1 @20500h FSIZE PP T PMASK @20500h
|
|
1) OOOOFFFFh 00020500h OOOOh 0001h 00000 0 OOOOh 0001h
|
|
1) OOOOFFFFh 00020500h OOOOh 0002h 00000 0 OOOOh 0003h
|
|
1) OOOOFFFFh 00020500h OOOOh 0004h 00000 0 OOOOh OOOFh
|
|
1) OOOOFFFFh 00020500h OOOOh 0008h 00000 0 OOOOh OOFFh
|
|
1) OOOOFFFFh 00020500h OOOOh 0010h 00000 0 OOOOh FFFFh
|
|
1) 00000006h 00020508h OOOOh 0004h 00000 0 OOOOh 0600h
|
|
2) 00000006h 00020508h 0300h 0004h 01010 0 OOOOh 0500h
|
|
3) 00000006h 00020508h 0100h 0004h 00001 0 OOOOh OOOOh
|
|
4) 00000006h 00020508h 0100h 0004h 00001 1 OOOOh 0100h
|
|
5) 00000006h 00020508h OOOOh 0004h 00000 0 AAAAh 0400h
|
|
Notes:
|
|
1) S replaces 0
|
|
2) (S XOR D) replaces 0
|
|
3) (S AND D) = 0, transparency is off, D is replaced
|
|
4) (S + D) = 0, transparency is on, 0 is not replaced
|
|
5) S replaces unmasked bits of 0
|
|
|
|
|
|
|
|
|
|
12-214
|
|
Pixel Transfer - Register to Indirect XY PIXT
|
|
|
|
|
|
Syntax PIXT Rs, *Rd.XV
|
|
(Note that Rd contains an XV address.)
|
|
Execution pixel in Rs -+ * Rd.XY
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I1 0 0 0 Rs R Rd
|
|
|
|
Description This PIXT instruction transfers a pixel from a register to memory. The
|
|
source pixel is the 1, 2, 4, 8, or 16 LSBs of the source register, depending
|
|
on the pixel size specified in the PSIZE I/O register. The destination register
|
|
contains an XY address; the X value occupies the 16 LSBs of the register
|
|
and the Y value occupies the 16 MSBs. The source pixel is moved to the
|
|
XY address specified in Rd.
|
|
Rs and Rd must be in the same register file.
|
|
Implied
|
|
Operands B File Registers
|
|
Register Name Format Description
|
|
B3 DPTCH Linear Destination pitch
|
|
B4 OFFSET Linear Screen origin (0,0)
|
|
B5 WSTART XY Window starting corner
|
|
B6 WEND XY Window ending corner
|
|
I/O Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOOOOOBOh CONTROL PP- Pixel processing operations (22 options)
|
|
W -Window clipping or pick operation
|
|
T - Transparency operation
|
|
COOO0140h CONVDP XY-to-linear conversion (destination pitch)
|
|
COOO0150h PSIZE Pixel size (1,2,4,8,16)
|
|
COOO0160h PMASK Plane mask - pixel format
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
PIXT instruction. To ensure that this register contains the correct value for
|
|
execution, you may want to follow the write to that location with an in-
|
|
struction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
Window
|
|
Checking You can use window checking with this instruction by setting the W bits
|
|
in the CONTROL register to the desired value. If you select window
|
|
checking mode 1, 2, or 3, the WSTART and WEND registers define the XY
|
|
starting and ending corners of a rectangular window. When an attempt is
|
|
made to write a pixel inside or outside a window, the results depend on the
|
|
selected window checking mode:
|
|
|
|
|
|
|
|
|
|
12-215
|
|
PIXT Pixel Transfer - Register to Indirect XY
|
|
|
|
|
|
o No window checking. The pixel is drawn and the WVP and V bits are
|
|
unaffected.
|
|
1 Window hit. No pixels are drawn. The V bit is set to 0 if the pixel lies
|
|
within the window; otherwise, it is set to 1 .
|
|
2 Window miss. If the pixel lies outside the window, the V and WVP bits
|
|
are set to 1 and the instruction is aborted (no pixels are drawn). Other-
|
|
wise, the pixel is drawn and the V bit is set to o.
|
|
3 Window clip. If the pixel lies outside the window, the V bit is set to 1
|
|
and the instruction is aborted (no pixels are drawn). Otherwise, the pixel
|
|
is drawn and the V bit is set to O.
|
|
For more information, see Section 7.10, Window Checking, on page 7 -26.
|
|
Pixel
|
|
Processing You can select a pixel processing option to use with this instruction by
|
|
setting the PPOP bits in the CONTROL register. The pixel processing op-
|
|
eration is applied to the pixel as it is transferred to the destination location.
|
|
The default case at reset is the replace option. For more information, see
|
|
Section 7.7, Pixel Processing, on page 7 -1 5.
|
|
Transparency You can enable transparency for this instruction by setting the T bit in the
|
|
CONTROL I/O register to 1. The TMS34010 checks for 0 (transparent)
|
|
source pixels after it processes the source data. At reset, the default case
|
|
for transparency is off.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
Machine
|
|
States
|
|
Pixel Processing Operation Window
|
|
Violation
|
|
PSIZE Replace Boolean ADD ADDS SUB SUBS MIN/MAX W=1 W=2 W=3
|
|
1,2.4.8 4+(3),10 6+(3),12 6+(3),12 7+(3),13 7+(3),13 8+(3),14 7+(3),13 6,9 6,9 4.7
|
|
16 4+{1 ),8 6+(1),10 6+(1),10 7+(1),11 7+(1),11 8+(1),12 7+(1),11 6,9 6.9 4,7
|
|
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V 1 if the pixel lies outside the window and W=1, W=2, or W=3, 0 oth-
|
|
erwise. Unaffected if W=O.
|
|
|
|
|
|
|
|
|
|
12-216
|
|
Pixel Transfer - Register to Indirect XY PIXT
|
|
|
|
|
|
Examples 8efore executing a PIXT instruction, load the implied operand registers with
|
|
appropriate values. These PIXT examples use the following implied oper-
|
|
and setup.
|
|
Register File B: I/O Registers:
|
|
DPTCH (83) = 00000800h CONVDP = 0014h
|
|
OFFSET (84) = OOOOOOOOh
|
|
WSTART (85) = 00300020h
|
|
WEND (86) = 00500142h
|
|
PIXT AO, *A1.XY
|
|
|
|
Before After
|
|
AO A1 @20500h PSIZE PP W T PMASK @20500h
|
|
1) OOOOFFFFh 00400500h OOOOh 0001h 00000 00 0 OOOOh 0001h
|
|
1) OOOOFFFFh 00400280h OOOOh 0002h 00000 00 0 OOOOh 0003h
|
|
1) OOOOFFFFh 00400140h OOOOh 0004h 00000 00 0 OOOOh OOOFh
|
|
1) OOOOFFFFh 004000AOh OOOOh 0008h 00000 00 0 OOOOh OOFFh
|
|
1) OOOOFFFFh 00400050h OOOOh 0010h 00000 00 0 OOOOh FFFFh
|
|
1) 00000006h 00400142h OOOOh 0004h 00000 00 0 OOOOh 0600h
|
|
2) 00000006h 00400142h 0300h 0004h 01010 00 0 OOOOh 0500h
|
|
3) 00000006h 00400142h 0100h 0004h 00001 00 0 OOOOh OOOOh
|
|
4) 00000006h 00400142h 0100h 0004h 00001 00 1 OOOOh 0100h
|
|
5) 00000006h 00400142h OOOOh 0004h 00000 00 0 AAAAh 0400h
|
|
6) 00000006h 00400142h OOOOh 0004h 00000 11 0 OOOOh 0600h
|
|
7) 00000006h 00400143h OOOOh 0004h 00000 11 0 OOOOh OOOOh
|
|
8) 00000006h 00400143h OOOOh 0004h 00000 10 0 OOOOh OOOOh
|
|
XY Address in A1 = Linear Address 20500h
|
|
Notes:
|
|
1) S replaces D
|
|
2) (S XOR D) replaces D
|
|
3) (S AN D D) = 0, transparency is off, 0 is replaced
|
|
4) (S + D) = 0, transparency is on, D not replaced
|
|
5) S replaces unmasked bits of D
|
|
6) Window Option = 3, D inside window, S replaces D
|
|
7) Window Option = 3, D outside window, D not replaced, V bit set in
|
|
status reg ister
|
|
8) Window Option = 2, D outside window, D not replaced, WV interrupt
|
|
generated, V bit set in status register
|
|
|
|
|
|
|
|
|
|
12-217
|
|
PIXT Pixel Transfer - Indirect to Register
|
|
|
|
|
|
Syntax PIXT *Rs, Rd
|
|
(Note that Rs contains a linear address.)
|
|
Execution pixel at * Rs -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I1 0 Rs R Rd
|
|
|
|
Description This PIXT instruction transfers a pixel from memory to a register. The
|
|
source register contains a linear address; the pixel at this address is trans-
|
|
ferred into the destination register. When the pixel is moved into Rd, it is
|
|
right justified and zero extended to 32 bits according to the pixel size spe-
|
|
cified in the PSIZE I/O register.
|
|
Rs and Rd must be in the same register file.
|
|
Implied
|
|
Operands I/O Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOOO150h PSIZE Pixel size (1,2,4,6,8,16)
|
|
COOOO160h PMASK Plane mask - pixel format
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
PIXT instruction. To ensure that this register contains the correct value for
|
|
execution, you may want to follow the write to that location with an in-
|
|
struction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
Window
|
|
Checking Window checking cannot be used with this instruction. The W bits are
|
|
ignored.
|
|
Pixel
|
|
Processing Pixel processing cannot be used with this instruction.
|
|
Transparency Transparency cannot be used with this instruction.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
Machine
|
|
States 4,7
|
|
Status Bits N Undefined
|
|
C Undefined
|
|
Z Undefined
|
|
V Set to 1 if the pixel is 1 , set to 0 if the pixel is O.
|
|
|
|
|
|
|
|
|
|
12-218
|
|
Pixel Transfer - Indirect to Register PIXT
|
|
|
|
|
|
Examples Assume that memory contains the following values:
|
|
Address Data
|
|
@20500h OFFFFh
|
|
@20510h 3333h
|
|
PIXT *AO,Al
|
|
Before After
|
|
AO PSIZE PMASK A1
|
|
0OO20500h 0OO1h OOOOh 0OOOOOO1h
|
|
0OO20500h 0OO1h FFFFh OOOOOOOOh
|
|
0OO20500h 0OO2h OOOOh 0OOOOOO3h
|
|
0OO20500h 0OO2h 5555h 0OOOOOO2h
|
|
0OO20500h 0OO4h OOOOh OOOOOOOFh
|
|
0OO20510h 0OO4h 9999h 0OOOOOO2h
|
|
0OO20500h 0OO8h OOOOh OOOOOOFFh
|
|
0OO20510h 0OO8h 5454h 0OOOOO23h
|
|
0OO20500h 0010h OOOOh OOOOFFFFh
|
|
0OO20500h 0010h BA98h 0OOO4567h
|
|
0OO20510h 0010h BA98h 0OOOO123h
|
|
|
|
|
|
|
|
|
|
12-219
|
|
PIXT Pixel Transfer - Indirect to Indirect
|
|
|
|
|
|
Syntax PIXT *Rs, *Rd
|
|
(Note that Rs and Rd contain linear addresses.)
|
|
Execution pixel at * Rs -+ * Rd
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
11 01 Rs R Rd
|
|
|
|
Description This PIXT instruction transfers a pixel from one memory location to another.
|
|
The source and destination registers both contain linear addresses. The
|
|
address in Rs is the address of the source pixel; the pixel is moved into the
|
|
address in Rd.
|
|
Rs and Rd must be in the same register file.
|
|
Implied
|
|
Operands I/O Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOOOOOBOh CONTROL PP- Pixel processing operations (22 options)
|
|
T - Transparency operation
|
|
COOO0150h PSIZE Pixel size (1,2.4.6,8,16)
|
|
COOOO160h PMASK Plane mask - pixel format
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
PIXT instruction. To ensure that this register contains the correct value for
|
|
execution, you may want to follow the write to that location with an in-
|
|
struction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Reg isters.
|
|
Pixel
|
|
Processing You can select a pixel processing option to use with this instruction by
|
|
setting the PPOP bits in the CONTROL register. The pixel processing op-
|
|
eration is applied to the pixel as it is transferred to the destination location.
|
|
The default case at reset is the rep/ace option. For more information, see
|
|
Section 7.7, Pixel Processing, on page 7 -1 5.
|
|
Window
|
|
Checking Window checking cannot be used with this instruction. The W bits are
|
|
ignored.
|
|
Transparency You can enable transparency for this instruction by setting the T bit in the
|
|
CONTROL I/O register to 1. The TMS34010 checks for 0 (transparent)
|
|
source pixels after it processes the source data. At reset, the default case
|
|
for transparency is off.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
|
|
|
|
|
|
|
|
12-220
|
|
Pixel Transfer - Indirect to Indirect PIXT
|
|
|
|
|
|
Machine
|
|
States
|
|
Pixel Processing Operation Window
|
|
Violation
|
|
PSIZE Replace Boolean ADD ADDS SUB SUBS MIN/MAX W=1 W=2 W=3
|
|
1,2,4,8 4+(3),10 6+(3),12 6+(3),12 7+(3),13 7+(3),13 8+(3),14 7+(3),13 - - -
|
|
16 4+(1 ),8 6+(1),10 6+(1),10 7+(1),11 7+(1),11 8+(1),12 7+(1),11 - - -
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples PIXT *AO,*Al
|
|
Before After
|
|
AO A1 @20500h PSIZE PP T PMASK @20500h @20510h
|
|
1) 00020500h 00020508h OOOFh 0001h 00000 o OOOOh 010Fh xxxx
|
|
1) 00020500h 00020508h OOOFh 0002h 00000 o OOOOh 030Fh xxxx
|
|
1) 00020500h 00020508h OOOFh 0004h 00000 o OOOOh OFOFh xxx x
|
|
1) 00020500h 00020508h OOEFh 0008h 00000 o OOOOh EFEFh xxx x
|
|
1) 00020500h 00020508h 1234h 0010h 00000 o OOOOh 3434h xx12h
|
|
2) 00020500h 00020508h 030Fh 0004h 01010 o OOOOh OCOFh xxxx
|
|
3) 00020500h 00020508h 010Eh 0004h 00001 o OOOOh OOOEh xxxx
|
|
4) 00020500h 00020508h 020Eh 0004h 00001 1 OOOOh 020Eh xxxx
|
|
5) 00020500h 00020508h OOOFh 0004h 00000 o AAAAh 050Fh xxxx
|
|
Notes:
|
|
1) S replaces D
|
|
2) (S XOR D) replaces D
|
|
3) (S AN D D) = 0, transparency is off, D is replaced
|
|
4) (S + D) = 0, transparency is on, D not replaced
|
|
5) S replaces unmasked bits of D
|
|
|
|
|
|
|
|
|
|
12-221
|
|
PIXT Pixel Transfer - Indirect XY to Register
|
|
|
|
|
|
Syntax PIXT *Rs.XV, Rd
|
|
(Note that Rs contains an XV address.)
|
|
Execution pixel at * Rs.XY -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I1 0 0 Rs R Rd
|
|
|
|
Description This PIXT instruction transfers a pixel from a memory location to a register.
|
|
The source register contains an XY address; the X value occupies the 16
|
|
LSBs of the register and the Y value occupies the 16 MSBs. The address
|
|
in Rs is the address of the source pixel; this pixel is moved into the desti-
|
|
nation register. When the pixel is moved into Rd, it is right justified and
|
|
zero extended to 32 bits according to the pixel size specified in the PSIZE
|
|
I/O register.
|
|
Rs and Rd must be in the same register file.
|
|
Implied
|
|
Operands B File Registers
|
|
Register Name Format Description
|
|
81 SPTCH Linear Source pitch
|
|
84 OFFSET Linear Screen origin (0,0)
|
|
I/O Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOO0130h CONVSP XV -to-linear conversion (source pitch)
|
|
COOO0150h PSIZE Pixel size (1,2,4,8,16)
|
|
COOO0160h PMASK Plane mask - pixel format
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
PIXT instruction. To ensure that this register contains the correct value for
|
|
execution, you may want to follow the write to that location with an in-
|
|
struction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
Window
|
|
Checking Window checking cannot be used with this instruction. The W bits are
|
|
ignored.
|
|
Pixel
|
|
Processing Pixel processing cannot be used with this instruction.
|
|
Transparency Transparency cannot be used with this instruction.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
Machine
|
|
States 6,9
|
|
|
|
|
|
|
|
12-222
|
|
Pixel Transfer - Indirect XY to Register PIXT
|
|
|
|
|
|
Status Bits N Undefined
|
|
C Undefined
|
|
Z Undefined
|
|
V Set to 1 if the pixel is 1, set to 0 if the pixel is O.
|
|
Examples These PIXT examples use the following implied operand setup.
|
|
Register File B: I/O Registers:
|
|
DPTCH (83) = BOOh CONVSP = 0014h
|
|
OFFSET (84) = OOOOOOOOh
|
|
|
|
Assume that memory address @20500h contains CF3Fh before instruction
|
|
execution.
|
|
|
|
PIXT *AO.XY,Al
|
|
Before After
|
|
AO PSIZE PMASK A1
|
|
00400500h 0OO1h OOOOh 0OOOOOO1h
|
|
00400500h 0OO1h FFFFh OOOOOOOOh
|
|
00400280h 0OO2h OOOOh 0OOOOOO3h
|
|
00400280h 0OO2h AAAAh 0OOOOOO1h
|
|
00400140h 0OO4h OOOOh OOOOOOOFh
|
|
00400140h 0OO4h 9999h 0OOOOOO6h
|
|
004000AOh 0OO8h OOOOh 0OOOOO3Fh
|
|
004000AOh 0OO8h 8989h 0OOOOO36h
|
|
00400050h 0010h OOOOh OOOOCF3Fh
|
|
00400050h 0010h 7310h 0OOO8C2Fh
|
|
|
|
|
|
Note:
|
|
The XY addresses stored in register A 1 in these examples translate to
|
|
the linear memory address 20500h. The pitch of the source was not
|
|
changed for any of these examples.
|
|
|
|
|
|
|
|
|
|
12-223
|
|
PIXT Pixel Transfer - Indirect XY to Indirect XY
|
|
|
|
|
|
Syntax PIXT *Rs.XV, *Rd.XV
|
|
(Note that Rs and Rd contain XV addresses.)
|
|
Execution pixel at * Rs.XY ~ * Rd.XY
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
11 0 01 Rs R Rd
|
|
|
|
Description This PIXT instruction transfers a pixel from one memory location to another.
|
|
The source and destination registers both contain XY addresses; the X value
|
|
occupies the 16 LSBs of the register and the Y value occupies the 16
|
|
MSBs. Rs contains the address of the source pixel; Rd contains the address
|
|
where the pixel is moved.
|
|
Rs and Rd must be in the same register file.
|
|
Implied
|
|
Operands B File Registers
|
|
Register Name Format Description
|
|
B1 SPTCH Linear Source pitch
|
|
B3 DPTCH Linear Destination pitch
|
|
B4 OFFSET Linear Screen origin (0,0)
|
|
B5 WSTART XV Window starting corner
|
|
B6 WEND XV Window ending corner
|
|
1/0 Registers
|
|
Address Name Description and Elements (Bits)
|
|
COOOOOOBOh CONTROL PP- Pixel processing operations (22 options)
|
|
W - Window clipping or pick operation
|
|
T - Transparency operation
|
|
COOO0130h CONVSP XV -to-linear conversion (source pitch)
|
|
COOO0140h CONVDP XV -to-linear conversion (destination pitch)
|
|
COOO0150h PSIZE Pixel size (1,2,4,8,16)
|
|
COOO0160h PMASK Plane mask - pixel format
|
|
|
|
Due to the pipelining of memory writes, the last I/O register that you write
|
|
to may not, in some cases, contain the desired value when you execute the
|
|
PIXT instruction. To ensure that this register contains the correct value for
|
|
execution, you may want to follow the write to that location with an in-
|
|
struction that reads the same location (such as a MOVE SAddress,Rd in-
|
|
struction). For more information, refer to Section 6.2, Latency of Writes to
|
|
I/O Registers.
|
|
Window
|
|
Checking You can use window checking with this instruction by setting the W bits
|
|
in the CONTROL register to the desired value. If you select window
|
|
checking mode 1, 2, or 3, the WSTART and WEN D registers define the XY
|
|
starting and ending corners of a rectangular window. When an attempt is
|
|
made to write a pixel inside or outside a window, the results depend on the
|
|
selected window checking mode:
|
|
|
|
|
|
12-224
|
|
Pixel Tra nsfer - Indirect XY to Indirect XY PIXT
|
|
|
|
|
|
o No window checking. The pixel is drawn and the WVP and V bits are
|
|
unaffected.
|
|
1 Window hit. No pixels are drawn. The V bit is set to 0 if the pixel lies
|
|
within the window; otherwise, it is set to 1.
|
|
2 Window miss. If the pixel lies outside the window, the V and WVP bits
|
|
are set to 1 and the instruction is aborted (no pixels are drawn). Other-
|
|
wise, the pixel is drawn and the V bit is set to O.
|
|
3 Window clip. If the pixel lies outside the window, the V bit is set to 1
|
|
and the instructi0r:l is aborted (no pixels are drawn). Otherwise, the pixel
|
|
is drawn and the V bit is set to O.
|
|
For more information, see Section 7.10, Window Checking, on page 7-25.
|
|
Pixel
|
|
Processing You can select a pixel processing option to use with this instruction by
|
|
setting the PPOP bits in the CONTROL register. The pixel processing op-
|
|
eration is applied to the pixel as it is transferred to the destination location.
|
|
The default case at reset is the rep/ace option. For more information, see
|
|
Section 7.7, Pixel Processing, on page 7-15.
|
|
Transparency You can enable transparency for this instruction by setting the T bit in the
|
|
CONTROL I/O register to 1. The TMS34010 checks for 0 (transparent)
|
|
source pixels after it processes the source data. At reset, the default case
|
|
for transparency is off.
|
|
Plane Mask The plane mask is enabled for this instruction.
|
|
Machine
|
|
States
|
|
Pixel Processing Operation Window
|
|
Violation
|
|
PSIZE Replace Boolean ADD ADDS SUB SUBS MIN/MAX W=1 W=2 W=3
|
|
1,2,4,8 7+(3),13 9+(3),15 9+(3),15 0+(3),16 0+(3),16 11+(3),17 10+(3),16 - 8,11 6,9
|
|
16 7+(1).11 9+(1),13 9+(1),13 0+(1),14 0+(1),14 11+(1),15 10+(1),14 - 8,11 6,9
|
|
|
|
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V 1 if the pixel lies outside the window and W=1, W=2, or W=3, 0 oth-
|
|
erwise. Unaffected if W=O.
|
|
Examples These PIXT examples use the following implied operand setup.
|
|
Register File B: I/O Registers:
|
|
SPTCH (81) = 800h CONVSP = 0014h
|
|
DPTCH (83) = 800h CONVDP = 0014h
|
|
OFFSET (84) = OOOOOOOOh
|
|
WSTART (85) = 00300020h
|
|
WEND (86) = 00500142h
|
|
PIXT *AO.XY,*Al.XY
|
|
|
|
|
|
|
|
12-225
|
|
PIXT Pixel Transfer - Indirect XY to Indirect XY
|
|
|
|
|
|
Before After
|
|
AO A1 @20500h PSIZE PP W T PMASK @20500h @20510h
|
|
1) 00400500h 00400508h OOOFh 0001 h 00000 000 OOOOh 010Fh xxxx
|
|
1) 00400280h 00400284h OOOFh 0002h 00000 000 OOOOh 030Fh xxxx
|
|
1) 00400140h 00400142h OOOFh 0004h 00000 000 OOOOh OFOFh xxxx
|
|
1) 004000AOh 004000A1h OOEFh 0008h 00000 000 OOOOh EFEFh xxxx
|
|
1) 00400050h 00400051h CDEFh 0010h 00000 000 OOOOh CDEFh CDEFh
|
|
2) 00400140h 00400142h 0306h 0004h 01010 000 OOOOh 0506h xxxx
|
|
3) 00400140h 00400142h 0106h 0004h 00001 00 0 OOOOh 0006h xxxx
|
|
4) 00400140h 00400142h 0106h 0004h 10001 00 1 OOOOh 0106h xxxx
|
|
5) 00400140h 00400142h 0006h 0004h 00000 000 AAAAh 0406h xxxx
|
|
6) 00400140h 00400142h 0006h 0004h 00000 11 0 OOOOh 0606h xxxx
|
|
7) 00400140h 00400143h 0006h 0004h 00000 11 0 OOOOh 0006h xxx x
|
|
8) 00400140h 00400143h 0006h 0004h 00000 10 0 OOOOh 0006h xxxx
|
|
XV Address in AO = Linear Address 20500h
|
|
Notes:
|
|
1) S replaces 0
|
|
2) (S XOR 0) replaces 0
|
|
3) (S AN 0 D) = 0, transparency is off, 0 is replaced
|
|
4) (S + D) = 0, transparency is on, 0 not replaced
|
|
5) S replaces unmasked bits of 0
|
|
6) Window Option = 3, 0 inside window, S replaces 0
|
|
7) Window Option = 3, 0 outside window, 0 not replaced, V bit set in
|
|
status register
|
|
8) Window Option = 2, 0 outside window, 0 not replaced, WV interrupt
|
|
generated, V bit set in status register
|
|
|
|
|
|
|
|
|
|
12-226
|
|
Pop Status Reg ister from Stack POPST
|
|
|
|
|
|
Syntax POPST
|
|
Execution *SP+ -. ST
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
1 0 0 0 0 0 0 0 0 0 0 0 0 01
|
|
|
|
Description POPST pops the status register from the stack and increments the SP by
|
|
32 after the status register is removed from the stack.
|
|
|
|
|
|
|
|
|
|
Status Register
|
|
Machine
|
|
States 8,11 (SP aligned)
|
|
10,13 (SP nonaligned)
|
|
Status Bits N Set from bit 31 of stack status.
|
|
C Set from bit 30 of stack status.
|
|
Z Set from bit 29 of stack status.
|
|
V Set from bit 28 of stack status.
|
|
IE Set from bit 21 of stack status.
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
OFFOOOOOh 0010h
|
|
OFFOO010h COOOh
|
|
Code Before After
|
|
SP ST SP
|
|
POPST OFFOOOOOh COOOO010h OFFOO020h
|
|
|
|
|
|
|
|
|
|
12-227
|
|
PUSHST Push Status Register onto Stack
|
|
|
|
|
|
Syntax PUSHST
|
|
Execution ST -+ -*SP
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 0 0 0 0 01
|
|
|
|
Description PUSHST writes the status register contents to the address contained in the
|
|
SP-32.
|
|
|
|
|
|
|
|
|
|
Status Register
|
|
Machine
|
|
States 2+(3),8 (SP aligned)
|
|
2+(8),13 (SP nonaligned)
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Example Code Before After
|
|
SP ST SP
|
|
PUSHST OFF00020h C0000010h OFFOOOOOh
|
|
Memory contains the following values after instruction execution:
|
|
Address Data
|
|
OFF00010h 0010h
|
|
OFF00020h COOOh
|
|
|
|
|
|
|
|
|
|
12-228
|
|
Copy Register into Status PUTST
|
|
|
|
|
|
Syntax PUTST Rs
|
|
Execution Rs -+ ST
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 0 R Rs I
|
|
Description PUTST copies the contents of the specified register into the status register.
|
|
|
|
|
|
|
|
|
|
Status Register
|
|
Machine
|
|
States 3,6
|
|
Status Bits N Set to value of bit 31 in source register
|
|
C Set to value of bit 30 in source register
|
|
Z Set to value of bit 29 in source register
|
|
V Set to value of bit 28 in source register
|
|
IE Set to value of bit 21 in source register
|
|
Example Before After
|
|
AO ST ST
|
|
PUTST AD C0000010h xxxxxxxxh C0000010h
|
|
|
|
|
|
|
|
|
|
12-229
|
|
RETI Return from Interrupt
|
|
|
|
|
|
Syntax RETI
|
|
Execution *SP+ -+ ST
|
|
*SP+ -+ PC
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 0 0 0 0 0 01
|
|
|
|
Description RETI returns to an interrupted routine from an interrupt service routine. The
|
|
instruction restores the ST and PC to their original values that were stored
|
|
on the system stack.
|
|
The stack is located in external memory and the top is indicated by the stack
|
|
pointer (SP). The stack grows in the direction of decreasing linear address.
|
|
The ST and PC are popped from the stack and the SP is incremented by
|
|
32 after each register is removed from the stack.
|
|
|
|
|
|
Note:
|
|
If the PBX status bit is set in the restored ST value, then the bit is
|
|
cleared and a PIXBLT or FILL is resumed, depending on the values
|
|
stored in the B-file registers.
|
|
The CONTROL register and any B-file registers modified by an interrupt
|
|
routine should be restored before RETI is executed. Otherwise, inter-
|
|
rupted PIXB LT and FI LL instructions may not resume execution cor-
|
|
rectly.
|
|
|
|
|
|
Machine
|
|
States 11,14 (aligned stack)
|
|
15,18 (nonaligned stack)
|
|
Status Bits N Copy of corresponding bit in stack location
|
|
C Copy of corresponding bit in stack location
|
|
Z Copy of corresponding bit in stack location
|
|
V Copy of corresponding bit in stack location
|
|
IE Copy of corresponding bit in stack location
|
|
Interrupts If the IE bit in the restored ST is a 1, interrupts are enabled by the time the
|
|
RETI instruction finishes executing. If an interrupt request is active during
|
|
the last state of the RETI instruction, and the interrupt is enabled in the
|
|
INTENB register, the interrupt will be taken immediately following the RET!.
|
|
Since interrupts are level-triggered, the interrupt service routine should
|
|
write to the interrupting device to clear the interrupt request before execut-
|
|
ing an RET!. The following example shows a typical interrupt service rou-
|
|
tine; in this example, the symbol DEVICE is the symbolic address of the
|
|
interrupting device.
|
|
|
|
|
|
|
|
|
|
12-230
|
|
Return from Interrupt RETI
|
|
|
|
|
|
|
|
CLR AO
|
|
MOVE AO, @DEVICE
|
|
|
|
RETI
|
|
In this example, the interrupt request is cleared by the MOVE instruction,
|
|
which writes a 0 to the device address.
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
CCCOOOOh 0010h
|
|
CCC0010h COOOh
|
|
CCC0020h FFFOh
|
|
CCC0030h 0044h
|
|
|
|
Before After
|
|
SP ST PC SP
|
|
RETI CCCOOOOh C0000010h 0044FFFOh CCC0040h
|
|
|
|
|
|
|
|
|
|
12-231
|
|
RETS Return from Subroutine
|
|
|
|
|
|
Syntax RETS [NJ
|
|
Execution *SP -+ PC (N defaults to 0)
|
|
S P + 32 + 1 6N -+ S P
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 N
|
|
I
|
|
Description RETS returns from a subroutine by popping the program counter from the
|
|
stack and optionally incrementing the stack pointer.
|
|
The N parameter is optional; it can be a value between 0 and 32 that indi-
|
|
cates a number of words that are added to the stack pointer. If N is speci-
|
|
fied, the stack pointer is incremented by 32 + 16N. If N is not specified,
|
|
the stack is incremented by 32. Execution then continues according to the
|
|
PC value loaded.
|
|
Machine
|
|
States 7,10 (Aligned stack)
|
|
9,12 (Unaligned stack)
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffe<;:ted
|
|
V Unaffected
|
|
Examples Assume that memory contains the following values before instruction exe-
|
|
cution:
|
|
Address Data
|
|
OFFOOOOOh OFFFOh
|
|
OFFOOO10h 0001h
|
|
Code Before After
|
|
SP PC SP
|
|
RETS OFFOOOOOh 0OO1FFFOh OFFOO020h
|
|
RETS 1 OFFOOOOOh 0OO1FFFOh OFFOO030h
|
|
RETS 2 OFFOOOOOh 0OO1FFFOh OFFOOO40h
|
|
RETS 16 OFFOOOOOh 0OO1FFFOh OFF00120h
|
|
RETS 31 OFFOOOOOh 0OO1FFFOh OFF00210h
|
|
|
|
|
|
|
|
|
|
12-232
|
|
Store Revision Number REV
|
|
|
|
Syntax REV Rd
|
|
Execution revision number ~ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 0 0 0 R Rd I
|
|
Description REV stores the revision number of the TMS340 family device in the desti-
|
|
nation register. The revision number information is stored in the following
|
|
format:
|
|
31 16 15 3 2 0
|
|
undefined 10 0 0 0 0 0 0 0 0 0 0 0 1 lundefinedl
|
|
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Before After
|
|
A1 A1
|
|
REV A1 OFFFFFFFFh 00000008h
|
|
|
|
|
|
|
|
|
|
12-233
|
|
RL Rotate Left - Constant
|
|
|
|
|
|
Syntax RL K,Rd
|
|
Execution left-rotate Rd by K -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
10 0 0 01 K R Rd 1
|
|
Description RL left-rotates the contents of the destination register by a specified num-
|
|
ber of bits. (This rotation is a barrel shift.) The rotate count is specified
|
|
by a 5-bit immediate value, or constant; this produces a rotation amount
|
|
of 0 to 31 bits. (K in the syntax represents the 5-bit constant.) This is a
|
|
circular rotate so that bits shifted out the MSB are shifted into the LSB.
|
|
|
|
|
|
|
|
|
|
The assembler only accepts absolute expressions for the rotate count. If the
|
|
specified rotation value is greater than 31, the assembler issues a warning
|
|
and set the K field in the opcode to the 5 LSBs of K.
|
|
The carry bit is set to the value of the last bit that is shifted out of the MSB
|
|
(this value is the same as the final value of the LSB). You can use a rotate
|
|
count of 0 to clear the carry anc:ttest a register for 0 simultaneously.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C Set to value of last bit rotated out, 0 for rotate count of 0
|
|
Z 1 if result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
A1 NCZV A1
|
|
RL O,AI OOOOOOOFh xOOx OOOOOOOFh
|
|
RL I,AI FOOOOOOOh x10x EOOOOO01h
|
|
RL 4,AI FOOOOOOOh x10x OOOOOOOFh
|
|
RL S,AI FOOOOOOOh xOOx 0OOOO01Eh
|
|
RL 30,Al FOOOOOOOh x10x 3COOOOOOh
|
|
RL S,AI OOOOOOOOh x01x OOOOOOOOh
|
|
|
|
|
|
|
|
|
|
12-234
|
|
Rotate Left - Register RL
|
|
|
|
|
|
Syntax RL Rs, Rd
|
|
Execution left-rotate Rd by 5 LSBs of Rs -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I0 0 0 01 Rs Rd
|
|
|
|
Operands Rs The five LSBs of the source register specify the left rotate count (a
|
|
value from a to 31). The 27 MSBs are ignored.
|
|
Description RL left-rotates the contents of the destination register by a specified num-
|
|
ber of bits. (This rotation is a barrel shift.) The rotate count is specified
|
|
by the 5 LSBs of Rs (the 27 MSBs are ignored); this produces a rotation
|
|
amount between 0 and 31 bits. This is a circular rotate; the bits that are
|
|
shifted out of the MSB of Rd are shifted into the LSB.
|
|
C 31 0
|
|
|
|
|
|
G-Ji------l]
|
|
Note that the you must designate Rs with a keyword or symbol which has
|
|
been defined to be a register, for example, A9; otherwise, the assembler
|
|
uses the RL K,Rd instruction.
|
|
The carry bit is set to the value of the last bit that is shifted out of the MSB
|
|
(this value is the same as the final value of the LSB).
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits NUn affected
|
|
C Set to value of last bit rotated out, 0 for rotate count of 0
|
|
Z 1 if result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
5 LSBs AO A1 NCZV A1
|
|
RL AO,AI 00000 OOOOOOOFh xOOx OOOOOOOFh
|
|
RL AO,AI 00100 FOOOOOOOh x10x OOOOOOOFh
|
|
RL AO,AI 00101 FOOOOOOOh xOOx 0000001Eh
|
|
RL AO,AI 11111 FOOOOOOOh xOOx 78000000h
|
|
RL AO,AI xxxxx OOOOOOOOh x01x OOOOOOOOh
|
|
|
|
|
|
|
|
|
|
12-235
|
|
SETC Set Carry
|
|
|
|
|
|
Syntax SETC
|
|
Execution 1 -+ C
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 0 0 0 0 01
|
|
|
|
Description SETC sets the carry bit (C) in the status register to 1. The rest of the status
|
|
register is unaffected.
|
|
This instruction is useful for returning a true/false value (in the carry bit)
|
|
from a subroutine without using a general-purpose register.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C 1
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Before After
|
|
ST NCZV ST NCZV
|
|
SETC OOOOOOOOh 0000 40000000h 0100
|
|
SETC BOOOO010h 1011 FOOOO010h 1111
|
|
SETC 4000001Fh 0100 4000001Fh 0100
|
|
|
|
|
|
|
|
|
|
12-236
|
|
Set Field Parameters SETF
|
|
|
|
|
|
Syntax SETF FS, FE [, FJ
|
|
Execution FS, FE -+ ST
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I0 0 0 0 0 1 IF 0 I FE I FS
|
|
|
|
Description SETF loads specified field size (FS) and field extension (FE) values into the
|
|
status register; depending on the value of the F parameter, this information
|
|
sets the field size and extension for either field 0 or field 1. (The remainder
|
|
of the status register is not affected.)
|
|
|
|
|
|
|
|
|
|
Status Reg ister
|
|
|
|
• The FS parameter is a value between 1 and 32; it selects the field size.
|
|
(Note that an FS value of 0 in the opcode corresponds to an actual
|
|
selected field size of 32.)
|
|
|
|
• The FE parameter is a value of 0 or 1 :
|
|
FE=O selects zero extension for a field.
|
|
FE=1 selects sign extension for a field.
|
|
|
|
• The F parameter is optional; the default value for F is O. The F value
|
|
determines whether the SETF instruction sets the field size and ex-
|
|
tension for field 0 or for field 1 .
|
|
F=O selects FSO, FEO to be altered.
|
|
F=1 selects FS1, FE1 to be altered.
|
|
Each MOVE instruction also has an F parameter that selects the field size
|
|
and extension of either field 0 or field 1 for the individual move. You can
|
|
use the SETF instruction to prepare for MOVE instructions.
|
|
Machine
|
|
States 1,4 for F=O
|
|
2,5 for F=1
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z Unaffected
|
|
V Unaffected
|
|
Examples Code Before After
|
|
ST ST
|
|
SETF 32,0,0 xxxxxOOOh xxxxxOOOh
|
|
SETF 32,1,0 xxxxxOOOh xxxxx020h
|
|
SETF 31,1,0 xxxxxOOOh xxxxx03Fh
|
|
SETF 16,0,0 xxxxxOOOh xxxxx010h
|
|
SETF 32,0,1 xxxxxOOOh xxxxxOOOh
|
|
SETF 32,1,1 xxxxxOOOh xxxxx800h
|
|
SETF 31,1,1 xxxxxOOOh xxxxxFCOh
|
|
SETF 16,0,1 xxxxxOOOh xxxxx400h
|
|
|
|
|
|
|
|
12-237
|
|
SEXT Sign Extend to Long
|
|
|
|
|
|
Syntax SEXT Rd [, FJ
|
|
Execution field in Rd .... sign-extended field Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 1 IF I 1 0 0 oIR Rd I
|
|
Description SEXT sign extends the right-justified field contained in the destination re-
|
|
gister by copying the MSB of the field data into all the non field bits of the
|
|
destination register. The size of the field is determined by the current field
|
|
size. The optional F parameter, which must be specified as a 0 or a 1, se-
|
|
lects the field size:
|
|
F =0 selects FSO for the field size.
|
|
F =1 selects FS1 for the field size.
|
|
The default value for F is O.
|
|
Machine
|
|
States 3,6
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C Unaffected
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
FSO/1 AO NCZV AO
|
|
SEXT AO,O 17/x 00008000h OxOx 00008000h
|
|
SEXT AO,O 16/x 00008000h 1xOx FFFF8000h
|
|
SEXT AO,O 15/x 00008000h Ox1x OOOOOOOOh
|
|
SEXT AO,l x/17 0OO08000h OxOx 0OOO8000h
|
|
SEXT AO,l x/16 0OO08000h 1xOx FFFF8000h
|
|
SEXT AO,l x/15 0OO08000h Ox1x OOOOOOOOh
|
|
|
|
|
|
|
|
|
|
12-238
|
|
Shift Left Arithmetic - Constant SLA
|
|
|
|
|
|
Syntax SlA K,Rd
|
|
Execution left-shift Rd by K ~ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 01 K R Rd 1
|
|
|
|
Description SLA left-shifts the contents of the destination register by a specified num-
|
|
ber of bits. The shift count is specified by a 5-bit constant (K in the syn-
|
|
tax); this is a value between 0 and 31 .
|
|
As shown in the diagram, Os are shifted into the least significant bits. The
|
|
last bit shifted out of the destination register (the original value of bit
|
|
32-K) is shifted into the carry bit. If either the new sign bit (N) or any of
|
|
the bits shifted out of the register differ from the original sign bit, the over-
|
|
flow bit (V) is set.
|
|
|
|
|
|
|
|
|
|
o
|
|
It---'--t +--- Shift +-- 0
|
|
MSB LSB
|
|
|
|
The assembler accepts only absolute expressions for the shift count. If the
|
|
shift count is greater than 31, the assembler issues a warning and sets the
|
|
K field in the opcode to the 5 LS Bs of K.
|
|
Note that SLA executes slower than SLL because it provides overflow de-
|
|
tection.
|
|
Machine
|
|
States 3,6
|
|
Status Bits N a
|
|
1 if the result is negative, otherwise
|
|
C Set to the value of last bit shifted out, 0 for shift count of 0
|
|
Z a
|
|
1 if a 0 result generated, otherwise
|
|
V a
|
|
1 if the MSB changes during shift operation, otherwise
|
|
Examples Code Before After
|
|
A1 A1 NCZV
|
|
SLA O,Al 33333333h 33333333h 0000
|
|
SLA O,Al CCCCCCCCh CCCCCCCCh 1000
|
|
SLA 1,Al CCCCCCCCh 99999998h 1100
|
|
SLA 2,Al 33333333h CCCCCCCCh 1001
|
|
SLA 2,Al CCCCCCCCh 33333330h 0101
|
|
SLA 3,Al CCCCCCCCh 66666660h 0001
|
|
SLA S,Al CCCCCCCCh 99999980h 1101
|
|
SLA 30,Al CCCCCCCCh OOOOOOOOh 0111
|
|
SLA 3l,Al CCCCCCCCh OOOOOOOOh 0011
|
|
SLA 3l,Al OOOOOOOOh OOOOOOOOh 0010
|
|
|
|
|
|
12-239
|
|
SLA Shift Left Arithmetic - Register
|
|
|
|
|
|
Syntax SLA Rs,Rd
|
|
Executiqn left-shift Rd by 5 LSBs of Rs ~
|
|
Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
10 0 0 0 01 Rs R Rd I
|
|
Description SLA left-shifts the contents of the destination register by a specified num-
|
|
ber of bits. The shift count is specified by the 5 LSBs of Rs (the 27 MSBs
|
|
are ignored); this produces a shift count from 0 to 31.
|
|
The last bit shifted out of the destination register (the original value of bit
|
|
32-K) is shifted into the carry bit. If either the new sign bit (N) or anyof
|
|
the bits shifted out of the register differ from the original sign bit, the over-
|
|
flow bit (V) is set.
|
|
V
|
|
|
|
|
|
|
|
|
|
o
|
|
It---..&..-I +--- Shift +---- 0
|
|
MSB LSB
|
|
|
|
Note that you must designate Rs with a keyword or symbol which has
|
|
been defined to be a register, for example, A9; otherwise, the assembler
|
|
uses uses the SLA K,Rd instruction. Rs and Rd must be in the same register
|
|
file.
|
|
Note that SLA executes slower than SLL because it provides overflow de-
|
|
tection.
|
|
Machine
|
|
States 3,6
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C Set to value of last bit shifted out, 0 for shift count of 0
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if the MSB changes during shift operation, 0 otherwise
|
|
Examples Code Before After
|
|
5 LSBs AO A1 A1 NCZV
|
|
SLAAO,Al 00000 33333333h 33333333h 0000
|
|
SLA AO,Al 00000 CCCCCCCCh CCCCCCCCh 1000
|
|
SLA AO,Al 00001 CCCCCCCCh 99999998h 1100
|
|
SLA AO,Al 00010 33333333h CCCCCCCCh 1001
|
|
SLA AO,Al 00010 CCCCCCCCh 33333330h 0101
|
|
SLA AO,Al 00011 CCCCCCCCh 66666660h 0001
|
|
SLA AO,Al 00101 CCCCCCCCh 99999980h 1101
|
|
SLA AO,Al 11110 CCCCCCCCh OOOOOOOOh 0111
|
|
SLA AO,Al 11111 CCCCCCCCh OOOOOOOOh 0011
|
|
SLA AO,Al 11111 OOOOOOOOh \ OOOOOOOOh 0010
|
|
|
|
|
|
12-240
|
|
Shift Left Logical - Constant SLL
|
|
|
|
|
|
Syntax SLL K,Rd
|
|
Execution left-shift Rd by K ..... Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 1 I K R Rd I
|
|
Description SLL left-shifts the contents of the destination register by a specified number
|
|
of bits. The shift count is specified by a 5-bit constant (K in the syntax.),
|
|
which is a value between 0 and 31.
|
|
The last bit shifted out of the destination register (the original value of bit
|
|
32-K) is shifted into the carry bit. Os are shifted into the least significant
|
|
bits. This instruction differs from the SLA instruction only in its effect on
|
|
the overflow (V) bit.
|
|
|
|
c
|
|
~~~------------~~
|
|
1+4- - Shift +-4- - 1 + - - 0
|
|
|
|
9 I
|
|
The assembler only accepts absolute expressions for the shift count. If the
|
|
specified shift count is greater than 31, the assembler issues a warning and
|
|
sets the K field in the opcode to the 5 LSBs of K.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C 1 to the value of last bit shifted out, 0 for shift count of 0
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
A1 A1 NCZV
|
|
SLL O,Al OOOOOOOOh OOOOOOOOh x01x
|
|
SLL O,Al 88888888h 88888888h xOOx
|
|
SLL 1,Al 88888888h 11111110h x10x
|
|
SLL 4,Al 88888888h 88888880h xOOx
|
|
SLL 30,Al FFFFFFFCh OOOOOOOOh x11x
|
|
SLL 3l,Al FFFFFFFCh OOOOOOOOh x01x
|
|
|
|
|
|
|
|
|
|
12-241
|
|
SLL Shift Left Logical - Register
|
|
|
|
|
|
Syntax SLL Rs, Rd
|
|
Execution left-shift Rd by 5 LSBs of Rs -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 Rs IR Rd I
|
|
Description SLL left-shifts the contents of the destination register by a specified number
|
|
of bits. The shift count is specified by the 5 LSBs of Rs (the 27 MSBs are
|
|
ignored); this produces a shift count between 0 and 31.
|
|
The last bit shifted out of the destination register (the original value of bit
|
|
32 -K) is shifted into the carry bit. Os are shifted into the least significant
|
|
bits. This instruction differs from the SLA instruction only in its effect on
|
|
the overflow (V) bit.
|
|
|
|
|
|
I~~--------------~~
|
|
+-l1li- - t.- o
|
|
Shift +-l1li- -
|
|
|
|
I
|
|
Note that you must designate Rs with a keyword or symbol which has been
|
|
defined to be a register, for example, A9; otherwise, the assembler uses the
|
|
SLA K,Rd instruction.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C Set to the value of last bit shifted out, 0 for shift value of 0
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
5 LSBs AO A1 A1 NCZV
|
|
SLL AO,Al 00000 OOOOOOOOh OOOOOOOOh x01x
|
|
SLL AO,Al 00000 88888888h 88888888h xOOx
|
|
SLL AO,Al 00001 88888888h 11111110h x10x
|
|
SLL AO,Al 00100 88888888h 88888880h xOOx
|
|
SLL AO,Al 11110 FFFFFFFCh OOOOOOOOh x11x
|
|
SLL AO,Al 11111 FFFFFFFCh OOOOOOOOh x01x
|
|
|
|
|
|
|
|
|
|
12-242
|
|
Shift Right Arithmetic - Constant SRA
|
|
|
|
|
|
Syntax SRA K,Rd
|
|
Execution right-shift Rd by K -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 01 28 complement of K 1R Rd I
|
|
Description SRA right-shifts the contents of the destination register by a specified
|
|
number of bits. The shift count is specified by the 2s complement of a 5-bit
|
|
immediate value, or constant; this produces a shift count of 0 to 31. (K in
|
|
the syntax represents this 5-bit constant).
|
|
The last bit shifted out of the destination register (the original value of bit
|
|
K-1) is shifted into the carry bit. The sign bit (MSB) is extended into the
|
|
most significant bits.
|
|
31 30 0 C
|
|
|
|
|
|
~
|
|
.s.
|
|
~ l::::_-_-_-_·~_6_hlft___~~~~
|
|
L6B
|
|
M6B
|
|
|
|
The assembler only accepts absolute expressions for the shift count. If the
|
|
specified shift count is greater than 31, the assembler issues a warning and
|
|
sets the K field in the opcode to the 2s complement of the 5 LSBs of K.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C Set to the value of last bit shifted out, 0 for shift count of 0
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
A1 A1 NCZV
|
|
SRA O,Al OOOOOOOOh OOOOOOOOh 001x
|
|
SRA O,Al FFFFOOOOh FFFFOOOOh 100x
|
|
SRA 8,Al 7FFFOOOOh 007FFFOOh OOOx
|
|
SRA 8,Al FFFFOOOOh FFFFFFOOh 100x
|
|
SRA 30,Al 7FFFOOOOh 0000OO01h 010x
|
|
SRA 31,Al 7FFFOOOOh OOOOOOOOh 011x
|
|
SRA 31,Al FFFFOOOOh FFFFFFFFh 110x
|
|
|
|
|
|
|
|
|
|
12-243
|
|
SRA Shift Right Arithmetic - Register
|
|
|
|
|
|
Syntax SRA Rs,Rd
|
|
Execution right-shift Rd by 2s complement of 5 LSBs in Rs -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
10 0 0 01 Rs 1R Rd I
|
|
Description SRA right-shifts the contents of the destination register by a specified
|
|
number of bits. The shift amount is specified by the 2s complement of the
|
|
5 LSBs of Rs (the 27 MSBs of Rs are ignored); this produces a shift count
|
|
between 0 and 31 .
|
|
The last bit shifted out of the destination register (the original value of bit
|
|
K-1) is shifted into the carry bit. The sign bit (MSB) is extended into the
|
|
most significant bits.
|
|
31 30 0 C
|
|
.--.Is~l::_-_-_-_"_._S_h_Ift__
|
|
--_-_-:_~.~
|
|
~ LSB
|
|
MSB
|
|
|
|
You must specify Rs with a keyword or a symbol which has been defined
|
|
to be a register, for example, A9; otherwise, the assembler uses the SRA
|
|
K,Rd instruction. Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C Set to the value of last bit shifted out, 0 for shift count of 0
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
5 LSBs AO A1 A1 NCZV
|
|
SRA Ac,AI 00000 OOOOOOOOh OOOOOOOOh 001x
|
|
SRA Ac,AI 00000 FFFFOOOOh FFFFOOOOh 100x
|
|
SRA Ac,AI 11111 7FFFOOOOh 3FFF8000h OOOx
|
|
SRA Ac,AI 11111 FFFFOOOOh FFFF8000h 100x
|
|
SRA Ac,AI 11000 7FFFOOOOh 007FFFOOh OOOx
|
|
SRA Ac,AI 11000 FFFFOOOOh FFFFFFOOh 100x
|
|
SRA Ac,AI 00010 7FFFOOOOh 00000001h 010x
|
|
SRA Ac,AI 00001 7FFFOOOOh OOOOOOOOh 011x
|
|
SRA Ac,AI 00001 FFFFOOOOh FFFFFFFFh 110x
|
|
|
|
|
|
|
|
|
|
12-244
|
|
Shift Right Logical - Constant SRL
|
|
|
|
|
|
Syntax SRL K,Rd
|
|
Execution right-shift Rd by 2s complement of K -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 1 I 25 complement of K R Rd I
|
|
Description SRL right-shifts the contents of the destination register by a specified
|
|
number of bits. The shift amount is specified by the 2s complement of a
|
|
5-bit immediate value; this produces a shift count between 0 and 31. (K
|
|
in the syntax represents the immediate value, or constant.)
|
|
The last bit shifted out of the destination register (the original value of bit
|
|
K-1) is shifted into the carry bit. Os are shifted into the most significant bits.
|
|
~ 0 C
|
|
o ----1---.~ Shift ----.~ ~
|
|
MSB LSB
|
|
|
|
The assembler accepts only absolute expressions for the shift count. If the
|
|
specified shift amount is greater than 31, the assembler issues a warning
|
|
and set the K field in the opcode to the 25 complement of the 5 LS Bs of K.
|
|
Machine
|
|
States 1,4
|
|
|
|
Status Bits N Unaffected
|
|
C Set to the value of last bit shifted out, 0 for shift count of 0
|
|
Z 1 if the resu It is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
A1 A1 NCZV
|
|
SRL O,Al OOOOOOOOh OOOOOOOOh x01x
|
|
SRL O,Al 7FFFFFFFh 7FFFFFFFh xOOx
|
|
SRL 1,Al 7FFFFFFFh 3FFFFFFFh x10x
|
|
SRL 8,Al 7FFFOOOOh 007FFFOOh xOOx
|
|
SRL 30,Al 7FFFOOOOh 00000001h x10x
|
|
SRL 3l,Al 7FFFOOOOh OOOOOOOOh x11x
|
|
SRL 3l,Al 3FFFOOOOh OOOOOOOOh x01x
|
|
|
|
|
|
|
|
|
|
12-245
|
|
SRL Shift Right Logical - Register
|
|
|
|
|
|
Syntax SRL Rs, Rd
|
|
Execution right-shift Rd by 2s complement of 5 LSBs in Rs ..... Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 1 I Rs IR I Rd I
|
|
Description SRL right-shifts the contents of the destination register by a specified
|
|
number of bits. The shift amount is specified by the 2s complement of the
|
|
5 LSBs of Rs (the 27 MSBs of Rs are ignored); this produces a shift value
|
|
of 0 to 31.
|
|
The last bit shifted out of the destination register (the original value of bit
|
|
K -1) is shifted into the carry bit. Os are shifted into the most significant bits.
|
|
31 0 C
|
|
o -----.I----+~ Shift ----+~ I----{]
|
|
M8B LSB
|
|
|
|
You must specify Rs with a keyword or symbol which has been defined to
|
|
be a register, for example, A9; otherwise, the assembler uses the SRL K,Rd
|
|
instruction. Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N Unaffected
|
|
C Set to the value of last bit shifted out, 0 for shift count of 0
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Before After
|
|
5 LSBs AO A1 A1 NCZV
|
|
SRL AO,Al 00000 OOOOOOOOh OOOOOOOOh x01x
|
|
SRL AO,Al 00000 7FFFFFFFh 7FFFFFFFh xOOx
|
|
SRL AO,Al 11111 7FFFFFFFh 3FFFFFFFh x10x
|
|
SRL AO,Al 11000 7FFFOOOOh 007FFFOOh xOOx
|
|
SRL AO,Al 00010 7FFFOOOOh 00000001h x10x
|
|
SRL AO,Al 00001 7FFFOOOOh OOOOOOOOh x11x
|
|
SRL AO,Al 00001 3FFFOOOOh OOOOOOOOh x01x
|
|
|
|
|
|
|
|
|
|
12-246
|
|
Subtract Registers SUB
|
|
|
|
Syntax SUB Rs, Rd
|
|
Execution Rd - Rs -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
1 0 0 0 0 01 Rs IR Rd I
|
|
Description SUB subtracts the contents of the source register from the contents of the
|
|
destination register and stores the result in the destination register.
|
|
You can accomplish multiple-precision arithmetic by using SUB in con-
|
|
junction with the SUBB instruction.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if there is a borrow, 0 otherwise
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Code Before After
|
|
AO A1 NCZV AO
|
|
SUB AI,AD 7FFFFFF2h 7FFFFFF1h 0000 00000001h
|
|
SUB AI,AD 7FFFFFF2h 7FFFFFF2h 0010 OOOOOOOOh
|
|
SUB AI,AD 7FFFFFF1h 7FFFFFF2h 1100 FFFFFFFFh
|
|
SUB AI,AD 7FFFFFF1h FFFFFFFFh 0100 7FFFFFF2h
|
|
SUB AI,AD 7FFFFFFFh FFFFFFFFh 1101 80000000h
|
|
SUB AI,AD FFFFFFFDh FFFFFFFFh 1100 FFFFFFFEh
|
|
SUB AI,AD FFFFFFFDh FFFFFFFDh 0010 OOOOOOOOh
|
|
SUB AI,AD FFFFFFFEh FFFFFFFDh 0000 00000001h
|
|
SUB AI,AD FFFFFFFFh 00000001h 1000 FFFFFFFEh
|
|
SUB AI,AD 80000000h 00000001h 0001 7FFFFFFFh
|
|
|
|
|
|
|
|
|
|
12-247
|
|
SUBB Subtract Registers with Borro\
|
|
|
|
|
|
Syntax SUBB Rs, Rd
|
|
Execution Rd - Rs - C -+ Rd (the carry bit acts as a borrow)
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
I0 0 0 0 1 I Rs IR Rd
|
|
|
|
Description SUBB subtracts both the contents of the source register and the carry t
|
|
from the contents of the destination register, and stores the result in tl
|
|
destination register.
|
|
You can use this instruction with the SUB, SUBK, and SUBI instructiol
|
|
for extended-precision arithmetic.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if there is a borrow, 0 otherwise
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Code Before After
|
|
C AO A1 NCZV AO
|
|
SUBB Al,AO 0 00000002h 00000001h 0000 00000001
|
|
SUBB Al,AO 1 00000002h 00000001h 0010 00000000
|
|
SUBB Al,AO 0 00000002h 00000002h 0010 00000000
|
|
SUBB Al,AO 1 00000002h 00000002h 1100 FFFFFFFF
|
|
SUBB Al,AO 0 00000002h 00000003h 1100 FFFFFFFF
|
|
SUBB Al,AO 0 7FFFFFFEh FFFFFFFFh 0100 7FFFFFFF
|
|
SUBB Al,AO 0 7FFFFFFEh FFFFFFFEh 1101 80000000
|
|
SUBB Al,AO 1 7FFFFFFEh FFFFFFFEh 0100 7FFFFFFF
|
|
SUBB Al,AO 0 FFFFFFFEh FFFFFFFFh 1100 FFFFFFFF
|
|
SUBB Al,AO 0 FFFFFFFEh FFFFFFFEh 0010 00000000
|
|
SUBB Al,AO 1 FFFFFFFEh FFFFFFFEh 1100 FFFFFFFF
|
|
SUBB Al,AO 0 FFFFFFFEh FFFFFFFDh 0000 00000001
|
|
SUBB Al,AO 1 FFFFFFFEh FFFFFFFDh 0010 00000000
|
|
SUBB Al,AO 0 80000001h 00000001h 1000 80000000
|
|
SUBB Al,AO 1 80000001h 00000001h 0001 7FFFFFFF
|
|
SUBB Al,AO 0 80000001h 00000002h 0001 7FFFFFFF
|
|
|
|
|
|
|
|
|
|
12-248
|
|
Subtract Immediate - 16 Bits SUBI
|
|
|
|
|
|
Syntax SU BI IW, Rd [, W}
|
|
Execution Rd - IW -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
o 1 IR Rd
|
|
1s complement of IW
|
|
|
|
Description SUBI subtracts a sign-extended, 16-bit immediate value from the contents
|
|
of the destination register, and stores the result in the destination register.
|
|
(The IW in the syntax represents a sign-extended, 16-bit immediate value.)
|
|
The assembler uses this form of the SUBI instruction if the immediate value
|
|
was previously defined and is in the range -32,768 to 32,767. You can
|
|
force the assembler to use the short form by by following the register op-
|
|
erand with, W:
|
|
SUBI IW,Rd,W
|
|
The assembler truncates any upper bits and issues an appropriate warning
|
|
message. You can accomplish mUltiple-precision arithmetic by using SUBI
|
|
in conjunction with the SUBB instruction.
|
|
Machine
|
|
States 2,8
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if a borrow is generated, 0 otherwise
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Code Before After
|
|
AO AO NCZV
|
|
SUBI 32765,AO 00007FFEh 00000001h 0000
|
|
SUBI 32766,AO 00007FFEh OOOOOOOOh 0010
|
|
SUBI 32767,AO 00007FFEh FFFFFFFFh 1100
|
|
SUBI 32766,AO 80007FFEh 80000000h 1000
|
|
SUBI 32767,AO 80007FFEh 7FFFFFFFh 0001
|
|
SUBI -32766,AO FFFF8001h FFFFFFFFh 1100
|
|
SUBI -32767,AO FFFF8001h OOOOOOOOh 0010
|
|
SUBI -32768,AO FFFF8001h 00000001h 0000
|
|
SUBI -32767,AO FFFF8000h 7FFFFFFFh 0100
|
|
SUBI -32768,AO 7FFF8000h 80000000h 1101
|
|
|
|
|
|
|
|
|
|
12-249
|
|
SUBI Subtract Immediate - 32 Bits
|
|
|
|
|
|
Syntax SU BilL, Rd [, LJ
|
|
Execution Rd - IL -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 1 1 0 1 0 0 01 R I Rd
|
|
1 s complement of 16 LSBs of IL
|
|
1s complement of 16 MSBs of IL
|
|
|
|
Description SUBI subtracts a signed 32-bit immediate value from the contents of the
|
|
destination register, and stores the result in the destination register. (The
|
|
IL in the syntax represents a signed 32-bit immediate value.)
|
|
The assembler uses this version of the SUBI instruction if it cannot use the
|
|
SUBI IW,Rd opcode, or if you request the long opcode by following the
|
|
register operand with ,L:
|
|
SUBI IL,Rd,L
|
|
You can accomplish multiple-precision arithmetic by using SUBI in con-
|
|
junction with the SUBB instruction.
|
|
Machine
|
|
States 3,12
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if there is a borrow, 0 otherwise
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Code Before After
|
|
AO AO NCZV
|
|
SUBI 2147483647,AO 7FFFFFFFh OOOOOOOOh 0010
|
|
SUBI 32768,AO 00008001h 00000001h 0000
|
|
SUBI 32769,AO 00008001h OOOOOOOOh 0010
|
|
SUBI 32770,AO 00008001h FFFFFFFFh 1100
|
|
SUBI 32768,AO 80008000h 80000000h 1000
|
|
SUBI 32769,AO 80008000h 7FFFFFFFh 0001
|
|
SUBI -2147483648,AO 80000000h OOOOOOOOh 0010
|
|
SUBI -32769,AO FFFF7FFEh FFFFFFFFh 1100
|
|
SUBI -32770,AO FFFF7FFEh OOOOOOOOh 0010
|
|
SUBI -32771,AO FFFF7FFEh 00000001h 0000
|
|
SUBI -32770,AO 7FFF7FFDh 7FFFFFFFh 0100
|
|
SUBI -32771,AO 7FFF7FFDh 80000000h 1101
|
|
|
|
|
|
|
|
|
|
12-250
|
|
Subtract Constant SUBK
|
|
|
|
|
|
Syntax SUBK K,Rd
|
|
Execution Rd - K -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 1 I K R Rd I
|
|
Description SUBK subtracts the 5-bit constant from the contents of the destination re-
|
|
gister; the result is stored in the destination register. The K in the syntax
|
|
represents a constant that is treated as an unsigned number in the range
|
|
1-32. Note that K=O in the opcode corresponds to the value 32; the as-
|
|
sembler converts the value 32 to O. The assembler issues an error if you try
|
|
to subtract 0 from a register.
|
|
You can accomplish multiple-precision arithmetic by using SUBK in con-
|
|
junction with the SUBB instruction.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if the result is negative, 0 otherwise
|
|
C 1 if there is a borrow, 0 otherwise
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V 1 if there is an overflow, 0 otherwise
|
|
Examples Code Before After
|
|
AO AO Nevz
|
|
SUBK S,AO 00000009h 00000004hOOOO
|
|
SUBK 9,AO 00000009h 0000000Oh0010
|
|
SUBK 32,AO 00000009h FFFFFFE9h1100
|
|
SUBK 1,AO 80000000h 7FFFFFFFhOO01
|
|
|
|
|
|
|
|
|
|
12-251
|
|
SUBXV Subtract Registers in XV Mode
|
|
|
|
|
|
Syntax SUBXY Rs, Rd
|
|
Execution RdX - RsX ~ RdX
|
|
RdY - RsY ~ RdY
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I1 0 0 0 1 I Rs IR Rd I
|
|
Description SUBXY subtracts the source X and Y values individually from the destina-
|
|
tion X and Y values; the result is stored in the destination register.
|
|
You can use this instruction for manipulating XY addresses; it is particularly
|
|
useful for incremental figure drawing. These addresses are stored as XY
|
|
pairs in the register file.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits N 1 if source X field = destination X field, 0 otherwise
|
|
C 1 if source Y field > destination Y field, 0 otherwise
|
|
Z 1 if source Y field = destination Y field, 0 otherwise
|
|
V 1 if source X field > destination X field, 0 otherwise
|
|
Examples Code Before After
|
|
AO A1 AO NCZV
|
|
SUBXY Al,AO 00090009h 00010001h 00080008h 0000
|
|
SUBXY Al,AO 00090009h 00090001h 00000008h 0010
|
|
SUBXY Al,AO 00090009h 00010009h 00080000h 1000
|
|
SUBXY Al,AO 00090009h 00090009h OOOOOOOOh 1010
|
|
SUBXY Al,AO 00090009h 00000010h 0009FFF9h 0001
|
|
SUBXY Al,AO 00090009h 00090010h 0000FFF9h 0011
|
|
SUBXY Al,AO 00090009h 00100000h FFF90009h 0100
|
|
SUBXY Al,AO 00090009h 00100009h FFF90000h 1100
|
|
SUBXY Al,AO 00090009h 001 0001 Oh FFF9FFF9h 0101
|
|
|
|
|
|
|
|
|
|
12-252
|
|
Software Interrupt TRAP
|
|
|
|
Syntax TRAP N
|
|
Execution PC -+ -*5P
|
|
5T -+ -*5P
|
|
trap vector N -+ PC
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
1 0 0 0 0 0 0 0 0 01 N
|
|
|
|
Description TRAP executes a software interrupt. The N parameter is a trap number from
|
|
o to 31 that selects the trap to be executed. During a software interrupt,
|
|
• The return address (the address of next instruction) is pushed on the
|
|
stack.
|
|
• The status register is pushed on the stack.
|
|
• The IE (interrupt enable) bit in 5T is set to 0, disabling maskable in-
|
|
terrupts, and 5T is set to 00000010h.
|
|
• Finally, the trap vector is loaded into the PC.
|
|
The TM53401 0 generates the trap vector addresses as shown below:
|
|
Trap
|
|
Number Addreas
|
|
--0-
|
|
>FFFF FFEO I-----I~!.P_--I Reset
|
|
1 >FFFF FFCO External Interrupt 1
|
|
2 >FFFF FFAO External Interrupt 2
|
|
3 >FFFF FF80
|
|
4 >FFFF FF60
|
|
5 >FFFF FF40
|
|
6 >FFFF FF20
|
|
7 >FFFF FFOO 1----nI'ln----I
|
|
8 >FFFF FEEO Non Mukable Interrupt
|
|
9 >FFFF FECO Host Interrupt
|
|
10 >FFFF FEAO DIsplay Interrupt
|
|
11 >FFFF FE80 WIndow Violation
|
|
12 >FFFF FE60
|
|
13 >FFFF FE40
|
|
14 >FFFF FE20
|
|
15 >FFFF FEOO
|
|
16 >FFFF FDEO
|
|
17 >FFFF FDCO
|
|
18 >FFFF F[)\O
|
|
19 >FFFF FDBO
|
|
20 >FFFF FD60 Traps 12-29
|
|
21 >FFFF FD40
|
|
22 >FFFF FD20
|
|
23 >FFFF FDOO
|
|
24 >FFFF FCEO
|
|
25 >FFFF FCCO
|
|
26 >FFFF FCAO
|
|
27 >FFFF FCSO
|
|
28 >FFFF FCSO
|
|
29 >FFFF FC40 I-----,"""~--I
|
|
30 >FFFF FC20 Illegal Opcode
|
|
31 >FFFF FCOO ti==~~=:;t
|
|
|
|
The stack, which is located in external memory, grows toward lower ad-
|
|
dresses. The PC and 5T are pushed on the stack M5W first, and the 5P is
|
|
predecremented before each word is loaded onto the stack.
|
|
|
|
|
|
|
|
|
|
12-253
|
|
TRAP Software Interrupt
|
|
|
|
|
|
|
|
Notes:
|
|
|
|
1. The level 0 trap differs from all other traps; it does not save the old
|
|
status register or program counter. This may be useful in cases
|
|
where the stack pointer is corrupted or uninitialized; such a situ-
|
|
ation could cause an erroneous write.
|
|
2. The NMI bit does not affect the operation of TRAP B.
|
|
|
|
|
|
For more information, refer to Section B (Interrupts, Traps, and Reset).
|
|
Machine
|
|
States 16,19 (SP aligned)
|
|
30,33 (SP nonaligned)
|
|
Status Bits N 0
|
|
C 0
|
|
Z 0
|
|
V 0
|
|
Examples
|
|
Code Before After
|
|
PC SP PC w- ST
|
|
TRAP 0 xxxxxxxxh BOOOOOOOh FFFFFFEOh BOOOOOOOh 00000010h
|
|
TRAP 1 xxxxxxxxh BOOOOOOOh FFFFFFCOh 7FFFFFCOh 00000010h
|
|
|
|
|
|
TRAP 30 xxxxxxxxh BOOOOOOOh FFFFFC20h 7FFFFFCOh 00000010h
|
|
TRAP 31 xxxxxxxxh BOOOOOOOh FFFFFCOOh 7FFFFFCOh 00000010h
|
|
|
|
|
|
|
|
|
|
12-254
|
|
Exclusive-OR Registers XOR
|
|
|
|
|
|
Syntax XOR Rs, Rd
|
|
Execution Rs XOR Rd -+ Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 1 I Rs R Rd I
|
|
Description XOR bitwise-exclusive-ORs the contents of the source register with the
|
|
contents of the destination register, and stores the result in the destination
|
|
register.
|
|
You can use this instruction to clear registers (for example, XOR BO ,BO);
|
|
the CLR instruction also supports this function.
|
|
Rs and Rd must be in the same register file.
|
|
Machine
|
|
States 1,4
|
|
Status Bits NUn affected
|
|
C Unaffected
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Before
|
|
AO A1 NCZV A1
|
|
XOR AO,Al FFFFFFFFh OOOOOOOOh xxOx FFFFFFFFh
|
|
XOR AO,Al FFFFFFFFh AAAAAAAAh xxOx 55555555h
|
|
XOR AO,Al FFFFFFFFh FFFFFFFFh xx1x OOOOOOOOh
|
|
|
|
|
|
|
|
|
|
12-255
|
|
XORI Exclusive-OR Immediate Value
|
|
|
|
|
|
Syntax XORI IL, Rd
|
|
Execution IL XOR Rd .... Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 o
|
|
0 0 0 0 1 0 1 1 1 1 oIR I Rd
|
|
16 LSBs of IL
|
|
16 MSBs of IL
|
|
|
|
Description XORI bitwise exclusive ORs a 32-bit immediate data with the contents of
|
|
the destination register and stores the result in the destination register. (The
|
|
IL parameter in the syntax above represents a 32-bit immediate value.)
|
|
Machine
|
|
States 3,12
|
|
Status Bits N Unaffected
|
|
C Unaffected
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
AO NCZV AO
|
|
XORI OFFFFFFFFh,AO OOOOOOOOh xxOx FFFFFFFFh
|
|
XORI OFFFFFFFFh,AO AAAAAAAAh xxOx 55555555h
|
|
XORI OFFFFFFFFh,AO FFFFFFFFh xx1x OOOOOOOOh
|
|
XORI oOOOOOOOh,AO OOOOOOOOh xx1x OOOOOOOOh
|
|
XORI oOOOOOOOh,AO FFFFFFFFh xxOx FFFFFFFFh
|
|
|
|
|
|
|
|
|
|
12-256
|
|
Zero Extend to Long ZEXT
|
|
|
|
|
|
Syntax ZEXT Rd [, FJ
|
|
Execution field in Rd -+ zero-extended field Rd
|
|
|
|
Instruction
|
|
Words 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
I0 0 0 0 0 1 IF I 1 0 0 1 IR Rd I
|
|
Description ZEXT zero extends a right-justified field in the destination register by zero-
|
|
ing all the nonfield bits in Rd. The size of the field is determined by the
|
|
current field size. The optional F parameter, which must be specified as a
|
|
o or a 1, selects the field size:
|
|
F =0 selects FSO for the field size.
|
|
F=1 selects FS1 for the field size.
|
|
The default value for F is O.
|
|
Machine
|
|
States 1,4
|
|
Status Bits NUn affected
|
|
C Unaffected
|
|
Z 1 if the result is 0, 0 otherwise
|
|
V Unaffected
|
|
Examples Code Before After
|
|
FSO FS1 AO NCZV AO
|
|
ZEXT AO,O 32 x FFFFFFFFh xxOx FFFFFFFFh
|
|
ZEXT AO,O 31 x FFFFFFFFh xxOx 7FFFFFFFh
|
|
ZEXT AO,O 1 x FFFFFFFFh xxOx 00000001h
|
|
ZEXT AO,O 16 x FFFFOOOOh xx1x OOOOOOOOh
|
|
ZEXT AO,l x 16 FFFFOOOOh xx1x OOOOOOOOh
|
|
|
|
|
|
|
|
|
|
12-257
|
|
Instruction Set
|
|
|
|
|
|
|
|
|
|
12-258
|
|
Section 13
|
|
Instruction Timings
|
|
|
|
|
|
Section 12, The TMS34010 Instruction Set, describes each TMS34010 as-
|
|
sembly language instruction, including instruction cycle timings. This section
|
|
provides details pertaining to instruction timings for the following groups of
|
|
instructions:
|
|
Section Page
|
|
13.1 General Instructions .............................................................................. 13-2
|
|
13.2 MOVE and MOVB Instructions ........................................................... 13-4
|
|
13.3 FILL Instructions ................................................................................. 13-10
|
|
13.4 PIXBLT Instructions ........................................................................... 13-18
|
|
13.5 PIXBLT Expand Instructions ............................................................. 13-31
|
|
|
|
|
|
|
|
|
|
13-1
|
|
Instruction Timings - General Instructions
|
|
|
|
|
|
|
|
13.1 General Instructions
|
|
|
|
Note:
|
|
General instructions include all TMS34010 instructions except MOVEs,
|
|
MOVBs, FILLs, PIXBLTs, and LINE.
|
|
|
|
|
|
Each instruction description in Section 12 contains a Machine States field
|
|
that describes the instruction execution time in terms of the machine state. A
|
|
machine state is the fundamental time unit of the processor. Logically, it is the
|
|
time required to decode, interpret, and execute a single microinstruction in-
|
|
ternal to the CPU. Physically, a TMS3401 0 machine state is equal to a single
|
|
local clock period (the time from one LCLK1 low-to-high transition to the
|
|
next). For example, this value is 160 nanoseconds for a TMS34010 clocked
|
|
at 50 M Hz, and 200 nanoseconds for a 40- M Hz TMS3401 O.
|
|
The descriptions in the instruction discussions appear as:
|
|
Machine
|
|
States cache hit case, cache disabled case
|
|
These two values represent the number of CPU states required to execute the
|
|
instruction for each of two cases:
|
|
|
|
• The cache hit case gives the number of execution states if the in-
|
|
struction and its extension words reside entirely in cache. Thus, only
|
|
actual execution states (using the CPU) and external memory cycles for
|
|
data transfer are counted with the instruction.
|
|
|
|
• The cache disabled case gives the number of execution states if the
|
|
cache is disabled when the instruction is executed. In this case, external
|
|
memory cycles for fetching the instruction word and any extension
|
|
words are counted with the instruction in addition to states through the
|
|
CPU and memory states for data transfer. Cache is usually only disabled
|
|
during debugging.
|
|
Cache disabled timing is not necessarily worst case timing. It may sometimes
|
|
be exceeded when the cache is enabled but the instruction is not in the cache
|
|
(this is known as a cache miss).
|
|
|
|
13.1.1 Best Case Timing - Considering Hidden States
|
|
Best case timing occurs when an instruction is executed entirely in parallel
|
|
with the end of a previous instruction. According to some microprocessor
|
|
conventions, many TMS3401 0 instructions would have a best case timing of
|
|
o states. Since this is unrealistic, the convention used here assigns a finite
|
|
(nonzero) timing value but allows for instruction overlap by using the concept
|
|
of hidden states.
|
|
Hidden states are memory write cycles that occur at the end of a given in-
|
|
struction. Parallelism is achieved when the CPU is executing instructions at
|
|
the same time the memory controller is writing to memory. The machine states
|
|
consumed by the instructions that the CPU is executing hide the machine
|
|
|
|
|
|
13-2
|
|
Instruction Timings - General Instructions
|
|
|
|
|
|
states consumed by the write cycles. These hidden machine states are not
|
|
counted against the instruction that incurs them, but are counted against
|
|
subsequent instructions. If an instruction uses the local bus before all of the
|
|
hidden cycles have been overlapped by subsequent instructions, that in-
|
|
struction must wait for the hidden cycles to complete. Up to nine machine
|
|
states may be hidden by write cycles incurred by a single instruction.
|
|
In the timing charts in this section and in the Machine States portions of the
|
|
instruction descriptions, hidden states are indicated by parentheses as shown
|
|
below:
|
|
Machine
|
|
States cache hit case + (hidden states),cache disabled case
|
|
|
|
13.1.2 Other Effects on Instruction Timing
|
|
Instruction timing varies, depending on:
|
|
|
|
• Whether the cache is enabled.
|
|
|
|
• Whether the instruction and extension words are in cache or not.
|
|
|
|
• The field size and the word alignment of memory data manipulated
|
|
by the instruction.
|
|
The timing for some instructions (particularly the MOVE, MOVEB, LINE, FILL,
|
|
and PIXBLT instructions) is affected by the values of implied operands and
|
|
on the alignment and field sizes of any associated memory accesses.
|
|
In addition, several system-dependent factors that are not included in timing
|
|
values may further influence the instruction timings:
|
|
|
|
• Wait states on the local memory bus
|
|
|
|
• Host accesses via the host port
|
|
|
|
• Display refresh operations
|
|
|
|
• D RAM refresh operations
|
|
|
|
• HOLD/HLDA accesses
|
|
|
|
|
|
|
|
|
|
13-3
|
|
Instruction Timings - MOVE and MOVB Instructions
|
|
|
|
|
|
|
|
13.2 MOVE and MOVB Instructions
|
|
Timings for MOVE and MOVB instructions are in the following tables:
|
|
Table Page
|
|
13-1 MOVE and MOVB Memory-to-Register Timings ............................. 13-5
|
|
13-2 MOVE and MOVB Register-to-Memory Timings ............................. 13-6
|
|
13-4 MOVE Memory-to-Memory Timings .................................................. 13-7
|
|
MOVE and MOVB instructions are field operations, so their timings are af-
|
|
fected by factors such as memory address, field size, and field extensions.
|
|
These factors define the field alignment, which in turn defines the number of
|
|
memory states required to insert or extract the field from memory. Figure 13-1
|
|
illustrates seven cases of alignment, labelled A-G, that are used in the MOVE
|
|
and MOVB timing tables.
|
|
|
|
Cae A
|
|
|
|
|
|
|
|
|
|
Caae B
|
|
|
|
|
|
|
|
|
|
Caae C , Word N+1 I Word N
|
|
- 32-B1t field
|
|
|
|
Cae 0 IWOiCi N+1 I
|
|
Ii===Fleid
|
|
|
|
Caae E
|
|
Word N+g;~~QLj
|
|
Caae F Word N+1 I Word N
|
|
Ii=== field ~i
|
|
|
|
Caae G Word N+2 Word N+1 Word N
|
|
Ie Field ~i
|
|
|
|
Figure 13-1. Field Alignments in Memory
|
|
|
|
|
|
Case A A 16-bit field is aligned on word boundaries.
|
|
Cases B1-B3
|
|
The field length is less than 1 6 bits.
|
|
|
|
• In Case B1, the field starting address is not aligned to a word
|
|
boundary, although the end of the field coincides with the end
|
|
of the word.
|
|
|
|
|
|
13-4
|
|
Instruction Timings - MOVE and MOVB Instructions
|
|
|
|
|
|
|
|
• In Case B2, the field starting address is aligned to a word
|
|
boundary, but the end of the field does not coincide with the
|
|
end of the word.
|
|
|
|
• In Case B3, the field length is 14 bits or less, and neither the
|
|
start nor the end of the field is aligned to a word boundary.
|
|
Case C A 32-bit field is aligned on word boundaries.
|
|
Case 0 The field size is greater than 16 bits. The field starting address is not
|
|
aligned to a word boundary, although the end of the field coincides
|
|
with the end of a word.
|
|
Case E The field size is greater than 1 6 bits. The field starting address is
|
|
aligned to a word boundary, but the end of the field does not coin-
|
|
cide with the end of a word.
|
|
Case F The field straddles the boundary between two words. Neither the
|
|
start nor the end of the field is aligned to a word boundary.
|
|
Case G The field size ranges from 18 to 32 bits, and the field straddles two
|
|
word boundaries. Neither the start nor the end of the field is aligned
|
|
to a word boundary.
|
|
|
|
13.2.1 Moves Between Registers and Memory
|
|
Table 13-1 lists the timing for memory-to-register moves for each case of the
|
|
destination alignment in Figure 13-1. Table 13-2 lists the timing for regis-
|
|
ter-to-memory moves. Note that there are no hidden states for memory-to-
|
|
register moves.
|
|
Table 13-1. MOVE and MOVB Memory-to-Register Timings
|
|
|
|
Field Alignment Type
|
|
Instruction
|
|
A or B C, 0, E, F G
|
|
MOVB *Rs, Rd 3,6 5,8 -
|
|
MOVB *Rs(offsetj, Rd 5,11 7,13 -
|
|
MOVB @Address, Rd 5,14 7,16 -
|
|
MOVE *Rs, Rd 3,6 5,8 7,10
|
|
MOVE *Rs+,Rd 3,6 5,8 7,10
|
|
MOVE -*Rs, Rd 4,7 6,9 8,11
|
|
MOVE *Rs(offsetj, Rd 5,11 7,13 9,15
|
|
MOVE @Address, Rd 5,14 7,16 9,18
|
|
Notes: 1. Add 1 state to MOVES for sign extension.
|
|
2. The first number specifies the number of cycles required when the entire in-
|
|
struction is contained within cache (cache hit case). The second number
|
|
specifies the number of cycles required when the cache is disabled (cache
|
|
disabled case).
|
|
|
|
|
|
|
|
|
|
13-5
|
|
Instruction Timings - MOVE and MOVB Instructions
|
|
|
|
|
|
|
|
Table 13-2. MOVE and MOVe Register-to-Memory Timings
|
|
|
|
Field Alignment Type
|
|
Instruction
|
|
A B or C D or E F G
|
|
MOVB Rs, *Rd - 1 +(3),7 - 1+(7),11 -
|
|
MOVB Rs, * Rd(offset) - 3+(3),7 - 3+(7),13 -
|
|
MOVB Rs, @Address - 1 +(3),7 - 3+(7),13 -
|
|
MOVE Rs, *Rd 1+(1),5 1 +(3),7 1 +(5),9 1+(7),11 1+(9),13
|
|
MOVE Rs, *Rd+ 1+(1),5 1 +(3),7 1 +(5),9 1+(7),11 1+(9),13
|
|
MOVE Rs, - *Rd 2+(1 ),6 2+(3),8 2+(5),10 2+(7),12 2+(9),14
|
|
MOVE Rs, * Rd(offset) 3+{1 ),9 3+(3),12 3+(5),14 3+(7),13 3+(9),18
|
|
MOVE Rs, @Address 3+(1),13 3+(3),15 3+(5),17 3+(7),19 3+(9),21
|
|
Note: The first number specifies the number of cycles required when the entire instruction is contained
|
|
within cache (cache hit case). The second number specifies the number of cycles required when
|
|
the cache is disabled (cache disabled case). Hidden states are indicated by parentheses.
|
|
|
|
|
|
13.2.2 Memory-to-Memory Moves
|
|
Table 13-4 lists memory-to-memory move timings for each combination of
|
|
source and destination alignment. Table 13-3 lists numeric indices which are
|
|
used in Table 13-4. The indices are associated with each source and desti-
|
|
nation alignment yair (the alignments are shown in Figure 13-1 on page
|
|
13-4). To use these tables:
|
|
1) Determine the source and destination alignment,
|
|
2) Locate the alignment and its index in Table 13-3, and
|
|
3) Use the index to select the correct column for a particular MOVE
|
|
addressing mode in Table 13-4.
|
|
|
|
Table 13-3. Alignment Indices for Memory-to-Memory Moves
|
|
|
|
Source Field Destination Field Alignment
|
|
Alignment A B C D E F G
|
|
A 1 - - - - 3 -
|
|
B - 2 - - - 3 -
|
|
C - - 6 - - - 9
|
|
D - - - 7 7 8 9
|
|
E - - - 7 7 8 9
|
|
F 4 5 - 7 7 8 9
|
|
G - - 10 11 11 12 13
|
|
|
|
|
|
|
|
|
|
13-6
|
|
Instruction Timings - MOVE and MOVB Instructions
|
|
|
|
|
|
|
|
Table 13-4. MOVE Memory-to-Memory Timings
|
|
|
|
Memory-to-Memory Index - Source to Destination
|
|
Instruction
|
|
1 2 3 4 5 6 7
|
|
Move *Rs, *Rd - 3+(3),7 3+(7),13 - 5+(3),11 - -
|
|
Move * Rs(offset),
|
|
* Rd(offset)
|
|
- 5+(3),7 5+(7),21 - 6+(3),13 - -
|
|
Move @SAddr, @DAddr - 7+(3),7 7+(7),29 - 6+(3),12 - -
|
|
MOVE *Rs, *Rd 3+(1 ),7 3+(3),9 3+(7),13 5+(1 ),9 5+(3),11 5+(3),11 5+(5),13
|
|
MOVE *Rs+, *Rd+ 4,7 4+(2),9 4+(6),13 6,9 6+(2),11 6+(2),11 6+(4),13
|
|
MOVE -*Rs, -*Rd 4+(1 ),8 4+(3),10 4+(7),14 6+(1),10 6+(3),12 6+(3),12 6+(5),14
|
|
MOVE * Rs(offset), * Rd+ 5+(1),12 5+(3),14 5+(7),18 7+(1 ),14 7+(3),16 7+(3),13 7+(5),15
|
|
MOVE * Rs(offset), 5+(1).15 5+(3),17 5+(7),21 7+(1).17 7+(3),19 7+(3),16 7+(5),18
|
|
* Rd(offset)
|
|
MOVE @SAddr, * Rd+ 5+(1),15 5+(3).17 5+(7),21 7+(1),17 7+(3),19 7+(3),16 7+(5),18
|
|
MOVE @SAddr, @DAddr 7+(1),23 7+(3),25 7+(7),29 9+(1),25 9+(3),27 9+(3),24 9+(5),26
|
|
Memory-to-Memory Index - Source to Destination
|
|
Instruction
|
|
8 9 10 11 12 13
|
|
Move * Rs, * Rd 5+(7),15 - - - - -
|
|
Move * Rs(offset), 7+(7),19 - - - - -
|
|
* Rd(offset)
|
|
Move @SAddr, @DAddr 9+(7),27 - - - - -
|
|
MOVE *Rs, *Rd 5+(7),15 5+(9),17 7+(3),13 7+(5),15 5+(7),17 9+(9),21
|
|
MOVE *Rs+, *Rd+ 6+(6),15 6+(8),17 8+(2),13 8+(4),15 6+(6),17 10+(8),21
|
|
MOVE -*Rs, -*Rd 6+(7),15 6+(9),18 8+(3),14 8+(5),16 6+(7),18 10+(9),22
|
|
MOVE * Rs(offset), * Rd+ 7+(7),16 7+(9),19 9+(3),18 9+(5),20 i+(7),22 11 +(9),26
|
|
MOVE * Rs(offset), 7+(7).19 7+(9),22 9+(3),21 9+(5),23 7+(7),25 11 +(9),29
|
|
* Rd(offset)
|
|
MOVE @SAddr, *Rd+ 7+(7),19 7+(9),22 9+(3),21 9+(5),23 7+(7),25 11 +(9),29
|
|
MOVE @SAddr, @DAddr 9+(7),27 9+(9),30 11 +(3),29 11 +(5),31 9+(7),33· 13+(9),37
|
|
Note: The number on the left specifies the number of cycles required when the entire instruction is con-
|
|
tained within cache (cache hit case). The number on the right specifies the number of cycles re-
|
|
quired when the cache is disabled (cache disabled case). Hidden states are indicated by
|
|
parentheses.
|
|
|
|
|
|
|
|
|
|
13-7
|
|
Instruction Timings - MOVE and MOVB Instructions
|
|
|
|
|
|
|
|
13.2.3 MOVE Timing Example
|
|
This example illustrates the timing for the following MOVE instruction:
|
|
|
|
|
|
*************************************************
|
|
* Example of a MOVE @SADDR,@DADDR instruction: *
|
|
* Source address = OE5h *
|
|
* Destination address = 161h *
|
|
* Size of field 0 = 31 bits (FEO = don't care) *
|
|
*************************************************
|
|
SETF 31, 0 ; Set FSO field in ST
|
|
MOVE @OESh, @16lh, 0
|
|
|
|
|
|
This example moves 31 bits of data from one memory location to another
|
|
memory location (a memory-to-memory move). We know that the field size
|
|
is 31 bits because we FSO to 31 and then used field 0 for the move. To de-
|
|
termine the timing for this MOVE instruction, follow these steps:
|
|
1) Determine the field alignment of the source data.
|
|
The 31 bits of source data begin at address OE5h and span three words.
|
|
Figure 13-2 below illustrates the alignment of the source data in mem-
|
|
ory; if you look at Figure 13-1 on page 13-4, you'll see that this is
|
|
alignment G.
|
|
|
|
|
|
|
|
|
|
T
|
|
/
|
|
\
|
|
|
|
|
|
|
|
Figure 13-2. Source Data, Alignment G
|
|
|
|
|
|
2) Determine the field alignment of the destination location.
|
|
The destination location begins at address 161 h and spans two words.
|
|
Figure 13-3 illustrates alignment of the destination location; according
|
|
to Figure 13-1 (page 13-4), this is alignment E.
|
|
|
|
|
|
|
|
|
|
Figure 13-3. Destination Location, Alignment E
|
|
|
|
|
|
|
|
|
|
13-8
|
|
Instruction Timings - MOVE and MOVB Instructions
|
|
|
|
|
|
|
|
3) Find the alignment index for the combination of the source alignment
|
|
and the destination alignment.
|
|
Table 13-3 (page 13-6) shows the source-to-destination alignment in-
|
|
dices. The correct index for the combination of source alignment G with
|
|
destination alignment E is index 11.
|
|
4) Find the index for this instruction in Table 13-4 (page 13-7).
|
|
The example instruction, MOVE @OE5h I @161h, corresponds to M aVE
|
|
@SAddr,@Oaddr in Table 13-4. Follow this row in the table across to
|
|
the entry beneath column 11. The timing listed in this entry,
|
|
11 +(5),31, is the timing for the example instruction.
|
|
Thus, this MOVE example consumes 11 machine states (plus 5 hidden states)
|
|
if this code resides in cache. If the instruction cache is not enabled, this ex-
|
|
ample consumes 31 machine states. The memory accesses at the end of the
|
|
MOVE consume 5 machine states, which may be hidden by subsequent
|
|
cache-resident instructions.
|
|
This example is for a memory-to-memory move. If you want to determine the
|
|
timing for a memory-to-register or a register-to-memory move, use Table 13-2
|
|
or Table 13-1 .
|
|
|
|
|
|
|
|
|
|
13-9
|
|
Instruction Timings - FILL Instructions
|
|
|
|
|
|
|
|
13.3 FILL Instructions
|
|
The total time for the FILL instruction is determined by adding a setup time to
|
|
a transfer time:
|
|
FILL time = FILL setup time + FILL transfer time
|
|
|
|
• The setup sequence executes an initialization sequence, performing
|
|
any necessary setup operations and translations. (This may include
|
|
XV -to-linear conversions and window preclipping.) The result of the
|
|
setup includes the dimensions of the array that is to be moved.
|
|
|
|
• The transfer sequence performs the actual data transfer from the
|
|
source register to the destination array.
|
|
FILL setup and transfer timings are in the following tables:
|
|
Table Page
|
|
13-5 FI LL Setup Time ................................................................................. 13-10
|
|
13-6 FILL Transfer Timingt ........................................................................ 13-11
|
|
|
|
13.3.1 FILL Setup Time
|
|
FILL setup time is the overhead incurred by the FILL instructions from per-
|
|
forming initialization, XV conversions, and window operations. Windowop-
|
|
erations are performed before the FI LL transfer begins. Window options that
|
|
affect FILL setup timing include:
|
|
|
|
• No window clipping (W=O)
|
|
• A window clip that requires no change (array fits)
|
|
• A window clip that affects the starting pointer (start adjust)
|
|
• A window clip that affects the array transfer dimensions (dimension
|
|
adjust)
|
|
• A window clip that affects both the starting and the ending pointers
|
|
(adjust both)
|
|
• A window miss requesting an interrupt
|
|
• A window hit
|
|
Table 13-5 illustrates the effects of windowing operations on FILL setup tim-
|
|
ing. Corner adjust operations have no effect on FILL setup timing.
|
|
Table 13-5. FILL Setup Time
|
|
|
|
Window Operation Corner Adjust
|
|
Array Start Dimens Adjust PBH=1 PBH=O PBH=1
|
|
Instruction W=O Fits Adjust Adjust Both Miss Hit PBV=O PBV=1 PBV=1
|
|
FILL L 4 - - - - - - - - -
|
|
FILL XV 6 9 16 12 20 - - - - -
|
|
Note: These timings are for the cache hit case; add 3 machine states for cache disabled timing.
|
|
|
|
For example, a FI LL XV with preclipping that requires both the starting and
|
|
ending array corners to be adjusted would consume 20 states of setup time.
|
|
|
|
|
|
13-10
|
|
Instruction Timings - FILL Instructions
|
|
|
|
|
|
|
|
13.3.2 FILL Transfer Timing
|
|
Table 13-6 lists FILL transfer timings. Transfer timing is the time required (in
|
|
addition to the setup time) to execute the actual data transfer to memory.
|
|
Transfer timing is based on several parameters such as the number of rows in
|
|
the adjusted array (L), the number of words affected per row (N), graphics
|
|
operations (G), and four possible destination array alignments (A, B, C, and
|
|
D). These factors are described in the list that follows the table.
|
|
Table 13-6. FILL Transfer Timingt
|
|
|
|
Array Alignments
|
|
Line Length
|
|
A B C 0
|
|
Short (N=1) (1 +G)L + 2 (2+G)L + 2 (2+G)L + 1 (2+G)L + 1
|
|
Medium (N=2) (2+2G)L + 2 (3+2G)L + 2 (3+2G)L + 2 (4+2G)L + 1
|
|
Long (N)3) (1 +NG)L + 2 (2+NG)L + 5 (3+NG)L + 2 (4+NG)L + 1
|
|
t Subtract any alignment/graphics adjustment from these values
|
|
Key:
|
|
L Number of rows (see page 13-11 )
|
|
N Number of words per row (see page 13-12)
|
|
G Value derived from selected graphics operation (see Table 13-7 on page 13-13)
|
|
|
|
|
|
13.3.2.1 Number of Rows in the Adjusted Array (L)
|
|
The working dimensions (L rows x M pixels) for the fill are determined by the
|
|
originally supplied destination pointer (DADDR) and dimensions (DYDX) in
|
|
conjunction with window preclipping.
|
|
|
|
13.3.2.2 Alignment of Leading and Trailing Words in Rows
|
|
After clipping, the data transfer portion of the FI LL treats the array as a series
|
|
of L rows of M pixels. These M pixels are spread across N words in each row
|
|
of the destination array. Figure 13-4 illustrates a single row of a destination
|
|
array in memory. The FILL algorithm resolves rows into three portions:
|
|
1) The leading edge at the beginning of the row
|
|
2) The center N-2 words of the row
|
|
3) The trailing edge at the end of the row
|
|
|
|
Word Boundaries
|
|
I I
|
|
I I
|
|
|
|
..~-----+---- N words----+------tt~
|
|
I
|
|
|
|
:
|
|
I
|
|
|
|
|
|
I
|
|
,..---------------------_...... --...... I
|
|
|
|
:
|
|
I
|
|
|
|
|
|
I
|
|
:
|
|
I
|
|
.....-~------------------....,i---' I
|
|
:
|
|
I
|
|
|
|
II Leading +--11 Center N-2 Words ---+&11 Trailing II
|
|
|
|
I
|
|
Pixels I I
|
|
Plxel8 I
|
|
|
|
: : M Pixels : :
|
|
I I I I
|
|
|
|
|
|
|
|
|
|
Figure 13-4. Pixel Block Alignment in X
|
|
|
|
|
|
|
|
13-11
|
|
Instruction Timings - FILL Instructions
|
|
|
|
|
|
|
|
As Figure 13-4 shows, a row of N words includes one word each for the
|
|
leading and trailing parts of the transfer and N-2 words for the center portion.
|
|
The FILL always transfers the center portion of the row as a series of 16-bit
|
|
words. Thus, the alignment of the leading and trailing words in the row
|
|
characterize the alignment type of the array. Figure 13-5 illustrates the four
|
|
possible alignments (A, B, C, and D) of destination array rows within pixel
|
|
blocks in memory.
|
|
|
|
,~If---------N Worda----------tl~,
|
|
: :'--Word BoUndarl88~ :
|
|
;.'- - - - - - ,---------------------,_ _ _ _-if
|
|
AUgnment A I~1--Le-adlng--~14---c~;;;N-2-W~;;--~·I--Tr-al-lIn-g-...I!
|
|
|
|
ARgnment B
|
|
---------------------------
|
|
!------:-, -------------------....0:",-...
|
|
Leading ~ Center N-2 Worda ~ Tralling
|
|
|
|
|
|
|
|
Algnment C
|
|
,....---------------------------i
|
|
--~,---------------------.;-----...I!
|
|
Leading ~Center N-2 Worda ~ TralRng
|
|
|
|
|
|
|
|
AlIgnment 0
|
|
------------------------
|
|
....._'!'"",--------------------;_-..1
|
|
Leading ~ Center N-2 Words ---+: Trailing
|
|
|
|
|
|
,~ N Worda----------tr~ ,
|
|
Figure 13-5. Pixel Block Alignments
|
|
|
|
|
|
Word alignment is constant from row to row because DPTCH is constrained
|
|
to be a mUltiple of 16 for most FILls. If a FILL is only one pixel wide, and all
|
|
the rows are contained in single words in memory, DPTCH may be any value.
|
|
If DPTCH is not a multiple of 16, word alignment may vary between cases B,
|
|
C, and D. Average timing for this situation may be derived using alignment
|
|
C. Worst case timing for this situation may be derived using alignment D.
|
|
|
|
13.3.2.3 Row Length (Number of Words N per Row)
|
|
Row length is determined by a combination of the computed array pointer
|
|
value in DADDR, the clipped DX dimension, and the pixel size stored in the
|
|
PSIZE register. The data transfer algorithm breaks down into one of three
|
|
cases, short, medium, or long, according to the number of words N in a row.
|
|
These three cases include:
|
|
|
|
• Short case. The destination array row occupies only one word in me-
|
|
mory (N=1). In this case, only one write (or read-modify-write) opera-
|
|
tion is required to place the row into the destination array. Alignment
|
|
|
|
|
|
13-12
|
|
Instruction Timings - FILL Instructions
|
|
|
|
|
|
|
|
for the short case is either type A for exactly aligned arrays or type B, C,
|
|
or 0 for nonaligned arrays (which require a read-modify-write).
|
|
|
|
• Medium case. The destination row occupies two words in memory
|
|
(N=2). In this case, the row has no center portion and the array align-
|
|
ment is determined by the alignments of the first and last words in the
|
|
row.
|
|
|
|
• Long case. The destination row occupies all or part of at least three
|
|
words (N~3). This is the general case for array alignment discussions.
|
|
|
|
13.3.2.4 Transfer Direction in X
|
|
Transfer direction does not apply to FILLs. FILL transfers proceed a single
|
|
word of pixels at a time in the order of increasing X and increasing Y. This
|
|
corresponds to a transfer from left-to-right and top-to-bottom for the default
|
|
screen orientation.
|
|
|
|
13.3.2.5 Selected Graphics Operations (G)
|
|
Graphics operations such as plane masking, transparency, and pixel process-
|
|
ing influence FILL transfer timing because the destination pixels must be read
|
|
before they are replaced. However, the effects of these operations vary be-
|
|
cause they are performed by different portions of the TMS34010 hardware.
|
|
For instance, plane masking, transparency, and field insertion are all performed
|
|
by the TMS34010 memory controller; any combination of these operations
|
|
uses 2 machine states for each word written. Pixel processing, on the other
|
|
hand, is performed by the TMS34010 CPU, and requires 2, 4, 5, or 6 states
|
|
per word (independently of other operations). The minimum cycle time for
|
|
any graphics operation, then, is 2 machine states (one memory cycle) using
|
|
the pixel processing replace operation, with plane masking and transparency
|
|
disabled. Table 13-7 shows these values.
|
|
Table 13-7. Timing Values per Word for Graphics Operations (G)
|
|
|
|
Pixel Processing Operation
|
|
Other ADDS,SUB
|
|
Graphics Operation Replace Booleans MAX. or SUBS
|
|
orADD MIN
|
|
No plane masking or 2 4 5 6
|
|
transparency=~
|
|
|
|
Read-modify-write, plane 4 6 7 8
|
|
masking, or transparency
|
|
|
|
|
|
|
|
|
|
13-13
|
|
Instruction Timings - FILL Instructions
|
|
|
|
|
|
13.3.2.6 Alignment/Graphics Adjustment
|
|
An additional adjustment may be necessary when plane masking or transpar-
|
|
ency are enabled and the alignment type is 8, C, or O. As the second line of
|
|
Table 13-7 shows, if a particular word in a destination row has already been
|
|
read as part of a read-modify-write operation, no additional states are re-
|
|
quired to perform plane masking or transparency for that word. Since the
|
|
alignment types with misaligned edges (8, C, and D) already assume a RMW
|
|
(read-modify-write) on their respective edges, the effect of plane masking or
|
|
transparency can be ignored for these edges. That is, after you have calculated
|
|
the timing using the proper value for the graphics operation, you can subtract
|
|
2 states (cases 8 and C) or 4 states (case D) per row from the transfer timings
|
|
for the respective alignment cases. Case A requires no adjustment.
|
|
|
|
13.3.3 FILL Timing Examples
|
|
To determine the timing for a FILL instruction, add the FILL setup value to the
|
|
FILL transfer value and subtract the alignment adjustment:
|
|
FILL time = FILL setup time + FILL transfer time - alignment adjustment
|
|
FILL setup timings, transfer timings, and the effects of graphics operations are
|
|
listed in the following tables:
|
|
Table Page
|
|
13-5 FILL Setup Time ................................................................................. 13-10
|
|
13-6 FILL Transfer Timingt ........................................................................ 13-11
|
|
13-7 Timing Values per Word for Graphics Operations (G) .................. 13-13
|
|
The following three examples illustrate timing for a Fill XV. The setup and
|
|
transfer timings for these examples are the same, except each uses a different
|
|
graphics operation. Figure 13-7 illustrates the destination array and window
|
|
used in these examples, as defined by the implied operands in Figure 13-6.
|
|
Note that the shaded portion is the area of intersection.
|
|
|
|
****************************************************
|
|
* Implied operand setup for FILL examples (assume *
|
|
* that the B register names and I/O register names *
|
|
* are equated with the proper registers) *
|
|
****************************************************
|
|
MOVI 004400E4h, DADDR X=228, Y=68
|
|
MOVI 800h, DPTCH X extent = 512 pixels
|
|
(at 4 bits per pixel)
|
|
CLR OFFSET
|
|
MOVI 004900EBh, WSTART X=235, Y=73
|
|
MOVI 005F0140h, WEND X=320, Y=95
|
|
MOVI 0014003Ch, DYDX DX=60, DY=20
|
|
MOVI 4h, AO
|
|
MOVE AO, @PSIZE Pixel size = 4 bits
|
|
MOVI 14h, AO
|
|
MOVE AO, @CONVDP (LMO DPTCH)
|
|
MOVI OCh, AO
|
|
MOVE AO, @CONTROL W=3, T=O, PPOP=O
|
|
CLR AO
|
|
MOVE AO, @PMASK Disable plane masking
|
|
|
|
|
|
Figure 13-6. Implied Operand Setup for Fill Example
|
|
|
|
|
|
|
|
|
|
13-14
|
|
Instruction Timings - Fill Instructions
|
|
|
|
|
|
Even word Even word
|
|
boundary boundary
|
|
|
|
|
|
|
|
|
|
~I
|
|
N= 63 =13.62=14
|
|
• pixels per word
|
|
|
|
WSTART
|
|
-~==~~~~~~_d------ (320,73)
|
|
|
|
20
|
|
|
|
|
|
|
|
|
|
I ~ ____~~I.w.w~~~~w.w.~
|
|
I
|
|
I
|
|
|
|
l .("WEND
|
|
(235,95) .-----------------------------. (320,46)
|
|
|
|
Figure 13-7. FILL XV Timing Example
|
|
|
|
|
|
Follow these steps to determine the number of machine states consumed by
|
|
this example:
|
|
1) Determine the setup time; refer to Table 13-5 on page 13-10.
|
|
Setup time comprehends the time required for windowing operations.
|
|
These examples use window preclipping (W bits=3); this option re-
|
|
quires the starting corner to be adjusted. As Table 13-5 (page 13-10)
|
|
shows, the setup time for a FI LL XY with a starting corner adjust is 16
|
|
machine states.
|
|
2) Determine the transfer time; refer to Table 13-6 on page 13-11.
|
|
Transfer time is affected by the number of words per row, line length,
|
|
and graphics operations.
|
|
a) Number of words per row: As Figure 13-7 shows, adjusting the
|
|
array by clipping it to the window dimensions produc"es a new Y
|
|
dimension, so L (the number of rows in the adjusted array) equals
|
|
15.
|
|
b) Line length: Adjusting the array to fit the window also produces
|
|
a new X dimension of 53 pixels. The number of pixels divided by
|
|
the pixel size yields the number of words N per row; 53 divided by
|
|
4 produces 13.25, so N=14. Since N is greater than 3, this exam-
|
|
ple conforms to the long case. The trailing edge is word aligned
|
|
but the leading edge is not, so the alignment type is C.
|
|
As Table 13-6 shows, the transfer time for a FI LL XY with these char-
|
|
acteristics is (3+NG)L + 2. The only variable in the following three
|
|
examples is G, which represents the selected graphics operations.
|
|
|
|
|
|
|
|
|
|
13-15
|
|
Instruction Timings - FILL Instructions
|
|
|
|
|
|
|
|
Example 13-1. Replace, No Transparency, No Plane Masking
|
|
|
|
|
|
The implied operand setup in Figure 13-6 selects the following graphics
|
|
options:
|
|
|
|
• Pixel processing replace operation (PPOP=O),
|
|
• No transparency, and
|
|
• No plane masking.
|
|
According to Table 13-7 (page 13-13), variable G = 2. The FILL timing
|
|
for this instruction is determined as follows:
|
|
FILL time = FILL setup time + FILL transfer time
|
|
= Adjust pointer + [3+(NxG)]L + 2
|
|
= 16 + [(3 + (14x2)]15 + 2
|
|
= 483 states
|
|
|
|
The FILL writes 795 pixels in these 483 states. (The portion of the array
|
|
lying within the window contains 795 pixels.)
|
|
|
|
|
|
Example 13-2. MAX, No Transparency, No Plane Masking
|
|
|
|
|
|
Select the pixel processing MAX option (be sure to retain the values of the
|
|
W bits and the T bit, which are also in the CONTROL register):
|
|
MOVI 50COh, AO
|
|
MOVE AO, @CONTROL ; MAX, W=3, T=O
|
|
These instructions, in combination with the implied operand setup in Figure
|
|
13-6, select the following graphics options:
|
|
|
|
• Pixel processing MAX operation (PPOP=14h),
|
|
• No transparency, and
|
|
• No plane masking.
|
|
According to Table 13-7, variable G = 5. The FILL timing is now calculated
|
|
as:
|
|
FILL time = FILL setup time + FILL transfer time
|
|
= Adjust pointer + [3+(Nx G)]L + 2
|
|
=16 + [3+(5x14)]15+2
|
|
= 1,113 states
|
|
|
|
This FI LL example consumes 1 ,113 machine states.
|
|
|
|
|
|
|
|
|
|
13-16
|
|
Instruction Timings - FILL Instructions
|
|
|
|
|
|
|
|
Example 13-3. XNOR with Transparency and Plane Masking
|
|
|
|
|
|
Select the pixel processing XNOR operation and enable transparency and
|
|
plane masking:
|
|
MOVI 14EDh, AD
|
|
MOVE AD, @CONTROL XNOR, W=3, T=l
|
|
MOVI llllh, AD
|
|
MOVE AD, @PMASK Use a plane mask
|
|
These instructions, in combination with the implied operand setup in Figure
|
|
13-6, select the following graphics options:
|
|
|
|
• Pixel processing XNOR operation (PPOP=05h),
|
|
• No transparency, and
|
|
• No plane masking.
|
|
According to Table 13-7, variable G :::: 6.
|
|
If plane masking or transparency is enabled, you must consider the array
|
|
alignment in the timing. This example conforms to alignment type C (as
|
|
shown in Figure 13-5 on page 13-12), which incurs a read-modify-write
|
|
at the leading edge of each row. The extra read in the RMW can be used
|
|
by the plane masking or transparency hardware, so an alignment/graphics
|
|
adjustment is necessary. The adjustment negates the effect of the extra read
|
|
cycles in each row that are attributed to the graphics operations. For this
|
|
example, the amount subtracted is 2L (the number of machine states for a
|
|
read cycle times the number of rows). The FILL timing is now calculated
|
|
as:
|
|
FI LL time = FI LL setup time + FI LL transfer time - adjustment
|
|
= Adjust pointer + [3+(NxG)]L+2 - 2L
|
|
= 16 + [3 + (6x14)]15 + 2 - (2x15)
|
|
= 1 ,293 states
|
|
|
|
This FI LL example consumes 1,293 machine states.
|
|
|
|
|
|
13.3.4 Interrupt Effects on FILL Timing
|
|
A FILL instruction can be interrupted on a word boundary during the transfer
|
|
portion of the FI LL algorithm. It can also be interrupted at the end of each
|
|
row. The context of the FILL is saved in reserved registers, and the PBX bit
|
|
is set in the copy of the status register that is pushed onto the stack. The worst
|
|
case latency caused by an interrupt is 20 machine states for the interrupt to
|
|
be recognized. The time for the context switch must be added to this. See
|
|
Section 8.5.1, Interrupt Latency (page 8-6) for context switch information.
|
|
|
|
|
|
|
|
|
|
13-17
|
|
Instruction Timings - PIXBLT Instructions
|
|
|
|
|
|
|
|
13.4 PIXBLT Instructions
|
|
PIXBLT instructions covered in this section include:
|
|
|
|
• PIXBLT L,L
|
|
• PIXBLT XY,L
|
|
• PIXBLT L,XY
|
|
• PIXBLT XY,XY
|
|
(PIXBLT B,L and PIXBLT B,XY are discussed in Section 13.5.)
|
|
The total PIXBLT instruction timing is obtained by adding a setup time to a
|
|
transfer time:
|
|
PIXBLT time = PIXBL T setup time + PIXBL T transfer time
|
|
|
|
• The setup sequence executes an initialization sequence, performing
|
|
any necessary setup operations and translations. (This includes XY-
|
|
to-linear conversion and window preclipping.) The result of the setup
|
|
includes the dimensions of the source array.
|
|
|
|
• The transfer sequence performs the actual data transfer from the
|
|
source array to the destination array.
|
|
PIXBLT setup and transfer timings are in the following tables:
|
|
Table Page
|
|
13-8 PIXBLT Setup Time ............................................................................ 13-18
|
|
13-9 PIXBLT Transfer Timingt ................................................................... 13-20
|
|
|
|
13.4.1 PIXBLT Setup Time
|
|
Table 13-8 lists PIXBLT setup times. Setup time is the overhead incurred by
|
|
the PIXBLT instructions in performing initialization, XY conversions, window
|
|
options, and corner adjust. Setup time is affected by both the window and
|
|
corner adjust operations. The effects of these operations are described in the
|
|
list that follows Table 13-8.
|
|
Table 13-8. PIXBLT Setup Time
|
|
|
|
Window Operation Corner Adjust
|
|
Array Start Dimens Adjust PBH=1 PBH=O PBH=1
|
|
Instruction W=O Fits Adjust Adjust Both Miss Hit PBV=O PBV=1 PBV=1
|
|
PIXBLT L, L 7 - - - - - - - - -
|
|
PIXBLT XV, L 9 - - - - - - +1 +2 +4
|
|
PIXBLT L, XV 9 12 19 15 23 - - +1 +2 +4
|
|
PIXBLT XV, XV 12 15 22 18 26 - - +1 +2 +4
|
|
|
|
|
|
For example, consider a PIXBLT XY,XY instruction with preclipping that re-
|
|
quires hoth the starting and ending array corners to be adjusted (PBH =1 and
|
|
PBV=O). The setup timing for this example would be 26+1 =27 states.
|
|
|
|
|
|
|
|
|
|
13-18
|
|
Instruction Timings - PIXBlT Instructions
|
|
|
|
|
|
13.4.1.1 Window Operations
|
|
Window operations are performed before the PIXBLT transfer begins. Win-
|
|
dow options that affect PIXBLT setup timing include:
|
|
|
|
• No window checking (W=O)
|
|
• A window clip that requires no change (array fits)
|
|
• A window clip that affects the starting pointer (start adjust)
|
|
• A window clip that affects the array transfer dimensions (dimension
|
|
adjust)
|
|
• A window clip that affects both the starting and ending pointers (adjust
|
|
both)
|
|
• A window miss that requests an interrupt
|
|
• A window hit
|
|
|
|
13.4.1.2 Corner Adjust (PBH and PBV)
|
|
The TMS3401 0 may need to adjust the starting corner of the source and des-
|
|
tination arrays for the PIXBLT L,XY, PIXBLT XY,L, and PIXBLT XY,XY in-
|
|
structions. The default starting corner is the upper left corner of the array. This
|
|
can be altered by changing the values of the PBH and PBV (PIXBLT hori-
|
|
zontal and vertical) bits. Possible corner adjustments (with default origin
|
|
ORG=O) include:
|
|
|
|
• No corner adjust (PBH=O, PBV=O)
|
|
• Adjust to upper right corner (PBH=1, PBV=O)
|
|
• Adjust to lower left corner (PBH=O, PBV=1)
|
|
• Adjust to lower right corner (PBH=1, PBV=1)
|
|
The TMS34010 adjusts corners before PIXBLT execution begins. For each
|
|
combination of PBH and PBV, the TMS3401 0 adjusts the source and desti-
|
|
nation starting address pointers to point to the appropriate corner of the arrays.
|
|
This assures that the same pixel block is moved, despite the difference in X and
|
|
Y transfer directions.
|
|
The original source and destination pointers must be supplied th-rough soft-
|
|
ware. The pointers should indicate the least significant pixel in the array, ex-
|
|
cept for PIXBLT L,L. For this instruction, the PBH and PBV bits affect only
|
|
the direction of the move; the TMS3401 0 does not adjust the starting corner.
|
|
|
|
|
|
|
|
|
|
13-19
|
|
Instruction Timings - PIXBLT Instructions
|
|
|
|
|
|
|
|
13.4.2 PIXBLT Transfer Timing
|
|
Table 13-9 lists PIXBLT transfer timings. Transfer timing is the time required
|
|
(in addition to the setup time) to execute the actual data transfer to memory.
|
|
Transfer timing is affected by several factors, including the number of rows in
|
|
the adjusted array (L), the number of words affected per row (N), graphics
|
|
operations (G), and four possible destination array alignments (A, B, C, and
|
|
D). These factors are described in the list that follows the table.
|
|
Table 13-9. PIXBlT Transfer Timingt
|
|
|
|
PBH= 0
|
|
Row Lengths Destination Array Alignment
|
|
and Alignment A B C 0
|
|
Short (N=1)
|
|
O>S (G+4)L + 5 (G+6)L + 3 (G+6)L + 3 (G+6)L + 3
|
|
O<S (G+4)L + 5 (G+6)L + 3 (G+6)L + 3 (G+6)L + 3
|
|
Medium (N=2
|
|
O>S [2+(4+2G)]L + 5 [4+(4+2G)]L + 3 [4+(4+2G)]L + 5 [6+(4+2G)]L + 3
|
|
O<S [4+(4+2G)]L + 4 [6+(4+2G)]L + 2 [6+(4+2G)]L + 4 [8+(4+2G)]L + 2
|
|
Long (N.::,3)
|
|
O>S [(2+G)N]L + 5 [2+(2+G)N]L + 3 [2+(2+G)N]L + 5 [2+(4+G)N]L + 3
|
|
O<S [2+(2G)N]L + 4 [4+(2G)N]L + 2 [4+(2G)N]L + 4 [6+(2G)N]L + 2
|
|
PBH= 1
|
|
Row Lengths Destination Array Alignment
|
|
and Alignment A B C 0
|
|
Short (N=1)
|
|
O>S (G+3)L + 8 (G+4)L + 7 (G+4)L + 7 (G+4)L + 7
|
|
O<S (G+3)L + 8 (G+4)L + 7 (G+4)L + 7 (G+4)L + 7
|
|
Medium (N=2)
|
|
O>S [2+(4+2G)]L + 4 [4+(4+2G)]L + 3 [4+(4+2G)]L + 4 [6+(4+2G)]L + 3
|
|
O"<S [4+(4+2G)]L + 5 [5+(4+2G)]L + 4 [6+(4+2G)]L + 5 [7+(4+2G)]L + 4
|
|
Long (N.::,3)
|
|
O>S [1 +(2+G)N]L + 4 [3+(2+G)N]L + 3 [3+(2+G)N]L + 4 [5+(2+G)N]L + 3
|
|
O<S [3+(2+G)N]L + 5 [4+(2+G)N]L + 4 [5+(2+G)N]L + 5 [6+(2+G)N]L + 4
|
|
t Subtract any alignment/graphics adjustment from these values
|
|
Key:
|
|
L Number of rows in the array (see page 13-20)
|
|
N Number of destination words per row (see page 13-22)
|
|
G Value dependent on selected graphics operation (see Table 13-10 on page 13-24)
|
|
O>S First destination to source alignment case (see page 13-22)
|
|
O<S Second destination to source alignment case (see page 13-22)
|
|
|
|
|
|
|
|
|
|
13-20
|
|
Instruction Timings - PIXBlT Instructions
|
|
|
|
|
|
|
|
13.4.2.1 Number of Rows in the Array (L)
|
|
The working dimensions (L rows by N words) for the block transfer are de-
|
|
termined by the original destination pointer (DADDR) and dimensions
|
|
(DYDX) in conjunction with window preclipping. L represents the number
|
|
of rows in the clipped array.
|
|
|
|
13.4.2.2 Alignment of Leading and Trailing Words in Rows
|
|
After clipping, the data transfer portion of the PIXBLT treats the array as a se-
|
|
ries of L rows of M pixels. These M pixels are spread across N words in each
|
|
row of the destination array. Nand L affect the transfer timing. Alignment
|
|
does not vary from row to row because DPTCH is constrained to be a power
|
|
of two.
|
|
Figure 13-8 illustrates a single row of a destination array in memory. The
|
|
PIXBLT algorithm resolves rows into three portions:
|
|
1) The leading edge at the beginning of a row
|
|
2) The center N-2 words of the row
|
|
3) The trailing edge at the end of the row
|
|
|
|
Word Boundarlaa
|
|
I I
|
|
I I
|
|
|
|
~If------lr------ N Words ----+-----......~
|
|
r---..:....--------------------:....._.
|
|
'---"!""I
|
|
I
|
|
--------------------1-......
|
|
I
|
|
Leading
|
|
Pixels r - Center N-2 Words ----+:
|
|
I
|
|
|
|
I
|
|
I
|
|
|
|
I
|
|
Trailing
|
|
Pixels
|
|
: M Pixels :
|
|
I I
|
|
|
|
|
|
|
|
Figure 13-8. Pixel Block Alignment in X
|
|
|
|
|
|
As Figure 13-8 shows, a row of N words includes one word each for the
|
|
leading and trailing parts of the transfer and N-2 words for the center portion.
|
|
The PIXBLT always transfers the center portion of the row as a series of 16-bit
|
|
words. Thus, the alignment of the leading and trailing portions characterize
|
|
the alignment type of the array. Figure 13-9 illustrates the four possible
|
|
alignments (A, B, C, and D) of a destination array.
|
|
|
|
|
|
|
|
|
|
13-21
|
|
Instruction Timings - PIXBLT Instructions
|
|
|
|
|
|
|
|
..~---------N Word8---------tl~
|
|
1
|
|
|
|
I:i-_____I+--Word
|
|
____________________
|
|
Boundarlea---'+I_____--i
|
|
|
|
AlIgnment A
|
|
I~__~__ ----------------~--~
|
|
1 1 1
|
|
: Leading :t--Center N-2 Word8~ Trailing
|
|
|
|
|
|
|
|
AlIgnment B
|
|
---------------------------..
|
|
~-----:"I--------------------""!'I-
|
|
Leading : t - - Center N-2 Word8 ---+: Trailing
|
|
|
|
|
|
|
|
AlIgnment C
|
|
,....---------------------------;
|
|
"--'!""I --------------------,------I!
|
|
Leading ~ Center N-2 Words ----+: TraJUng
|
|
|
|
|
|
|
|
AlIgnment 0
|
|
r------------------------_
|
|
" - - ' ! " " I- - - - - - - - - - - - - - - - - - - - , . , - - - '
|
|
Leading ~ Center N-2 Words ----+: Trailing
|
|
|
|
|
|
~
|
|
1
|
|
N Word8---------tl~
|
|
1
|
|
|
|
|
|
|
|
Figure 13-9. Pixel Block Alignments
|
|
|
|
|
|
|
|
73.4.2.3 Row Length (Number of Words N per Row)
|
|
Row length is determined by a combination of the computed array pointer
|
|
value in DADDR, the clipped DX dimension, and the pixel size stored in the
|
|
PSIZE register. The data transfer algorithm breaks down into one of three
|
|
cases, short, medium, or long, according to the number of words N in a row.
|
|
These three cases include:
|
|
|
|
• Short case. The destination array row occupies only one word in me-
|
|
mory (N=1). In this case, only one write (or read-modify-write) opera-
|
|
tion is required to place the row into the destination array. Alignment
|
|
for the short case is either type A for exactly aligned arrays or type B, C,
|
|
or D for nonaligned arrays (which require a read-modify-write).
|
|
|
|
• Medium case. The destination row occupies two words in memory
|
|
(N=2). In this case, there is no center portion to the row and the array
|
|
alignment is determined by the alignments of the first and last words in
|
|
the row.
|
|
|
|
• Long case. The destination row occupies all or part of at least three
|
|
words (N~3). This is the general case for array alignment discussions.
|
|
|
|
|
|
|
|
|
|
13-22
|
|
Instruction Timings - PIXBLT Instructions
|
|
|
|
|
|
73.4.2.4 Relative Alignment of Source Rows to Destination Rows
|
|
The alignment of the leading pixels in a source row with respect to a destina-
|
|
tion row influences PIXBLT transfer timing. This alignment determines
|
|
whether one or two words are required from the source array to fully write the
|
|
first word of the destination array. This initial condition can be divided into
|
|
two cases:
|
|
O~S The four LSBs of the destination address are greater than the four
|
|
LSBs of the source address. This implies that the amount of data
|
|
available from the first word of the source array exceeds the amount
|
|
needed to write to the first word of the destination array. The write to
|
|
the destination array can proceed immediately.
|
|
O<S The four LSBs of the destination address are less than the four LSBs
|
|
of the source address. This implies that the amount of data to be
|
|
written to the first word of the destination array exceeds the amount
|
|
available from the first word of the source array. Another word must
|
|
be read from the source array.
|
|
Alignment Case 1 : 0 ). S
|
|
, . . -_ _ _ _ _1 _______________ _
|
|
|
|
|
|
|
|
Source Array
|
|
......
|
|
----~--------------
|
|
|
|
|
|
|
|
|
|
,..--""-------------------
|
|
"'-_~DestI--n~~~~~"'!-- _____ _
|
|
j4-- Word Boundarles--":
|
|
1 !
|
|
Alignment Case 2 : 0 < S
|
|
,..---11 __________________ _
|
|
Source Array
|
|
......_------------------
|
|
|
|
,..----_....._--------------
|
|
Destination Array
|
|
j4-- Word Boundaries--+!
|
|
|
|
Increasing bit addreaa
|
|
|
|
|
|
Figure 13-10. Source to Destination Alignments
|
|
|
|
|
|
|
|
|
|
13-23
|
|
Instruction Timings - PIXBlT Instructions
|
|
|
|
|
|
|
|
13.4.2.5 Transfer Direction in X (PBH)
|
|
PIXBLT transfers proceed a word of data at a time in a consistent direction in
|
|
X and Y. The default direction is from the smallest word address to the largest,
|
|
corresponding to left-to-right and top-to-bottom for the default screen orien-
|
|
tation. The values of the PBH and PBV bits determine the transfer direction
|
|
in X and Y.
|
|
For the four regular PIXBLTs (without expand), PBH determines the order in
|
|
which words are written on each row of the destination array:
|
|
PBH=O: Words within rows are written in the order of increasing addresses.
|
|
PBH=1: Words are written in the order of decreasing addresses. The value
|
|
of PBH influences the per-row transfer timings of these PIXBLTs.
|
|
The sense of the PBV bit determines the order in which rows are transferred
|
|
to the destination array.
|
|
PBV=O: Rows are transferred in the order of increasing addresses.
|
|
PBV=1: Rows are transferred in the order of decreasing addresses.
|
|
This value affects the setup timing, but not the transfer timing.
|
|
|
|
13.4.2.6 Selected Graphics Operations (G)
|
|
Graphics operations such as plane masking, transparency, and pixel process-
|
|
ing influence PIXBLT transfer timing because the destination pixels must be
|
|
read before they are replaced. However, the effects of these operations vary
|
|
because they are performed by different portions of the TMS3401 0 hardware.
|
|
For instance, plane masking, transparency, and field insertion are all performed
|
|
by the TMS34010 memory controller hardware; any combination of these
|
|
operations uses 2 machine states for each word written. Pixel processing, on
|
|
the other hand, is performed by the TMS3401 0 CPU, and requires 2, 4, 5, or
|
|
6 states per word independent, of other operations. The minimum time for any
|
|
graphics operation, then, is 2 machine states(one memory cycle) using the
|
|
rep/ace operation with plane masking and transparency disabled. These values
|
|
are shown in Table 13-10.
|
|
Table 13-10. Timing Values per Word for Graphics Operations (G)
|
|
|
|
Pixel Processing Operation
|
|
Other ADDS,SUB
|
|
Graphics Operation Replace Booleans MAX or SUBS
|
|
or ADO MIN
|
|
No plane masking or 2 4 5 6
|
|
transparency
|
|
Read-modify-write. plane 4 6 7 8
|
|
masking. or transparency
|
|
|
|
|
|
|
|
|
|
13-24
|
|
Instruction Timings - PIXBLT Instructions
|
|
|
|
|
|
|
|
13.4.2.7 Alignment/Graphics Adjustment
|
|
An additional adjustment may be necessary when plane masking or transpar-
|
|
ency are enabled and the alignment type is 8, C, or D. As the second line of
|
|
Table 13-10 shows, if a particular word in a destination row has already been
|
|
read as part of a read-modify-write operation, no additional states are re-
|
|
quired to perform plane masking or transparency for that word. Since the
|
|
alignment types with misaligned edges (8, C, and D) already assume a RMW
|
|
(read-modify-write) on their respective edges, the effect of plane masking or
|
|
transparency can be ignored for these edges. That is, after you have computed
|
|
the timing using the proper value for the graphics operation, you can subtract
|
|
2 states (case 8 and C) or 4 states (case D) per row from the row timings for
|
|
the respective alignment cases. Case A requires no adjustment.
|
|
|
|
|
|
|
|
|
|
13-25
|
|
Instruction Timings - PIXBLT Instructions
|
|
|
|
|
|
13.4.3 PIXBLT Timing Examples
|
|
To determine PIXBLT timing, add the PIXBLT setup value to the PIXBLT
|
|
transfer value and subtract the alignment adjustment:
|
|
PIXBLT time = PIXBLT setup time + PIXBLT transfer time
|
|
- alignment adjustment
|
|
PIXBLT setup timings, transfer timings, and the effects of graphics operations
|
|
are in the following tables:
|
|
Table Page
|
|
13-8 PIXBLT Setup Time ........................................................................... 13-18
|
|
13-9 PIXBLT Transfer Timingt .................................................................. 13-20
|
|
13-10 Timing Values per Word for Graphics Operations (G) ................. 13-24
|
|
The following three examples illustrate timing for a PIXB LT XV, l. The setup
|
|
and transfer timings for these examples are the same, except each uses a dif-
|
|
ferent graphics operation. Figure 13-12 illustrates the destination array and
|
|
window used in these examples, as defined by the implied operands in Figure
|
|
13-11. The shaded portion of Figure 13-12 is the destination array.
|
|
|
|
***************************************************
|
|
* Implied operand setup for PIXBLT XY, L examples *
|
|
* (assume that the B register and I/O register *
|
|
* names are equated with the proper registers) *
|
|
***************************************************
|
|
MOVI 003AOOE6h, SADDR X=230, Y= 58
|
|
MOVI 800h, SPTCH X extent = 512 pixels
|
|
(at 4 bits per pixel)
|
|
MOVI 000030E8, DADDR linear address
|
|
MOVI 800h, DPTCH X extent = 512 pixels
|
|
MOVI 00040000, OFFSET
|
|
CLR WSTART ignored
|
|
CLR WEND ignored
|
|
MOVI 000F0036, DYDX DY=15, DX=54
|
|
MOVI 4h, AO
|
|
MOVE AO, @PSIZE Pixel size 4
|
|
MOVI 14h, AO
|
|
MOVE AO, CONVSP
|
|
MOVE AO, CONVDP ignored
|
|
CLR AO
|
|
MOVI AO, PMASK Disable plane masking
|
|
MOVI 0300h, AO
|
|
MOVE AO, @CONTROL PBH=l, PBV=l
|
|
|
|
|
|
Figure 13-11. Implied Operand Setup for PIXBLTTiming Examples
|
|
|
|
|
|
|
|
|
|
13-26
|
|
Instruction Timings - PIXBlT Instructions
|
|
|
|
|
|
|
|
DADOR
|
|
|
|
N= It plXel8s:ar word =13.6:::::14
|
|
|
|
|
|
|
|
|
|
Adjusted destination
|
|
~~~~~~~~~~~~~~~ starting comer
|
|
|
|
|
|
Even word
|
|
|
|
SADDR
|
|
J1~) boundary
|
|
.t-------64 -------+
|
|
|
|
|
|
|
|
|
|
15
|
|
|
|
|
|
|
|
1 ......_ _ _ _ _ _ _ _ _ _ _ _ _.... Adjusted source
|
|
starting comer
|
|
|
|
|
|
Figure 13-12. PIXBlT XV,l Timing Example
|
|
|
|
|
|
To calculate the number of machine steps consumed by these PIXBLT exam-
|
|
ples, follow these steps:
|
|
1) Determine the setup time; refer to Table 13-8 (page 13-18). Setup
|
|
timing comprehends windowing and corner,.adjust operations.
|
|
a) Windowing: Windowing is not enabled for this example (W=O, 9
|
|
states).
|
|
b) Corner adjust: PBH=1 and PBV=1, so the starting corner must
|
|
be adjusted in both the X and Y dimensions (+4 states).
|
|
As Table 13-8 shows, the setup time for a PIXBLT XY,L with these op-
|
|
erations is 9 + 4 machine states.
|
|
2) Determine the transfer time; refer to Table 13-9 (page 13-20).
|
|
Transfer time comprehends the direction of the move, array and row
|
|
alignments, and line lengths.
|
|
|
|
• PBH=1.
|
|
• Number of rows in the array: The Y dimension is 15, so L =15.
|
|
• Number of words in a row: The X dimension is 54 pixels, and the
|
|
pixel size is four; 54 divided by 4 produces 13.5, so the number of
|
|
words per row, N, = 14.
|
|
• Row length and alignment: N is greater than 3, so this example
|
|
conforms to the long case.
|
|
|
|
|
|
|
|
|
|
13-27
|
|
Instruction Timings - PIXBlT Instructions
|
|
|
|
|
|
|
|
• The four LSBs of DADDR are greater than the four LSBs of
|
|
SADDR (D~S).
|
|
• Destination array alignment: The trailing edge is word aligned but
|
|
the leading edge is not, so the alignment type is C.
|
|
As Table 13-9 shows, the transfer time for this PIXBLT instruction is
|
|
[5+(2+G)N]L + 4. The only variable in the following three examples
|
|
is G, which represents the selected graphics operations.
|
|
|
|
Example 13-4. Replace, No Transparency, No Plane Masking
|
|
|
|
|
|
The implied operand setup in Figure 13-11 selects the following graphics
|
|
options:
|
|
|
|
• Pixel processing replace operation (PPOP=O),
|
|
• No transparency, and
|
|
• No plane masking.
|
|
According to Table 13-10 on page 13-24, variable G = 2. The total ma-
|
|
chine states required for this instruction are:
|
|
PIXBLT time = PIXBLT setup time + PIXBLT transfer time
|
|
=9+4 + [5+ (2+G)N]L + 4
|
|
= 13 + (5+4x14)x15+4
|
|
= 932 states
|
|
|
|
The instruction in this example consumes 932 machine states.
|
|
|
|
|
|
|
|
|
|
13-28
|
|
Instruction Timings - PIXBlT Instructions
|
|
|
|
|
|
|
|
Example 13-5. MAX Option, No Transparency, No Plane Masking
|
|
|
|
|
|
Select the pixel processing MAX option (be sure to retain the values of the
|
|
W bits and the T bit, which are also in the CONTROL register):
|
|
MOVI 50COh, AO
|
|
MOVE AO, @CONTROL i MAX, W=3, T=O
|
|
These instructions, in combination with the implied operand setup in Figure
|
|
13-11, select the following graphics options:
|
|
|
|
• Pixel processing MAX operation (PPOP=14h),
|
|
• No transparency, and
|
|
• No plane masking.
|
|
According to Table 13-10, variable G = 5. Thus, the timing equation be-
|
|
comes:
|
|
PIXBLT time = PIXBLT setup time + PIXBLT transfer time
|
|
= 9 +4 + [5+(2+G)N]L + 4
|
|
= 13 + (5 + 7x14)x15 + 4
|
|
= 1562 states
|
|
|
|
The instruction in this example consumes 1,562 machine states.
|
|
|
|
|
|
|
|
|
|
13-29
|
|
Instruction Timings - PIXBlT Instructions
|
|
|
|
|
|
|
|
Example 13-6. XNOR with Transparency and Plane Masking
|
|
|
|
|
|
Select the pixel processing XNOR operation and enable transparency and
|
|
plane masking:
|
|
MOVI 14EDh, AD
|
|
MOVE AD, @CONTROL XNOR, W=3, T=l
|
|
MOVI llllh, AD
|
|
MOVE AD, @PMASK Use a plane mask
|
|
These instructions, in combination with the implied operand setup in Figure
|
|
13-11, select the following graphics options:
|
|
|
|
• Pixel processing XNOR operation (PPOP=05h),
|
|
• No transparency, and
|
|
• No plane masking.
|
|
According to Table 13-10, variable G = 6.
|
|
If plane masking or transparency is enabled, you must consider the array
|
|
alignment in the timing. Alignment type C incurs a read-modify-write at the
|
|
leading edge of each row. The extra read included in the RMW can be used
|
|
by the plane masking or transparency hardware, so an alignment/graphics
|
|
adjustment is necessary. The adjustment negates the effect of the extra read
|
|
cycles in each row that are attributed to the graphics operations. For this
|
|
example, the amount subtracted is 2L (the number of machine states for a
|
|
read cycle times the number of rows). The timing is now calculated as:
|
|
PIXBLT time = PIXBLT setup time+ PIXBLT transfer time - adjustment
|
|
= 9 + 4 + [5+(2+G)N]L + 4 - 2L
|
|
= 13 + (5 + 8x14)x15 + 4 - (2x15)
|
|
= 1772 states
|
|
|
|
The instruction in this example consumes 1,772 machine states.
|
|
|
|
|
|
13.4.4 The Effect of Interrupts on PIXBlT Instructions
|
|
The PIXBLT instruction may be interrupted on a destination word boundary
|
|
during the transfer portion of the algorithm. It may also be interrupted at the
|
|
end of any row in the array. The context of the PIXBLT is saved in reserved
|
|
registers. The PBX bit is set in the copy of the ST register that is pushed to
|
|
the stack. The worst case latency caused by an interrupt is 20 machine states
|
|
for the interrupt to be recognized. The time for the context switch must be
|
|
added to this; see Section 8.5.1, Interrupt Latency (page 8-6) for context
|
|
switch timing.
|
|
|
|
|
|
|
|
|
|
13-30
|
|
Instruction Timings - PIXBLT Expand Instructions
|
|
|
|
|
|
|
|
13.5 PIXBl..T Expand Instructions
|
|
PIXBLT expand instructions include:
|
|
|
|
• PIXBLT B,L
|
|
• PIXBLT B,XY
|
|
To determine PIXBLT expand instruction timing, add a setup time to a transfer
|
|
time:
|
|
PIXBL T time = PIXBL T setup time + PIXBL T transfer time
|
|
|
|
• The setup f,equence executes an initialization sequence, performing
|
|
any necessary setup operations and translations. (This includes XY-
|
|
to-linear conversion and window preclipping.) The result of the setup
|
|
includes the dimensions of the source array.
|
|
|
|
• The transfer sequence performs the actual data transfer from the
|
|
source array to the destination array.
|
|
PIXBLT setup and transfer timings are in the following tables:
|
|
Table Page
|
|
13-11 PIXB LT Expand Setup Time ............................................................. 13-32
|
|
13-12 PIXBLT Expand Transfer Timingt .................................................... 13-32
|
|
|
|
13.5.1 PIXBLT Setup Time
|
|
PIXBLT setup time is the overhead incurred by the PIXBLT instructions from
|
|
performing initialization, XY conversions, and window operations.
|
|
Window operations are performed before the PIXBLT transfer begins. Win-
|
|
dow options that affect PIXBLT setup timing include:
|
|
|
|
• No window checking (W=O)
|
|
• A window clip that requires no change (array fits)
|
|
• A window clip that affects the starting pointer (adjust start)
|
|
• A window clip that affects the array transfer dimensions (dimension
|
|
adjust)
|
|
• A window clip that affects both the starting and ending pointers (adjust
|
|
both)
|
|
• A window miss that requests an interrupt
|
|
• A window hit
|
|
Table 13-11 shows the effect of these options on the PIXBLT setup time.
|
|
Corner adjust operations have no effect on PIXBLT setup timing.
|
|
|
|
|
|
|
|
|
|
13-31
|
|
Instruction Timings - PIXBlT Expand Instructions
|
|
|
|
|
|
Table 13-11. PIXBlT Expand Setup Time
|
|
|
|
Window Operation Corner Adjust
|
|
Array Start Dimens Adjust PBH=1 PBH=O PBH=1
|
|
Instruction W=O Fits Adjust Adjust Both Miss Hit PBV=O PBV=1 PBV=1
|
|
PIXBLT B, L 4 - - - - - - - - -
|
|
PIXBLT B,XV 6 9 17 12 21 - - - - -
|
|
|
|
For example, a PIXBlT B,XY with the preclipping option requiring an adjust-
|
|
ment to the end corner of the array requires 12 states of setup time.
|
|
|
|
13.5.2 PIXBlT Transfer Timing
|
|
Table 13-12 shows transfer timing for PIXBlT expand instructions. Transfer
|
|
timing is the time required (in addition to the setup time) to execute the actual
|
|
data transfer to memory. Transfer timing is affected by several factors, in-
|
|
eluding the number of rows in the adjusted array (L), the number of words
|
|
affected per row (N), graphics operations (G), the four possible destination
|
|
array alignments (A, B, C, and D), and the arrangement of words in source
|
|
rows. These factors are described in the ~ist that follows the table.
|
|
Table 13-12. PIXBlT Expand Transfer Timingt
|
|
|
|
Destination Alignment Transfer Timing
|
|
Short case (3+2R+G)L + 3
|
|
Medium case
|
|
Alignment A or C (3+2R+NG)L + 3
|
|
Alignment B or 0 (5+2R+NG)L + 3
|
|
Long case
|
|
Alignment A [(3+2R+2GP)S + 2V + NG]L+ 3
|
|
Alignment 0 [(8+2R+2GP)S + 2V + YG + 8JL + 3
|
|
t Subtract any alignment/graphics adjustment from these values
|
|
Key:
|
|
L Number of rows in the array (below)
|
|
N Number of destination words per row (see page 13-33)
|
|
R Number of source words involved in set (see page 13-33)
|
|
S Number of 32-bit sets in long source rows (DX/32), except for the case
|
|
of an even number of sets; in this case, S is the number of 32-bit sets
|
|
minus 1 (DX/32 - 1) (see page 13-35)
|
|
V Number of source words involved in reading source pixels at end of
|
|
row after all the complete 32-bit sets have been transferred P Current
|
|
pixel size
|
|
G Value dependent on selected graphics operations (see Table 13-13)
|
|
Y Number of remaining destination words affected in a given row after
|
|
S 32-bit sets are written
|
|
|
|
|
|
|
|
|
|
13-32
|
|
Instruction Timings - PIXBLT Expand Instructions
|
|
|
|
|
|
|
|
13.5.2.1 Number of Rows in the Array (L)
|
|
The working dimensions (L rows x N words) for the block transfer are deter-
|
|
mined by the original destination pointer (DADDR) and dimensions (DYDX)
|
|
in conjunction with window preclipping. The symbol L is used to represent
|
|
the number of rows in the clipped destination array.
|
|
|
|
13.5.2.2 Alignment of Leading and Trailing words in Rows
|
|
After clipping, the data transfer portion of the PIXBLT treats the array as a se-
|
|
ries of L rows of M pixels. These R pixels are spread across N words in each
|
|
row of the destination array. Nand L affect the transfer timing. This alignment
|
|
does not vary from row to row because DPTCH is constrained to be a multiple
|
|
of 16 for binary PIXBLTs.
|
|
Figure 13-13 illustrates a single row of a destination array in memory. The
|
|
PIXBLT algorithm resolves rows into three portions:
|
|
1) The leading edge at the beginning of the row
|
|
2) The center N-2 words of the row
|
|
3) The trailing edge at the end of the row
|
|
|
|
Word Boundaries
|
|
I I
|
|
I I
|
|
|
|
~
|
|
:....- - - - - + - - - - N W o r d s - - - - r - - - - -......
|
|
,....----------------------------
|
|
~-"':""I- - - - - - - - - - - - - - - - - - - - . - -
|
|
I I
|
|
Leading
|
|
Pixels ~center N-2 Words-+! Trailing
|
|
PIXels
|
|
I I
|
|
|
|
: M PIXels :
|
|
I I
|
|
|
|
|
|
|
|
Figure 13-13. Pixel Block Alignment in X
|
|
|
|
As Figure 13-13 shows, a row of N words includes one word each for the
|
|
leading and trailing parts of the transfer and N-2 words for the center portion.
|
|
PIXBLT expand instructions always transfer the center portion of the row as a
|
|
series of 16 bit words, and are not affected by the alignment of the leading
|
|
word. Thus, the alignment of the trailing words in the row characterize the
|
|
alignment type for the row. Figure 13-14 illustrates the four possible align-
|
|
ments (A, B, C, and D) of a row in the destination array.
|
|
|
|
|
|
|
|
|
|
13-33
|
|
Instruction Timings - PIXBLT Expand Instructions
|
|
|
|
|
|
|
|
1....- - - - - - - - - N Words---------t..:
|
|
: : . - -Word Boundartea---':
|
|
;.i ----~I ---------------------1----""""'i
|
|
~1--Lea-dlng--":""i.---c;t;;N:2-W;;----:t:~-Tr-allln-g-...I!
|
|
|
|
|
|
AIIgnmentB
|
|
...--------------------------.....
|
|
! - - - - - " : " " I------------------ 1
|
|
Leading :t-- Center N-2 Words--+: Trailing
|
|
|
|
|
|
|
|
AlIgnment C
|
|
,....---------------------------i
|
|
--':"'"1- - - - - - - - - - - - - - - - - - -......
|
|
Leading :t-- Center N-2 Words---+:
|
|
,-----...I!
|
|
Trailing
|
|
|
|
|
|
|
|
Alignment 0
|
|
,....-----------------------
|
|
.....-'!'"'I- - - - - - - - - - - - - - - - - - - . . . . , . , - -
|
|
Leading :t-- Center N-2 Words ---+: Trailing
|
|
|
|
|
|
~
|
|
1
|
|
N W o r d s - - - - - - - - - t . . :1
|
|
|
|
|
|
Figure 13-14. Pixel Block Row Alignments
|
|
|
|
|
|
13.5.2.3 Row Length (N Words per Row)
|
|
Row length is determined by a combination of the computed array pointer
|
|
value in OAODR, the clipped OX dimension, and the pixel size stored in the
|
|
PSIZE register. The data transfer algorithm breaks down into one of three
|
|
cases, short, medium, or long, according to the number of words N in a row.
|
|
These three cases include:
|
|
Short case. A row of source array pixels is contained in 16 bits or less
|
|
and the expanded data involves only one word of the destination array
|
|
per row (N=1). Alignment does not affect the short case.
|
|
Medium case. A row of source array pixels is contained in 32 bits or
|
|
less but the expanded data involves more than one word of the destina-
|
|
tion array per row (N)1). In this case, the array alignment is determined
|
|
by the alignments of the last word in the row. Thus, alignments A,C and
|
|
8,0 have equal transfer timings.
|
|
Long case. A row of source array pixels is contained in more than 32
|
|
bits. The expanded data involves multiple words in the destination array
|
|
row. In this case, the array alignment is determined by the alignments
|
|
of the last word in the row. Thus, alignments A and 8 and alignments
|
|
C and 0 have equal transfer timings.
|
|
|
|
|
|
|
|
|
|
13-34
|
|
Instruction Timings - PIXBLT Expand Instructions
|
|
|
|
|
|
Note that the timings for the short and medium row lengths are not affected
|
|
by the alignment of the first word on each row of the destination array. That
|
|
is, the destination array row transfer can start with either a write or a read-
|
|
modify-write. The long case is treated as a series of 32-pixel medium cases
|
|
followed by a short case (if necessary) at the end of each row. Each 32-pixel
|
|
set is expanded and written to the destination in a serial fashion, without op-
|
|
timizing for beginning and ending alignments. Thus, the timing for the long
|
|
case becomes a product of the number of 32-pixel sets (S) and the timing for
|
|
each set, plus the timing for expanding any remaining segment of the source
|
|
array (less than or equal to 32 bits) that is left in the row. Note that the re-
|
|
maining segment of the source array may have an alignment type (B or C) that
|
|
is different from the preceding 32-bit sets.
|
|
|
|
13.5.2.4 Arrangement of Source Rows
|
|
As discussed in the Row Length section, the number of bits in a row of the
|
|
source array affects the time required to perform the PIXBLT transfer algorithm.
|
|
The short and medium cases have explicit timings based on the number of
|
|
words read from the source row, R. Note that the timings for the short and
|
|
medium row lengths are not affected by the alignment of the last word on each
|
|
row of the destination array. That is, the destination array row transfer can
|
|
either end with a write or a read-modify-write.
|
|
The long case is treated as a series of 32-pixel segments. Each 32-pixel set
|
|
is expanded and written to the destination in a serial fashion without opti-
|
|
mizing for beginning and ending alignments for the source or destination. The
|
|
final portion of the transfer may be up to a 32-pixel "partial" segment. Thus,
|
|
the timing for the long case becomes a product of the timing for each set and
|
|
the number of 32-pixel sets (S), plus the timing for expanding any remaining
|
|
segment of the source array (up to 32 bits). Note that the alignment of the
|
|
remaining segment of the source array is determined by the original (clipped)
|
|
source array alignment.
|
|
The PIX B LT does not attempt to optimize read operations from the source ar-
|
|
ray; therefore, depending on the alignment of the source array, either two or
|
|
three words may need to be read in order to obtain a 32-bit set of source pixels
|
|
for expansion. This value, R, is the number of source words involved in a
|
|
32-bit set of source pixels and may be either two or three. The timings are
|
|
affected by R as wells as the number of such complete 32-bit sets S in a
|
|
source row.
|
|
The bits remaining after all of the complete 32-bit sets on a row have been
|
|
moved are transferred. Depending on the number of remaining bits and the
|
|
alignment of the source array, either one, two, or three words may need to be
|
|
read in order to obtain the remaining set of source pixels for expansion. This
|
|
value, V, is the number of of source words read to obtain the final segment
|
|
while Y is is the number of destination words involved for this fragment.
|
|
|
|
|
|
|
|
|
|
13-35
|
|
Instruction Timings - PIXBl T Expand Instructions
|
|
|
|
|
|
|
|
13.5.2.5 Transfer Direction in X (PBH Bit)
|
|
These PIXBLT instructions proceed a single word of pixels at a time in the di-
|
|
rection of increasing X and increasing Y. This corresponds to left-to-right and
|
|
top-to-bottom for the default screen orientation. Setting the PBH and PBV
|
|
bits has no effect.
|
|
|
|
13.5.2.6 Selected Graphics Options (G)
|
|
Graphics operations such as plane masking, transparency, and pixel process-
|
|
ing influence PIXBLT transfer timing because the destination pixels must be
|
|
read before they are replaced. However, the effects of these operations are
|
|
performed by different parts of the TMS3401 0 hardware. For instance, plane
|
|
masking, transparency, and field insertion are all performed by the TMS3401 0
|
|
memory controller hardware; any combination of these operations uses 2 ma-
|
|
chine states for each word written. Pixel processing, on the other hand, is
|
|
performed by the TMS3401 0 CPU, and requires 2, 4, 5, or 6 states per word
|
|
independent of other operations. The minimum time for any graphics opera-
|
|
tion, then, is 2 machine states (one memory cycle) using the replace oper-
|
|
ation with plane masking and transparency disabled. These values are shown
|
|
in Table 13-13.
|
|
Table 13-13. Timing Values per Word for Graphics Operations (G)
|
|
|
|
Pixel Processing Operation
|
|
Other ADDS,SUB
|
|
Graphics Operation Replace Booleans MAX or SUBS
|
|
or ADD MIN
|
|
No plane masking or 2 4 5 6
|
|
transparency
|
|
Read-modify-write, plane 4 6 7 8
|
|
masking, or transparency
|
|
|
|
|
|
|
|
13.5.2.7 Alignment/Graphics Adjustment
|
|
An additional adjustment may be necessary when plane masking or transpar-
|
|
ency are enabled and the alignment type is B, C, or O. As the second line of
|
|
Table 13-13 shows, if a particular word in a destination row has already been
|
|
read as part of a read-modify-write operation, no additional states are re-
|
|
quired to perform plane masking or transparency for that word. Since the
|
|
alignment types with misaligned edges (B, C, and D) already assume a RMW
|
|
(read-modify-write) on their respective edges, the effect of plane masking or
|
|
transparency can be ignored for these edges. That is, after you have calculated
|
|
the timing using the proper value for the graphics operation, you can subtract
|
|
2 states (cases B and C) or 4 states (case D) per row from the row timings for
|
|
the respective alignment cases. Case A requires no adjustment.
|
|
|
|
|
|
|
|
|
|
13-36
|
|
Instruction Timings - PIXBlT Expand Instructions
|
|
|
|
|
|
|
|
13.5.3 PIXBlT Timing Examples
|
|
PIXBLT timing is calculated by adding the PIXBLT setup value to the PIXBLT
|
|
transfer value:
|
|
PIXBLT time = PIXBLT setup time + PIXBLT transfer time
|
|
- alignment adjustment
|
|
PIXBLT setup timings, transfer timings, and the effects of graphics operations
|
|
are listed in the following tables:
|
|
Table Page
|
|
13-11 PIXBLT Expand Setup Time ............................................................. 13-32
|
|
13-12 PIXBLT Expand Transfer Timingt .................................................... 13-32
|
|
13-13 Timing Values per Word for Graphics Operations (G) ................. 13-36
|
|
The following three examples illustrate timing for a PIXBlT B,XV that ex-
|
|
pands a 10-by-1 0 font (L=1 0) into eight bits per pixel with color. The setup
|
|
and transfer timings for these examples are the same, except each uses a dif-
|
|
ferent graphics operation. Figure 13-16 illustrates the destination array and
|
|
window used in these examples, as defined by the implied operands in Figure
|
|
13-15. The shaded portion in Figure 13-16 is the destination array.
|
|
|
|
|
|
***************************************************
|
|
* Implied operand setup for PIXBLT B, XY examples *
|
|
* (assume that B register and I/O regiser names *
|
|
* are equated to with proper registers) *
|
|
***************************************************
|
|
MOVI 0003E2E8h, SADDR linear address
|
|
MOVI OOADOh, SPTCH X extent = 2768 pixels
|
|
MOVI 00320l0Bh, DADDR X=267, Y= 50
|
|
MOVI 800h, DPTCH X extent = 512 pixels
|
|
MOVI 00040000h, OFFSET
|
|
CLR WSTART ignored
|
|
MOVI OlOOOlOOh, WEND ignored
|
|
MOVI OOOAOOOAh, DYDX DX=10, DY=10
|
|
MOVI 8h, AO
|
|
MOVE AO, @PSIZE Pixel size 8 bits
|
|
MOVI 14h, AO
|
|
MOVE AO, @CONVDP
|
|
MOVE AO, @CONVSP ignored
|
|
CLR AO
|
|
MOVE AO, @PMASK
|
|
MOVI 0300h, AO
|
|
MOVE AO, @CONTROL ; W=O,T=O,PP=O,PBH=l,PBV=l
|
|
|
|
|
|
Figure 13-15. Implied Operand Setup for PIXBlT-Expand Examples
|
|
|
|
|
|
|
|
|
|
13-37
|
|
Instruction Timings - PIXBLT Expand Instructions
|
|
|
|
|
|
|
|
+--2.788 pixels per row~
|
|
6AODR
|
|
~
|
|
i
|
|
i--_-_-_
|
|
+-10-+
|
|
|
|
|
|
..... ......
|
|
:
|
|
': :
|
|
10
|
|
'"I . .: ......
|
|
: :: : •••••
|
|
: •••••: ' : :
|
|
|
|
|
|
|
|
DADDR
|
|
|
|
N= 12 =e
|
|
" PIXelSper word
|
|
|
|
|
|
|
|
|
|
Figure 13-16. PIX8LT 8,XV Timing Example
|
|
|
|
|
|
Follow these steps to determine the number of machine states consumed in
|
|
these PIXBLT examples:
|
|
1) Determine the setup time; refer to Table 13-11 (page 13-32). Setup
|
|
time comprehends the machine states consumed by windowing and
|
|
corner adjust operations;
|
|
a) Windowing: Is not enabled for this example.
|
|
b) Corner adjust: PBH and PBV are ignored.
|
|
As Table 13-11 shows, the setup time for this PIXBLT is 6 machine
|
|
states.
|
|
2) Determine the transfer time; refer to Table 13-12 (page 13-32).
|
|
Transfer time comprehends the number and alignment of rows in the
|
|
array, row length, the direction of the move, and the graphics operations.
|
|
a) Number of words per row: The source is part of a packed font.
|
|
The source array starts in the middle of a word and extends into the
|
|
next word, so two words are read for each row of the font (R=2).
|
|
b) Number of rows in the array: The Y dimension is 10 (L=10).
|
|
c) Neither the leading nor the trailing edges are word aligned, so the
|
|
alignment type is D.
|
|
d) Array alignment: The X dimension is 10 pixels wide, but with
|
|
alignment type 0, an extra word is involved for both the leading
|
|
and trailing pixels; the pixel size is eight, so 12 divided by 2 (two
|
|
pixels per word) produces N=6. Since the width is less than 32
|
|
pixels (10), but more than one word of the destination is affected,
|
|
this example is a medium case.
|
|
|
|
|
|
|
|
|
|
13-38
|
|
Instruction Timings - PIXBlT Expand Instructions
|
|
|
|
|
|
As Table 13-12 shows, the transfer timing is (5+2R+2GN)L + 3. The
|
|
only variable in the timing for these three examples is the selected
|
|
graphics operations.
|
|
|
|
Example 13-7. Replace, No Transparency, No Plane Masking
|
|
|
|
|
|
The implied operand setup in Figure 13-15 selects the following graphics
|
|
options:
|
|
|
|
• Pixel processing rep/ace operation (PPOP=O),
|
|
• No transparency, and
|
|
• No plane masking.
|
|
According to Table 13-13, variable G :;: 2. The total machine states re-
|
|
quired for this instruction are:
|
|
PIXBLT time = PIXBLT setup time + PIXBLT transfer time
|
|
= 6 + (5+2R+NG)L + 3
|
|
= 6 + (5 + 2 x 2 + 6 x 2) x 1 0 + 3
|
|
= 219 states
|
|
|
|
This examples consumes 219 machine states as it reads, expands, and
|
|
writes these 100 pixels.
|
|
|
|
|
|
Example 13-8. MAX, No Transparency, No Plane Masking
|
|
|
|
|
|
Select the pixel processing MAX option (be sure to retain the values of the
|
|
W bits and the T bit, which are also in the CONTROL register):
|
|
MOVI 50COh, AO
|
|
MOVE AO, @CONTROL ; MAX, W=3, T=O
|
|
These instructions, in combination with the implied operand setup in Figure
|
|
13-15, select the following graphics options:
|
|
|
|
• Pixel processing MAX operation (PPOP=14h),
|
|
• No transparency, and
|
|
• No plane masking.
|
|
According to Table 13-13, variable G:;:5; the timing equation becomes:
|
|
PIXBLT time = PIXBLT setup time + PIXBLT transfer time
|
|
= 6 + (5+2R+NG)L + 3
|
|
=6 + (5+2x2+6x5)x10+3
|
|
= 399 states
|
|
The instruction in this example consumes 399 machine states.
|
|
|
|
|
|
|
|
|
|
13-39
|
|
Instruction Timings - PIXBl T Expand Instructions
|
|
|
|
|
|
|
|
Example 13-9. XNOR with Transparency and Plane Masking
|
|
|
|
|
|
Select the pixel processing XNOR operation and enable transparency and
|
|
plane masking:
|
|
MOVI 14EDh, AD
|
|
MOVE AD, @CONTROL XNOR, W=3, T=l
|
|
MOVI llllh, AD
|
|
MOVE AD, @PMASK Use a plane mask
|
|
These instructions, in combination with the implied operand setup in Figure
|
|
13-15, select the following graphics options:
|
|
|
|
• Pixel processing XNOR operation (PPOP=05h),
|
|
• No transparency, and
|
|
• No plane masking.
|
|
According to Table 13-13, variable G = 6.
|
|
If plane masking or transparency is enabled, you must consider the array
|
|
alignment in the timing. Alignment type 0 incurs a read-modify-write at the
|
|
leading and trailing edges of each row. The extra read included in the RMW
|
|
can be used by the plane masking or transparency hardware, so an
|
|
alignment/graphics adjustment is necessary. The adjustment negates the
|
|
effect of the extra read cycles in each row that are attributed to the graphics
|
|
operations. For this example, the amount subtracted is 4L (the number of
|
|
machine states for a read cycle times 2 times the number of rows). The
|
|
timing is now calculated as:
|
|
PIXBLT time = PIXBLT setup time+ PIXBLT transfer time - adjust-
|
|
ment
|
|
=6 + (5+2R+NG)L + 3 - 4L
|
|
= 6 + (5 + 2x2 + 6x6) x10+3 - (4x10)
|
|
= 419 states
|
|
The instruction in this example consumes 419 machine states.
|
|
|
|
|
|
13.5.4 The Effect of Interrupts
|
|
The PIXBLT instruction may be interrupted on a destination word boundary
|
|
during the transfer portion of the algorithm. It may also be interrupted at the
|
|
end of any row inthe array. The context of the PIXBlT is saved in reserved
|
|
registers. The PBX bit is set in the copy of the ST register that is pushed to
|
|
the stack. The worst case latency caused by an interrupt is 20 machine states
|
|
for the interrupt to be recognized. The time for the context switch must be
|
|
added to this; see Section 8.5.1, Interrupt Latency (page 8-6) for context
|
|
switch timings.
|
|
|
|
|
|
|
|
|
|
13-40
|
|
Appendix A
|
|
|
|
TMS34010 Data Sheet
|
|
|
|
|
|
|
|
|
|
A-1
|
|
Appendix A - TMS3401 0 Data Sheet
|
|
|
|
|
|
|
|
|
|
A-2
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
JANUARY 1986 - REVISED JUNE 1988
|
|
|
|
|
|
|
|
• Instruction Cycle Time:
|
|
- 132 ns ... (TMS34010-60)
|
|
FN PACKAGE
|
|
(TOP VIEW)
|
|
- 160 ns ... (TMS34010-50)
|
|
- 200 ns ... (TMS34010-40)
|
|
|
|
• Fully Programmable 32-Bit General-Purpose
|
|
Processor with 128-Megabyte Address
|
|
9 8 7 6 5 4 3 2 1 6867666564636261
|
|
Range
|
|
|
|
• Window
|
|
Pixel Processing. XV Addressing. and
|
|
Checking Built into the Instruction
|
|
LAD1
|
|
|
|
|
|
Set
|
|
|
|
• Size
|
|
Programmable 1. 2. 4. 8. or 16-Bit Pixel
|
|
with 16 Boolean and 6 Arithmetic Pixel
|
|
Processing Options (Raster-Ops)
|
|
|
|
• 30 General-Purpose 32-bit Registers and
|
|
32-bit Stack Pointer HD9
|
|
HD10
|
|
|
|
• 256-Byte LRU On-Chip Instruction Cache HD11
|
|
HD12
|
|
• Direct Interfacing to Both Conventional
|
|
DRAM and Multiport Video RAM
|
|
HD13
|
|
HD14
|
|
|
|
• and
|
|
Dedicated 8/16-Bit Host Processor Interface
|
|
HOLD/HLDA Interface
|
|
26
|
|
27 28 29 3031 32 33 34 35 36 37 38 39 4041 4243
|
|
44 HD15
|
|
|
|
|
|
U
|
|
u ~ N IU 1 1:><: I<! I..J Ul f-IZ IUl IUl I~ IUJ If-
|
|
• VSYNC. BLANK)
|
|
Programmable CRT Control (HSVNC. U:><::><:ZZZ~<!Ul~UJ<!<!
|
|
> ~ ~ ~ ~ ~ ~ ..J > g 0 ex: U
|
|
I>!D~ 0
|
|
ozo
|
|
I~ I ~
|
|
>-
|
|
|
|
|
|
|
|
• High-Level Language Support I~
|
|
• Full Line of Hardware and Software
|
|
Development Tools Including a "c"
|
|
Compiler
|
|
|
|
• 68-Leaded Packaging (PLCC)
|
|
• 5-Volt CMOS Technology
|
|
description
|
|
The TMS34010 Graphics System Processor (GSP) is an advanced high-performance CMOS 32-bit
|
|
microprocessor optimized for graphics display systems. With a built-in instruction cache. the ability to
|
|
simultaneously access memory and registers. and an instruction set designed specifically for raster graphics
|
|
operation. the TMS34010 provides user-programmable control of the CRT interface as well as the memory
|
|
interface (both standard DRAM and multiport video RAM). The 1-gigabit address space is completely bit-
|
|
addressable on bit boundaries using variable width data fields (1 to 32 bits). Additional graphics addressing
|
|
modes support 1. 2. 4. 8. and 16-bit wide pixels. The TMS3401 0 is exceptionally well-supported by graphics
|
|
software interface standards such as CGI/VDI. DGIS. and MS-Windows. as well as a full line of hardware
|
|
and software support tools. Current support is highlighted in the TMS3401 0 Third Party Reference Guide
|
|
(literature number SPVB066A).
|
|
architecture
|
|
The TMS34010 is a CMOS 32-bit processor with hardware support for graphics operations such as PixBlts
|
|
(raster ops) and curve-drawing algorithms. Also included is a complete set of general-purpose instructions
|
|
with addressing tuned to support high-level languages. In addition to its ability to address a large external
|
|
memory range. the TMS34010 contains 30 general-purpose 32-bit registers. a hardware stack pointer
|
|
|
|
This document contains information ob products Copyright © 1986, Texas Instruments Incorporated
|
|
in more than one 'phase of davalopment. TIle status
|
|
of each device is Indicated on the pagels) specifying
|
|
its electrical characteristics. TEXAS • A-3
|
|
INSTRUMENTS
|
|
POST OFFiCe BOX 1443 • HOUSTON, TeXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
and a 256-byte instruction cache. On-chip functions include 28 programmable I/O registers that contain
|
|
CRT control, input/output control, and instruction parameters. The TMS3401 0 directly interfaces to dynamic
|
|
RAMs and video RAMs and generates video monitor control signals. It also accommodates a conventional
|
|
HOLD/HLDA shared access as well as a separate, generalized interface for communicating with any standard
|
|
host processor.
|
|
|
|
pin descriptions
|
|
PIN
|
|
1/0 DESCRIPTION
|
|
NAME NUMBER
|
|
Host Interface Bus Pins
|
|
HCS 66 I Host chip select
|
|
HDO-HD15 44-51.53-60 1/0 Host bidirectional data bus
|
|
HFSO. HFS1 67. 68 I Host function select
|
|
HINT 42 a Host interrupt request
|
|
HLDS 63 I Host lower data select
|
|
HUDS 62 I Host upper data select
|
|
HRDY 43 a Host ready
|
|
HREAD 64 I Host read strobe
|
|
HWRITE 65 I Host write strobe
|
|
Local Bus Interface Pins
|
|
RAS 38 a Local row-address strobe
|
|
CAS 39 a Local column-address strobe
|
|
DDOUT 36 a Local data direction out
|
|
DEN 37 0 Local data enable
|
|
LADO-LAD15 10-17.19-26 1/0 Local addressldata bus
|
|
LAL 34 0 Local address latched
|
|
LCLK 1. LCLK2 28.29 0 Local output clocks
|
|
LlNT1. LlNT2 6. 7 I Local interrupt request pins
|
|
LRDY 9 I Local ready
|
|
TR/OE 41 0 Local shift register transfer or output enable
|
|
Vii 40 0 Local write strobe
|
|
INCLK 5 I Input clock
|
|
Hold and Emulation
|
|
HOLD 8 I Hold request
|
|
RUNIEMU 2 I RunlNot emulate
|
|
HLDA/EMUA 33 0 Hold acknowledge or emulate acknowledge
|
|
Video Timing Signals
|
|
BLANK 32 0 Blanking
|
|
HSYNC 30 1/0 Horizontal sync
|
|
VCLK 4 I Video clock
|
|
VSYNC 31 I/O Vertical sync
|
|
Miscellaneous
|
|
RESET 3 I Reset
|
|
VCC 27.61 I Nominal 5-volt power supply
|
|
VSS 1. 18.35. 52 I Ground
|
|
|
|
|
|
|
|
|
|
A-4 TEXAS . .
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
system block diagram
|
|
|
|
|
|
|
|
|
|
GRAPHICS MEMORY BUS
|
|
|
|
1
|
|
1
|
|
1
|
|
I
|
|
REFRESH 1
|
|
CONTROL CONTROL 1
|
|
|
|
|
|
|
|
~~TNITOR
|
|
1 }
|
|
|
|
|
|
------------------------ L.-_-_-_-_J______---t.
|
|
|
|
|
|
r----------------------------------------
|
|
, 110 REGISTERS
|
|
EXTERNAL 'r-----------I
|
|
INTERRUPT --LL.,
|
|
REQUESTS -rr', INTERRUPT
|
|
1
|
|
.......- - o . . J INSTRUCTION INSTRUCTION
|
|
1 REGISTERS N-,---.' CACHE DECODE
|
|
RESET~ I
|
|
I'
|
|
, 1 I
|
|
1
|
|
HOSl
|
|
INTERFACE
|
|
#': HOST
|
|
INTERFACE
|
|
I !
|
|
lI"'-
|
|
,r---- 1-----
|
|
........'---.....,
|
|
BUS
|
|
, 1
|
|
REGISTERS N-I , ,..-_
|
|
|
|
, 1 1 , PROGRAM
|
|
COUNTER
|
|
, 1 ,
|
|
|
|
|
|
9'1
|
|
, i--------t
|
|
|
|
,,;-'1 ,
|
|
I STATUS
|
|
SYNC AND VIDEO TIMING ~ REGISTER
|
|
|
|
|
|
L__________ J ~
|
|
BLANKING REGISTERS
|
|
ALU
|
|
1 I MICRO CONTROL
|
|
|
|
T11---_
|
|
GPR FILE A
|
|
ROM
|
|
|
|
|
|
,,
|
|
_- - - 1
|
|
LOCAL MEMOR't GPR FILE B
|
|
CONTROL , 1--------1
|
|
REGISTERS ,L.-____
|
|
, ........
|
|
STACK POINTER I - t ' - - - t
|
|
L _________ _
|
|
|
|
EXECUTION UNIT
|
|
|
|
|
|
I CLOCK
|
|
|
|
|
|
|
|
9 LOCAL MEMORY
|
|
CONTROL LOGIC
|
|
AND BUFFERS
|
|
____________{} _________________________ J
|
|
INTERNAL CLOCK
|
|
CIRCUITRY
|
|
OUTPUTS
|
|
CLOCK
|
|
INPUTS
|
|
|
|
|
|
|
|
LOCAL MEMORY
|
|
INTERFACE BUS
|
|
|
|
FIGURE 1. TMS34010 INTERNAL ARCHITECTURE
|
|
|
|
|
|
TEXAS . . A-5
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
The TMS3401 0 provides single-cycle execution of most common integer arithmetic and Boolean operations
|
|
from its instruction cache. Additionally, the TMS3401 0 incorporates a hardware barrel shifter that provides
|
|
a single-state bidirectional shift and rotate function for 1 to 32 bits.
|
|
A microcoded local memory controller supports pipelined memory write operations of variable-size fields
|
|
that can be performed in parallel with subsequent instruction execution.
|
|
TMS34010 graphics processing hardware supports pixel and pixel-array processing capabilities for both
|
|
monochrome and color systems that have a variety of pixel sizes. The hardware incorporates two-operand
|
|
raster operations with Boolean and arithmetic operations, XY addressing, window clipping, window checking
|
|
operations, 1 to n bits per pixel transforms, transparency, and plane masking. The architecture further
|
|
supports operations on single pixels (PIXT instructions) or on two-dimensional pixel arrays of arbitrary size
|
|
(PixBlts).
|
|
The TMS3401 O's flexible graphics processing capabilities allow software-based graphics algorithms without
|
|
sacrificing performance. These algorithms include: arbitrary window size, custom incremental curve drawing,
|
|
and two-operand raster operations.
|
|
|
|
register files
|
|
Boolean, arithmetic, byte, and field move instructions operate on data within the TMS3401 O's general-
|
|
purpose register files. The TMS3401 0 contains thirty-one 32-bit registers, including a system stack pointer
|
|
(SP). The SP is accessible to both Register File A and B as the sixteenth register. Transfers between registers
|
|
and memory are facilitated via a complete set of field MOVE instructions with selectable field sizes. Transfers
|
|
between registers are facilitated via the MOVE instruction.
|
|
The fifteen general-purpose registers in Register File A are used for high-level language support and assembly
|
|
language programming. The fifteen registers in Register File B are dedicated to special functions during
|
|
PixBlts and other pixel operations, but can be used as general-purpose registers at other times.
|
|
|
|
|
|
|
|
|
|
A-6 TEXAS ~
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
31(MSB) O(LSB) 31(MSB) O(LSB)
|
|
SOURCE ADDRESS
|
|
AO BO SADDR (PIXBLTS)
|
|
|
|
A1 B1 SPTCH SOURCE PITCH
|
|
|
|
DESTINATION ADDRESS
|
|
A2 B2 DADDR (PIXBL TS AND FILLS)
|
|
|
|
A3 B3 DPTCH DESTINATION PITCH
|
|
|
|
|
|
A4 B4 OFFSET OFFSET
|
|
|
|
|
|
A5 B5 WSTART WINDOW START
|
|
|
|
|
|
A6 B6 WEND WINDOW END
|
|
|
|
|
|
A7 B7 DYDX DELTA YI DELTA X
|
|
|
|
COLORO
|
|
A8 B8 COLORO (BINARY PIXBLTS)
|
|
COLOR1
|
|
A9 B9 COLOR1 (BINARY PIXBL TS. FILLS AND DRAV)
|
|
|
|
A10 B10 TEMPORARY REGISTER
|
|
|
|
|
|
A11 B11 TEMPORARY REGISTER
|
|
|
|
THESE ARE USED AS TEMPORARY
|
|
A12 B12 TEMPORARY REGISTER STORAGE FOR PIXBLT AND
|
|
FILL INSTRUCTIONS.
|
|
A13 B13 TEMPORARY REGISTER
|
|
|
|
|
|
A14 B14 TEMPORARY REGISTER
|
|
|
|
|
|
SP STACK POINTER SP STACK POINTER
|
|
|
|
|
|
|
|
|
|
FIGURE 2. REGISTER FILES A AND B
|
|
|
|
program counter (PCI
|
|
The TMS3401 D's 32-bit program counter register points to the next instruction-stream word to be fetched.
|
|
Since instruction words are aligned to 16-bit boundaries, the four LSBs of the PC are always zero.
|
|
|
|
instruction cache
|
|
An on-chip instruction cache contains 256 bytes of RAM and provides fast access to instructions. It operates
|
|
automatically and is transparent to software. The cache is divided into four 64-byte segments. Associated
|
|
with each segment is a 23-bit segment address register to identify the addresses in memory corresponding
|
|
to the current contents of the cache segment. Each cache segment is further partitioned into eight
|
|
subsegments of four words each. Each subsegment has associated with it a present (PI flag to indicate
|
|
whether the subsegment contains valid data.
|
|
|
|
|
|
|
|
|
|
TEXAS. A-7
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
SEGMENT START ADDRESS FLAGS DATA REGISTERS
|
|
1\
|
|
,-"--. r-----"-..
|
|
SUBSEGMENT 0
|
|
|
|
11~.~-------------23--------------~•• 1 SUBSEGMENT 1
|
|
|
|
SUBSEGMENT 2
|
|
|
|
SUBSEGMENT 3
|
|
>SEGMENT 0
|
|
4 SUBSEGMENT 4
|
|
|
|
SUBSEGMENT 5
|
|
|
|
SUBSEGMENT 6
|
|
|
|
SUBSEGMENT 7
|
|
|
|
1.--16 _ _ 1
|
|
|
|
|
|
|
|
SUBSEGMENT 0
|
|
|
|
SUBSEGMENT 1
|
|
WORD 0
|
|
SUBSEGMENT 2
|
|
|
|
SUBSEGMENT 3 -"'-"'-...,- WORD 1 SUBSEGMENT 2
|
|
'-. WORD 2 OF SEGMENT 1
|
|
4 SUBSEGMENT 4
|
|
-""-"''-' - I - - - - - - - - - j
|
|
'_ WORD 3
|
|
SUBSEGMENT 5
|
|
1-16_1
|
|
SUBSEGMENT 6
|
|
|
|
SUBSEGMENT 7
|
|
|
|
|
|
|
|
|
|
SUBSEGMENT 0
|
|
|
|
SUBSEGMENT 1
|
|
|
|
SUBSEGMENT 2
|
|
|
|
SUBSEGMENT 3
|
|
>SEGMENT 2
|
|
4 SUBSEGMENT 4
|
|
|
|
SUBSEGMENT 5 MOST
|
|
RECENTlY~
|
|
SUBSEGMENT 6 USED
|
|
|
|
SUBSEGMENT 7
|
|
LRU
|
|
>STACK
|
|
|
|
SUBSEGMENT 0
|
|
LEAST
|
|
SUBSEGMENT 1 RECENTlY-
|
|
USED
|
|
SUBSEGMENT 2
|
|
|
|
SUBSEGMENT 3
|
|
|
|
4 SUBSEGMENT 4
|
|
>SEGMENT 3
|
|
SUBSEGMENT 5
|
|
|
|
SUBSEGMENT 6
|
|
|
|
SUBSEGMENT 7
|
|
|
|
|
|
FIGURE 3. INSTRUCTION CACHE
|
|
|
|
|
|
|
|
A-a TEXAS -1./1
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
The cache is loaded only when an instruction requested by the TMS3401 0 is not already contained within
|
|
the cache. A least-recently-used (LRU) algorithm is used to determine which of the four segments of the
|
|
cache is overwritten with the new data. For this purpose, an internal four-by-two LRU stack is used to
|
|
keep track of cache usage.
|
|
status register
|
|
The status register (ST) is a special-purpose 32-bit register dedicated to status codes set by the results
|
|
of implicit and explicit compare operations and parameters used to specify the length and behavior of fields
|
|
o and 1.
|
|
|
|
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0
|
|
|
|
|
|
|
|
|
|
N . Sign bit IE - Interrupt enable bit
|
|
C - Carry bit FE1 - Field extension bit 1
|
|
Z - Zero bit FS 1 - Field size bit 1
|
|
V - Overflow bit FEO - Field extension bit 0
|
|
PBX - Pix Bit executing FSO - Field size bit 0
|
|
|
|
FIGURE 4. STATUS REGISTER
|
|
|
|
fields, bytes, pixels, and pixel arrays
|
|
A 26-bit address output by the TMS3401 0 selects a 16-bit word of physical memory; logically, however,
|
|
the TMS3401 0 views memory data as fields addressable at the bit level. Primitive data types supported
|
|
by the TMS3401 0 include: bytes, pixels, two 1- to 32-bit fields, and user-defined pixel arrays.
|
|
Fields 0 and 1 are specified independently to be from 1 to 32 bits in length. Bytes are special 8-bit cases
|
|
of the field data type, while pixels are 1, 2, 4, 8 or 16 bits in length. In general, fields (including bytes)
|
|
may start and terminate on arbitrary bit boundaries; pixels must pack evenly into 16-bit words.
|
|
pixel operations
|
|
Pixel arrays are two-dimensional data types of user-defined width, height, pixel depth (number of bits per
|
|
pixel), and pitch (distance between rows). A pixel or pixel array may be accessed by means of either its
|
|
memory address or its XY coordinates. Transfers of individual pixels or pixel blocks are influenced by the
|
|
pixel processing, transparency, window checking, plane masking, or corner adjust operations selected.
|
|
I/O registers
|
|
|
|
The GSP contains an on-chip block of twenty-eight 16-bit I/O registers mapped into the TMS34010's
|
|
memory address space. They can be accessed either by the TMS3401 O's CPU or by the host processor
|
|
via the host interface. The I/O registers contain control parameters necessary to configure the operation
|
|
of the following interfaces: interface to host processor (5 I/O registers), interface to local memory (6
|
|
registers)' video timing and screen refresh functions (15 registers), and externally and internally generated
|
|
interrupts (2 registers). The I/O registers also furnish status information on these interfaces.
|
|
|
|
|
|
|
|
|
|
TEXAS -1.!1 A-9
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
ADDRESS REGISTER
|
|
~A
|
|
|
|
|
|
|
|
~
|
|
OC00001FOh REFCNT DRAM REFRESH COUNT
|
|
OC00001 EOh DPYADR DISPLAY ADDRESS
|
|
OC00001DOh VCOUNT VERTICAL COUNT
|
|
OC00001COh HCOUNT HORIZONTAL COUNT
|
|
OC00001BOh
|
|
OC00001AOh
|
|
r--
|
|
., -
|
|
DPYTAP DISPLAY TAP POINT
|
|
|
|
|
|
|
|
~ESr~
|
|
OC0000190h
|
|
OC0000180h
|
|
r-- -
|
|
OC0000170h
|
|
OC0000160h PMASK PLANE MASK
|
|
OC0000150h PSIZE PIXEL SIZE
|
|
OC0000140h CONVDP CONVERSION (DESTINATION PITCH)
|
|
OC0000130h CONVSP CONVERSION (SOURCE PITCH)
|
|
OC0000120h INTPEND INTERRUPT PENDING
|
|
OC0000110h INTENB INTERRUPT ENABLE
|
|
OC0000100h HSTCTLH HOST CONTROL (8 MSB'S)
|
|
OCOOOOOFOh HSTCTLL HOST CONTROL (8 LSB'S)
|
|
OCOOOOOEOh HSTADRH HOST ADDRESS (16 MSB'S)
|
|
OCOOOOODOh HSTADRL HOST ADDRESS (16 LSB'S)
|
|
OCOOOOOCOh HSTDATA HOST DATA
|
|
OCOOOOOBOh CONTROL CONTROL
|
|
OCOOOOOAOh DPYINT DISPLAY INTERRUPT
|
|
OC0000090h DPYSTRT DISPLAY START
|
|
OC0000080h DPYCTL DISPLAY CONTROL
|
|
OC0000070h VTOTAL VIDEO TOTAL
|
|
OC0000060h VSBLNK VERTICAL START BLANK
|
|
OC0000050h VEBLNK VERTICAL END BLANK
|
|
OC0000040h VESYNC VERTICAL END SYNC
|
|
OC0000030h HTOTAL HORIZONTAL TOTAL
|
|
OC0000020h HSBLNK HORIZONTAL START BLANK
|
|
OC0000010h HEBLNK HORIZONTAL END BLANK
|
|
OCOOOOOOOh HESYNC HORIZONTAL END SYNC
|
|
|
|
FIGURE 5. I/O REGISTERS
|
|
|
|
host interface registers
|
|
The host interface registers are provided for communications between the TMS34010 and the host
|
|
processor. The registers are mapped into five of the I/O register locations accessible to the TMS3401 O.
|
|
These same registers are mapped into four locations in the GSP interface to the host.
|
|
One of the registers is devoted to host interface control functions such as the passing of interrupt requests
|
|
and 3-bit status codes from host to TMS3401 0 and from TMS3401 0 to host. Other control functions
|
|
available to the host processor include flushing the instruction cache, halting the TMS34010, and
|
|
transmitting a non-maskable interrupt request to the TMS34010.
|
|
|
|
|
|
|
|
|
|
A-10 TEXAS . .
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
The remaining host registers are used for block transfers between the TMS3401 a and host processor.
|
|
The host uses these registers to indirectly access blocks within the TMS3401 a's local memory. Two of
|
|
the 16-bit registers contain the 32-bit address of the current word location in memory. Another 16-bit
|
|
register buffers data transferred to and from the memory by the host processor. The host interface can
|
|
be programmed to automatically increment the pointer address following each transfer to provide the host
|
|
with rapid access to a block of sequential addresses.
|
|
memory interface control registers
|
|
Six of the I/O registers are dedicated to various local memory interface functions including:
|
|
|
|
• Frequency and type of DRAM refresh cycles
|
|
• Pixel size
|
|
• Masking (write protection) of individual color planes
|
|
• Various pixel access control parameters
|
|
- Window checking mode
|
|
- Boolean or arithmetic pixel processing operation
|
|
- Transparency
|
|
- PixBlt direction control
|
|
video timing and screen refresh
|
|
Fourteen I/O registers are dedicated to video timing and screen refresh functions. The TMS3401 a generates
|
|
the horizontal sync (HSYNC), vertical sync (VSYNC), and blanking (BLANK) signals used to drive a video
|
|
monitor in a graphics system. These signals are controlled by means of a set of programmable video timing
|
|
I/O registers and are based on the input video clock, VCLK. VCLK does not have to be synchronous with
|
|
respect to INCLK, the TMS34010's CPU input clock.
|
|
The TMS3401 a directly supports multiport video RAMs (VRAMs) by generating the memory-to-register
|
|
load cycles necessary to refresh the display being shown on the video monitor. The memory locations
|
|
from which display information is taken, as well as the number of horizontal scan lines displayed between
|
|
memory-to-register load cycles, are programmable. VRAM tap point addresses are also fully programmable
|
|
to support horizontal panning.
|
|
The TMS34010 supports various screen resolutions and either interlaced or noninterlaced video. The
|
|
TMS34010 can optionally be programmed to synchronize to externally generated sync signals so that
|
|
graphics images created by the TMS3401 a can be superimposed upon images created externally. The
|
|
external sync mode can also be used to synchronize the video signals generated by two or more TMS3401 a
|
|
chips in a multiple-TMS34010 graphics system.
|
|
interrupt interface registers
|
|
Two dedicated I/O registers monitor and mask interrupt requests to the TMS3401 0, including two externally
|
|
generated interrupts and three internally generated interrupts. An internal interrupt request can be generated
|
|
on one of the following conditions:
|
|
|
|
• Window violation: an attempt has been made to write a pixel to a location inside or outside a
|
|
specified window boundary.
|
|
• Host interrupt: the host processor has set the interrupt request bit in the host control register.
|
|
• Display interrupt: a specified line number in the frame has been displayed on the screen.
|
|
A nonmaskable interrupt occurs when the host processor sets a particular control bit in the host interface
|
|
registers. The TMS34010 reset function is controlled by a dedicated pin.
|
|
|
|
|
|
|
|
|
|
TEXAS ~ A-11
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
memory controller/local memory interface
|
|
The memory controller manages the TMS3401 O's interface to the local memory and automatically performs
|
|
the bit alignment and masking necessary to access data located at arbitrary bit boundaries within memory.
|
|
The memory controller operates autonomously with respect to the CPU. It has a "write queue" one field
|
|
(1 to 32 bits) deep that permits it to complete the memory cycles necessary to insert the field into memory
|
|
without delaying the execution of subsequent instructions. Only when a second memory operation is
|
|
required before the memory controller has completed the first operation is the TMS3401 0 forced to defer
|
|
instruction execution.
|
|
The TMS3401 0 directly interfaces to all standard dynamic RAMs and, in particular to JEDEC standard
|
|
64K and 256K video RAMs such as the TMS4161 and TMS4461 Multiport VRAMs. The TMS34010
|
|
memory interface consists of a triple-multiplexed address/data bus plus the associated control signals.
|
|
Row address, column address, and data are multiplexed over the same address/data lines. DRAM refresh
|
|
is supported with a variety of modes including CAS-before-RAS refresh.
|
|
TMS34010 memory map
|
|
From the programmer's point of view, the TMS340 10 treats data and instructions as residing in the same
|
|
memory space.
|
|
|
|
|
|
|
|
|
|
A-12 TEXAS •
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMSJ4010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
instruction set
|
|
The TMS3401 0 instructions fall into three categories. The graphics instructions manipulate pixel data,
|
|
accessed via memory addresses or XV coordinates. They provide support for graphics operations such
|
|
as array and raster ops, pixel processing, windowing, plane masking, and transparency. The move
|
|
instructions comprehend bit addressing and field operations; they manipulate fields of data using linear
|
|
addressing for transfer to and from memory and the register file. The TMS34010 general-purpose
|
|
instructions provide a complete set of arithmetic and Boolean operations on the register file as well as
|
|
general program control and data processing. Partial timing information is provided in the table below.
|
|
The two values given for jump instructions in the Minimum Cycles column indicate the jump and no-jump
|
|
conditions, respectively. Full timing information can be obtained in the TMS34010 User's Guide (number
|
|
SPVU001A).
|
|
The following abbreviations are used below in the opcodes: S (source register), D (destination register),
|
|
R (register file select), F (field select), K (constant), M (cross AlB file boundary), Z (draw option), code
|
|
(jump select code), X (don't care), N (trap select and stack adjust), RS (source register), RD (destination
|
|
register), xxxx (address displacement), IL (32-bit immediate operand), and IW (16-bit immediate operand).
|
|
|
|
|
|
GRAPHICS INSTRUCTIONS
|
|
NO. MINIMUM STATUS
|
|
SYNTAX DESCRIPTION WORDS CYCLES 16-BIT OPCODE BITS
|
|
MSB LSB
|
|
ADDXY Rs, Rd Add Registers in XY Mode 1 1110 OOOS SSSR DDDD N C Z V
|
|
CMPXV Rs, Rd Compare X and V Halves of Registers 3 1110 010S SSSR DDDD N C Z V
|
|
CPW Rs, Rd Compare Point to Window 1 1110 011S SSSR DDDD V
|
|
CVXVL Rs, Rd Convert XV Address to Linear Address 3 1110 100S SSSR DDDD
|
|
DRAV Rs, Rd Draw and Advance 1111 011S SSSR DDDD V
|
|
FILL L Fill Array with Processed Pixels: Linear 0000 1111 1100 0000
|
|
FILL XV Fill Array with Processed Pixels: XV 0000 1111 1110 0000 V
|
|
LINE Z Line Draw 1101 1111 Z001 1010 V
|
|
MOVX Rs, Rd Move X Half of Register 1110 110S S5SR DDDD
|
|
MOVV Rs, Rd Move V Half of Register 1110 1115 S55R DDDD
|
|
PIXBLT B,L Pixel Block Transfer: Binary to Linear 0000 1111 1000 0000
|
|
PIXBLT B,XV Pixel Block Transfer and Expand: Binary to XV 0000 1111 1010 0000 V
|
|
PIXBLT L,L Pixel Block Transfer: Linear to Linear 0000 1111 0000 0000
|
|
PIXBLT L,XV Pixel Block Transfer: Linear to XV 0000 1111 0010 0000 V
|
|
PIXBLT XV, L Pixel Block Transfer: XV to Linear 0000 1111 0100 0000
|
|
PIXBLT XV,XV Pixel Block Transfer: XV to XV 0000 1111 0110 0000 V
|
|
PIXT Rs,*Rd Pixel Transfer: Register to Indirect 1111 1005 SSSR DDDD
|
|
PIXT Rs, *Rd.XV Pixel Transfer: Register to Indirect XV 1111 0005 SSSR DDDD V
|
|
PIXT *Rs, Rd Pixel Transfer: Indirect to Register 4 1111 1015 SSSR DDDD
|
|
PIXT *Rs, *Rd Pixel Transfer: Indirect to Indirect 1111 1105 SSSR DDDD
|
|
PIXT *Rs.XV, Rd Pixel Transfer: Indirect XV to Register 6 1111 001S SSSR DDDD
|
|
PIXT *Rs.XV, *Rd.XV Pixel Transfer: Indirect XV to Indirect XV 1111 010S SSSR DDDD V
|
|
SUBXV Rs,Rd Subtract Registers in XV Mode 1110 001S SSSR DDDD N C Z V
|
|
|
|
tNumber of cycles depends on pixel size and/or pixel array size and graphics option selected. See TMS34010 User's Guide (SPVU001A).
|
|
|
|
|
|
|
|
|
|
TEXAS • A-13
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
MOVE INSTRUCTIONS
|
|
NO. MINIMUM STATUS
|
|
SYNTAX DESCRIPTION WORDS CYCLES l6-BIT OPCODE BITS
|
|
MSB LSB
|
|
MOVB RS,*Rd Move Byte: Register to Indirect 1000 110S SSSR DDDD - - - -
|
|
MOVB *Rs,Rd Move Byte: Indirect to Register 1000 111S SSSR DDDD N - Z 0
|
|
MOVB *Rs, *Rd Move Byte: Indirect to Indirect 1 t 1001 110S SSSR DDDD - - - -
|
|
MOVB Rs, * Rd(offset) Move Byte: Register to Indirect with offset. 2 t 1010 110S SSSR DDDD -
|
|
MOVB *Rs(offset),Rd Move Byte: Indirect with offset. to Register 2 1010 111S SSSRDDDD N - Z 0
|
|
MOVe *Rs(offset), *Rd(offset) Move Byte: Ind. with offset. to Ind.
|
|
with offset. 3 1011 110S SSSR DDDD - - - -
|
|
MOVB Rs,@Daddress Move Byte: Register to Absolute 3 00000101 111R SSSS - - - -
|
|
MOVB @Saddress,Rd Move Byte: Absolute to Register 3 0000 0111 111 R DDDD N - Z 0
|
|
MOVe @Saddress,@Oaddress Move Byte: Absolute to Absolute 5 0000 0011 0100 0000 - - - -
|
|
MOVE Rs,Rd Move Register to Register 1 0100 11MS SSSR DDDD N - Z 0
|
|
MOVE Rs, *Rd,F Move Field: Register to Indirect 1000 OOFS SSSR DDDD - - - -
|
|
MOVE Rs, - *Rd,F Move Field: Register to Indirect (pre-dec) 1010 OOFS SSSR DDDD - - - -
|
|
MOVE Rs,*Rd+,F Move Field: Register to Indirect (post-inc) 1001 OOFS SSSR DDDD -
|
|
MOVE *Rs,Rd,F Move Field: Indirect to Register 1000 01 FS SSSR DDDD N Z 0
|
|
MOVE - *Rs,Rd,F Move Field: Indirect (pre-dec) to Register 1010 01FS SSSR DDDD N - Z 0
|
|
MOVE *Rs+,Rd,F Move Field: Indirect (post-inc) to Register 1001 01FS SSSR DDDD N - Z 0
|
|
MOVE *Rs, *Rd,F Move Field: Indirect to Indirect 1000 10FS SSSR DDDD - - - -
|
|
MOVE - *Rs, - *Rd,F Move Field: Ind. (pre-dec) to Ind. (pre-dec) 1010 10FS SSSR DDDD - - - -
|
|
MOVE *Rs +, *Rd + ,F Move Field: Ind. (post-inc) to Ind. (post-inc) 1 1001 10FS SSSR DDDD - - - -
|
|
MOVE Rs, * Rd(offset).F Move Field: Register to Indirect with offset. 2 1011 OOFS SSSR DDDD - - - -
|
|
MOVE *Rs(offset),Rd,F Move Field: Indirect with offset. to Register 2 1011 01FS SSSR DDDD N - Z 0
|
|
MOVE * Rs(offset), *Rd + ,F Move Field: Ind. with offset. to Ind.
|
|
(post-inc) 2 1101 OOFS SSSR DDDD - - - -
|
|
MOVE *Rs(offset), *Rd(offset),F Move Field: Ind. with offset. to Ind.
|
|
with offset. 3 1011 10FS SSSR DDDD - - - -
|
|
MOVE Rs,@Daddress,F Move Field: Register to Absolute 3 000001F1 100R SSSS - - - -
|
|
MOVE @Saddress,Rd,F Move Field: Absolute to Register 3 0000 01F1 101R DDDD N - Z 0
|
|
MOVE @Saddress, *Rd + ,F Move Field: Absolute to Indirect (post-inc) 3 1101 01FO OOOR DDDD - - - -
|
|
MOVE @Saddress,@Oaddress,F Move Field: Absolute to Absolute 5 0000 01F1 1100 0000 - - - -
|
|
|
|
tNumber of cycles depends on field size and alignment. See TMS34010 User's Guide (SPVU001A).
|
|
|
|
|
|
|
|
|
|
A-14
|
|
TEXAS . .
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON, TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
GENERAL INSTRUCTIONS
|
|
NO. MINIMUM STATUS
|
|
SYNTAX DESCRIPTION WORDS CYCLES 16-BIT OPCODE BITS
|
|
MSB LSB
|
|
ABS Rd Store Absolute Value 0000 0011 100R DODD N - Z 0
|
|
ADD RS,Rd Add Registers 0100 0005 SSSR DODD Nez V
|
|
ADDC RS,Rd Add Register with Carry 1 1 0100 0015 S5SR DODD Nez V
|
|
ADDIIW,Rd Add Immediate (16 Bits) 2 2 0000 1011 ODOR DODD Nez V
|
|
ADDIIL,Rd Add Immediate (32 Bits) 3 3 0000 1011 001R DODD Nez V
|
|
ADDK K,Rd Add Constant (5 Bits) 0001 OOKK KKKR DODD Nez V
|
|
AND RS,Rd AND Registers 1 0101 0005 SSSR DODD Z
|
|
ANDIIL,Rd AND Immediate (32 Bits) 3 3 0000 1011 100R DODD Z
|
|
ANON RS,Rd AND Register with Complement 1 1 0101 0015 SSSR DODD Z
|
|
ANDNIIL,Rd AND Not Immediate (32 Bits) 3 3 0000 1011 100R DODD Z
|
|
BTST K,Rd Test Register Bit - Constant 0001 11KK KKKR DODD Z
|
|
BTST Rs,Rd Test Register Bit - Register 2 0100 1015 SSSR DODD Z
|
|
CLR Rd Clear Register 0101 0110 DOOR DODD
|
|
CLRC Clear Carry 0000 0011 0010 0000 o
|
|
CMP RS,Rd Compare Registers 1 0100 100S SSSR DODD Nez V
|
|
CMPIIW,Rd Compare Immediate (16 Bits) 2 2 0000 1011 010R DODD Nez V
|
|
CMPIIL,Rd Compare Immediate (32 Bits) 3 3 0000 1011 011R DODD Nez V
|
|
DEC Rd Decrement Register 1 0001 0100 001R DODD
|
|
DINT Disable Interrupts 3 0000 0011 0110 0000
|
|
DIVS RS,Rd Divide Registers Signed 40 0101 1005 5S5R DODD N - Z V
|
|
DIVU RS,Rd Divide Registers Unsigned 37 0101 1015 5SSR DODD Z V
|
|
EINT Enable Interrupts 3 0000 1101 0110 0000
|
|
EXGF Rd,F Exchange Field Size 1101 01F1 ODOR DODD
|
|
LMO RS,Rd Leftmost One 0110 1015 5SSR DODD Z
|
|
MMFM Rs,Register List Move Multiple Registers from Memory 2 0000 1001 101R DODD
|
|
MMTM Rd,Register List Move Multiple Registers to Memory 2 0000 1001 100R DODD
|
|
MODS RS,Rd Modulus Signed 40 0110 1105 S5SR DODD N - Z V
|
|
MODU RS,Rd Modulus Unsigned 1 35 0110 1115 SSSR DODD Z V
|
|
MOVIIW,Rd Move Immediate (16 Bits) 2 2 0000 1001 110R DODD N - Z 0
|
|
MOVIIL,Rd Move Immediate (32 Bits) 3 3 0000 1001 111R DODD N - Z 0
|
|
MOVK K,Rd Move Constant (5 Bits) 0001 10KK KKKR DODD
|
|
F51
|
|
MPYS RS,Rd Multiply Registers (Signed) 5+- 0101 1105 5SSR DODD N - Z
|
|
2
|
|
F51
|
|
MPYU Rs,Rd Multiply Registers (Unsigned) 5+- 0101 1115 SSSR DDDD Z
|
|
2
|
|
NEG Rd Negate Register 0000 0011 101R DODD Nez V
|
|
NEGB Rd Negate Register with Borrow 0000 0011 110R DODD Nez V
|
|
NOP No operation 0000 0011 0000 0000
|
|
NOT Rd Complement Register 0000 0011 111R DODD Z
|
|
OR Rs,Rd OR Registers 1 0101 0105 SSSR DODD Z
|
|
ORIIL,Rd OR Immediate (32 bits) 3 3 0000 1011 101R DODD Z
|
|
RL K,Rd Rotate Left - Constant 0011 OOKK KKKR DODD C Z
|
|
RL RS,Rd Rotate Left - Register 0110 1005 SSSR DODD C Z
|
|
SETC Set Carry 1 0000 1101 1110 0000
|
|
SETF FS,FE,F Set Field Parameters 1,2 0000 01 F1 01 FS SS5S
|
|
SEXT Rd,F Sign Extend to Long 3 0000 01 F1 ODOR DODD N - Z
|
|
|
|
t Number of cycles depends on number of registers in list and stack alignment. See TM53401 0 User's Guide (SPVUOO 1 A).
|
|
|
|
|
|
|
|
|
|
TEXAS . . . A-15
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
NO. MINIMUM STATUS
|
|
SYNTAX DESCRIPTION WORDS CYCLES 16-BIT OPCODE BITS
|
|
MSB LSB
|
|
SLA K,Rd Shift Left Arithmetic - Constant 3 0010 OOKK KKKR DODD N C Z V
|
|
SLA Rs,Rd Shift Left Arithmetic - Register 3 0110 OOOS SSSR DODD N C Z V
|
|
SLL K,Rd Shift Left Logical - Constant 0010 01KK KKKR DODD C Z
|
|
SLL RS,Rd Shift Left Logical - Register 0110 001S SSSR DODD C Z
|
|
SRA K,Rd Shift Right Arithmetic - Constant 0010 10KK KKKR DODD N C Z
|
|
SRA RS,Rd Shift Right Arithmetic - Register 0110 010S SSSR DODD N C Z
|
|
SRL K,Rd Shift Right Logical - Constant 0010 l1KK KKKR DODD C Z
|
|
SRL RS,Rd Shift Right Logical - Register 0110 011S SSSR DODD C Z
|
|
SUB Rs,Rd Subtract Registers 0100 010S SSSR DODD N C Z V
|
|
SUBB Rs,Rd Subtract Registers with Borrow 0100 011S SSSR DODD N C Z V
|
|
SUBllW,Rd Subtract Immediate (16 Bits) 2 2 0000 lOll 1"R DODD N C Z V
|
|
SUBllL,Rd Subtract Immediate (32 Bits) 3 3 0000 1101 OOOR DODD N C Z V
|
|
SUBK K,Rd Subtract Immediate (5 Bits) 1 0001 01 KK KKKR DODD N C Z V
|
|
XOR RS,Rd Exclusively OR Registers 1 1 0101 011S SSSR DODD Z
|
|
XORllL,Rd Exclusively OR Immediate Value (32 Bits) 3 3 0000 lOll 1100 DODD Z
|
|
ZEXT Rd,F Zero Extend to Long 0000 01Fl 001R DODD Z
|
|
|
|
|
|
PROGRAM CONTROL AND CONTEXT SWITCHING
|
|
NO. MINIMUM STATUS
|
|
SYNTAX DESCRIPTION WORDS CYCLESt 16-BIT OPCODE BITS
|
|
MSB LSB
|
|
CALL Rs Call Subroutine Indirect 6 0000 1001 001R DODD
|
|
CALLA Address Call Subroutine Absolute 3 6 0000 1101 0101 1111
|
|
CALLR Address Call Subroutine Relative 2 5 0000 1101 0011 1111
|
|
DSJ Rd.Address Decrement Register and Skip Jump 2 3,2 0000 1101 100R DODD
|
|
DSJEQ Rd.Address Conditionally Decrement Register and Skip Jump 2 3,2 0000 1101 101R DODD
|
|
DSJNE Rd.Address Conditionally Decrement Register and Skip Jump 2 3,2 0000 1101 1 lOR DODD
|
|
DSJS Rd,Address Decrement Register and Skip Jump - Short 2,3 0011 1Dxx xxxR DODD
|
|
EMU Initiate Emulation 6 0000 0001 0000 0000
|
|
EXGPC Rd Exchange Program Counter with Register 2 0000 0001 001R DODD
|
|
GETPC Rd Get Program Counter into Register 0000 0001 010R DODD
|
|
GETST Rd Get Status Register into Register 1 0000 0001 100R DODD
|
|
JAcc Address Jump Absolute Conditional 3 3.4 1 100 code 1000 0000
|
|
JRcc Address Jump Relative Conditional 2 3,2 1100 code 0000 0000
|
|
JRcc Address Jump Relative Conditional - Short 2,1 1 100 code xxxx xxxx
|
|
JUMP Rs Jump Indirect 2 0000 0001 011R DODD
|
|
PO PST Pop Status Register from Stack 8 0000 0001 1100 0000
|
|
PUSHST Push Status Register onto Stack 2 0000 0001 1110 0000
|
|
PUTST Rs Copy Register into Status 3 0000 0001 101R DODD N C Z V
|
|
RETI Return from Interrupt 11 0000 1001 0100 0000 N C Z V
|
|
RETS (N) Return from Subroutine 7 0000 1001 011N NNNN
|
|
REV Rd Get Revision Number 1 0000 0000 001R DODD
|
|
TRAP N Software Interrupt 16 0000 1001 OOON NNNN 0 0 0 0
|
|
|
|
tWhere two numbers appear, the first number assumes that the jump is taken, and the second assumes that the jump is not taken.
|
|
|
|
|
|
|
|
|
|
A-16 TEXAS •
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON, TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
development systems and software support
|
|
Texas Instruments, together with third party suppliers, offers a full range of hardware and software
|
|
development tools for the TMS3401 O. The support environment is aimed at four areas of support with
|
|
the key tools based on the IBM PC, DEC VAX, SUN, MAC II, APOLLO and TI Professional computers:
|
|
DESIGNER TOOLS
|
|
Hardware XDS-22 Real Time Emulator (with PC-based Debugger Interface)
|
|
PC Software Development Board (with Debugger Interface)
|
|
Software Assembly Language Package, including:
|
|
Assembler, Linker, Archiver, ROM Object Format Converter, Software Simulator (PC only)
|
|
Graphics/Math Function Library
|
|
Bit-Mapped Font Library
|
|
CCITT Data Compression/Decompression Function library
|
|
8514A Emulation Function Library
|
|
Languages C Compiler Package including:
|
|
TMS34010 C Compiler
|
|
Runtime Support
|
|
Systems Window Management Support
|
|
Image Processing Support
|
|
Graphics Interfaces and Standards
|
|
Debugger Adaptation Software
|
|
|
|
Further support is provided through a network of Regional Technology Centers (RTCs).
|
|
|
|
|
|
|
|
|
|
TEXAS . . A-17
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON, TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
TMS340 FAMILY HARDWARE AND SOFTWARE SUPPORT
|
|
SILICON PART NUMBER
|
|
Graphics System Processor 68-Pin PLCC TMS34010FNL
|
|
Video System Controller 68-Pin PLCC TMS34061 FNL
|
|
Color Palette 22-Pin DIP TMS34070NL
|
|
64Kx1 Multiport Memory 22-Lead PLCC (120 and 150 ns) TMS4161FML
|
|
64Kx1 Multiport Memory 22-Pin DIP (120 and 150 ns) TMS4161NL
|
|
64Kx4 Multiport Memory 24-Pin DIP (120 and 150 ns) TMS4461NL
|
|
OPERATING
|
|
SOFTWARE TOOLS COMPUTER SYSTEM PART NUMBER
|
|
TMS34010 Assembler Package:
|
|
Assembler, Linker, Archiver, IBM/TI PC MS-DOS 2.11 + TMDS3440808002
|
|
Object Format Converter, Simulator
|
|
TMS34010 Assembler Package:
|
|
Assembler, Linker, Archiver, VAX VMS TMDS3440200059
|
|
Object Format Converter VAX ULTRIX TMDS3440200069
|
|
VAX System V TMDS3440200089
|
|
HP System V TMDS3440500089
|
|
Sun System V TMDS3440550086
|
|
Mac 11 MPW TMDS3440560021
|
|
Apollo System V TMDS3440570088
|
|
TMS34010 C Compiler Package IBMITI PC MS-DOS 2.11 + TMDS3440805002
|
|
VAX VMS TMDS3440205059
|
|
VAX ULTRIX TMDS3440205069
|
|
VAX System V TMDS3440205089
|
|
HP System V TMDS3440505089
|
|
Sun System V TMDS3440555086
|
|
Mac II MPW TMDS3440565021
|
|
Apollo System V TMDS3440575088
|
|
Combination packages:
|
|
Assembler, Linker, Archiver, IBM/TI PC MS-DOS 2.11 + TMDS3440804003
|
|
Object Format Converter, Simulator,
|
|
C Compiler with runtime support
|
|
TMS34010 GraphicslMath
|
|
Function Library IBM/TI PC - Source TMDS3440802202
|
|
VAX - Source TMDS3440802208
|
|
TMS34010 Bit-Mapped Font Library IBM/TI PC MS-DOS 2.11 + TMDS3440802302
|
|
VAX ALL TMDS3440202308
|
|
TMS34010 CCITT Function Library IBM/TI PC MS-DOS 2.11 + TMDS3440802102
|
|
VAX All TMDS3440202108
|
|
TMS34010 8514/A Emulation Libraili,MOS- IBM/TIPC, MS-DOS 2.11 +
|
|
3440
|
|
8020
|
|
02
|
|
TMS34010 PC Debugger Development Package IBM/TI PC MS-DOS 2.11 + TMDS3440806002
|
|
(For Internal Use)
|
|
TMS34010 PC Debuffer Development Package IBM/TI PC MS-DOS 2.11 + TMDS3440806003
|
|
(For Resale)
|
|
HARDWARE TOOLS COMPUTER VERSION PART NUMBER
|
|
TMS34010 XDS-22 Real-Time Emulator with BT&T U.S. TMDS346991 0000
|
|
Europe TMDS3469981 000
|
|
Color Graphics Controller Board (TMS34061, TMS34070) IBMITI PC TMDS3471804000
|
|
TMS34010 Software Development Board IBM/TI PC TMDS3411804420
|
|
|
|
|
|
DESIGN KITS PART NUMBER
|
|
TMS340 Graphics Design Kit, including TMS34061, TMS34070, TMS4161 s TMS340GDK
|
|
TMS34010 Graphics Design Kit, including TMS34010, TMS34070, TMS4461s, PC Assembler TMS34010GDK
|
|
|
|
|
|
|
|
|
|
A-18 TEXAS •
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
reset
|
|
Reset puts the TMS34010 into a known initial state. It is entered when the input signal at the RESET
|
|
pin is asserted low. RESET must remain active low for a minimum of 40 local clock (LCLK1 and LCLK2)
|
|
periods to ensure that the TMS34010 has sufficient time to establish its initial internal state.
|
|
While RESET remains asserted, all outputs are in a known state, no DRAM-refresh cycles take place, and
|
|
no screen-refresh cycles are performed.
|
|
At the low-to-high transition of the RESET signal, the state of the HCS input determines whether the
|
|
TMS34010 will be halted or begin executing instructions. The TMS3401 0 may be in one of two modes,
|
|
host-present or self-bootstrap mode.
|
|
1 . Host-Present Mode
|
|
If HCS is high at the end of reset, TMS34010 instruction execution is halted and remains halted
|
|
until the host clears the HLT (halt) bit in HSTCTL (host control register). Following reset, the eight
|
|
RAS-only refresh cycles required to initialize the dynamic RAMs are performed automatically by the
|
|
TMS34010 memory control logic. As soon as the eight RAS-only cycles are completed, the host is
|
|
allowed access to TMS3401 0 memory. At this time, the TMS3401 0 begins to automatically perform
|
|
DRAM refresh cycles at regular intervals. The TMS3401 0 remains halted until the host clears the
|
|
HLT bit. Only then does the GSP fetch the level-O vector address from location OFFFFFFEOh and begin
|
|
executing its reset service routine.
|
|
2. Self-Bootstrap Mode
|
|
If HCS is low at the end of reset, the TMS3401 0 first performs the eight RAS-only refresh cycles
|
|
required to initialize the DRAMs. Immediately following the eight RAS-only cycles, the TMS3401 0
|
|
fetches the level-O vector address from location OFFFFFFEOh, and begins executing its reset service
|
|
routine.
|
|
|
|
Unlike other interrupts and software traps, reset does not save previous ST or PC values. This is because
|
|
the value of the stack pointer just before a reset is generally not valid, and saving its value on the stack
|
|
is unnecessary. A TRAP 0 instruction, which uses the same vector address as reset, similarly does not
|
|
save the ST or PC values.
|
|
asserting reset
|
|
A reset is initiated by asserting the RESET input pin at its active-low level. To reset the TMS3401 0 at power
|
|
up, RESET must remain active low for a minimum of 40 local clock periods after power levels have become
|
|
stable. At times other than power up, the TMS3401 0 is also reset by holding RESET low for a minimum
|
|
of 40 clock periods. The 40-clock interval is required to bring TMS3401 0 internal circuitry to a known
|
|
initial state. While RESET remains asserted, the output and bidirectional signals are driven to a known state.
|
|
The TMS3401 0 drives its RAS signal inactive high as long as RESET remains low. The specifications for
|
|
certain DRAM and VRAM devices, including the TMS4161, TMS41 64 and TMS4464 devices, require that
|
|
the RAS signal be driven inactive-high for 100 microseconds during system reset. Holding RESET low for 1 50
|
|
microseconds will cause the RAS signal to remain high for the 100 microseconds required to bring the
|
|
memory devices to their initial states. DRAMs such as the TMS4256 specify an initial RAS high time of
|
|
200 microseconds, requiring that RESET be held low for 250 microseconds. In general, holding RESET
|
|
low for t microseconds ensures that RAS remains high initially for t - 50 microseconds.
|
|
|
|
|
|
|
|
|
|
TEXAS ~ A-19
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
suspension of DRAM-refresh cycles during reset
|
|
An active-low level at the RESET pin is considered to be a power-up condition, and DRAM refresh is not
|
|
performed until RESET goes inactive high. Consequently, the previous contents of the local memory may
|
|
not be valid after a reset.
|
|
|
|
initial state following reset
|
|
While the RESET pin is asserted low, the TMS3401 O's output and bidirectional pins are forced to the states
|
|
listed below.
|
|
|
|
INITIAL STATE OF PINS FOLLOWING A RESET
|
|
OUTPUTS DRIVEN OUTPUTS DRIVEN BIDIRECTIONAL
|
|
TO HIGH LEVEL TO LOW LEVEL PINS DRIVEN TO
|
|
HIGH IMPEDANCE
|
|
DDOUT BLANK HSYNC
|
|
HRDY VSYNC
|
|
DEN HDO-HD15
|
|
LAL LADO-LAD15
|
|
ffi/OE
|
|
RAS
|
|
CAS
|
|
W
|
|
HINT
|
|
HLDA/EMUA
|
|
|
|
|
|
Immediately following reset, all I/O registers are cleared (set to Oh), with the possible exception of the
|
|
HLT bit in the HSTCTL register. The HLT bit is set to 1 if HCS is high just prior to the low-to-high
|
|
transition of RESET.
|
|
Just prior to execution of the first instruction in the reset routine, the TMS3401 O's internal registers are
|
|
in the following state:
|
|
• General-purpose register files A and Bare uninitialized.
|
|
• The ST is set to 0000001 Oh.
|
|
• The PC contains the 32-bit vector fetched from memory address OFFFFFFEOh.
|
|
|
|
TMS34010 local memory interface
|
|
The TMS3401 0 local memory interface consists of a triple-multiplexed address/data bus on which row
|
|
addresses, column addresses, and data are transmitted. The associated memory control signals support
|
|
direct interfacing to both DRAMs and VRAMs. At the beginning of a typical memory cycle, the address
|
|
is output in multiplexed fashion as a row address followed by a column address. The remainder of the
|
|
cycle is used to transfer data between the TMS3401 0 and memory.
|
|
|
|
|
|
|
|
|
|
A-20 TEXAS . .
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
TMS34010 local memory interface
|
|
The TMS3401 0 local memory interface consists of a triple-multiplexed address/data bus on which row
|
|
addresses, column addresses, and data are transmitted. The associated memory control signals support
|
|
direct interfacing to both DRAMs and VRAMs. At the beginning of a typical memory cycle, the address
|
|
is output in multiplexed fashion as a row address followed by a column address. The remainder of the
|
|
cycle is used to transfer data between the TMS3401 0 and memory.
|
|
|
|
|
|
ROW COLUMN
|
|
TMS34010 DATA
|
|
ADDRESS ADDRESS
|
|
RF IAQ 15
|
|
26 TR 14
|
|
25 29
|
|
24 28 12
|
|
27 11
|
|
10
|
|
9
|
|
8
|
|
|
|
|
|
|
|
4
|
|
3
|
|
|
|
|
|
|
|
|
|
BIT 31 BIT 0 BIT 15 BIT 0
|
|
(MSB) (LSB) (MSB) (LSB)
|
|
RF = DRAM-REFRESH BUS STATUS BIT
|
|
IAQ = INSTRUCTION ACQUISITION BUS STATUS BIT
|
|
TR = VRAM SHIFT -REGISTER-TRANSFER BUS STATUS BIT
|
|
|
|
|
|
FIGURE 7. TRIPLE MULTIPLEXING OF ADDRESSES AND DATA
|
|
|
|
|
|
The following types of memory cycles are supported: read, write, VRAM memory-to-shift-register, VRAM
|
|
shift-register-to-memory, RAS-only DRAM refresh and CAS-before-RAS DRAM refresh. The functional
|
|
timing for these cycles is shown in the next six figures. Each memory cycle is a minimum of two machine
|
|
states (a state is one local clock period) in duration. The seventh figure indicates the timing signals output
|
|
during an internal cycle, i.e., a cycle during which no memory access takes place. An internal cycle is
|
|
one state in duration.
|
|
|
|
During a memory cycle, the row address, column address, and data are transmitted over the same physical
|
|
bus lines. The manner in which logical addresses are output at the memory interface makes external
|
|
mUltiplexing hardware unnecessary, while supporting a wide variety of memory configurations. For example,
|
|
in Figure 7, 16 consecutive address bits (5 through 20) are output on LAD l-LAD8 during the row and
|
|
column address times. Output along with the address are bus status signals that indicate when DRAM
|
|
refresh cycles, screen refresh (VRAM memory-to-shift-register) cycles, and instruction fetch cycles are
|
|
occurring.
|
|
|
|
|
|
|
|
TEXAS . . A-21
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
The following remarks apply to memory timing in general. A row address is output on LA DO-LAD 15 at
|
|
the start of the cycle, and is valid before and after the fall of RAS. Next a column address is output on
|
|
LADO-LAD 1 5. The column address is valid briefly before and after the falling edge of LAL, but is not valid
|
|
at the falling edge of CAS. The column address is clocked into an external transparent latch
|
|
(e.g., a 74AS373 octal latch) on the falling edge of LAL to provide the hold time on the column
|
|
address required for dynamic RAMs and video RAMs. A transparent latch is required in order that the row
|
|
address be available at the outputs of the latch during the start of the cycle.
|
|
Very large memory configurations may require external buffering of data lines. The DEN signal serves as
|
|
the drive-enable signal to external bidirectional buffers, e.g., 74AS245 octal buffers. The DDOUT signal
|
|
serves as the direction control for the buffers.
|
|
When an 1/0 register is addressed by the TMS3401 0, a special memory read or write cycle is performed.
|
|
During this cycle, the external RAS signal falls, but the external CAS remains inactive-high for the duration
|
|
of the cycle.
|
|
|
|
The timing shown in the first six functional timing diagrams assumes that the LRDY input remains high
|
|
during the cycle. The LRDY pin is pulled low by slower memories requiring a longer cycle time. The
|
|
TMS34010 samples the LRDY input at the end of Q 1, as indicated in the figures. If LRDY is low, the
|
|
TMS34010 inserts an additional state, called a "wait" state, into the cycle. Wait states continue to be
|
|
inserted until LRDY is sampled at a high level. The cycle then completes in the manner indicated in the
|
|
functional timing diagrams. A wait state is one local clock period in duration. Three additional timing diagrams
|
|
provide examples of cycles extended by wait states.
|
|
The LRDY input is ignored by the TMS34010 during internal cycles.
|
|
A holdlhold acknowledge capability is also built into the local memory interface to allow external devices
|
|
to request control of the bus. After acknowledging a hold request, the TMS3401 0 releases the bus by
|
|
driving its address/data bus and control outputs into high impedance.
|
|
|
|
|
|
|
|
|
|
A-22 TEXAS . .
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
write cycle timing
|
|
|
|
|
|
|
|
|
|
LClK1
|
|
|
|
|
|
|
|
|
|
LCLK2
|
|
|
|
|
|
|
|
|
|
LADO-LAD15
|
|
|
|
|
|
|
|
|
|
TR/QE
|
|
|
|
|
|
|
|
|
|
DDOUT
|
|
|
|
|
|
|
|
|
|
lRDY
|
|
|
|
|
|
|
|
|
|
TEXAS • A-23
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
read cycle timing
|
|
|
|
,,
|
|
,
|
|
Q1 I' Q2 " Q3 I Q4 , Q1 I
|
|
I
|
|
Q2
|
|
l'Q3 Q4'
|
|
I
|
|
Q1 I
|
|
I
|
|
LCLK1 V I I
|
|
|
|
I
|
|
I
|
|
I
|
|
"I
|
|
I
|
|
I
|
|
!I II
|
|
'I
|
|
I
|
|
'V'
|
|
|
|
|
|
|
|
|
|
I
|
|
"'-~I!-------{i
|
|
I ,
|
|
I
|
|
\
|
|
I
|
|
V'
|
|
|
|
|
|
|
|
|
|
I
|
|
II
|
|
I
|
|
I I I I I I , I I
|
|
|
|
LCLK2
|
|
!-----r.I I V
|
|
I !I ~I,,--+-I_l!--_~'v'
|
|
I -I'I·
|
|
I, f\ I I
|
|
I ,,' r~ ;-
|
|
I I I, I ' I I' I
|
|
I I
|
|
I ! ~! Ie
|
|
I I I I, I I I I
|
|
|
|
LADO-LAD15 ~
|
|
t - i- -..... ~ow ~
|
|
, I I 'I I I
|
|
I' 'I I
|
|
I I
|
|
I
|
|
,
|
|
RAS'
|
|
I
|
|
I
|
|
I
|
|
I
|
|
"
|
|
II \
|
|
'I
|
|
'I'
|
|
' I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
'v
|
|
I I
|
|
I
|
|
'I,
|
|
I
|
|
I
|
|
I
|
|
I
|
|
|
|
|
|
'v, I
|
|
, " I' I I I II, I
|
|
I I I I I I I I I I
|
|
I I I 1\1 I , I I VI I
|
|
LAL ' I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I,'
|
|
I I
|
|
,
|
|
,
|
|
, 'I
|
|
'I, I
|
|
I
|
|
' I
|
|
' I ,, " '
|
|
I II ,, '"
|
|
' I, I,
|
|
' I , I I I , 'I, I
|
|
CAS I
|
|
' I
|
|
I I I
|
|
I I'
|
|
!\ I
|
|
I ,
|
|
I IV
|
|
" I
|
|
I I
|
|
' I , I' I , , I
|
|
' I I I' I I 'I I
|
|
, I (HIGH) I I' I, I, I
|
|
W' I I " I , I, I
|
|
' I 'I I , I"
|
|
' I 'I I I I, I
|
|
'I " I l' I, I
|
|
TR/QE I ;
|
|
' I
|
|
i;
|
|
, I
|
|
I,! \ :
|
|
I , '
|
|
I V
|
|
I I II
|
|
: I I I I I I I I'
|
|
DEN!
|
|
' I
|
|
V !I
|
|
I I
|
|
~!
|
|
I ,
|
|
VI!
|
|
I I I
|
|
I
|
|
DDOUT
|
|
'IJ
|
|
i v I
|
|
I
|
|
i I
|
|
I 1\ I
|
|
I
|
|
I
|
|
I
|
|
'I'
|
|
I I I
|
|
lv/
|
|
I I I I I I I I 'I I I
|
|
, I I I I I I ' 'I' I
|
|
|
|
LROY~'~
|
|
|
|
|
|
|
|
|
|
A-24 TEXAS
|
|
INSTRUMENTS
|
|
-1!1
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
memory-to-register cycle timing
|
|
|
|
i 01 I 02 i 03 , 04 , 01 02' 03 I 04 I 01 i
|
|
, ' I " ' I ' I
|
|
LCLK1 ! "I I VI ~
|
|
, - - - - t - - -...... I : I1
|
|
, \....--+-'--11---1.
|
|
VI 'V'
|
|
|
|
|
|
|
|
|
|
' II
|
|
, ,
|
|
I
|
|
I
|
|
\...·--+-1-11---1.
|
|
II I
|
|
I
|
|
,
|
|
, ,I
|
|
, I I I,
|
|
, 1
|
|
1
|
|
,--!I------i.t\ ' t \ I,
|
|
LCLK21
|
|
1
|
|
V I
|
|
t-I- - - ' ! - ,
|
|
1,\ I,
|
|
"
|
|
I ,
|
|
V i i,,\I' l/
|
|
-+1---rV
|
|
1
|
|
|
|
|
|
I ' I I
|
|
I, " \....+-1
|
|
|
|
|
|
|
|
|
|
$. : : UNDE~INE~;
|
|
I ,I, I ,I 1
|
|
|
|
|
|
~DO-LAD15 ! ~ ~ow ~
|
|
, , ' ," I , I, I
|
|
RAS I,t----+I--~l I II I II !I I I
|
|
i\
|
|
'V,
|
|
|
|
|
|
' I I _,
|
|
I ' ' '---+,--+I--+,-----fl--~!------f' I '
|
|
I
|
|
I
|
|
,
|
|
,
|
|
I
|
|
I
|
|
,I,
|
|
,I, I
|
|
I I
|
|
,
|
|
,
|
|
|
|
LALP'
|
|
V I
|
|
I
|
|
It\! I '
|
|
I !v
|
|
I
|
|
I I ' I' I I
|
|
I I I I 1 I I
|
|
I I I I!\' IV
|
|
CAS II I
|
|
I
|
|
', I !\ I ''---+I---+-----f-~
|
|
.
|
|
I I " ,
|
|
I I I I I
|
|
t-I---!----+I-(HIGH) -+--+-,-+---+I----+--~~-It---+----+---
|
|
W I '
|
|
I I
|
|
I I
|
|
|
|
TR/OE
|
|
I
|
|
!
|
|
I '
|
|
~
|
|
'---+---~~-_+_--~--_f
|
|
Vr---+-+!-+---+---I
|
|
|
|
|
|
I
|
|
I ' ' I
|
|
|
|
DEN!
|
|
II
|
|
V
|
|
,,
|
|
!!
|
|
"
|
|
, I
|
|
|
|
|
|
DDOUT I!
|
|
I
|
|
'I' ,
|
|
VI "
|
|
, ',I',
|
|
"'
|
|
,II' I
|
|
I
|
|
'
|
|
'
|
|
'I'
|
|
'I'
|
|
1
|
|
I
|
|
I
|
|
I I I ," I' I
|
|
|
|
~I-
|
|
|
|
|
|
TEXAS . . A-25
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
register-to-memory cycle timing
|
|
, i, ", , ,
|
|
,
|
|
, 01 02 03 04 , 01 02' 03 04' 01
|
|
|
|
LCLK1 V ~
|
|
I,~-~'Ij~I~~.
|
|
, ,
|
|
1 'V',...--1-------1.1\.I,I~ "V'
|
|
I.
|
|
,
|
|
,I 'I' , k "' '
|
|
'
|
|
LCLK2 :-~----fV I,
|
|
I,
|
|
~,I' II
|
|
,,',
|
|
I
|
|
V "I i\ ~.I-+-II--~V! ; -
|
|
,, ,, ,', '' '' ,,'
|
|
,,' ,,
|
|
+-,
|
|
|
|
|
|
|
|
|
|
LADO-LAD151~~ ~OW ~: : UNDE+O:: ~
|
|
,, ,, ,, "
|
|
"
|
|
,, "
|
|
"
|
|
,,
|
|
RAS!, !, ~
|
|
,
|
|
! !
|
|
'---for-~,-+---+---+----!,
|
|
V!!
|
|
"
|
|
!,
|
|
, , , " , I' ,
|
|
LAL ""V""""--+-'---+-,---!+----11.", ! V '
|
|
, , ~--~~-~--~-.,~,
|
|
"
|
|
"
|
|
,, ,,
|
|
CAS!, !, "'~-+---~i---~--fV '
|
|
, ,
|
|
w!
|
|
"
|
|
1\ V
|
|
,
|
|
~/QE i ~~-~--~i-+--~---+---~~
|
|
DEN! ~ !
|
|
|
|
OOOUT ! ~ ! I i I
|
|
lRDY~ ~
|
|
I '" ' " I
|
|
|
|
|
|
|
|
|
|
A-26
|
|
TEXAS . .
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
RAS-only DRAM refresh cycle timing
|
|
|
|
|
|
|
|
LCLK1
|
|
|
|
|
|
|
|
|
|
LCLK2
|
|
|
|
|
|
|
|
|
|
DEN I
|
|
f
|
|
I
|
|
I f f
|
|
i I I
|
|
I
|
|
I I I
|
|
DDOUT i
|
|
I
|
|
|
|
|
|
f
|
|
V i
|
|
I
|
|
|
|
|
|
I
|
|
f
|
|
|
|
|
|
|
|
|
|
I
|
|
I
|
|
I I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
LRDY~~
|
|
|
|
|
|
|
|
TEXAS • A-27
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
CAS-before-RAS refresh cycle timing
|
|
|
|
I Q1 i Q2 I Q3 I Q4 i Q1 I Q2 i Q3 I Q4 I Q1
|
|
I I I I I I I I I
|
|
~I
|
|
LCLK1
|
|
V I
|
|
I
|
|
I
|
|
I
|
|
I \.\,..,_--;-.1
|
|
I
|
|
I
|
|
I
|
|
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I I ,...---+I---i.!\
|
|
---111--~.
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I \
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
IV
|
|
.
|
|
I
|
|
I _ - + I - -......I~I I I~I
|
|
LCLK2 ;-
|
|
<-----rV I r
|
|
• I
|
|
I II
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
VI
|
|
. I
|
|
I
|
|
! '"+-1I _~I---fV!; - -
|
|
I I I I I I I I I I I
|
|
|
|
|
|
_----(~ ~--"T'":__.,. .: -~k=
|
|
1
|
|
|
|
LADO-LAD15 I-! : ROW: : _UN_D_EF_INT-;D---r:_ _
|
|
I I I I I I I I I I
|
|
I I I l I I I I I I
|
|
RAS II I
|
|
I
|
|
I
|
|
I
|
|
1\ I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I ·
|
|
VI I
|
|
I
|
|
I I I I
|
|
I I I I
|
|
LAL V!
|
|
I I
|
|
~
|
|
I '---~--;-.-;._--~--;._--;._-'-___fl
|
|
v,..--+-!---
|
|
I
|
|
II I I I I
|
|
|
|
CAS II
|
|
I
|
|
!\
|
|
1\
|
|
I
|
|
I
|
|
I
|
|
'---~I--~-~-+--~---+-"---+~I
|
|
V I
|
|
I
|
|
I
|
|
I
|
|
|
|
I I I I
|
|
1
|
|
Vii 1-1---+---(HlbH) --!---+--i------1!-------;i----i---+- -1-1- - - + - - - -
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
II
|
|
I I I I
|
|
I I I I
|
|
I I I I
|
|
TR/QE I (HIGH) I I
|
|
I I I I
|
|
I
|
|
I
|
|
II I
|
|
I
|
|
I
|
|
I
|
|
|
|
|
|
|
|
|
|
A-28
|
|
TEXAS •
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON, TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
internal cycles back to back
|
|
|
|
Ii Ql ,r Q2 i, Q3 Q4' 'Qli, Q2 Ii Q3 '
|
|
, Q4 ,
|
|
, Ql i
|
|
,
|
|
|
|
|
|
LCLK 1 IV I, ! \
|
|
I
|
|
,
|
|
,
|
|
"\
|
|
'
|
|
" V " ! \ I II.
|
|
' i , ''
|
|
',.
|
|
" " " ,
|
|
VII ' "\ ,
|
|
I
|
|
I 'I I' I I ", I
|
|
LCLK21 V I
|
|
1-1 ---Ii '
|
|
\\1
|
|
,,'
|
|
I I I\I!
|
|
I ~,+,--+,-----fV
|
|
'V,
|
|
|
|
|
|
.
|
|
tr , ,
|
|
I , ' ,,' , I ,', '
|
|
|
|
|
|
LADO-~D'5 !, ,X:, ,::: UNDE;'NED:
|
|
'I , ,
|
|
:::
|
|
'"
|
|
X=
|
|
,
|
|
, , I " , , I '" ,
|
|
, , (HIGH) , " I , '" ,
|
|
RAS ,
|
|
|
|
,,,
|
|
I
|
|
,,, ,,,
|
|
I ",
|
|
",
|
|
",
|
|
,,
|
|
,
|
|
,,
|
|
, '"
|
|
'"
|
|
'"
|
|
,
|
|
,,,
|
|
' ",
|
|
I" ,, ,, '"
|
|
I', ,
|
|
LAL ,
|
|
V
|
|
,
|
|
,
|
|
,
|
|
,
|
|
,
|
|
|
|
I
|
|
J
|
|
,,
|
|
,
|
|
|
|
|
|
,
|
|
" ,
|
|
",
|
|
",
|
|
",
|
|
,
|
|
,
|
|
,,
|
|
,
|
|
,
|
|
,,
|
|
"
|
|
"
|
|
"
|
|
"
|
|
,,
|
|
,
|
|
|
|
|
|
,
|
|
,
|
|
,
|
|
,
|
|
I
|
|
I
|
|
(HIGH) i i'
|
|
" , ,
|
|
i i '
|
|
, "
|
|
I
|
|
,
|
|
i
|
|
CAS'
|
|
,, ,,
|
|
,
|
|
,!i ,
|
|
",
|
|
",
|
|
'I ,
|
|
"" , "
|
|
,, ,,,
|
|
1 I I I I
|
|
,,
|
|
(HIGH)
|
|
|
|
,i ,
|
|
",
|
|
I' "I I
|
|
,,,
|
|
1
|
|
,,I
|
|
,
|
|
i---..,.I--(HIGH)
|
|
! ,
|
|
I
|
|
' I
|
|
1 1
|
|
"
|
|
"I I I
|
|
,I
|
|
TR/QE Ii", " , ,
|
|
,
|
|
I
|
|
,
|
|
, ",
|
|
", "
|
|
" ,, ,,
|
|
, I I 1 I I 1 I
|
|
~---l. V ;
|
|
,
|
|
I
|
|
,
|
|
"
|
|
I'
|
|
I'
|
|
I
|
|
' I
|
|
' I
|
|
I '
|
|
,
|
|
r
|
|
r
|
|
I
|
|
I
|
|
,
|
|
, , " ' I J ,
|
|
OOOUT
|
|
i
|
|
.
|
|
,
|
|
V !
|
|
.
|
|
,
|
|
,
|
|
,
|
|
I" I
|
|
"
|
|
I"
|
|
' I
|
|
I I,
|
|
'I
|
|
'I
|
|
II
|
|
I
|
|
|
|
LROY
|
|
|
|
|
|
|
|
|
|
TEXAS . " A-29
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
write cycle with one wait state
|
|
|
|
|
|
~WAIT STATE~
|
|
|
|
I 01 02 I 03 I 04 02 I 03 04 Q2 I 03 04 I 02
|
|
LCLK1 Y 1\
|
|
I "--~---f I\--+-----f I\,---+--f
|
|
I I I
|
|
I I I I
|
|
I I
|
|
LCLK2 I I I I
|
|
I I I
|
|
|
|
|
|
|
|
*=
|
|
I I I I I
|
|
|
|
|
|
LADO-LAD15 ---t----tX ~OW ~~:~::----r"DA~A--,--:-r--:
|
|
I I I I I I I I I I I
|
|
---r---:
|
|
I
|
|
I I I I I I I I I I I I
|
|
-I-----i...---l I I I I I I I I __+--+---
|
|
RAS I I I I I I I I I I I
|
|
I I I I I I
|
|
I I I I
|
|
I I I I I I
|
|
I I I I I I I
|
|
LALI
|
|
Y \j. I I
|
|
II
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
V
|
|
,,....-t---
|
|
.
|
|
I
|
|
I
|
|
I I I I I I
|
|
I I I I I I
|
|
I I I I I I
|
|
~~~~-r~~ i I I ~ I
|
|
CAS
|
|
II ',~ \ . II II I,!, II
|
|
I I I I I I
|
|
I I I I I I
|
|
~~~_ _~~I~~ I I AI
|
|
|
|
I
|
|
II f\ II II 11 I
|
|
II
|
|
'i'R/OE _~_!--_~_~_I --+-1-
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
.. I
|
|
!
|
|
......-(HIGH)
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I I I I I I
|
|
-r---t--......-t__-i-----i.' I I I I I
|
|
DEN ____"1----rV
|
|
I
|
|
~ I
|
|
I I,
|
|
!!
|
|
I I
|
|
!
|
|
I
|
|
V-
|
|
I
|
|
I I I I I I
|
|
|
|
DDOUT!
|
|
II PI
|
|
V
|
|
I
|
|
I
|
|
I
|
|
!! I! : ! : I! !
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I I I I I I I I I I I I I
|
|
|
|
LRDY~~:Ct!~!~'~~
|
|
|
|
|
|
A-30 TEXAS . .
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON, TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
read cycle with one wait state
|
|
|
|
r--WA1T STATE~
|
|
|
|
01 02 03 04 01 03 04 01 02
|
|
|
|
|
|
LCLK1 I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
LCLK2 I I I I I I I I
|
|
I I I I
|
|
I I I I I I I I I I
|
|
|
|
|
|
~ ;OW ~~
|
|
I I I I I I I I I
|
|
|
|
LADO-LAD7
|
|
I
|
|
I I I I I I I I I I
|
|
I I I I I I I I I I
|
|
I I I I I
|
|
I I I I I I I I
|
|
I I I I
|
|
I I I
|
|
I I I I
|
|
I I I I
|
|
LAL ]I' 1
|
|
I
|
|
I
|
|
I
|
|
I
|
|
\1 I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
II VI
|
|
I
|
|
I I I I ....
|
|
1 _ _- -
|
|
II
|
|
I 1
|
|
I
|
|
~ 1I 1
|
|
I
|
|
I: I
|
|
I I ! I
|
|
IN I I (H GH) I
|
|
I I I
|
|
I I I
|
|
I I I
|
|
I r-~--
|
|
TR/OE
|
|
II j\
|
|
I
|
|
11 I
|
|
I I I
|
|
|
|
|
|
DEN ---+-~v I
|
|
~
|
|
I
|
|
~ I
|
|
|
|
|
|
DDOUT
|
|
I. V
|
|
I
|
|
I
|
|
I
|
|
r
|
|
I
|
|
|
|
|
|
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
~ 1
|
|
I
|
|
I
|
|
I
|
|
I
|
|
|
|
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
|
|
1
|
|
I
|
|
I
|
|
I
|
|
!r-
|
|
V
|
|
I
|
|
I
|
|
|
|
LRDY
|
|
_g~~1~~_! ~'~t~rr~_
|
|
|
|
|
|
TEXAS ~ A-31
|
|
INSTRUMENTS
|
|
POST OFFice BOX 1443 • HOUSTON. TeXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
register-to-memory cycle with one wait state
|
|
|
|
iWAITSTATEi
|
|
|
|
|
|
I Q2 I I I I I
|
|
--Y,
|
|
Q1 Q3 Q4 Q2 Q3 Q4 Q2 Q3 Q4 Q2
|
|
|
|
|
|
|
|
,,f\ f\,, ,f\
|
|
LCLK1
|
|
|
|
|
|
, ,
|
|
, ,
|
|
LCLK2 , , I
|
|
I
|
|
I , I
|
|
I I
|
|
,I I I I I I I
|
|
|
|
LADO-LAD7
|
|
:
|
|
I
|
|
,,
|
|
I
|
|
~ ,,, ~ :
|
|
I
|
|
ROW
|
|
|
|
|
|
I ' I ,
|
|
:
|
|
I,UNDEFINED
|
|
:I I, *=
|
|
I
|
|
I
|
|
I
|
|
I I ' I I I I,
|
|
I I I
|
|
RAS
|
|
, , f\
|
|
I
|
|
,
|
|
I
|
|
I
|
|
I
|
|
II
|
|
'
|
|
'I I
|
|
I
|
|
I
|
|
I
|
|
,I V
|
|
I
|
|
,
|
|
I I
|
|
I
|
|
I
|
|
, I
|
|
I I '
|
|
,
|
|
I
|
|
I
|
|
I ,I I
|
|
I I
|
|
1 ' I
|
|
, , I
|
|
|
|
LALy, I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
II
|
|
,
|
|
I
|
|
1I \1,
|
|
I ,
|
|
I
|
|
,I
|
|
I
|
|
I
|
|
|
|
,,
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
V
|
|
,
|
|
I
|
|
I
|
|
I
|
|
I
|
|
, , , ,
|
|
,,
|
|
I, I
|
|
I
|
|
I I I I
|
|
, I I
|
|
I
|
|
~ ,
|
|
I
|
|
,
|
|
CAS ,,
|
|
I
|
|
|
|
I,
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
/: I I
|
|
I
|
|
I
|
|
I I I I
|
|
I
|
|
I
|
|
W I
|
|
|
|
|
|
|
|
TR/QE I , I
|
|
I I ,
|
|
I I I
|
|
I I I
|
|
, I I
|
|
|
|
|
|
DEN Vii
|
|
I I I
|
|
I I I
|
|
|
|
DDOUT !
|
|
,
|
|
V1
|
|
I ,
|
|
I
|
|
I
|
|
1
|
|
I
|
|
I
|
|
I
|
|
1
|
|
I
|
|
!
|
|
I
|
|
1
|
|
,
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
!I
|
|
~I l ~ I ~~I~~I~7rlc'~'7""""'-I""~:"'l'M'rl'~~~I~~~~I~'71:'7
|
|
LRDYiXJ&S&R&*n;~! ~ ~~
|
|
|
|
|
|
A-32 TEXAS ~
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
absolute maximum ratings over operating free-air temperature range t
|
|
Supply voltage, Vee ......................................................... 7 V
|
|
Input voltage range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -0.3 V to 20 V
|
|
Off-state output voltage range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. - 2 V to 7 V
|
|
Operating free-air temperature range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0 DC to 70 DC
|
|
Storage temperature range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. - 10 DC to 1 50 DC
|
|
tStresses beyond those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating
|
|
only. Functional operation of the device at these or any other conditions beyond those indicated in the "Recommended Operating Conditions"
|
|
section of this specification is not implied. Exposure to absolute-maximum-rated conditions for extended periods may affect device reliability.
|
|
Voltage values are with respect to the VSS pins of the chip.
|
|
|
|
|
|
recommended operating conditions
|
|
MIN NOM MAX UNIT
|
|
Vee Supply voltage 4.75 5.0 5.25 V
|
|
|
|
VSS Supply voltage t 0 0 0 V
|
|
10H High-level output current -400 p.A
|
|
10L Low-level output current 2.0t mA
|
|
2
|
|
TA Operating free-air temperature 0
|
|
|
|
tCare should be taken by card designers to provide a minimum inductance path between the VSS pins and system ground in order to
|
|
70 °e
|
|
o-
|
|
minimize VSS noise.
|
|
iOutput current of 2.0 mA is sufficient to drive five low-power Schottky TTL loads or 10 advanced low-power Schottky TTL loads (worst case).
|
|
td:
|
|
~
|
|
DC electrical characteristics a::
|
|
PARAMETER TEST CONDITIONS MINt TYpi MAXt UNIT
|
|
oLL
|
|
High-level input All inputs
|
|
2.2 VCC+0.3
|
|
2
|
|
VIH§ voltage, TTL-level except INCLK
|
|
signal
|
|
VCC = 5.0 V V
|
|
w
|
|
INCLK 3.0 VCC+0.3 U
|
|
Low-level input All inputs
|
|
2
|
|
~
|
|
-0.3 0.8
|
|
VIL voltage, TTL-level except INCLK
|
|
V
|
|
signal
|
|
INCLK -0.3 0.8 C
|
|
High-level output voltage, VCC = min,
|
|
2.6 V
|
|
«
|
|
VOH
|
|
TTL-level signal 10H = max,
|
|
Low-level output voltage, VCC = max,
|
|
VOL 0.6 V
|
|
TTL-level signal 10L = max,
|
|
|
|
10
|
|
High-impedance leakage current,
|
|
Vcc=max I VO=2.8V 20
|
|
p.A
|
|
bidirectional pins I VO=0.6V -20
|
|
All inputs except
|
|
Input current ±20 p.A
|
|
II
|
|
I RUN/EMU§
|
|
VI=VSS to VCC
|
|
|
|
VCC = max, 40 MHz 125
|
|
ICC Supply current VCC = max, 50 MHz 150 mA
|
|
VCC = max, 60 MHz 175
|
|
|
|
CI Input capacitance 10 pF
|
|
Output capacitance (except
|
|
Co 10 pF
|
|
address/data lines)
|
|
|
|
tFor conditions shown as "min" or "max," use the appropriate value specified under "Recommended Operating Conditions."
|
|
tAli typical values are at VCC=5 V, TA=25°C.
|
|
§RUN/EMU will be no-connected in a typical configuration. The nominal pull-up current will be 250 p.A.
|
|
|
|
|
|
ADVANCE INFORMATION concerns new products in
|
|
the sampling or preproduction phase of development.
|
|
Characteristic data and other specifications are TEXAS • A-33
|
|
subject to change without notice. INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010 ADVANCE
|
|
GRAPHICS SYSTEM PROCESSOR INFORMATION
|
|
|
|
|
|
NOTE
|
|
Advance information notices apply only to the TMS34010-60.
|
|
|
|
signal transition levels
|
|
--- ____ 2.6V
|
|
|
|
~
|
|
- - - - - - - - - - 2.0 V
|
|
_ _ _ _ _ _ _ _ _ _ 0.8V
|
|
0.6 V
|
|
|
|
|
|
FIGURE 8. TTL-LEVEL OUTPUTS
|
|
|
|
|
|
TTL-level outputs are driven to a minimum logic-high level of 2.6 volts and to a maximum logic-low level
|
|
of 0.6 volts. Output transition times are specified as follows.
|
|
For a high-to-Iow transition on a TTL-compatible output signal, the level at which the output is said to
|
|
be "no longer high" is 2.0 volts, and the level at which the output is said to be "low" is 0.8 volts. For
|
|
a low-to-high transition, the level at which the output is said to be "no longer low" is 0.8 volts, and the
|
|
|
|
» level at which the output is said to be "high" is 2.0 volts.
|
|
|
|
|
|
~
|
|
J>
|
|
---r===\.--- 2.2 v
|
|
==.I-----~ 0.8 V
|
|
z
|
|
om FIGURE 9. TTL-LEVEL INPUTS
|
|
|
|
|
|
-
|
|
~
|
|
."
|
|
Transition times for TTL-compatible inputs are specified as follows. For a high-to-Iow transition on an input
|
|
signal, the level at which the input is said to be "no longer high" is 2.2 volts, and the level at which the
|
|
|
|
o::JJ input is said to be "low" is 0.8 volts. For a low-to-high transition on an input signal, the level at which
|
|
the input is said to be "no longer low" is 0.8 volts, and the level at which the input is said to be "high"
|
|
|
|
s: is 2.2 volts.
|
|
|
|
|
|
~
|
|
test measurement
|
|
|
|
o The test load circuit shown in Figure 10 represents the programmable load of the tester pin electronics,
|
|
which are used to verify timing parameters of TMS3401 0 output signals.
|
|
z
|
|
TESTER PIN
|
|
ELECTRONICS
|
|
|
|
|
|
|
|
OUTPUT
|
|
VLOAD >--.~----~-'o UNDER
|
|
I TEST
|
|
I
|
|
I
|
|
I
|
|
__ ...JI
|
|
|
|
Where: IOL = 2.0 mA DC level verification (all outputs)
|
|
IOH = 400 p.A (all outputs)
|
|
VLOAD = 1.5 V DC level verification
|
|
0.7 V Timing verification
|
|
CT = 65 pF typical load circuit capacitance
|
|
|
|
FIGURE 10. TEST LOAD CIRCUIT
|
|
|
|
|
|
|
|
A-34 TEXAS •
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
timing parameter symbology
|
|
Timing parameter symbols have been created in accordance with JEDEC Standard 100. In order to shorten
|
|
the symbols, some of the pin names and other related terminology have been abbreviated as follows:
|
|
AL LAL HS HSYNC or VSYNC
|
|
C CAS ICK INCLK
|
|
CA Column address LR LRDY
|
|
CK LCLK 1 and LCLK2 OE TRfOE, when used as output enable
|
|
CK1 LCLK1 R RAS
|
|
CK2 LCLK2 RA Row address
|
|
CS HCS RS HREAD
|
|
D Data RY HRDY
|
|
DD DDOUT S HREAD or HWRITE
|
|
EN DEN TR TRfOE, when used as shift register enable
|
|
F HFSO, HFS1 VCK VCLK
|
|
HK HLDA/EMUA W W
|
|
HR HOLD WS HWRITE
|
|
Lowercase subscripts and their meaning are:
|
|
a access time
|
|
c cycle time (period)
|
|
d delay time
|
|
h hold time
|
|
su setup time
|
|
t transition time
|
|
w pulse duration (width)
|
|
The following additional letters and symbols and their meaning are:
|
|
H High
|
|
L Low
|
|
V Valid
|
|
Z High impedance
|
|
i No longer low
|
|
t No longer high
|
|
|
|
|
|
|
|
|
|
TEXAS ~ A-35
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON, TEXAS 77001
|
|
TMS34010 ADVANCE
|
|
GRAPHICS SYSTEM PROCESSOR INFORMATION
|
|
|
|
|
|
host interface timing parameters
|
|
The timing parameters for host interface signals are shown in the next four figures. The purpose of these
|
|
figures and the accompanying table is to quantify the timing relationships among the various signals. The
|
|
explanation of the logical relationships among signals will be found in the TMS34010 User's Guide (number
|
|
SPVU001A).
|
|
The write stobe referred to in the following table is the enabling signal during a write to one of the host
|
|
interface registers (see comment 2 on the next page). Similarly, the read strobe is the enabling signal during
|
|
a read.
|
|
Quarter clock time tQ, which appears in the following table, is one quarter of a local output clock period,
|
|
or twice the input clock period, tc(ICK).
|
|
|
|
TMS34010-50
|
|
TMS34010-40
|
|
NO. PARAMETER TMS34010-60 UNIT
|
|
MIN MAX MIN MAX
|
|
Setup time of HWRITE/HREAD high or HFSO,
|
|
1 tsu(FV-SL) 10 10 ns
|
|
HFS 1 valid to read or write strobe!
|
|
|
|
» 2 td(WSL-DV) Delay from write strobe! to data in valid, write cycle 2tO 2tO ns
|
|
|
|
|
|
~
|
|
Delay from read or write strobe low to next
|
|
3 td(SL-SL) 7tO+ 10 7tO+ 10 ns
|
|
|
|
»,
|
|
:2
|
|
4 tw(SL)
|
|
read or write strobe!
|
|
Duration of read or write strobe low
|
|
Delay from read or write strobe high to next
|
|
80 80 ns
|
|
|
|
5 td(SH-SL) 60 60 ns
|
|
(') read or write strobe!
|
|
m 6 th(WSH-DV) Hold time of data in valid after write strobe high, write cycle 10 10 ns
|
|
Hold time of HWRITE/HREAD high or HFSO,
|
|
7 10 10 ns
|
|
:2 th(SH-FV)
|
|
HFS 1 valid after read or write strobe high
|
|
."
|
|
o::0 8 th(RSL-DZ)
|
|
Hold time of data high impedance after read strobe!.
|
|
read cycle
|
|
O§ O§ ns
|
|
|
|
Delay from read strobe low to data out valid,
|
|
ns
|
|
S 9 td(RSL-DV)
|
|
read cycle with no wait
|
|
90 90
|
|
|
|
|
|
|
|
~
|
|
10 th(RSH-DV) Hold time of data out valid after read strobet, read cycle 0 0 ns
|
|
Delay from read strobe high to data out high impedance,
|
|
11 30§ 30§ ns
|
|
o td(RSH-DZ)
|
|
read cycle
|
|
|
|
th(CSL-RYH) Hold time of HRDY high after HCS!, cycle with wait 0 0 ns
|
|
:2 12
|
|
13 td(CSL-RYL) Delay from HCS low to HRDY low, cycle with wait 40 40 ns
|
|
14 Pulse duration of HRDY low, cycle with wait t t ns
|
|
tw(RYL)
|
|
15 td(RYL-RYH) Delay from HRDY! to HRDY high, cycle with wait 0:1: 0:1: ns
|
|
Hold time of write strobe low after HRDYt,
|
|
16 40 40 ns
|
|
th(RYH-WSL) write cycle with wait
|
|
17 td(RYH-DV) Delay from HRDYt to data out valid, read cycle with wait 40 40 ns
|
|
Hold time of read strobe low after HRDYt,
|
|
18 th(RYH-RSL) 40 40 ns
|
|
read cycle with wait
|
|
|
|
NOTE: Advance information notices apply only to the TMS34010-60.
|
|
tparameter 14 is a function of local bus memory contention. This parameter is not tested. Refer to the TMS340 10 User's Guide for details.
|
|
:l:parameter 15 is specified as minimum 0 ns to indicate that a low-going pulse on HRDY can be arbitrarily narrow.
|
|
§These values are derived from characterization and are not tested.
|
|
|
|
|
|
|
|
|
|
TEXAS •
|
|
A-36
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
general comments on host interface timing
|
|
The following general comments apply to host interface timing:
|
|
1. The HRDY signal is enabled by an active-low level on the HCS input. When HCS is inactive-high,
|
|
HRDY is forced high regardless of the internal state of the device. Low-going transient pulses on
|
|
HCS may result in low-going transient pulses on HRDY, but otherwise have no effect unless
|
|
accompanied by active levels on other control signals.
|
|
2. A host interface write cycle occurs when HCS, HWRITE, and HLDS are low, or when HCS,
|
|
HWRITE, and HUDS are low. The combination of these signals defines a write strobe. In either case,
|
|
the last of the three signals to make the high-to-Iow transition is the strobe (write strobe) that begins
|
|
the cycle. The first of the three signals to make the low-to-high transition ends the cycle. Similarly,
|
|
a host interface read cycle occurs when HCS, HREAD, and HLDS are low, or when HCS, HREAD,
|
|
and HUDS are low. The combination at these signals define a read strobe. In either case, the last
|
|
of the three signals to make the high-to-Iow transition is the strobe (read strobe) that begins the
|
|
cycle. The first of the three signals to make the low-to-high transition ends the cycle. All access
|
|
times are specified with respect to the strobing edges that begin and end the cycle.
|
|
3. During a host interface read or write, HWRITE and HREAD must not be active-low simultaneously.
|
|
4. Host interface input signals HCS, HUDS, HLDS, HFSO, HFS1, HREAD, and HWRITE are assumed
|
|
to be asynchronous with respect to the output clocks LCLK1 and LCLK2.
|
|
|
|
|
|
host interface timing: write cycle with no wait
|
|
|
|
|
|
HFSO, HFSl m< I
|
|
VALID FUNCTION SELECT ~
|
|
I
|
|
|
|
~1~1 ~7~
|
|
I' I. '
|
|
HREAD =:71.1-1 r-7~''-___-
|
|
I I_
|
|
_ _ _ _ _ _1 I 3
|
|
AI~5~"\
|
|
I -I I
|
|
|
|
|
|
HCS, HWRITE,
|
|
HLDS, HUDS ! \:~
|
|
1\1' _ r- 01 \.\.._ __
|
|
I 1.--4 ' I
|
|
I-- 2 -.II -----.., j.- 6 -..I
|
|
I
|
|
|
|
|
|
HDO-HD15 ~ VALID DATA IN ~
|
|
|
|
|
|
HRDY
|
|
|
|
|
|
|
|
|
|
TEXAS • A-37
|
|
INSTRUMENlS
|
|
POST OFFICE BOX 1443 • HOUSTON, TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
host interface timing: read cycle with no wait
|
|
|
|
|
|
HFSO. HFS1 ~ VALID FUNCTION SELECT ~
|
|
I
|
|
r- ~
|
|
1 1
|
|
1 14-- 7---...
|
|
HWRITE ~ I I1.-7 ~J'.\.""'----
|
|
---./ I~1...J 1
|
|
I
|
|
1 I. 31 .1
|
|
------Sl I I 1
|
|
HCS. HREAD.
|
|
HLDS. HUDS
|
|
"k. !
|
|
I\. ,. =r
|
|
.f r-- ------.t \.""___
|
|
5
|
|
|
|
|
|
|
|
|
|
,J--------
|
|
1 ! . - - 4 -----.j t--11"-1
|
|
I 49 '--10~
|
|
HDO-HD15 --HI-Z
|
|
/4 8", VALID DATA OUT
|
|
|
|
|
|
|
|
|
|
HRDY
|
|
|
|
host interface timing: write cycle with wait
|
|
|
|
|
|
HFSO.HFS1 ~~_____________V_A_Ll_D_F_U_N_CT_I_ON__S_EL_E_C_T____________~~
|
|
~1
|
|
r- --r' !-- 7~ 1
|
|
|
|
|
|
|
|
-JL I
|
|
HREAD I
|
|
~1
|
|
I I1
|
|
~7~
|
|
I J\ ""_____
|
|
1 14 3--------i1r---~.1
|
|
1I I
|
|
HlD:~~~~·------~~~;.~----------4-----------~~~~~5 .~
|
|
1~14~-------------3-----------r1------~.~:
|
|
HCS -------~~.-------------4------------.~ ~
|
|
I ~13 '-1------16 - - - - - 4. .1 ~ 5 ~
|
|
...
|
|
12~1
|
|
______.....
|
|
I--~
|
|
1
|
|
'-
|
|
JC
|
|
------.l
|
|
.....--14------.
|
|
~I 1
|
|
I
|
|
HRDY
|
|
I1 T\ I I
|
|
j!f1 I
|
|
I
|
|
I t. 15 ~I ~6
|
|
~2~ I
|
|
HDO-HD15 ~ VALID DATA IN ~
|
|
|
|
|
|
|
|
|
|
A-38 TEXAS . .
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
host interface timing: read cycle with wait
|
|
|
|
|
|
|
|
|
|
HRDY
|
|
|
|
|
|
|
|
|
|
TEXAS
|
|
INSTRUMENTS
|
|
"'!1 A-39
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010 ADVANCE
|
|
GRAPHICS SYSTEM PROCESSOR INFORMATION
|
|
|
|
|
|
reset timing
|
|
The timing parameters for device reset are shown in the next two figures. The purpose of these figures
|
|
is to quantify the timing relationships among the RESET, HCS, and LCLK1 signals. RESET and HCS are
|
|
asynchronous inputs that are internally synchronized by latches internal to the TMS3401 O. The timing
|
|
relationships specified for these signals relative to LCLK 1 need be met only to guarantee recognition of
|
|
a transition of one of these signals at a particular clock edge. The explanation of the logical relationships
|
|
among signals will be found in the TMS34010 User's Guide.
|
|
Quarter clock time tQ which appears in the following table, is one quarter of a local output clock period,
|
|
or twice the input clock period, tc(lCK).
|
|
|
|
TMS34010-50
|
|
TMS34010-40
|
|
NO. PARAMETER TMS34010-60 UNIT
|
|
MIN MAX MIN MAX
|
|
Duration of HCS low to configure GSP to run
|
|
19 tw(CSL) 4tQ+55 4tQ+55 ns
|
|
in self-bootstrap mode
|
|
Setup time of HCS low to RESETt to configure
|
|
20 tsu(CSL-REH) 8tQ+55 8tQ+55 ns
|
|
the GSP to run in self-bootstrap mode
|
|
l> 21
|
|
Duration of RESET low to ensure that GSP
|
|
160tQ -40 160tQ-40 ns
|
|
|
|
~
|
|
tw(REL)
|
|
is properly reset
|
|
Delay from HCSi to RESET high, end of reset,
|
|
l> 22 td(CSH-REH)
|
|
to configure GSP to run in self-bootstrap mode
|
|
4tQ - 50 t 4tQ-50 t ns
|
|
:2 Setup time of RESET valid to LCLK 1! to
|
|
(") 23 tsu(REV-CK 1 L) 40+ 40+ ns
|
|
m guarantee recognition at a particular clock edge
|
|
Hold time of RESET valid after LCLK 1 low to
|
|
24 th(CK1 L-REV) 10+ 10+ ns
|
|
:2 guarantee recognition at a particular clock edge
|
|
." Setup time of HCS valid to LCLK 1! to
|
|
o 25
|
|
t su (CSV-CK1 L) guarantee recognition at a particular clock edge
|
|
40+ 40+ ns
|
|
|
|
:c
|
|
s: 26 th(CK1 L-CSV)
|
|
Hold time of HCS valid after LCLK 1 low to
|
|
guarantee recognition at a particular clock edge
|
|
10+ 10+ ns
|
|
|
|
|
|
|
|
~ NOTE: Advance information notices apply only to the TMS34010-60.
|
|
tparameter 22 is the maximum amount by which the RESET low-to-high transition can be delayed after the HCS low-to-high transition
|
|
o and still guarantee that the GSP is configured to run in self-bootstrap mode (HL T bit = 0) following the end of reset. HCS may be held
|
|
low for some time past the low-to-high RESET transition, and will be ignored by the GSP for 1 7 local clock periods following the clock
|
|
:2 edge at which the low-to-high RESET transition is detected. Following completion of the eight RAS-only cycles that automatically follow
|
|
reset, however, a low HCS level will be interpreted as a chip select.
|
|
+RESET and HCS are asynchronous inputs. The specified setup and hold times of these signals with respect to the high-to-Iow transition
|
|
of LCLK1 need be met only to guarantee that a transition of RESET or HCS is detected by the device at a particular clock edge.
|
|
|
|
|
|
reset: asynchronous timing relationships
|
|
|
|
|
|
19 ----I
|
|
|
|
|
|
~ I
|
|
VI - - - - 22 - - - - I
|
|
I
|
|
I
|
|
!
|
|
~ 'I • 20 -------i j"
|
|
RESET ~~--------------------_________.~;C
|
|
i• 2 1 - - - - - -..........!
|
|
|
|
|
|
|
|
|
|
A-40 TEXAS . .
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON, TEXAS 77001
|
|
ADVANCE TMS34010
|
|
INFORMATION GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
reset: synchronous timing relationships
|
|
|
|
|
|
|
|
LCLK1J
|
|
i\1I=------Jr
|
|
23;------t I
|
|
I 1~24
|
|
|
|
RESETt ------IX V~LlD X,..-----
|
|
25-T------i I
|
|
I ~26
|
|
---JX
|
|
HCSt _ _ _ _ X,..----- VALID
|
|
|
|
|
|
|
|
|
|
t RESET and HCS are asynchronous inputs. The specified setup and hold times of RESET or HCS with respect to the high-to-Iow LCLK 1
|
|
transition must be met only to guarantee that a RESET or HCS transition is detected by the device at a particular clock edge.
|
|
2:
|
|
local bus timing parameters o
|
|
The following six figures show the timing parameters for the signals of the local memory interface bus,
|
|
often simply referred to as the local bus. The purpose of these figures and the accompanying tables is ~
|
|
to quantify the timing relationships among the various signals. The explanation of the logical relationships ~
|
|
among signals will be found in the TMS34010 User's Guide (number SPVU001). a:
|
|
A number of parameter values are expressed in terms of quarter clock time tQ, which is one quarter of oLL
|
|
a local clock period, or twice the input clock period, tc(ICK).
|
|
Input clock INCLK is divided internally by 8 to produce output clocks LCLK 1 and LCLK2. Transitions of
|
|
the other local interface output signals are also generated as delays from INCLK transitions. The divide-
|
|
-2:w
|
|
down logic that converts INCLK to the internal clocks used to generate LCLK 1 and LCLK2 introduces U
|
|
significant propagation delays from the transitions of INCLK to the corresponding transitions of LCLK 1 2:
|
|
~
|
|
and LCLK2. While the frequency of INCLK is precisely eight times the frequency of LCLK 1 or LCLK2, no
|
|
timing relationship other than the frequency is specified between transitions of input clock INCLK and
|
|
transitions of the output clocks LCLK 1 and LCLK2. C
|
|
TMS34010·40 TMS34010·50 TMS34010-60
|
|
cd:
|
|
NO. PARAMETER UNIT
|
|
MIN MAX MIN MAX MIN MAX
|
|
27 tc(lCK) Period of INCLK 25 62.5 20 62.5 16.5 62.5 ns
|
|
2a tw(lCKH) Pulse duration of INCLK high a:l: a:l: 6.5:1: ns
|
|
29 tw(lCKL) Pulse duration of INCLK low a:l: a:l: 6.5:1: ns
|
|
30 tt(lCK) Transition time (rise and fall) of INCLK 2t at 2t at 2t at ns
|
|
|
|
NOTE: Advance information notices apply only to the TMS34010-60.
|
|
tThese values are based on computer simulation and are not tested.
|
|
:l:This pulse width is tested at 1.4 volts.
|
|
|
|
|
|
local bus timing: input clock
|
|
|
|
I... 27 _,
|
|
|
|
1-- ---1 ~29--+1 I
|
|
28
|
|
r- 30~
|
|
'i___--Jlyr---
|
|
30-t : -
|
|
|
|
INCLK J 'X Y
|
|
TEXAS -I/} A-41
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON, TEXAS 77001
|
|
TMS34010 ADVANCE
|
|
GRAPHICS SYSTEM PROCESSOR INFORMATION
|
|
|
|
|
|
local bus timing parameters (continued)
|
|
|
|
Quarter clock time tQ, which appears in the following table, is one quarter of a local output clock period,
|
|
or 2tc(lCK).
|
|
|
|
TMS34010-50
|
|
TMS34010-40
|
|
NO. PARAMETER TMS34010-60 UNIT
|
|
MIN MAX MIN MAX
|
|
31 tc(CK) Period of local clocks LCLK 1 and LCLK2 8t c (lCK) t 8t c (lCK) t ns
|
|
32 tw(CKH) Pulse duration of local clock high 2tO-10 2tO-10 ns
|
|
33 tw(CKL) Pulse duration of local clock low 2tO-10 2tO-10 ns
|
|
34 thICK 1 H-CK2L) Hold time of LCLK2 low after LCLK 1 high to-10 to-10 ns
|
|
35 thICK 1 L-CK2H) Hold time of LCLK2 high after LCLK 1 low to-10 to-10 ns
|
|
36 th(CK2H-CK 1 H) Hold time of LCLK 1 high after LCLK2 high to-10 to-10 ns
|
|
37 th(CK2L-CK 1 L) Hold time of LCLK 1 low after LCLK2 low to-lO to-10 ns
|
|
38 thICK 1 H-CK2H) Hold time of LCLK2 high after LCLK 1 high 3tO-10 3tO-10 ns
|
|
39 thICK 1 L-CK2L) Hold time of LCLK2 low after LCLK 1 low 3tO-10 3tO-10 ns
|
|
|
|
»
|
|
c
|
|
40
|
|
41
|
|
th(CK2H-CK 1L) Hold time of LCLK 1 low after LCLK2 high
|
|
th(CK2L-CK 1 H) Hold time of LCLK 1 high after LCLK2 low
|
|
3tO-10
|
|
3tO-10
|
|
3tO-10
|
|
3tO-10
|
|
ns
|
|
ns
|
|
42
|
|
|
|
~
|
|
tt Transition time (rise and fall) of LCLK1 or LCLK2 10 10 ns
|
|
43 t su (RAV-CK2H) Setup time of row address valid to LCLK2i 4tO-25 4tO-15 ns
|
|
:2 44 t su (CAV-CK2H) Setup time of column address valid to LCLK2i 2tO-25 2tO-15 ns
|
|
(") 45 t su(LRV-CK2H) Setup time of LRDY valid to LCLK2i 30+ 30+ ns
|
|
m
|
|
:-2
|
|
46 th(CK2H-LRV) Hold time of LRDY valid after LCLK2 high 0+ 0+ ns
|
|
47 tsu(RAV-CK 1 L) Setup time of row address valid to LCLK H to-25 to-15 ns
|
|
48 tsu(CAV-CK 1 H) Setup time of column address valid to LCLK 1 i to-25 to-15 ns
|
|
."
|
|
o:l:I 49 tsu(ALH-CK 1 L) Setup time of LAL high to LCLK 1 ! 2tO-20 2tO-10 ns
|
|
|
|
NOTE: Advance information notices apply only to the TMS34010-60.
|
|
3: tThis is a functional minimum and is not tested. This parameter can also be specified as 4tO'
|
|
+LRDY is a synchronous input sampled during the low-to-high transition of LCLK2. The specified setup and hold times must be met for
|
|
|
|
~ the device to operate properly.
|
|
|
|
|
|
o
|
|
:2
|
|
|
|
|
|
|
|
|
|
A-42 TEXAS ~
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON, TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
local bus timing: output clock and LRDY signal
|
|
|
|
|
|
|
|
|
|
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1
|
|
|
|
|
|
|
|
|
|
I_ 31 -I
|
|
L.-- 32 ----,.!
|
|
I I 14--33-----.1 I
|
|
I 42 ...... 14- 42 -..;14-
|
|
I II I II 11r-----
|
|
LCLK1 Jf I II
|
|
N ¥f
|
|
II
|
|
N II~-----'!i
|
|
j[
|
|
I I I I_ I I 41 -I I I
|
|
I I I I I I I I
|
|
I I \..-35-.! I I I- 38 I -I I
|
|
I I I I I I_ I 40 I _I
|
|
I 14- 36 ~ I I I I I I
|
|
~34--i I
|
|
I .
|
|
I
|
|
I
|
|
I
|
|
I I
|
|
37
|
|
i 1I I
|
|
I
|
|
I- i 39 -I
|
|
I 14--33-----,
|
|
LCLK2
|
|
----..;,
|
|
~49----t
|
|
Y I
|
|
I X iI "
|
|
*48~
|
|
II
|
|
I j.--32---/1
|
|
~
|
|
II ~,I
|
|
II
|
|
I
|
|
I
|
|
r--
|
|
47 ....j
|
|
I_
|
|
I
|
|
43 I
|
|
III
|
|
_ II I I
|
|
42 ---t \.-
|
|
I I
|
|
42 ---t I~
|
|
I I I I" 31 _I
|
|
I I j 4 t - - 44 -------.I I
|
|
I I I I I
|
|
LADO-
|
|
LAD15 ! [ ROW ~""'--_~llt-!_____---JX'-___..J)
|
|
I
|
|
' 1--45----1 :-46--j
|
|
I I
|
|
|
|
|
|
LRDV
|
|
I~
|
|
I
|
|
)¢ VALID X"" ___________
|
|
!
|
|
\'--_ _ _--..J/
|
|
|
|
|
|
|
|
|
|
TEXAS • A-43
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010 ADVANCE
|
|
GRAPHICS SYSTEM PROCESSOR INFORMATION
|
|
|
|
|
|
TMS340 10-40 TMS34010-50 TMS3401 0-60
|
|
NO. PARAMETER UNIT
|
|
MIN MAX MIN MAX MIN MAX
|
|
50 td(RL-RL) Delay from ~.!. to ~.!. 8tO t 8tot 8tO t ns
|
|
Setup time of row address
|
|
51 tsu(RAV-RL) to-20 to-15 to-15 ns
|
|
valid to RAS.!.
|
|
Hold time of row address valid
|
|
52 th(RL-RAV) to-20 to-10 to-5 ns
|
|
after RAS low
|
|
53 tw(RH) Pulse duration, RAS high 3tO-20 3tO-10 3tO-5 ns
|
|
54 twIRL) Pulse duration, RAS low 5tO-20 5tO-10 5tO-10 ns
|
|
Setup time of column address
|
|
55 tsu(CAV-ALL) valid to LAU 0. 5tO-20 0. 5tO-10 0. 5tO-10 ns
|
|
|
|
Hold time of column address
|
|
56 th(ALL-CAV) 0. 5tO-15 0. 5tO-10 0. 5tO-10 ns
|
|
valid after LAL low
|
|
Hold time of RAS high
|
|
57 th(ALH-RH) 2tO-20 2tO-10 2tO-10 ns
|
|
after LAL high
|
|
Hold time of LAL low
|
|
58 th(RL-ALL) 6tO-20 6tO-10 6tO-1O ns
|
|
after~low
|
|
:t>
|
|
c 59 th(CL-RL)
|
|
Hold time of RAS low
|
|
afterCM low
|
|
3tO-20 3tO-10 3tO -10 ns
|
|
|
|
|
|
~ 60
|
|
Hold time of W high after
|
|
after RAS high, shift register 2tO-20 2tO-10 2tO-10 ns
|
|
:2 th(RH-WH)
|
|
|
|
n transfer follows read
|
|
|
|
m Setup time of column address
|
|
|
|
|
|
:-2
|
|
61 tsu(CAV-CL) to-20 to-10 to-10 ns
|
|
valid to CAS.!.
|
|
Hold time of LAL low
|
|
62 th(CL-ALL) 4tO-20 4tO-10 4tO-10 ns
|
|
"TI after CAS low
|
|
o::D 63 th(CH-ALL)
|
|
Hold time of LAL low
|
|
after CM high, write cycle
|
|
0. 5tO-15 0. 5tO-10 0. 5tO-10 ns
|
|
|
|
s: 64 th(ALL-CH)
|
|
Hold time of CAS high
|
|
0. 5tO-15 0. 5tO-10 0. 5tO-10 ns
|
|
|
|
~
|
|
after LAL low
|
|
Hold time of RAS high
|
|
65 2. 5tO-15 2. 5tO-10 2. 5tO-10 ns
|
|
o th(CH-RH)
|
|
after CM high
|
|
Pulse duration, CAS low
|
|
:2 66 tw(CL) 3. 5tO-25 3.5tO-10 3. 5tO-10 ns
|
|
Hold time of CAS high
|
|
67 th(RL-CH) 2tO-20 2tO-10 2tO-10 ns
|
|
after RAS low
|
|
Delay time from RAS low
|
|
68 td(RL-CL) 2tO+20 2tO+10 2tO+ 10 ns
|
|
to CAS low
|
|
Hold time of W high after
|
|
69 th(CH-WH) CAS high, shift register 1. 5tO-15 1. 5tO-10 1. 5tO-10 ns
|
|
transfer follows read
|
|
Hold time of CAS low
|
|
70 th(RL-CL) 5. 5tO-25 5. 5tO-10 5. 5tO-10 ns
|
|
after RAS low
|
|
71 tw(CH) Pulse duration, CAS high 4. 5tO-15 4. 5tO-10 4. 5tO-10 ns
|
|
Hold time of LAL low after
|
|
72 th(WH-ALL) 0. 5tO-15 0. 5tO-10 0. 5tO-10 ns
|
|
IN high, write cycle
|
|
Setup time of W high to CAS.!.,
|
|
73 tsu(WH-CL) 4. 5tO-15 4. 5tO-10 4.5tO -10 ns
|
|
end of write
|
|
|
|
NOTE: Advance information notices apply only to the TMS34010-60.
|
|
tThis is a functional minimum and is not tested.
|
|
|
|
|
|
|
|
|
|
A-44 TEXAS •
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
local bus timing: the RAS, CAS, and LAL outputs
|
|
|
|
|
|
|
|
|
|
- -----f
|
|
N
|
|
(\') III
|
|
|
|
|
|
|
|
|
|
----------]" ;::
|
|
o
|
|
|
|
|
|
N
|
|
o
|
|
~ r ~----r--r
|
|
- __ t
|
|
~ I
|
|
r--
|
|
|
|
|
|
T--:~ --T
|
|
|
|
-- ------ -- 1 f 1-- --- 1- -
|
|
(\')
|
|
o
|
|
~ -- ----- - -[ ~ ~
|
|
|
|
N
|
|
o
|
|
o
|
|
'<t r--
|
|
III
|
|
|
|
|
|
|
|
|
|
'<t
|
|
o
|
|
--- -f r-- ~
|
|
|
|
(\')
|
|
o
|
|
3:
|
|
oa:
|
|
__ __ ____ __~___ ___I
|
|
oc.- 13:
|
|
I~ I~
|
|
III
|
|
|
|
etC
|
|
..1«
|
|
15
|
|
..I
|
|
|
|
|
|
|
|
|
|
TEXAS • A-45
|
|
INSTRUMENTS
|
|
POST OFFice BOX 1443 • HOUSTON. TeXAS 77001
|
|
TMS34010 ADVANCE
|
|
GRAPHICS SYSTEM PROCESSOR INFORMATION
|
|
|
|
|
|
local bus timing parameters (continued)
|
|
Quarter clock time tQ, which appears in the following table, is one quarter of a local output clock period,
|
|
or 2tc(ICK).
|
|
|
|
TMS34010·50
|
|
TMS34010·40
|
|
NO. PARAMETER TMS34010·60 UNIT
|
|
MIN MAX MIN MAX
|
|
Setup time of W low to RAS!. shift register
|
|
74 tsu(WL·RL) tQ-20 tQ-10 ns
|
|
transfer cycle
|
|
Hold time of W low after RAS low. shift
|
|
75 th(RL·WL) tQ-20 tQ-10 ns
|
|
register transfer cycle
|
|
Setup time of TR/QE low to RAS!. shift
|
|
76 tsu(TRL·RL) tQ-20 tQ-10 ns
|
|
register transfer cycle
|
|
Hold time of TR/QE low after RAS low. shift
|
|
77 th(RL·TRL) 4tQ-20 4tQ-10 ns
|
|
register transfer cycle
|
|
|
|
|
|
» 78 th(CL·TRL)
|
|
Hold time of TR/OE low after CAS low. shift
|
|
register transfer cycle
|
|
2tQ-20 2tQ-10 ns
|
|
|
|
|
|
~ 79
|
|
Setup time of TR/OE high to RASi. shift
|
|
tQ-1O ns
|
|
»:2 tsu(TRH·RH)
|
|
register transfer cycle
|
|
Setup time of TR/QE high to CASi. shift
|
|
tQ-20
|
|
|
|
|
|
80 tsu(TRH·CH) 1.5tQ-25 1.5tQ-10 ns
|
|
n register transfer cycle
|
|
|
|
|
|
|
|
-m
|
|
:2
|
|
NOTES: 1. Advance information notices apply only to the TMS34010·60.
|
|
2. Parameters 81 and 82 intentionally omitted.
|
|
|
|
. " I local bus timing parameters: shift register transfer cycle
|
|
o
|
|
::Jl 01 I Q2 03 04 01 Q2 03 04 01 I Q2
|
|
3:
|
|
l>.
|
|
::! LADO·
|
|
LAD15
|
|
________-J)(~____ R_O_W
|
|
_____ ~~_______________________________J)( ROW
|
|
|
|
|
|
o
|
|
:2
|
|
1\
|
|
I I~--------------------------------~
|
|
I I
|
|
j \
|
|
II
|
|
|
|
I:
|
|
II
|
|
II
|
|
II
|
|
\----------+-----/
|
|
II
|
|
II
|
|
|
|
::
|
|
1 I. .1 75
|
|
~ 1
|
|
~1
|
|
74 I. ..I 1 1 1 1
|
|
1 II 1 1 1
|
|
|
|
|
|
'i1!;.1 1 1
|
|
----jlf-I!---yll
|
|
I
|
|
I1 :
|
|
1
|
|
1
|
|
14--78~ ~80----ll:ol
|
|
79 I..
|
|
1
|
|
_I! 1
|
|
1 \-----
|
|
TR/OE
|
|
_________7~6~-rl..
|
|
----~
|
|
i
|
|
.. 1 1~.~----------77 "I 1
|
|
Y--------------------\----------
|
|
|
|
A-46 TEXAS . .
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
ADVANCE TMS34010
|
|
INFORMATION GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
local bus timing parameters (continued)
|
|
Quarter clock time tQ, which appears in the following table, is one quarter of a local output clock period,
|
|
or 2tc(lCK).
|
|
TMS34010-50
|
|
TMS34010-40
|
|
NO. PARAMETER TMS34010-60 UNIT
|
|
MIN MAX MIN MAX
|
|
Access time from RAS low to data
|
|
83 ta(RL-DV) 5. 5tO-40 t 5. 5tO-25 t ns
|
|
in valid. read cycle
|
|
84 tsu(CH-ALH) Setup time of CAS high to LAL t 0. 5tO-15 0. 5tO-10 ns
|
|
85 tsu(ENH-ALH) Setup time of DEN high to LAL t 0. 5tO-15 0. 5tO-10 ns
|
|
Access time from CAS low to data
|
|
86 ta(CL-DV) 3. 5tO-40 t 3. 5tO-25 t ns
|
|
in valid. read cycle
|
|
Hold time of data in valid after CASt.
|
|
87 th(CH-DV) 0 0 ns
|
|
read cycle
|
|
Hold time of row address high impedance after
|
|
88 th(CH-RAZ) 1.5tO -10:1: 1. 5tO-l0* ns
|
|
~ high. end of read cycle
|
|
2:
|
|
89 th(CL-OEL)
|
|
Hold time of TR/OE low after CAS low.
|
|
read cycle
|
|
3. 5tO-25 3. 5tO-10 ns o
|
|
90 tsu(CAZ-OEL)
|
|
Setup time of column address high impedance
|
|
to TR/OE!. read cycle
|
|
to -10* to -10* ns ~
|
|
Hold time of data in valid after TR/OEt. :!:
|
|
91 th(OEH-DV)
|
|
read cycle
|
|
0 0 ns a:
|
|
92 td(CL-OEL)
|
|
Delay time from CAS! to TR/OE low.
|
|
to+20 to+10 ns
|
|
oLL
|
|
read cycle
|
|
|
|
93 ta(OEL-DV)
|
|
Access time from TR/OE low to data
|
|
in valid. read cycle
|
|
2. 5tO -40t 2. 5tO-25 t ns -2:w
|
|
94 th(OEH-RAZ)
|
|
Hold time of row address high impedance
|
|
1.5tO-10:l: 1. 5tO-l0:l: ns U
|
|
after TR/OE high. end of read cycle
|
|
2:
|
|
~
|
|
95 tw(OEL) Pulse duration. TR/OE low. read cycle 2.5tO - 25 2. 5tO-l0 ns
|
|
Delay time from CAS low
|
|
96 td(CL-ENL) to+20 to+l0 ns
|
|
to DEN low. read cycle C
|
|
97 th(ENH-DV)
|
|
Hold time of data in valid after DEN I.
|
|
0 0 ns
|
|
<C
|
|
read cycle
|
|
Setup time of column address high impedance
|
|
98 tsu(CAZ-ENL) to -10:1: to -10* ns
|
|
to DEN I. read cycle
|
|
Hold time of next row address high impedance
|
|
99 th(ENH-RAZ) 1. 5tO-10:l: 1. 5tO -10:1: ns
|
|
after DEN high. end of read cycle
|
|
Access time from DEN low to data in valid.
|
|
100 ta(ENL-DV) 2. 5tO -40t 2. 5tO-25 t ns
|
|
read cycle
|
|
Hold time of DDOUT high after DEN high.
|
|
101 th(ENH-DDH) 3tO-20 3tO-10 ns
|
|
read follows write cycle
|
|
Setup time of DDOUT low to DEN I.
|
|
102 tsu(DDL-ENL) to-20 to-l0 ns
|
|
read cycle
|
|
|
|
NOTE: Advance information notices apply only to the TMS34010-60.
|
|
t 4 t O is added to these values for each wait state inserted.
|
|
*These values are derived from characterization and are not tested.
|
|
|
|
|
|
|
|
|
|
TEXAS • A-47
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
local bus timing: read cycle
|
|
|
|
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 '11 Q2
|
|
|
|
|
|
|
|
LADO-
|
|
LAD15
|
|
----C('-._ _ROW
|
|
___
|
|
X ...J
|
|
••
|
|
COL )
|
|
,
|
|
t~~-----~I
|
|
DATA ~
|
|
1
|
|
IN
|
|
|
|
r i , 1
|
|
I I r 1
|
|
r 1 r 1
|
|
1 1 1 I
|
|
~1.~----------83, _I I 1
|
|
\~
|
|
\
|
|
l
|
|
I
|
|
l
|
|
,
|
|
/
|
|
.
|
|
[l
|
|
I 1
|
|
1 1 r I
|
|
r 1 I 1
|
|
I
|
|
I
|
|
1
|
|
1 jr--1I 1
|
|
f---;I---
|
|
I
|
|
\ 1 I I I
|
|
-'---+I---+--~1 , I
|
|
I I 87 I. 1 .1 I
|
|
|
|
|
|
rf 1
|
|
'ii 86 a:!: 84y: ~! i
|
|
,I 1 1
|
|
1 ,. 1 89 I .', 1 1 1
|
|
1 1 I 1 1 I
|
|
I l~!4-1 90 1 I j.-!--88H
|
|
I I I 1 I I
|
|
-----..! ~ ~1 -.I
|
|
14- 92 -+f
|
|
I i I r+-- 93 I I !.--l.- 94 H I
|
|
|
|
|
|
Y' l I
|
|
I I' I. 951 _II i-II I .
|
|
I III 1 , I
|
|
--------------------------~'~I"\LI I 1
|
|
TR/QE 1 , II} I
|
|
I 1 1 _. 1 , I
|
|
I 1 1 I I 1
|
|
l I t---100~ 85---t ~ l I
|
|
96~ J4-99H
|
|
98~ K- i4- 97--l
|
|
-------..,r------------------------.I 1 I ;,-1_ _ _ _ _ _ __
|
|
|
|
IJEN -----J1l ,.......----1 01 ------i.~1
|
|
N
|
|
I
|
|
1: ,
|
|
I ,.. -! 102 1.-103-.,j
|
|
DDOUT----------------------~"\L~l______________________________~~
|
|
|
|
|
|
|
|
|
|
A-48 TEXAS •
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
ADVANCE TMS34010
|
|
INFORMATION GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
local bus timing parameters (continued)
|
|
Quarter clock time tQ, which appears in the following table, is one quarter of a local output clock period,
|
|
or 2tc(ICK).
|
|
TMS34010-50
|
|
TMS34010-40
|
|
NO. PARAMETER TMS34010-60 UNIT
|
|
MIN MAX MIN MAX
|
|
Hold time of DDOUT low after DEN high,
|
|
103 th(ENH-DDL) 1.5tQ-15 1.5tQ-l0 ns
|
|
read cycle
|
|
104 tsu(DV-WL) Setup time of data out valid to W I, write cycle tQ-20 tQ-15 ns
|
|
Hold time of data out valid after W low,
|
|
105 th(WL-DV) 4tQ-20 4tQ-l0 ns
|
|
write cycle
|
|
106 tsu(WL-RH) Setup time of W low to RAS I, write cycle 2tQ-20 2tQ-l0 ns
|
|
Hold time of data out valid after RAS low,
|
|
107 th(RL-DV) 7tQ-20 7tQ-l0 ns
|
|
write cycle
|
|
Hold time of data out valid after CAS high, 2
|
|
108 th(CH-DV)
|
|
write cycle
|
|
1.5tQ -15 1.5tQ-l0 ns
|
|
o
|
|
~
|
|
109 tsu(WL-CH) Setup time of W low to CASI, write cycle 2.5tQ-25 2.5tQ-l0 ns
|
|
Hold time of data out valid after CAS low,
|
|
110 5tQ-20 5tQ-l0 ns
|
|
~
|
|
th(CL-DV)
|
|
write cycle
|
|
Hold time of data out valid after W high, a:
|
|
111
|
|
|
|
112
|
|
th(WH-DV)
|
|
write cycle
|
|
Pulse duration, W low
|
|
1.5tQ -15
|
|
|
|
2.5tQ-25
|
|
1.5tQ-l0
|
|
|
|
2.5tQ-l0
|
|
ns
|
|
|
|
ns
|
|
oLL
|
|
tw(WL)
|
|
113
|
|
|
|
114
|
|
th(CL-WL)
|
|
|
|
tsu(CAV-WH)
|
|
Hold time of W low after CAS low, write cycle
|
|
Setup time of column address valid to WI,
|
|
write cycle
|
|
3.5tQ-25
|
|
|
|
4.5tQ-30
|
|
3.5tQ-l0
|
|
|
|
4.5tQ-15
|
|
ns
|
|
|
|
ns
|
|
-w
|
|
2
|
|
|
|
(.)
|
|
115 Hold time of W low after RAS low, write cycle 5.5tQ - 25 5.5tQ-l0 ns
|
|
th(RL-WL) 2
|
|
~
|
|
Setup time of row address valid to WI,
|
|
116 tsu(RAV-WH) 6.5tQ-35 6.5tQ-15 ns
|
|
write cycle
|
|
117 tsu(ENL-WH) Setup time of DEN low to W!. write cycle tQ-20 tQ-lO ns C
|
|
118 th(WH-ENL) Hold time of DEN low after W high, write cycle 1.5tQ -15 1.5tQ -10 ns «
|
|
Setup time of DDOUT high to DENI,
|
|
119 tsu(DDH-ENL) 3tQ-20 3tQ-l0 ns
|
|
write follows read
|
|
|
|
NOTE: Advance information notices apply only to the TMS3401 0-60.
|
|
|
|
|
|
|
|
|
|
TEXAS ~ A-49
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
local bus timing: write cycle·
|
|
|
|
|
|
Q1
|
|
I Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1
|
|
I
|
|
LADO-
|
|
LAD15 )[
|
|
I
|
|
ROW >G0[
|
|
I
|
|
DATA
|
|
l<
|
|
I
|
|
I I i j- 105 ..I
|
|
I I I I
|
|
I I I 1.--106-----.1 I
|
|
I I \ I I
|
|
II 104~\
|
|
RAS
|
|
I
|
|
I
|
|
\ I
|
|
I-
|
|
\
|
|
\
|
|
\
|
|
\
|
|
1\
|
|
\ I
|
|
\ \
|
|
Y I
|
|
I
|
|
I
|
|
I
|
|
I I \ \ 107 -\
|
|
I \ \
|
|
I
|
|
I I I 1--------109 _\ 14- 108 ---1I
|
|
I II \ \ I I
|
|
CAS I
|
|
I
|
|
I I
|
|
I
|
|
\ I
|
|
\ \
|
|
\ \
|
|
1\
|
|
J!" I
|
|
I
|
|
I I- I I 110 _I
|
|
I I \ I
|
|
I I 1\ t---111 ---t
|
|
I I 112 -------.I I
|
|
It-
|
|
I
|
|
II
|
|
IN
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
r I N J I I
|
|
I
|
|
I I
|
|
r
|
|
\
|
|
\ !-
|
|
I
|
|
r 113 ------f
|
|
~I
|
|
I
|
|
I
|
|
I r r- I
|
|
I
|
|
114
|
|
\ I
|
|
I I- 115
|
|
I
|
|
----t I
|
|
I- 116
|
|
14117../
|
|
\
|
|
----fl14- 118 ---.I
|
|
\ I
|
|
DEN
|
|
IX J!
|
|
I ..
|
|
I
|
|
119 -,r
|
|
DDOUT
|
|
!
|
|
|
|
|
|
|
|
|
|
A-50 TEXAS . .
|
|
INSTRUMENTS
|
|
POST OFFice BOX 1443 • HOUSTON. TeXAS 77001
|
|
ADVANCE TMS34010
|
|
INFORMATION GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
local bus timing parameters (continued)
|
|
Quarter clock time tQ, which appears in the following table, is one quarter of a local output clock period,
|
|
or 2tc(ICK).
|
|
TMS34010-50
|
|
TMS34010-40
|
|
NO. PARAMETER TMS34010-60 UNIT
|
|
MIN MAX MIN MAX
|
|
120 t su (HRV-CK2H) Setup time of HOLD valid to LCLK2t 50 t 40t ns
|
|
121 th(CK2H-HRV) Hold time of HOLD valid after LCLK2 high ot ot ns
|
|
Setup time of HLDA/EMUA output valid
|
|
122 t su (HKV-CK2L) before LCLK21 to-20 to-10 ns
|
|
|
|
123 th(CK2L-HKL) Hold time of HLDA/EMUA low, after LCLK2 low to-15 to-15 ns
|
|
Delay from LCLK2 high to LAD pins high
|
|
124 td(CK2H-DZ) 30 t 30 t ns
|
|
impedance, bus release
|
|
125 tsu(RH-CK 1 H) Setup time of RAS high to LCLK 1 t to-20 to-10 ns
|
|
|
|
126 thICK 1H-RH)
|
|
Hold time of RAS driven high after LCLK 1
|
|
to-lOt to-lOt ns z
|
|
high, bus release
|
|
Delay from LCLK2 high to RAS high impedance,
|
|
o
|
|
~
|
|
127 td(CK2H-RZ) 30 t 30 t ns
|
|
bus release
|
|
128 t su (ALH-CK2H) Setup time of LAL high to LCLK2t to-20 to-10 ns
|
|
Hold time of LAL driven high after LCLK 1 I, :?i
|
|
129 thICK 1L-ALH)
|
|
bus release
|
|
-5 t -5 t ns a:
|
|
130 td(CK 1L-ALZ)
|
|
Delay from LCLK1 low to LAL high impedance,
|
|
30 t 30 t ns
|
|
oLL
|
|
bus release
|
|
|
|
131 tsu(CH-CK 1 H)
|
|
Setup time of CAS, W, and TR/OE high
|
|
to LCLK1t
|
|
0. 5tO-15 0.5tO -10 ns -w
|
|
Z
|
|
|
|
132 thICK 1 H-CH)
|
|
Hold time of CAS, W, and TR/OE
|
|
to-lOt to -lOt ns U
|
|
high after LCLK 1 high, bus release Z
|
|
|
|
c~
|
|
Delay from LCLK2 high to CAS, W, and TR/OE
|
|
133 td(CK2H-CZ) 30 t 30 t ns
|
|
high impedance, bus release
|
|
134 ns
|
|
|
|
135
|
|
tsu(ENH-CK2H) Setup time of DEN or DDOUT high to LCLK11
|
|
|
|
th(CK2H-ENH)
|
|
Hold time of DEN and DDOUT high after
|
|
to-20
|
|
|
|
to-lOt
|
|
to-lO
|
|
|
|
to-10 t ns
|
|
«
|
|
LCLK 1 I, bus release
|
|
Delay from LCLK 1 low to DEN and DDOUT
|
|
136 td(CK 1L-ENZ) 30 t 30 t ns
|
|
high impedance, bus release
|
|
Hold time of LAD bus high impedance
|
|
137 th(CK2H-DZ) -5 t -5 t ns
|
|
after LCLK2 t
|
|
Hold time of RAS, CAS, W, LAL, and TR/OE
|
|
138 th(CK2H-RZ) -5 t -5 t ns
|
|
high impedance after LCLK 11
|
|
Delay from LCLK1 high to RAS, CAS, W, LAL,
|
|
139 td(CK 1 H-RH) 30 30 ns
|
|
and TR/OE driven high, resume bus control
|
|
Hold time of RAS high after LCLK2 high,
|
|
140 th(CK2H-RH) to-15 to-lO ns
|
|
resumes bus control
|
|
Hold time of CAS, W, and TR/OE high
|
|
141 th(CK2H-CH) -5 t -5 t ns
|
|
after LCLK2 high, resume bus control
|
|
|
|
NOTE: Advance information notices apply only to the TMS3401 0-60.
|
|
tHOLD is a synchronous input sampled during the low-to-high transition of LCLK2. The specified setup and hold times must be met for
|
|
the device to operation properly.
|
|
tThese values are derived from characterization and are not tested.
|
|
|
|
|
|
|
|
|
|
TEXAS • A-51
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
GSP releases control of local bus
|
|
|
|
|
|
|
|
04 01 04
|
|
I 01 02 03 04 02 03
|
|
|
|
|
|
LCLK1
|
|
_----J
|
|
/
|
|
\------"IIA I I
|
|
I I
|
|
~--
|
|
I I
|
|
LCLK2 \
|
|
'------.......:II!:I I
|
|
{ ~II
|
|
I\: I J
|
|
If,
|
|
I ~121 II II II
|
|
|
|
|
|
\1.
|
|
14-120-.1 I
|
|
y I I
|
|
j j \!!I I II
|
|
!! /
|
|
II
|
|
14-122~ I I I I I I I
|
|
I 123....J.......f I I I I I I
|
|
I I I I ! I I I
|
|
HLDA/EMUA '\. YI I II
|
|
124!
|
|
II
|
|
~ -;
|
|
III
|
|
I i\ '-----
|
|
I I I I , I
|
|
I , I I 'I
|
|
LADO-LAD15
|
|
I!I'
|
|
!-_---t....1 r---1~6~1
|
|
125 ....
|
|
i H~1271!!I I HI-Z--
|
|
|
|
|
|
|
|
|
|
I I I I aJ I ,
|
|
RAS
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _.....J/Jt- II II II II '"1,L...L...-..-i-129
|
|
I HI-Z--
|
|
|
|
128 II... .../ I j-j-I
|
|
I 'I I
|
|
I f-.iH-
|
|
I
|
|
I 1I 130
|
|
|
|
|
|
|
|
-----------------~I \ - 1 3 2 H
|
|
!If
|
|
I I'
|
|
133-+--,
|
|
I
|
|
I I ~HI-Z-
|
|
III
|
|
131~ I I, I t--*136
|
|
, II I I
|
|
CAS. W
|
|
TR/OE _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _--',
|
|
7 I
|
|
'1d I
|
|
~13J---.j
|
|
I HI-Z--
|
|
I
|
|
, II
|
|
134~ II
|
|
, 'I
|
|
DEN. DDOUT _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ~7 "L- HI-Z -
|
|
|
|
|
|
|
|
|
|
A-52 TEXAS . .
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON, TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
GSP resumes control of local bus
|
|
|
|
|
|
|
|
|
|
Q4 I Q1 I Q2 I Q1 I Q2 I Q3 I Q4 I
|
|
LCLK1 ~
|
|
\.--.- - - - - '
|
|
I \---
|
|
LCLK2 /
|
|
|
|
|
|
|
|
|
|
\'----
|
|
HLDA/EMUA \ _____...... I_____-J/ ~!
|
|
I' II -II, I' '-137
|
|
|
|
LADO-LAD15 - - - - - - - H , - z - - - - - - - - - i - l - + - ! - - t l - + I - { \ , - - - - - - -
|
|
138--.1 114-', I ~-----
|
|
~140
|
|
, ,I ,
|
|
I"
|
|
139--t,'--' , .
|
|
'
|
|
|
|
RAS - - - - - - - H I - Z - - - - - - - - - + ! ---T'1l¥ 'I '\
|
|
I, , 1:42 -.:
|
|
-+I
|
|
I""'" '-----
|
|
114-143
|
|
" II,
|
|
DEN, DDOUT -
|
|
-------HI-Z---------+-! -+I_--"I.J~------
|
|
I ,
|
|
138--1 Ire- I ,
|
|
|
|
|
|
TR/QE
|
|
139--"l--J
|
|
',';;
|
|
CAS. Vii - - - - - - - H I - Z - - - - - - - - - + . . , . . . . . . . , . , , ! 1 '
|
|
138 --! ,~
|
|
\ '-_____
|
|
14-141
|
|
|
|
|
|
|
|
|
|
139-1,,-
|
|
|
|
|
|
LAL - - - - - - - H I - Z ---------~~~-----------
|
|
"r
|
|
|
|
|
|
|
|
|
|
TEXAS
|
|
INSTRUMENTS
|
|
'1!1 A-53
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010 ADVANCE
|
|
GRAPHICS SYSTEM PROCESSOR INFORMATION
|
|
|
|
|
|
local bus timing parameters (continued)
|
|
Quarter clock time tQ, which appears in the following table, is one quarter of a local output clock cycle,
|
|
or 2tc(ICK).
|
|
|
|
TMS34010-50
|
|
TMS34010-40
|
|
NO. PARAMETER TMS34010-60 UNIT
|
|
MIN MAX MIN MAX
|
|
Hold time of DEN, DDOUT high impedance
|
|
142 th(CK2H-ENZ) -5 t -5 t ns
|
|
after LCLK2 high, resume bus control
|
|
Delay from LCLK2 high to DEN, and DDOUT
|
|
143 td(CK2H-ENH) 30 30 ns
|
|
driven high, resume bus control
|
|
Setup time of row address valid to RAS I,
|
|
144 tsu(RAV-RL) 2tQ-25 2tQ-15 ns
|
|
CAS-before-RAS refresh
|
|
Hold time of row address valid after RAS low,
|
|
145 th(RL-RAV) tQ-20 tQ-10 ns
|
|
CAS-before-RAS refresh
|
|
Pulse duration, RAS high, start of
|
|
» 146 tw(RH)
|
|
CAS-before-RAS refresh
|
|
4tQ-20 4tQ-10 ns
|
|
|
|
|
|
~ 147 twIRL)
|
|
Pulse duration, RAS low, CAS-before-RAS
|
|
4tQ-20 4tQ-10 ns
|
|
|
|
»
|
|
z 148 tsu(RAV-ALL)
|
|
refresh
|
|
Setup time of row address valid to LALI,
|
|
CAS-before-RAS refresh
|
|
tQ-20 tQ-15 ns
|
|
(') Hold time of row address valid after LAL low,
|
|
m 149 th(ALL-RAV)
|
|
CAS-before-RAS refresh
|
|
2tQ-20 2tQ-10 ns
|
|
|
|
Hold time of RAS high after LAL low,
|
|
Z 150 th(ALL-RH)
|
|
CAS-before-RAS refresh
|
|
tQ-20 tQ-10 ns
|
|
"TI
|
|
o 151 tsu(RH-ALH)
|
|
Setup time of RAS high to LALf,
|
|
tQ-20 tQ-10 ns
|
|
JJ CAS-before-RAS refresh
|
|
|
|
S 152 tsu(ALH-CL)
|
|
Setup time of LAL high to CASI,
|
|
CAS-before-RAS refresh
|
|
tQ-20 tQ-10 ns
|
|
|
|
~ 153 tsu(CL-ALL)
|
|
Setup time of CAS low to LALI,
|
|
tQ-20 tQ-1O ns
|
|
o CAS-before-RAS refresh
|
|
|
|
z 154 tsu(RH-CL)
|
|
Setup time of RAS high to CASI,
|
|
CAS-before-RAS refresh
|
|
2tQ-20 2tQ-10 ns
|
|
|
|
Setup time of CAS low to RASI,
|
|
155 tsu(CL-RL) 2tQ-20 2tQ-10 ns
|
|
CAS-before-RAS refresh
|
|
Hold time of CAS low after RAS low,
|
|
156 th(RL-CL) 4.5tQ-25 4.5tQ-10 ns
|
|
CAS-before-RAS refresh
|
|
Pulse duration, CAS low,
|
|
157 tw(CL) 6.5tQ-25 6.5tQ-1P ns
|
|
CAS-before-RAS refresh
|
|
Setup time of CAS high to RASI,
|
|
158 tsu(CH-RL) 3.5tQ -15 3.5tQ -10 ns
|
|
CAS-before-RAS refresh
|
|
|
|
NOTE: Advance information notices apply only to the TMS34010-60.
|
|
tThese values are derived from characterization and are not tested.
|
|
|
|
|
|
|
|
|
|
A-54 TEXAS •
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
TMS34010
|
|
|
|
|
|
CAS-before-RAS DRAM refresh cycle timing
|
|
|
|
|
|
04 01 I 02 03 04 I 01 02 03 04 01 I
|
|
l~~~~- _ _ _ _ _ _ -J)[ ROW 1<'--_____ x=
|
|
U_N_D_E_FIN_E_D_ _ _ _ _......
|
|
|
|
~144---./ ~145
|
|
|
|
RAS"
|
|
Ji
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
I
|
|
N I I-
|
|
|
|
~
|
|
-.j1
|
|
1 4 7 - - - - - - i..
|
|
|
|
I
|
|
JtTI
|
|
i ! r------
|
|
I I ~
|
|
___~I--------~-
|
|
,_ 146 .. I 1 I I
|
|
I 148~ II I I
|
|
I
|
|
I
|
|
15o~1
|
|
'---149----l
|
|
I
|
|
151 I
|
|
~I
|
|
!II
|
|
I
|
|
|
|
|
|
|
|
|
|
I
|
|
II
|
|
7.
|
|
/ I
|
|
tI~I;.'I __I I
|
|
I!-I 1....._ _ _ _ _ _ _ _ _ _ _ _ _----""1-
|
|
|
|
I I -'-----! II
|
|
153 I
|
|
II I
|
|
152~1
|
|
1---155~ I
|
|
II 63~
|
|
I
|
|
'--154-----.1 I I (0011-.....-----156 - - - - -.......
|
|
-.jll
|
|
I I_ I ~1 I
|
|
CAS -~--""""'i ---"'lIi\1 I
|
|
157 - - - - - - - - - - i..
|
|
yr-------
|
|
(001(0011-----158 - - - - - - i....1
|
|
|
|
|
|
|
|
|
|
TEXAS • A-55
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010 ADVANCE
|
|
GRAPHICS SYSTEM PROCESSOR INFORMATION
|
|
|
|
|
|
local bus timing parameters (continued)
|
|
Quarter clock time tQ, which appears in the following table, is one quarter of a local output clock cycle,
|
|
or 2tc(lCK).
|
|
TMS34010-50
|
|
TMS34010-40
|
|
NO. PARAMETER TMS34010-60 UNIT
|
|
MIN MAX MIN MAX
|
|
Hold time of RAS high after LCLK2 high, all
|
|
159 th(CK2H-RH) cycles except internal and to-15 to-lO ns
|
|
CAS-before-RAS refresh
|
|
Setup time of RAS low to LCLK2~, all cycles
|
|
160 t su(RL-CK2L) to-20 to-10 ns
|
|
except internal and CAS-before-RAS refresh
|
|
Hold time of RAS high after LCLK 1 low,
|
|
161 th(CK1L-RH) to-15 to-10 ns
|
|
CAS-before-RAS refresh
|
|
Setup time of RAS low to LCLK 1 i,
|
|
162 tsu(RL-CK 1 H) to-20 to-10 ns
|
|
CAS-before-RAS refresh
|
|
Hold time of RAS low after LCLK 1 low,
|
|
163 thICK 1L-RL) to-15 to-10 ns
|
|
all cycles except internal
|
|
Setup time of RAS high to LCLK 1 i,
|
|
164 tsu(RH-CK 1 H) to-20 to-10 ns
|
|
all cycles except internal
|
|
Hold time of LAL high after LCLK2 low,
|
|
165 th(CK2L-ALH) 0. 5tO-15 0.5tO -10 ns
|
|
all cycles except internal
|
|
Setup time of LAL low to LCLK 1 i,
|
|
166 tsu(ALL-CK 1H) 0. 5tO-15 0. 5tO-10 ns
|
|
all cycles except internal
|
|
|
|
|
|
-:2
|
|
."
|
|
167 th(CK2L-ALL)
|
|
Hold time of LAL low after LCLK2 low,
|
|
all cycles except internal
|
|
Setup time of LAL high after LCLK2i,
|
|
to-15 to-lO ns
|
|
|
|
|
|
|
|
o 168 tsu(ALH-CK2H)
|
|
all cycles except internal
|
|
to-20 to-lO ns
|
|
|
|
:l:J 169
|
|
Hold time of CAS high after LCLK 1 high,
|
|
to-15 to-lO ns
|
|
S thICK 1H-CH)
|
|
CAS-before-RAS refresh
|
|
|
|
|
|
~
|
|
Setup time of CAS low to LCLK!,
|
|
170 t su (CL-CK1L) to-20 to-lO ns
|
|
CAS-before-RAS refresh
|
|
|
|
o Hold time of CAS high after LCLK2 low,
|
|
ns
|
|
:2 171 th(CK2L-CH) cycles except internal, to-15 to-lO
|
|
DRAM refresh and CAS-before-RAS refresh
|
|
Setup time of CAS low to LCLK2i,
|
|
172 t su(CL-CK2H) all cycles except internal, DRAM refresh, to-20 to-10 ns
|
|
and CAS-before-RAS refresh
|
|
Hold time of CAS low after LCLK2 low, all
|
|
173 th(CK2L-CL) 0. 5tO-15 0. 5tO-10 ns
|
|
cycles except internal and DRAM refresh
|
|
Setup time of CAS high to LCLK 1 i, all
|
|
174 tsu(CH-CK 1 H) 0. 5tO-15 0.5tO -10 ns
|
|
cycles except internal and DRAM refresh
|
|
Hold time of W high after LCLK1 high,
|
|
175 thICK 1H-WH)TR to-15 to-10 ns
|
|
shift register transfer
|
|
Setup time of W low to LCLK1!,
|
|
176 tsu(WL-CK 1 LlTR to-20 to-10 ns
|
|
shift register transfer
|
|
|
|
NOTE: Advance inforrpation notices apply only to the TMS34010-60.
|
|
|
|
|
|
|
|
|
|
A-56 TEXAS . "
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
ADVANCE GRAPHICS SYSTEM PROCESSOR
|
|
INFORMATION TMS34010
|
|
|
|
|
|
local bus timing parameters (concluded)
|
|
Quarter clock time tQ, which appears in the following table, is one quarter of a local output clock cycle,
|
|
or 2tc(lCK).
|
|
TMS34010-50
|
|
TMS340 10-40
|
|
NO. PARAMETER TMS34010-60 UNIT
|
|
MIN MAX MIN MAX
|
|
Hold time of W low after LCLK 1 low,
|
|
177 thICK 1 L-WL) to-15 to-1O ns
|
|
shift register transfer
|
|
Setup time of W high to LCLK 1 t,
|
|
178 tsu(WH-CK 1 H) to-20 to-10 ns
|
|
shift register transfer
|
|
179 th(CK1 H-WH) Hold time of W high after LCLK1 high, write to-15 to-1O ns
|
|
180 tsu(WL-CK 1 L) Setup time of W low to LCLKU, write to-20 to-1O ns
|
|
11:l1 th(CK2L-WL) Hold time of W low after LCLK2 low, write 0. 5tO-15 0. 5tO-10 ns
|
|
182 tsu(WH-CK 1H) Setup time of W high to LCLK 1 t, write 0. 5tO-15 0.5tO -10 ns
|
|
Hold time of TR/OE high after LCLK1 high,
|
|
183 th(CK1L-TRH) to-15 to-1O ns
|
|
shift register transfer
|
|
2
|
|
184 tsu(TRL-CK 1 H)
|
|
Setup time of TR/OE low to LCLK1~,
|
|
shift register transfer
|
|
to-20 to-1O ns o
|
|
185 th(CK2H-TRL)
|
|
Hold time of TR/OE low after LCLK2 high,
|
|
shift register transfer
|
|
to-15 to-1O ns
|
|
t:c
|
|
Setup time of TR/OE high to LCLK2~, ~
|
|
186 t su (TRH-CK2L)
|
|
shift register transfer
|
|
to-20 to-10 ns
|
|
a::
|
|
187 th(CK1 H-OEH) Hold time of TR/OE high after LCLK 1 high, read to-15 to-1O ns oLL
|
|
188 t su (OEL-CK1 L) Setup time of TR/OE low to LCLKH, read to-20 to-1O ns
|
|
189 Hold time of TR/OE low after LCLK2 low, read 0.5tO-15 0. 5tO-10 ns
|
|
2
|
|
th(CK2L-OEL)
|
|
190 tsu(OEH-CK 1 H) Setup time of TR/OE high to LCLK 1t, read 0. 5tO-15 0. 5tO-10 ns w
|
|
191 th(CK2L-ENH) Hold time of DEN high after LCLK2 low, write to-15 to-1O ns ()
|
|
192 tsulENL-CK2H) Setup time of DEN low to LCLK2t, read to-20 to-1O ns 2
|
|
193
|
|
194
|
|
th(CK1 H-ENL)
|
|
tsu(ENH-CK1 L)
|
|
Hold time of DEN low after LCLK 1 high, write
|
|
Setup time of DEN high to LCLKH, write
|
|
to-15
|
|
to-20
|
|
to-10
|
|
to-10
|
|
ns
|
|
ns
|
|
C
|
|
~
|
|
195
|
|
196
|
|
th(CK1 H-ENH)
|
|
tsu(ENL-CK 1 L)
|
|
Hold time of DEN high after LCLK1 high, read
|
|
Setup time of DEN low to LCLKH, read
|
|
to-15
|
|
to-20
|
|
to-1O
|
|
to-1O
|
|
ns
|
|
ns
|
|
«
|
|
197 th(CK2L-ENL) Hold time of DEN low after LCLK2 low, read 0. 5tO-15 0. 5tO-10 ns
|
|
198 tsu(ENH-CK1 HI Setup time of DEN high to LCLK1t, read 0. 5tO-15 0. 5tO-10 ns
|
|
199 th(CK2L-DDH) Hold time of DDOUT high after LCLK2 low, read to-15 to-1O ns
|
|
200 t su (DDL-CK2H) Setup time of DDOUT low to LCLK2t, read to-20 to-1O ns
|
|
201 thICK 1 H-DDL) Hold time of DDOUT low after LCLK1 high, read to-15 to-1O ns
|
|
202 tsu(DDH-CK 1 L) Setup time of DDOUT high to LCLK 1 ~, read to-20 to-10 ns
|
|
Hold time of LAL high after LCLK2 high,
|
|
203 th(CK2H-ALH) to-15 to-1O ns
|
|
CAS-before-RAS refresh
|
|
Setup time of LAL low to LCLK2~,
|
|
204 tsu(ALL-CK2L) to-20 to-10 ns
|
|
CAS-before-RAS refresh
|
|
|
|
NOTE: Advance information notices apply only to the TMS3401 0-60.
|
|
|
|
|
|
|
|
|
|
TEXAS ~ A-57
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON, TEXAS 77001
|
|
TMS34D1D
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
local bus timing: relationship of control signals to clocks
|
|
|
|
|
|
03 I 04 01 I 02
|
|
lClK1 J tL
|
|
I
|
|
I
|
|
I
|
|
I
|
|
lClK2 ---;r------'I:
|
|
159 ,
|
|
I.
|
|
|
|
|
|
|
|
|
|
\t
|
|
!~183 '
|
|
¥ ,
|
|
I
|
|
I
|
|
~ :VII
|
|
I 11t----i-188 !_I....:.J /-+190
|
|
'
|
|
II 1---i-184 I 187 ~, 186...... r-!"'" " I
|
|
I , I , L:".185~ I !-r189
|
|
II
|
|
I I
|
|
~---'--+,"""",--!-I-----I--
|
|
|
|
~----'-----'-I--r--=----~=---""I~
|
|
I I r--r
|
|
I
|
|
192 I
|
|
'L....-i-193
|
|
I
|
|
I
|
|
t-+-
|
|
I, I
|
|
I i-----t-194
|
|
p', !
|
|
198--1
|
|
|
|
I, R'- .~'I
|
|
I 195 I 197
|
|
!-----+-196
|
|
1-4-:I
|
|
-1 V Ir
|
|
191~
|
|
,r--t-200
|
|
L
|
|
r 202 ~
|
|
I
|
|
OOOUT -------------1'1 199 -+----i r
|
|
201
|
|
r
|
|
~t----
|
|
I
|
|
|
|
|
|
|
|
|
|
A-58 TEXAS ~
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
ADVANCE TMS34010
|
|
INFORMATION GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
video interface timing parameters
|
|
The timing parameters for TMS3401 0 video interface signals are shown in the next three tables and diagrams.
|
|
The video interface includes the following TMS3401 0 pins: VCLK (video input clock), BLANK
|
|
(blanking), HSYNC (horizontal sync, bidirectional), and VSYNC (vertical sync, bidirectional). HSYNC and
|
|
VSYNC are inputs if external sync mode is enabled; otherwise they are outputs.
|
|
|
|
video input clock timing parameters
|
|
TMS34010-50
|
|
TMS34010-40
|
|
NO. PARAMETER TMS34010-60 UNIT
|
|
MIN MAX MIN MAX
|
|
205 tc(VCK) Period of video input clock VCLK 100 80 ns
|
|
206 tw(VCKH) Pulse duration of VCLK high 40 30 ns
|
|
207 tw(VCKL) Pulse duration of VCLK low 40 30 ns
|
|
208 tt(VCK) Transition time (rise and fall) of VCLK 5t 5t ns
|
|
|
|
NOTE: Advance information notices apply only to the TMS3401 0-60.
|
|
tThis value is determined through computer simulation and is not tested.
|
|
2:
|
|
video input clock timing o
|
|
I~
|
|
|
|
1-- --1206
|
|
205 -,
|
|
208-1 ~ 208 - - ; ~
|
|
fi
|
|
:!:
|
|
Y
|
|
J4--207----.1 1
|
|
|
|
VCLK J \l 'i~I________~Jr~!------ a:
|
|
oLL
|
|
video interface timing parameters: outputs 2:
|
|
|
|
NO. PARAMETER
|
|
TMS34010-40
|
|
TMS34010-50 w
|
|
TMS34010-60 UNIT (.)
|
|
MIN MAX MIN MAX
|
|
2:
|
|
~
|
|
209 td(VCKL-HSL) Delay from VCLK low to HSYNC, VSYNC, or BLANK low 30 30 ns
|
|
210 td(VCKL-HSH) Delay from VCLK low to HSYNC, VSYNC, or BLANK high 30 30 ns
|
|
211 th(VCKL-HSH) Hold time of HSYNC, VSYNC, or BLANK high after VCLK~ C
|
|
«
|
|
0 0 ns
|
|
212 th(VCKL-HSL) Hold time of HSYNC, VSYNC, or BLANK low after VCLK~ 0 0 ns
|
|
|
|
NOTE: Advance information notices apply only to the TMS34010-60.
|
|
|
|
video output timing
|
|
|
|
|
|
|
|
VCLK ~ / j\ / \---
|
|
I ~209--1 I ~210
|
|
-211~ I 212~1I . 1
|
|
HSYNC,
|
|
VSYNC
|
|
II
|
|
I I
|
|
! I
|
|
'i I I yl
|
|
I I I
|
|
....- - - - - - - - - - -
|
|
(OUTPUTS) I I !'-----------II*I-
|
|
I ~209...J I ~210
|
|
14-211--11 212 ~ I
|
|
\~I 11"~-------------
|
|
BLANK \ ¥
|
|
|
|
|
|
TEXAS • A-59
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON, TEXAS 77001
|
|
TMS34010 ADVANCE
|
|
GRAPHICS SYSTEM PROCESSOR INFORMATION
|
|
|
|
|
|
video interface timing: external sync inputs
|
|
TMS34010-50
|
|
NO. PARAMETER TMS34010-40 TMS34010-60 UNIT
|
|
MIN MAX MIN MAX
|
|
213 tsu(HSV-VCKH) Setup time of HSYNC, VSYNC valid to VCLKi 20t 20t ns
|
|
214 th(VCKH-HSV) Hold time of HSYNC, VSYNC valid after VCLK high 20t 20t ns
|
|
215 tsu(HSH-VCKH) Setup time of HSYNC, VSYNC high to VCLK: 20~ 20~ ns
|
|
|
|
NOTE: Advance information notices apply only to the TMS3401 0-60.
|
|
tSpecified setup and hold times on asynchronous inputs are required only to guarantee recognition at indicated clock edge.
|
|
~This value is determined through computer simulation.
|
|
|
|
|
|
|
|
|
|
VCLK
|
|
,
|
|
I
|
|
|
|
1
|
|
,
|
|
,
|
|
|
|
,
|
|
j4--214-----t 1 , !4-215~
|
|
|
|
» HSYNC,
|
|
VSYNC -------------~~~ill
|
|
, '--213~
|
|
|
|
___________________________________ r
|
|
;.---214------.1
|
|
},T
|
|
¥
|
|
.1 _ _ _ _ __
|
|
|
|
|
|
|
|
|
|
~ (INPUTS) \.
|
|
|
|
|
|
»
|
|
2
|
|
(NOTE 1) (NOTE 2)
|
|
|
|
|
|
|
|
n NOTES: 1. If the falling edge of the sync signal occures more than th(SV-VCH) past VCLK edge A, and at least tsu(SV-VCH) before edge
|
|
B, the transition will be detected at edge B instead of edge A.
|
|
m
|
|
-2
|
|
'"T1
|
|
2. If the rising edge of the sync signal occurs more than th(SV-VCH) past VCLK edge C, and at least tsu(SV-VCH) before edge
|
|
D, the transition will be detected at edge D instead of edge C.
|
|
|
|
|
|
|
|
o
|
|
::xJ
|
|
S
|
|
~
|
|
o
|
|
2
|
|
|
|
|
|
|
|
|
|
A-60 TEXAS.
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
TMS34010
|
|
GRAPHICS SYSTEM PROCESSOR
|
|
|
|
|
|
MECHANICAL DATA
|
|
|
|
|
|
|
|
|
|
~0,25 (0.010) R MAX
|
|
"'" IN 3 PLACES
|
|
|
|
1,27 (0.050) T.P.
|
|
(SEE NOTE B)
|
|
|
|
|
|
|
|
|
|
23,62 (0.930) 25,27 (0.995)
|
|
23,11 (0.910) 25,02 (0.985)
|
|
(AT SEATING PLANE)
|
|
|
|
|
|
|
|
|
|
~ 24'33~0'95.)ISEE
|
|
I 0,94 (0.037) R
|
|
I 0,69 (0.027)
|
|
NOTE A)
|
|
1,22 (0.048) x 45c
|
|
1,07 (0.042)
|
|
I 24,13 (0.950)
|
|
I 25,27 (0.995)
|
|
SEATING PLANE
|
|
25,02 (0.985)
|
|
|
|
|
|
|
|
|
|
lr
|
|
0,81 (0.032)
|
|
0,66 (0.026)
|
|
|
|
|
|
~"1't 10.0.0) MIN
|
|
|
|
|
|
|
|
0,51 (0.020)
|
|
0,36 (0.014) JL'
|
|
I
|
|
~0,64 (0.025) MIN
|
|
|
|
LEAD DETAIL
|
|
|
|
NOTES: A. Centerline of center pin each side is within 0,10 (0.004) of package centerline as determined by this dimension.
|
|
B. Location of each pin is within 0,127 (0.005) of true position with respect to center pin on each side.
|
|
|
|
ALL LINEAR DIMENSIONS ARE IN MILLIMETERS AND PARENTHETICALLY IN INCHES.
|
|
|
|
|
|
|
|
|
|
TEXAS. A-61
|
|
INSTRUMENTS
|
|
POST OFFICE BOX 1443 • HOUSTON. TEXAS 77001
|
|
Printed in U.S.A.
|
|
SPVS002B
|
|
Appendix B
|
|
System Design Considerations
|
|
|
|
|
|
Please read these emulation guidelines before starting a system design that
|
|
requires use of an XDS emulator. In-circuit emulators place added constraints
|
|
on the system hardware and software design; the XDS TMS34010 emulator
|
|
minimizes these constraints as much as possible. Many of the emulator signals
|
|
come directly from the device itself keeping the delays to a minimum. The
|
|
information provided in this appendix will allow your design to be compatible
|
|
with the TMS3401 0 XDS emulator.
|
|
Topics in this section include:
|
|
Section Page
|
|
B.1 Pin Loading ................................................................................................ 8-2
|
|
B.2 Signal Timing and Delay .......................................................................... B-4
|
|
B.3 Transmission Line Phenomena ................................................................ 8-5
|
|
B.4 Host Port Operation .................................................................................. 8-5
|
|
B.5 Reset Buffering .......................................................................................... 8-5
|
|
B.6 Local Ready Timing .................................................................................. B-6
|
|
B.7 Memory Substitution ................................................................................ 8-6
|
|
B.8 Write Protecting Memory ......................................................................... 8-6
|
|
B.9 Tracing and Cache .................................................................................... 8-7
|
|
|
|
|
|
|
|
|
|
8-1
|
|
Appendix B - System Design Considerations
|
|
|
|
|
|
|
|
B.1 Pin Loading
|
|
The loading provided by the emulator differs from the device loading; in some
|
|
cases, this additional loading can cause a system to fail or pass. For instance,
|
|
within the emulator the VCLK and INCLK clocks are buffered by an AS157
|
|
device. If the target clocks are driven by an AS driver over a long distance, the
|
|
system may operate satisfactorily with the emulator's loading. When the de-
|
|
vice is used, the clocks can ring, causing the system to fail.
|
|
To minimize ringing caused by the emulator, all the outputs and I/Os are ter-
|
|
minated with 22-ohm series resistors. Most of the signals are connected di-
|
|
rectly to the target connector to minimize the added delays. Table 8-1 shows
|
|
the device loads that are placed on the emulator pins.
|
|
In Table 8-1, pin refers to the emulator target pin. An arrow (-+) indicates
|
|
that the specified device drives the device(s) it the arrow points to. Devices
|
|
in parallel are separated by commas; devices in series are in brackets. As an
|
|
example, consider LADO; the pin connects to a 22-ohm series resistor, and the
|
|
other side of the resistor is connected to an ALS245, AS573, and the
|
|
TMS34010.
|
|
Table 8-1. Loading
|
|
|
|
Pin Signal I/O Loading
|
|
1 Vss
|
|
2 RUN/EMU pin, 4.7KPU, ALS08
|
|
3 "FfrnET I pin, 4.7KPU, TIBPAL-12, TMS9901, ALS574, AS257
|
|
-+ [ALS08 + AS04 + ALS08 + AS874 + AS04] -+
|
|
TMS34010
|
|
4 VCLK I pin, 330PU, 510PD, A5157 -+ TMS3401 0
|
|
5 INCLK I pin -+ [AS157] -+ TMS34010
|
|
6 ""CTNT1 I pin, 4.7KPU -+ [AS257] -+ TMS34010
|
|
7 LlNT2 I pin, 4.7KPU -+ [AS257] -+ TMS34010
|
|
8 HOLD I pin, 4.7KPU, AS874, TMS34010
|
|
9 LRDY 0 pin, 4.7KPU, [TIBPAL-12] -+ TMS34010
|
|
10 LADO I/O pin -+ [22S] -+ ALS245, AS573, TMS34010
|
|
11 LAD1 I/O pin -+ [22S] -+ ALS245, AS573, TMS34010
|
|
12 LAD2 I/O pin -+ [22S] -+ ALS245, AS573, TMS3401 0
|
|
13 LAD3 I/O pin -+ [22S] -+ ALS245, AS573, TMS34010
|
|
14 LAD4 I/O pin -+ [22S] -+ ALS245, AS573, TMS34010
|
|
15 LAD5 I/O pin -+ [22S] -+ ALS245, AS573, TMS34010
|
|
16 LAD6 I/O pin -+ [22S] -+ ALS245, AS573, TMS3401 0
|
|
17 LAD7 I/O pin -+ [22S] -+ ALS245, AS573, TMS3401 0
|
|
18 V"SS
|
|
19 LAD8 I/O pin -+ [22S] -+ ALS245, AS573, TMS3401 0
|
|
PD - Pull down
|
|
PU - Pull up
|
|
S - Series resistor
|
|
[] - Devices in series
|
|
pin - Emulator target cable pin
|
|
|
|
|
|
B-2
|
|
Appendix B - System Design Considerations
|
|
|
|
|
|
Table B-1. Loading (Continued)
|
|
|
|
Pin Signal I/O Loading
|
|
20 LAD9 I/O pin -+ [225] -+ AL5245, A5573, TM53401 0
|
|
21 LAD10 I/O pin -+ [225] -+ AL5245, A5573, TM53401 0
|
|
22 LAD11 I/O pin -+ [225] -+ AL5245, A5573, TM53401 0
|
|
23 LAD12 I/O pin -+ [225] -+ AL5245, A5573, TM53401 0
|
|
24 LAD13 I/O pin -+ [225] -+ AL5245, A5573, TM53401 0
|
|
25 LAD14 I/O pin -+ [225] -+ AL5245, A5573, TM53401 0
|
|
26 LAD15 I/O pin -+ [225] -+ AL5245, A5573, TM534010
|
|
27 Vee
|
|
28 LCLK1 0 TM534010, A5244, A504 -+ [225] -+ pin
|
|
29 LCLK2 0 TM534010, A5244 -+ [225] -+ pin
|
|
30 H5YNC I/O TM534010, AL5573 -+ [225] -+ pin
|
|
31 V5YNC I/O TM534010, AL5573 -+ [225] -+ pin
|
|
32 BLANK 0 TM534010, AL5573 -+ [225] -+ pin
|
|
33 HLDA/EMU 0 TM534010 -+ [A508 + 105] -+ pin
|
|
34 LAL 0 TM534010, 100KPU, A511, A504 -+ [225] -+ pin
|
|
35 VSS
|
|
36 DDOUT 0 TM534010 -+ [TIBPAL-12 + 225] -+ pin
|
|
37 DEN 0 TM534010 -+ [TIBPAL-12 + 225] -+ pin
|
|
38 ~ 0 TM534010 A5157, 100KPU -+ [225] -+ pin
|
|
39 ~ 0 TM534010 -+ [TIBPAL-12 + 225] -+ pin
|
|
40 WRITE 0 TM534010 -+ [TI B PAL-1 2 + 225] -+ pin
|
|
41 TR/QE 0 TM534010 -+ [TIBPAL-12 + 225] -+ AL244, pin
|
|
42 HINT 0 TM534010 AL5244 -+ [225] -+ pin
|
|
43 HRDY 0 TM534010 -+ [A508 + 105] -+ pin
|
|
44 HAD15 I/O TM534010 -+ [225] -+ pin
|
|
45 HAD14 I/O TM534010 -+ [225] -+ pin
|
|
46 HAD13 I/O TM534010 -+ [225] -+ pin
|
|
47 HAD12 I/O TM534010 -+ [225J -+ pin
|
|
48 HAD11 I/O TM534010 -+ [225] -+ pin
|
|
49 HAD10 I/O TM534010 -+ [225] -+ pin
|
|
50 HAD9 I/O TM534010 -+ [225J -+ pin
|
|
51 HAD8 I/O TM534010 -+ [225J -+ pin
|
|
52 VSS
|
|
PO - Pull down
|
|
PU - Pull up
|
|
5 - 5eries resistor
|
|
[] - Devices in series
|
|
pin - Emulator target cable pin
|
|
|
|
|
|
|
|
|
|
B-3
|
|
Appendix B - System Design Considerations
|
|
|
|
|
|
Table 8-1. Loading (Concluded)
|
|
|
|
Pin Signal I{O Loading
|
|
53 HAD7 I{O TMS34010 -+ [22S] -+ pin
|
|
54 HAD6 I{O TMS34010 -+ [22S] -+ pin
|
|
55 HAD5 I{O TMS34010 -+ [22S] -+ pin
|
|
56 HAD4 I{O TMS34010 -+ [22S] -+ pin
|
|
57 HAD3 I{O TMS34010 -+ [22S] -+ pin
|
|
58 HAD2 I{O TMS34010 -+ [22S] -+ pin
|
|
59 HAD1 I{O TMS34010 -+ [22S] -+ pin
|
|
60 HADO I{O TMS34010 -+ [22S] -+ pin
|
|
61 Vee
|
|
62 'RU15S I pin, 100KPU, TMS34010
|
|
63 ~ I pin, 100KPU, TMS3401 0
|
|
64 tm'EAI5 I pin, 100KPU, ALS573, TMS3401 0
|
|
65 HWmTE I pin, 100KPU, AS573, TMS3401 0
|
|
66 ~ I pin, 4.7KPU -+ [AS232 + AS08 + TMS34010] -+
|
|
ALSOO,ALS74,TIBPAL-1~ LS02
|
|
|
|
67 HFSO I pin, 100KPU, ALS573, TMS3401 0
|
|
68 HFS1 I pin, 1OOKPU, ALS573, TMS3401 0
|
|
PO - Pull down
|
|
PU - Pull up
|
|
S - Series resistor
|
|
[] - Devices in series
|
|
pin - Emulator target cable pin
|
|
|
|
|
|
|
|
|
|
8.2 Signal Timing and Delay
|
|
The target cable delays all signal timings by approximately four nanoseconds;
|
|
the following signals impose an additional delay:
|
|
|
|
Signal Delay Signal Delay
|
|
VCLK 6ns CAS 12ns
|
|
INCLK 6ns WRITE 12ns
|
|
LlNT1 6ns TR/QE 12ns
|
|
LlNT2 6ns LRDY 12ns
|
|
DDOUT 12ns HRDY 6ns
|
|
DEN 12n8 HCS 12ns
|
|
Remember these additional delays when you are calculating system timings.
|
|
The cable delays should cancel out when comparing the signal to the clock;
|
|
for instance, the clock is delayed by four nanoseconds and so is the address.
|
|
The problem comes from setup times required by the TMS34010. For in-
|
|
stance, CAS out is delayed by 16 nanoseconds and data-in is delayed by four
|
|
nanoseconds. This 20 nanoseconds must be added to the memory access
|
|
time. For this reason, it is important not to use CAS to control LRDY. Both
|
|
|
|
|
|
|
|
B-4
|
|
Appendix B - System Design Considerations
|
|
|
|
|
|
|
|
LRDY and CAS are delayed by 12 nanoseconds; combined, this adds 24 na-
|
|
noseconds to the LRDY setup, which violates the device requirements.
|
|
|
|
|
|
|
|
B.3 Transmission Line Phenomena
|
|
Since the XDS target cable is approximately 20 inches long, use of advanced
|
|
CMOS or fast/advanced Schottky-TIL may cause line reflections (ringing
|
|
above input thresholds) on input lines to the XDS. Series termination resistors
|
|
(22 to 68 ohms) can help to eliminate this problem. In some cases where
|
|
significant additional signal length is added to XDS outputs, the series resis-
|
|
tors on the XDS may not be sufficient to control reflections. In this case, ad-
|
|
ditional corrective actions may be necessary.
|
|
|
|
|
|
|
|
B.4 Host Port Operation
|
|
The emulator host port supports two modes of operation:
|
|
|
|
• The first mode blocks the host port while the emulator is in control mode
|
|
(that is, not running) and when the XDS emulator requires its internal
|
|
TMS34010 as a resource. Systems that access the host port when in
|
|
control mode have H R DY inactive when they start an access and remain
|
|
inactive until the emulator is put into run mode. This is a problem for
|
|
pes because they use DMA cycles to perform DRAM refresh and are
|
|
prevented from performing any further memory cycles.
|
|
|
|
• The second mode of operation allows host accesses while the emulator
|
|
is in control mode. When the emulator is halted, a snapshot is taken of
|
|
the I/O registers before transferring control to the user. While halted, the
|
|
host has access to the TMS34010's I/O registers and memory space.
|
|
Data read from the I/O and memory space may not represent the actual
|
|
data as the host can be changing the data through the host port. Data
|
|
written through the XDS user interface to any I/O registers or memory
|
|
locations used by the host port can cause unpredictable results. This
|
|
mode is the typical dual-allocation problem that is prevalent in multiport
|
|
memory systems.
|
|
|
|
|
|
|
|
B.5 Reset Buffering
|
|
The RESET input from the target system is buffered so that reset cannot abort
|
|
a memory cycle that is in progress. This is necessary to prevent corruption of
|
|
the substitution memory. Reset is AN Ded with RAS and CAS and clocked on
|
|
the rising edge of LCLK1. If reset is active and RAS and CAS are inactive, then
|
|
reset is applied to the processor. While the RESET input is active, internal
|
|
emulator logic provides CAS-before-RAS refreshes for emulator memory, but
|
|
not for your system memory; target memory is not refreshed during reset.
|
|
Therefore, you shouldn't perform a target reset following a download of object
|
|
code into target memory, because this may destroy the contents of target me-
|
|
mory.
|
|
|
|
|
|
|
|
8-5
|
|
Appendix B - System Design Considerations
|
|
|
|
|
|
|
|
If the target system also generates a reset during the emulator-TMS3401 0 re-
|
|
set, and HCS is high (which, under normal circumstances, would halt the
|
|
TMS34010), the emulator reset takes precedence and does not halt the
|
|
TMS34010.
|
|
|
|
|
|
B.6 Local Ready Timing
|
|
The ready logic requires special attention; the target system should not depend
|
|
on having CAS to clear ready. This can cause a deadlock situation if the me-
|
|
mory is write protected. In this case, the emulator blocks the CAS output to
|
|
the target and the target system is locked waiting for CAS to release LRDY.
|
|
Thus, if you are working with the emulator and write-protecting memory, your
|
|
ready logic should use a combination of RAS and clock delays instead of CAS.
|
|
|
|
|
|
B.7 Memory Substitution
|
|
The 256K bytes of substitution memory is implemented with two banks of
|
|
64Kx4 DRAMs. This memory can be mapped on 2K word boundaries. The
|
|
memory can be selected as write-only using the memory protect feature de-
|
|
scribed below. When a memory access is made that is mapped into substi-
|
|
tution memory the signals are modified as follows:
|
|
|
|
• DEN, CAS, WR, and TR/OE are blocked from going active.
|
|
|
|
• Ready is accepted from the target to allow adding wait states to the
|
|
substitution memory.
|
|
Ready should not be controlled by DEN, CAS, WR or TR/OE because these sig-
|
|
nals are blocked and a deadlock condition would take place.
|
|
All the other signals operate as though a standard memory cycle were taking
|
|
place. Be aware that when you're using substitution memory, it can only be
|
|
accessed by the processor and host port and cannot be accessed when the
|
|
TMS34010 is put into hold. The target system should not drive the LAD bus
|
|
unless CAS and DEN are active.
|
|
|
|
|
|
B.8 Write Protecting Memory
|
|
The emulator allows memory to be write-protected in blocks of 2048 words.
|
|
The memory can be external memory as well as the substitution memory. The
|
|
memory write operations are inhibited by blocking the CAS output. As with
|
|
the substitution memory, ready should not be controlled by CAS because a
|
|
deadlock condition will take place. External system memory is only write
|
|
protected from CPU and host accesses and not DMA accesses initiated with
|
|
a HOLD/HOLDA sequence.
|
|
|
|
|
|
|
|
|
|
8-6
|
|
Appendix B - System Design Considerations
|
|
|
|
|
|
|
|
B.9 Tracing and Cache
|
|
Please note that the breakpoint trace and timing capabilities are used to mon-
|
|
itor bus activity. The TMS3401 O's pipelined-cache-based architecture fetches
|
|
the current instruction and the three associated instructions in the cache sub-
|
|
segment when a cache miss occurs. This is indicated as four fetches even
|
|
though only one instruction may be executed. Also, when the cache is ena-
|
|
bled, code already located in cache does not generate any instruction-fetch
|
|
activity on the memory bus when it is executed. If you want to create a com-
|
|
plete trace history, run the TMS34010 with cache disabled. By disabling
|
|
cache, all instructions executed are moved over the external memory bus every
|
|
time they are executed, allowing them to be captured in the trace buffer.
|
|
|
|
|
|
|
|
|
|
B-7
|
|
Appendix B - System Design Considerations
|
|
|
|
|
|
|
|
|
|
B-8
|
|
Appendix C
|
|
|
|
Software Compatibility with Future GSPs
|
|
|
|
|
|
This appendix provides guidelines for writing TMS34010 programs that will
|
|
be compatible with future versions of TMS340xO devices. In some cases,
|
|
following these guidelines may not produce the fastest TMS34010 code;
|
|
however, your code should run without modification on future GSPs.
|
|
These guidelines cover several areas:
|
|
Section Page
|
|
C.1 General Guidelines .................................................................................... C-2
|
|
C.2 Graphics Compatibility ............................................................................. C-2
|
|
C.3 Memory Map Compatibility ..................................................................... C-3
|
|
C.4 I/O Register and Video Timing Compatibility ....................................... C-4
|
|
C.5 Interrupts Compatibility ............................................................................ C-4
|
|
C.6 Host Interface Compatibility .................................................................... C-5
|
|
|
|
|
|
|
|
|
|
C-1
|
|
Appendix C - Software Compatibility with Future GSPs
|
|
|
|
|
|
|
|
C.1 General Guidelines
|
|
• Future GSPs may have different instruction execution times than the
|
|
TMS34010 has; therefore, timing loops based on TMS3401 0 instruction
|
|
execution time may not be compatible with future GSPs. Even if future
|
|
devices are generally faster than the TMS3401 0, specific cases may run
|
|
slower. To avoid this, timing could be based on DPYINT (the display
|
|
interrupt) or on an external time source (via L1NT1 or L1NT2). Note that
|
|
if you use DPYINT, you must consider different display resolutions and
|
|
refresh rates.
|
|
|
|
• For optimum performance on future GSPs, align data on 32-bit bound-
|
|
aries (instead of 16-bit boundaries). This could reduce the number of
|
|
memory cycles for future GSPs, and in most cases will have little impact
|
|
on the TMS3401 O. In particular, keeping the stack pointer (SP) aligned
|
|
to 32-bit boundaries will speed up subroutine calls and interrupts.
|
|
|
|
• Future GSPs may use the reserved bits in the status register and in the
|
|
I/O registers. During context switches, the values of reserved bits should
|
|
be saved and restored as if they were valid; do not assume that these bits
|
|
have known values. If you don't follow this guideline, your code may
|
|
inadvertently enable/disable new options or features.
|
|
Unless otherwise noted in this user's guide, when reserved bits have a
|
|
value of 0, they will cause future GSPs to behave like the TMS3401 O.
|
|
However, you should not set these bits to 0, because this may incorrectly
|
|
reset a bit.
|
|
|
|
• Use the REV instruction to determine which version of the GSP you are
|
|
using. You can use this instruction to decide whether to enable or dis-
|
|
able version -dependent code.
|
|
|
|
• Instruction cache statistics characteristics (including cache size, loading
|
|
order, number of bytes loaded per cache miss, and time per cache fetch)
|
|
may differ between versions of GSPs. Code should not depend on the
|
|
state of any of these characteristics.
|
|
|
|
|
|
C.2 Graphics Compatibility
|
|
• Extend the values in the COLORO and COLOR1 registers to 32 bits. The
|
|
TMS34010 uses only the 16 LSBs of these registers; future GSPs may
|
|
use all 32 bits.
|
|
|
|
• Treat the PMASK register as a 32-bit register. The TMS3401 0 uses only
|
|
the 16 bits at address OC0000160h; however, future GSPs may also use
|
|
the 16 bits at address OC0000170h. \AJhenever you save/restore the
|
|
value at OC0000160h, you should also save/restore the value at
|
|
OC0000170h.
|
|
|
|
• When you save/restore the graphics context (this includes all graphics
|
|
operations control registers), you should also save/restore the I/O reg-
|
|
|
|
|
|
|
|
C-2
|
|
Appendix C - Software Compatibility with Future GSPs
|
|
|
|
|
|
isters that are reserved in the TMS34010 I/O register map (addresses
|
|
OC00001 30h-oC00001 AOh) .
|
|
|
|
• At initialization, load register B13 with all 1 s. Future GSPs may use B13
|
|
as a pattern register; if you don't set B13 to the suggested value, future
|
|
devices may draw a patterned line where the TMS3401 0 would draw a
|
|
solid line.
|
|
|
|
• If an instruction uses the CONVSP register, then SPTCH (B1) must
|
|
agree with CONVSP (the 5 LSBs of CONVSP must equal the 1s com-
|
|
plement of 1092 SPTCH, which is given by the LMO of SPTCH). Future
|
|
GSPs may have instructions that use SPTCH to determine the pitch val-
|
|
ues instead of using CONVSP; that is, the instruction may perform the
|
|
1092 conversion automatically.
|
|
Set the 11 MSBs of CONVSP to 0; the TMS3401 0 ignores the values
|
|
of these bits, but future GSPs may use these bits.
|
|
|
|
• If an instruction uses the CONVDP register, then DPTCH (B3) must
|
|
agree with CONVDP (the 5 LSBs of CONVDP must equal the 1 s com-
|
|
plement of 1092 DPTCH, which is given by the LMO of DPTCH). Future
|
|
GSPs may have instructions that use DPTCH to determine the pitch va-
|
|
lues instead of using CONVDP; that is, the instruction may perform the
|
|
1092 conversion automatically.
|
|
Set the 11 MSBs of CONVDP to 0; the TMS3401 0 ignores the values
|
|
of these bits, but future GSPs may use these bits.
|
|
|
|
|
|
|
|
C.3 Memory Map Compatibility
|
|
• The 32 16-bit words following the TMS34010 I/O registers (addresses
|
|
OC0000200h-oC00003FOh) are currently reserved. Future GSPs may
|
|
use these addresses for additional I/O registers, so do not write code that
|
|
uses these addresses.
|
|
|
|
• Do not use any reserved addresses in the TMS3401 0 memory map; fu-
|
|
ture GSPs may use these locations. Specifically, address OFFFFEOOOh,
|
|
which is currently reserved, may be used for system configuration infor-
|
|
mation.
|
|
|
|
|
|
|
|
|
|
C-3
|
|
Appendix C - Software Compatibility with Future GSPs
|
|
|
|
|
|
|
|
C.4 I/O Register and Video Timing Compatibility
|
|
• Future GSPs may use different I/O registers to control video timing and
|
|
VRAM shift register control. The vertical and horizontal counters may
|
|
still be accessible at their current locations. DPYADR, DPYCTL,
|
|
DPYSTRT, and DPYTAP may have new functions and/or addresses.
|
|
HESYNC, HEBLNK, HSBLNK, HTOTAL, VESYNC, VEBLNK, VSBLNK,
|
|
and VTOTAL may have similar functions but different addresses. These
|
|
video control functions may be redefined so that future GSPs can take
|
|
advantage of new advances in video RAM technology.
|
|
|
|
• Code that accesses video timing registers should be separated from other
|
|
code so that you can easily replace it.
|
|
|
|
• Future GSPs may use different DRAM refresh methods; the TMS3401 0
|
|
provides control every 32 or 64 CPU cycles, and it may be necessary to
|
|
have more control.
|
|
|
|
|
|
|
|
C.S Interrupts Compatibility
|
|
• Interrupt service routines should not make assumptions about the state
|
|
of the stack (except for the location of the ST and the PC). Future GSPs
|
|
may push additional parameters or status information on the stack before
|
|
pushing the PC and ST.
|
|
|
|
Note:
|
|
You must use RETI to return from an interrupt service routine. This en-
|
|
sures that any additional parameters that future GSPs may push on the
|
|
stack will also be popped from the stack, and also ensures that the correct
|
|
internal registers will be restored.
|
|
|
|
|
|
• PIXBLT interruption may behave differently on future GSPs. An inter-
|
|
rupted PIXBLT may store status information on the stack instead of in
|
|
registers, and different information may be stored.
|
|
|
|
|
|
Note:
|
|
Do not modify values stored in the register file by an interrupted PIXBLT.
|
|
Future GSPs may not use this information or these locations.
|
|
|
|
|
|
• Opcodes that the TMS34010 flags as illegal may be valid opcodes for
|
|
future GSPs. Therefore, if you want to use a software trap, use the TRAP
|
|
instruction instead of an illegal opcode.
|
|
|
|
• Traps 3-7 and 12-15 are reserved for future interrupts.
|
|
|
|
|
|
|
|
|
|
C-4
|
|
Appendix C - Software Compatibility with Future GSPs
|
|
|
|
|
|
|
|
C.6 Host Interface Compatibility
|
|
• Certain features of the TMS3401 0 host interface may need to be imple-
|
|
mented in external hardware for future GSPs. However, the host inter-
|
|
face registers and their functions will remain the same so that TMS3401 0
|
|
code that uses these registers will be compatible with future GSPs.
|
|
|
|
• Code written for a host processor that accesses the GSP host interface
|
|
may have to be modified to comprehend a modified host interface.
|
|
|
|
|
|
|
|
|
|
C-5
|
|
Appendix C - Software Compatibility with Future GSPs
|
|
|
|
|
|
|
|
|
|
C-6
|
|
Appendix 0
|
|
|
|
Glossary
|
|
|
|
|
|
aliasing: A stairstep effect on a raster display of a line or arc segment.
|
|
antialiasing: A method for reducing the severity of aliasing effects seen in
|
|
lines and edges drawn on a bit-mapped display device. This method adjusts
|
|
the intensity of a pixel used to represent a portion of a line or edge according
|
|
to the pixel's distance from the line or edge. Antialiasing requires that the
|
|
display device be capable of producing one or more intermediate intensity
|
|
levels between bright and off.
|
|
asynchronous communications: A method of transmitting data in which
|
|
the timing of character placement of connecting transmitting lines is not crit-
|
|
ical. The transmitted characters are preceded by a start and followed by a stop
|
|
bit, thus permitting the interval between characters to vary.
|
|
aspect ratio: The ratio of width to height. For the rectangular picture
|
|
transmitted by a television station, the aspect ratio is 4:3.
|
|
back porch: The portion of a horizontal blanking pulse that follows the
|
|
trailing edge of the horizontal synchronizing pulse.
|
|
background illumination: The average brightness of a screen.
|
|
bandwidth: The number of bits per second that can be transferred by a
|
|
device.
|
|
binary array: Alternate name for a two-dimensional bit map in which each
|
|
pixel is represented as single bit.
|
|
BitBlt: Bit aligned block transfer. Transfer of a rectangular array of pixel
|
|
information from one location in a bitmap to another with potential of applying
|
|
1 of 16 boolean operators during the transfer.
|
|
bit map: 1. The digital representation of an image in which bits are mapped
|
|
to pixels. 2. A block of memory used to hold raster images in a device-specific
|
|
format.
|
|
bit plane: Hardware used as a storage medium for a bit map.
|
|
black level: The amplitude of the composite signal at which the beam of the
|
|
picture tube is extinguished (becomes black) to blank retrace of the beam.
|
|
This level is established at 75% of the signal amplitude.
|
|
blanking signal: Pulses used to extinguish the scanning beam during hor-
|
|
izontal and vertical retrace periods.
|
|
|
|
|
|
|
|
|
|
0-1
|
|
Appendix 0 - Glossary
|
|
|
|
|
|
|
|
breakpoint: A place in a routine specified by an instruction, instruction di-
|
|
git, or other condition, where the routine may be interrupted by external in-
|
|
tervention or by a monitor routine.
|
|
clipping: Removing parts of display elements that lie outside a given boun-
|
|
dary, usually a window or a viewport.
|
|
composite video: The color-picture signal plus all blanking and synchro-
|
|
nizing signals. The signal includes luminance and chrominance signals, verti-
|
|
cal- and horizontal-sync pulses, vertical- and horizontal-sync pulses,
|
|
vertical-and horizontal-blanking pulses, and the color-burst signal.
|
|
DAC: Digital-to-analog converter. A device that converts a digital input
|
|
code to an analog output voltage or current. The analog output level repres-
|
|
ents the value of the digital input code.
|
|
direct access: Pertaining to the process of obtaining data from, or placing
|
|
data into, storage where the time required for such access is independent of
|
|
the location of the data most recently obtained or placed in storage.
|
|
display area: The rectangular part of the physical display screen in which
|
|
information coded in conformance with a video encoding standard is visibly
|
|
displayed. The display area does not include the border area.
|
|
display element: A basic graphic element that can be used to construct a
|
|
display image.
|
|
display memory: The area of memory which is used to hold the graphics
|
|
image output to the video monitor.
|
|
display pitch: The difference in memory addresses between two pixels that
|
|
appear in vertically adjacent positions (one directly above the other) on the
|
|
screen.
|
|
display unit: A device which provides a visual representation of data.
|
|
dot clock: The dot clock cycles the rate at which video data is output to a
|
|
CRT monitor.
|
|
DRAM refresh: The operation of maintaining data stored in dynamic
|
|
RAMs. Data are stored in dynamic RAms as electrical charges across a grid
|
|
of capacitive cells. The charge stored in a cell will leak off over time.
|
|
execution unit: The portion of a central processing unit that actually exe-
|
|
cutes the data operations specified by program instructions.
|
|
field: 1. A group of contiguous bits in a register or memory dedicated to a
|
|
particular function or representing a single entity. 2. A software-configurable
|
|
data type in the TMS3401 0 whose length can be programmed to be any value
|
|
in the range 1 to 32 bits.
|
|
fill: Solid coloring or shading of a display surface, often achieved as a pat-
|
|
tern of horizontal segments.
|
|
frame: 1. The time required to refresh an entire screen. 2. The screen image
|
|
output during a single vertical sweep.
|
|
|
|
|
|
|
|
0-2
|
|
Appendix D - Glossary
|
|
|
|
|
|
|
|
frame buffer: A portion of memory used to buffer rasterized data to be
|
|
output to a CRT display monitor. The contents of the frame buffer are often
|
|
referred to as the bit map of the display and contain the logical pixels corre-
|
|
sponding to the points on the monitor screen.
|
|
front porch: The portion of a horizontal blanking pulse that precedes the
|
|
leading edge of the horizontal sync pulse.
|
|
GKS: Graphical Kernel System. An application programmer's standard in-
|
|
terface to a graphics display.
|
|
glue logic: The small- and medium-scale-integrated devices necessary to
|
|
complete the interface between two or more large or very-large-scale inte-
|
|
grated devices.
|
|
gray scale: A scale of light intensities from black to white.
|
|
GSP: Graphics System Processor. A single-chip device embodying all the
|
|
processing power and control capabilities necessary to manage a high-
|
|
performance bit-mapped graphics system. The TMS34010 is the first such
|
|
device.
|
|
high-impedance: The third state of a three-state output driver, in which the
|
|
output is driven neither high or low but behaves as an open connection.
|
|
hold signal: A signal from a device capable of controlling a processor bus
|
|
(for example, a processor or a DMA controller) which the device sends to a
|
|
bus arbiter to request control of the bus. Typically, the arbiter signals the
|
|
granting of the request by sending a hold-acknowledgement signal to the re-
|
|
questing device.
|
|
hold time: The minimum amount of time that valid data must be present at
|
|
an input after the device is clocked to ensure proper data acceptance.
|
|
horizontal blanking interval: The time during which the display is
|
|
blanked to cover the horizontal retracing of the electron beam.
|
|
horizontal sync: The synchronization signal that enables horizontal retrace
|
|
of the electron beam of a CRT display.
|
|
icon: A graphic symbol representing a menu item.
|
|
interlaced scanning: A system of TV-picture scanning. Odd-numbered
|
|
scanning lines, which make up an odd field, are interlaced with the even-
|
|
numbered lines of an even field. The two interlaced fields constitute one
|
|
frame. In effect, the number of transmitted pictures is doubled, thus reducing
|
|
flicker.
|
|
lookup table: A table used during scan conversion of the digital image that
|
|
converts color-map addresses into the actual color values displayed.
|
|
LRU: Least-recently-used cache-replacement algorithm. When a cache miss
|
|
occurs, a cache-replacement algorithm selects which cache segment will be
|
|
overwritten, based on the likelihood that the data in the discarded segment
|
|
will not be needed again for some time. The LRU algorithm selects the seg-
|
|
ment which was used least recently.
|
|
|
|
|
|
|
|
0-3
|
|
Appendix 0 - Glossary
|
|
|
|
|
|
|
|
mask: A pattern of characters that is used to control the retention or elimi-
|
|
nation of portions of another pattern of characters.
|
|
memory map: A map of memory space partitioned into functional blocks.
|
|
monotonicity: The quality of proceeding in a uniform manner. For exam-
|
|
ple, the analog level output from a DAC should increase with each increase in
|
|
the value of the digital input code.
|
|
multiplexing: Refers to a process of transmitting more than one set of sig-
|
|
nals at a time over a single wire or communications link.
|
|
NABTS: North American Broadcast Teletext Specification
|
|
NAPLPS: Abbreviation for the North American Presentation Level Protocol
|
|
Syntax, which is a proposed standard for Videotex services.
|
|
nonmaskable interrupt: An interrupt request that cannot be disabled.
|
|
NMI: Nonmaskable interrupt. The NMI is an interrupt that is permanently
|
|
enabled; it cannot be disabled.
|
|
NTSC: Abbreviation for the National Television System Committee, a group
|
|
representing a wide range of interests in the television broadcast and video
|
|
industry. The NTSC is instrumental in developing standards.
|
|
operand: That which is operated upon. An operand is usually identified by
|
|
an address part of an instruction.
|
|
origin: The zero intersection of X and Y axes from which all points are cal-
|
|
culated.
|
|
overlay: The plane of a graphics display that can be superimposed on an-
|
|
other plane.
|
|
pack: To compress data in a storage medium by eliminating redundant in-
|
|
formation in such a way that the original data can later be recovered.
|
|
palette: A digital lookup table used in a computer graphics display for
|
|
translating data from the bit map into the pixel values to be shown on the
|
|
display.
|
|
pan: Apparent horizontal or vertical movement of a computer graphics screen
|
|
(or window) over an image contained in a frame buffer that is too large to be
|
|
completely displayed in a single static picture.
|
|
phase: The time interval for each clock period in a system is divided into two
|
|
phases. One phase corresponds to the time the clock signal is high, and the
|
|
other phase corresponds to the time the clock signal is low.
|
|
PHIGS: The programmer's Hierarchical Interactive Graphics Standard
|
|
pipelining: A design technique for reducing the effective propagation delay
|
|
per operation by partitioning the operation into a series of stages, each of
|
|
which performs a portion of the operation. A series of data is typically clocked
|
|
through the pipeline in sequential fashion, advancing one stage per clock pe-
|
|
riod.
|
|
|
|
|
|
|
|
0-4
|
|
Appendix 0 - Glossary
|
|
|
|
|
|
pitch: The difference in starting addresses of two adjacent rows of pixels in
|
|
a two-dimensional pixel array.
|
|
pixel: Picture element. 1. The smallest controllable point of light on a CRT
|
|
display screen. 2. In a bit-mapped display, the logical data structure that
|
|
contains the attributes to be shown at the corresponding physical pixel posi-
|
|
tion on the CRT display screen.
|
|
pixel processing operation: A specified Boolean or arithemetic operation
|
|
used to combine two pixel values (source and destination).
|
|
PixBlt: (Abbreviation of Pixel Block transfer) Operations on arrays of pixels
|
|
in which each pixel is represented by one or more bits. PixBlt operations are
|
|
a superset of BitBlt operations, and include not only the commonly-used
|
|
boolean functions, but also integer arithmetic and other multi-bit operations.
|
|
plane: (Also bit plane or color plane.) A plane is a bit-map layer in a display
|
|
device with multiple bits per pixel. If the pixel size is n bits, and the bits in
|
|
each pixel are numbered 0 to n-1 , plane 0 is made up of bits numbered 0 from
|
|
all the pixels, and the plane n-1 is made up of bits numbered n-1 from all the
|
|
pixels. A layered graphics display allows planes or groups of planes to be
|
|
manipulated independently of the other planes.
|
|
primary colors: A set of three colors from which all other colors may be
|
|
regarded as derived; hence, any of a set of visual stimuli from which all colors
|
|
may be produced by mixture. Each primary color must be different from the
|
|
others, and a combination of two primaries must be capable of producing a
|
|
third. In color television, the three primary colors are red, green and blue.
|
|
propagation delay: The time required for a change in logic level at an input
|
|
to a circuit to be translated into a resulting change at an output.
|
|
protocol: A set of rules, formats, and procedures governing the exchange
|
|
of information between peer processes at the same level.
|
|
pulse width: Pulse width, Tw. The time interval between specified refer-
|
|
ence points on the leading and trailing edges of the pulse waveform.
|
|
Random Access Memory (RAM): A memory from which all information
|
|
can be obtained at the output with approximately the same time delay by
|
|
choosing an address randomly and without first searching through a vast
|
|
amount of irrelevant data.
|
|
raster: A rectangular grid of picture elements whose intensity levels are
|
|
manipulated to represent images. In a bit-mapped display, the bits within a
|
|
portion of the memory referred to as the frame buffer are mapped to the raster
|
|
pattern of a CRT monitor.
|
|
raster display: A CRT display generated by an electron beam that illumi-
|
|
nates the CRT by sweeping the beam horizontally across the phosphor surface
|
|
in a predetermined pattern, providing substantially uniform coverage of the
|
|
display area.
|
|
raster graphics: Computer graphics in which a display image is composed
|
|
of an array of pixels arranged in rows and columns.
|
|
|
|
|
|
|
|
|
|
0-5
|
|
Appendix 0 - Glossary
|
|
|
|
|
|
Raster-Op: The arithmetic or logical combination operation that takes place
|
|
during the transfer of pixel arrays from one location to another.
|
|
raster scan: The grid pattern traced by the electron beam on the face of the
|
|
CRT in a television or similar raster-scan display device.
|
|
ready signal: A signal from a memory or a memory-mapped peripheral that
|
|
informs the processor when it is ready to complete a memory cycle. Slower
|
|
memories or memory-mapped peripherals must extend the length of the me-
|
|
mory cycle by negating the ready signal (in other words, by sending the pro-
|
|
cessor a "not ready" signal until such time as the cycle can be completed.
|
|
resolution: The number of visible distinguishable units in the device coor-
|
|
dinate space.
|
|
refresh: Method which restores charge on capacitance which deteriorates
|
|
because of leakage.
|
|
reset: To restore to normal action.
|
|
resolution: The number of visible distinguishable units in the device coor-
|
|
dinate space.
|
|
retrace: The line traced by the scanning beam or beams of a picture tube
|
|
as it travels from the end of one horizontal line or field to the beginning of the
|
|
next line or field.
|
|
RGB monitor: Red-Green-Blue Monitor. An RGB monitor is a CRT moni-
|
|
tor capable of displaying colors and having separate inputs for the three sig-
|
|
nals used to drive the red, green and blue guns of the CRT.
|
|
relative coordinates: Location of a point relative to another data point.
|
|
rotate: To transform a display or display item by revolving it around a spe-
|
|
cified axis or center point.
|
|
scale: A size change made by multiplying or dividing the coordinate dimen-
|
|
sions by a constant value.
|
|
scale factor: The value by which you divide or multiply the display dimen-
|
|
sions in a scaling operation.
|
|
scaling: Enlarging or reducing all or part of a display image by multiplying
|
|
the coordinates of display elements by a constant value.
|
|
scan line: A horizontal line traced across a CRT by the electron beam in a
|
|
television or similar raster-scan device.
|
|
screen refresh: The operation of dumping the contents of the frame buffer
|
|
to a CRT monitor in synchronization with the movement of the electron beam.
|
|
sCiolling: ~v1oving text stiings Oi giaphics vertically Oi hOiizontally.
|
|
|
|
segment: A collection of display elements that can be manipulated as a unit.
|
|
sequencing: Control method used to cause a set of steps to occur in a
|
|
particular order.
|
|
|
|
|
|
|
|
0-6
|
|
Appendix D - Glossary
|
|
|
|
|
|
setup time: The minimum amount of time that valid data must be present
|
|
at an input before the device is clocked to ensure proper data acceptance.
|
|
shift register transfer: A transfer between the RAM storage and internal
|
|
shift register in a video RAM.
|
|
sprite: A graphic object of a specified pattern appearing on its plane in a
|
|
position determined by a single coordinate pair, specifying the sprite's location
|
|
on the screen in the horizontal and vertical axis.
|
|
stairstepping: A visual effect seen in bit-mapped display devices which
|
|
produce images by brightening or dimming individual picture elements (or
|
|
pixels) contained in a two-dimensional grid of such elements. Stairstepping
|
|
(also called aliasing) is the rough or jagged appearance of lines and edges
|
|
which are not perfectly horizontal or vertical, resulting from transitions of the
|
|
line or edge from one row or column of elements to another.
|
|
superimposed: Refers to the process that moves data from one location to
|
|
another, superimposing bits or characters on the contents of specified lo-
|
|
cations.
|
|
tap point: The column address provided to a VRAM during a memory-to-
|
|
shift-register cycle. The column address specifies the point at which the shift
|
|
register is to be "tapped;" in other words, which cell of the shift register is to
|
|
be connected to the serial output of the VRAM.
|
|
trace: A line of the graphics display.
|
|
transformation: Geometric alteration of a graphics display, such as scaling,
|
|
translation, or rotation.
|
|
transparency: When a pixel with the attribute of transparency is written IO
|
|
the screen, it is effectively invisible, and does not alter that portion of the
|
|
screen it is written to. For example, in a pixel array containing the pattern for
|
|
the letter A, all pixels surrounding the A pattern could be given a special value
|
|
indicating that they are transparent. When the array is written to the screen,
|
|
the A pattern, but not the pixels in the rectangle containing it, would be in-
|
|
visible.
|
|
VDI: Virtual Device Interface. The standard interface between the device-
|
|
independent and the device-dependent levels of a graphics system.
|
|
VDM: Virtual Device Metafile. A standard mechanism for retaining and and
|
|
transporting graphics data and control information at the level of the Virtual
|
|
Device Interface.
|
|
vertical blanking interval: The time during which the display is blanked
|
|
to cover the vertical retracing of the electron beam.
|
|
vertical blanking pulse: A positive or negative pulse developed during
|
|
vertical retrace and appearing at the end of each field. It is used to blank out
|
|
scanning lines during the vertical retrace interval.
|
|
vertical sync: The synchronization signal that enables vertical retrace of the
|
|
electron beam of a CRT display.
|
|
video display processor: A microprocessor device dedicated to the tasks
|
|
of display memory management (storage, retrieval, and refresh) and gener-
|
|
|
|
0-7
|
|
Appendix 0 - Glossary
|
|
|
|
|
|
ation of all required video, control, and synchronization signals required by a
|
|
TV display or CRT monitor.
|
|
video overlay: The mixing of one video signal with another such that parts
|
|
of the image carried by the first signal replace the corresponding parts of the
|
|
image carried by the second signal.
|
|
video RAM, VRAM: Video Random-Access Memory. A dual-ported me-
|
|
mory device for computer graphics applications, containing two interfaces;
|
|
one interface to allow a processor to read or write data from an internal mem-
|
|
ory array; a second interface to provide a serial stream of screen refresh data
|
|
to a CRT display device.
|
|
viewport: The specified window on the display surface that marks the limits
|
|
of a display.
|
|
virtual coordinate system: A coordinate system created by mapping a
|
|
portion of the world coordinate system to the space available on your device.
|
|
virtual space: Space referenced with the coordinates defined by the appli-
|
|
cation.
|
|
wait state: A clock period inserted into a memory cycle in order to permit
|
|
accesses of slower memories and slower memory-mapped peripherals.
|
|
window: A specified rectangular area of a virtual space shown on the dis-
|
|
play.
|
|
window clipping: Allowing text and graphics drawing to occur only within
|
|
a specified rectangular window on the screen.
|
|
wire frame: A three-dimensional image displayed as a series of line seg-
|
|
ments outlining its surface.
|
|
zoom: To scale a display or display item so it is magnified or reduced on the
|
|
screen.
|
|
|
|
|
|
|
|
|
|
0-8
|
|
Index
|
|
|
|
|
|
B1 (SPTCH) 5-7
|
|
A B10 (COUNT) 5-17
|
|
B11 (INC1) 5-17
|
|
ABS instruction 12-35 B12 (INC2) 5-17
|
|
absolute branch 5-19 B13 (PATIRN) 5-17
|
|
absolute operands 12-5 B13 (TEMP) 5-17
|
|
ADD instruction 12-36 B2 (DADDR) 5-8
|
|
add with saturation 7-16 B3 (DPTCH) 5-10
|
|
ADDC instruction 12-37 B4 (OFFSET) 5-11
|
|
ADDI instruction 12-38, 12-39 B5 (WSTART) 5-12
|
|
ADDK instruction 12-40 B6 (WEND) 5-13
|
|
addressing 3-2-3-3 B7 (DYDX) 5-14
|
|
addressing modes 12-4 B8 (COLORO) 5-15
|
|
ADDXY instruction 12-41 B9 (COLOR1) 5-16
|
|
A-file registers 5-2
|
|
airbrush effect 7-23
|
|
ALU 1-6
|
|
AN 0 instruction 12-42 c
|
|
ANDI instruction 12-43
|
|
ANON instruction 12-44 C bit 5-18
|
|
ANDNI instruction 12-45 C compiler 1-12
|
|
antialiasing 7 -23 cache disable 6-14
|
|
applications 1 -8 cache hit 5-22
|
|
arithmetic instructions 12-19 cache miss 5-22
|
|
array pitch 4-16 cache replacement algorithm 5-21
|
|
CALL instruction 12-48
|
|
CALLA instruction 12-49
|
|
CALLR instruction 12-50
|
|
B Cartesian coordinates 4-16
|
|
CAS 2 -7, 11 -2
|
|
background color register 5-15 CD bit 5-24,6-11,6-14
|
|
bank selection 11-25 CF bit 5-23, 5-24, 6-32, 6-33
|
|
barrel shifter 1 -6 chip select pin 2-5
|
|
B-file registers 5-3, 5-5-5-17 clearing ...
|
|
Bt:A'N'R 2-9, 9-3 a register 12-51
|
|
blanking 2-9, 6-27, 6-29, 6-49, 6-51 the carry bit 12-52
|
|
block diagram 1-5 clock timing logic 1 -7
|
|
Boolean operations 7 -1 7 CLR instruction 12-51
|
|
Boolean pixel processing 6-13 CLRC instruction 12-52
|
|
Bresenham line algorithm 7-2,7-10 CMP instruction 12-53
|
|
BTST instruction 12-46, 12-47 CMPI instruction 12-54, 12-55
|
|
bulk initialization of VRAMs 9-18, 9-26 CMPXY instruction 12-56
|
|
bus request priorities 11 -4 Cohen-Sutherland algorithm 7-30
|
|
bus request signal 2-10 color planes 7 -12
|
|
byte addressing 10-20 color-expand operation 7-5
|
|
bytes 4-1 COLORO register 5-15
|
|
BO (SADDR) 5-6 COLOR1 register 5-16
|
|
|
|
|
|
Index-1
|
|
column address strobe 2-7 refresh cycles 6 -11
|
|
compare instructions 12-19 refresh interval 6-46
|
|
compare point to window 7-3 refresh rate 6 -11
|
|
context switching instructions 12-29 DRAM refresh 11-11,11-12,11-25
|
|
CONTROL 6-11 DRAV instruction 12-67
|
|
CONTROL register 6-11 draw and advance 7 -10
|
|
CONVDP 7-4 DSJ instruction 12-70
|
|
CONVDP register 4-12,6-15 DSJ EQ instruction 12-71
|
|
conversion factor 6-15, 6-16 DSJNE instruction 12-73
|
|
CONVSP 7-4 DSJS instruction 12-75
|
|
CONVSP register 4-12, 6-16 DUDATE bits 6-19, 6-20
|
|
COUNT register 5-17 DXV bit 6-19,6-22
|
|
CPW instruction 12-57 DYDX register 5-14
|
|
CVXYL instruction 12-59
|
|
|
|
|
|
E
|
|
D
|
|
EINT instruction 12-76
|
|
DADDR register 5-8 EMU instruction 12-77
|
|
data enable pin 2-7 emulation 2-10
|
|
data paths 1 -6, 5-25 enabling interrupts 12-76
|
|
data select pins 2-5 ENV bit 6-19
|
|
data structures EXG F instruction 12-78
|
|
bytes 4-1 EXG PC instruction 12-79
|
|
fields 4-1,4-2-4-5 external interlaced video 9-17
|
|
pixel arrays 4-1 external interrupts 8-3
|
|
pixels 4-1,4-6-4-10 external synchronization 9-15
|
|
DDOUT 2-7, 11-2 external video 6-19
|
|
DEC instruction 12-61
|
|
DEN 2-7, 11-2
|
|
destination address register 5-8
|
|
destination conversion factor 6-15 F
|
|
destination pitch register 5-10
|
|
development tools list 1 -3 FE bit 4-2
|
|
DIE bit 6-40 FEO bit 5-18
|
|
DINT instruction 12-62 FE1 bit 5-18
|
|
DIP bit 6-41 field size 5-18, 5-19
|
|
direct operands 12-6 fields 4-1, 4-2-4-5
|
|
display interrupt 8-5,9-13 addressing 4-2
|
|
display memory 9-18 alignment 4-3
|
|
display pitch 4-10,5-7,5-10,6-15, extraction 4-2
|
|
6-16,9-18 insertion 4-2, 4-5
|
|
DIVS instruction 12-63 size 4-2
|
|
DIVU instruction 12-65 fill 7-5
|
|
dot rate 9-14 FILL instruction 12-80, 12-84
|
|
DPTCH register 5-10, 6-15 font library 1 -1 2
|
|
DPYADR register 6-17 foreground color register 5-16
|
|
DPYCTL register 6-19 FSO 4-2
|
|
DPYINT register 6-23 FSO bits 5-18
|
|
DPYSTRT register 6-24 FS1 4-2
|
|
DPYTAP register 6-25 FS1 bits 5-18
|
|
DRAM 6-11,11-5 function select pins 2-5
|
|
|
|
|
|
|
|
|
|
Index-2
|
|
HSTADRH 10-3
|
|
G HSTADRH register 6-30
|
|
HSTADRL 6-31, 10-3
|
|
general-purpose register files 1-5, 5-2- HSTCTL 10-3
|
|
5-17 HSTCTLH 6-32, 10-3
|
|
GETPC instruction 12-89 HSTCTLL 6-36, 10-3
|
|
GETST instruction 12-90 HSTDATA 6-38,10-3
|
|
graphics instructions 12-26 selection 10-2
|
|
graphics standards 1 -2 signals 10-2
|
|
timing examples 10-5
|
|
host interface bus pins 2-3, 2-5
|
|
HCS 2-5
|
|
H HDO-HD15 2-6
|
|
HFSO,HFS1 2-5
|
|
HINT 2-6
|
|
halt latency 1 0-1 9 HLDS 2-5
|
|
halt program execution 6-35
|
|
HRDY 2-6
|
|
HCOUNT register 6-26 HREAD 2-5
|
|
HCS 2-5, 10-2 H015S 2-5
|
|
HDO-HD15 2-6,10-2
|
|
HWRITE 2-5
|
|
HEBLNK register 6-27 host interrupt 8-5
|
|
HESYNC register 6-28
|
|
host read/write strobes 2-5
|
|
HFSO, HFS1 2-5, 10-2
|
|
host-present mode 8-10, 8-13
|
|
hidden states 13-2 HRDY 2-6,10-2, 10-8
|
|
HIE bit 6-40 HREAD 2-5,10-2
|
|
HINT 2-6, 10-2 HSBLNK register 6-29
|
|
HIP bit 6-41
|
|
HSD bit 6-19
|
|
HLDA/EMUA 2-10 HSTADRH register 6-30
|
|
HLDS 2-5, 10-2 HSTADRL register 6-31
|
|
HLT bit 5-23,6-3,6-32,6-35
|
|
HSTCTLH register 6-32
|
|
HOLD 2-10
|
|
HSTCTLL register 6-36
|
|
hold and emulation signals 2-4, 2-10 HSTDATA register 6-38
|
|
'R"[1)A/EMUA 2-10
|
|
HSYNC 2-9,6-22,6-26,9-3
|
|
HOLD 2-10 HTOTAL register 6-39
|
|
RUN/EMU 2-10 ~ 2-5, 10-2
|
|
hold interface 11 -18 HWRITE 2-5, 10-2
|
|
hold request 11 -4
|
|
horizontal back porch 9-5
|
|
horizontal front porch 9-5
|
|
horizontal sync 2-9
|
|
horizontal timing 9-12
|
|
horizontal timing registers
|
|
HCOUNT 6-26, 9-4 I/O registers 1 -6, 6-1 -6-52
|
|
HEBLNK 6-27, 9-4 addressing 6-2
|
|
HESYNC 6-28, 9-4 at reset 6-3
|
|
HSBLNK 6-29, 9-4 host interface registers 6-7
|
|
HTOTAL 6-39, 9-4 interrupt interface registers 6-8
|
|
horizontal video timing 9-6, 9-7 latency of writes 6-4
|
|
host interface 10-1, 10-24 local memory interface registers 6-8
|
|
bandwidth 10-22 memory map 6-2
|
|
data transfer 10-8 summary 6-5
|
|
indirect accesses of local video timing and screen refresh regis-
|
|
memory 10-11 ters 6-9
|
|
reads and writes 10-4 IE bit 5-18
|
|
ready signal to host 10-8 illegal opcode interrupts 8-9
|
|
reg isters 6 -7 illegal operand 8-5
|
|
|
|
|
|
Index-3
|
|
immediate operands 12-4 registers 6-8
|
|
implied graphics operands 5-5 I NTEN B 6-40, 8-3
|
|
INC instruction 12-91 I NTPEN 0 6-41, 8-3
|
|
INCLK 2-7, 11-2 interruptible instructions 7-8
|
|
INCR bit 6-32, 6-34, 10-11 interrupts 2-6, 8-1-8-8
|
|
incremental algorithms 7 -10 display interrupt 6-23, 8-5, 9-13
|
|
INCW bit 6-32, 6-35, 10-11 enable bit 5-18
|
|
INC1 register 5-17 external interrupts 8-3
|
|
INC2 register 5-17 host interrupt 8-5
|
|
indirect accesses of local memory 10-11 host interrupt request signal 2-6
|
|
indirect branch 5-19 IE bit 5-18
|
|
indirect operands 12-7,12-8,12-9, illegal opcode interrupts 8-9
|
|
12-10,12-11 illegal operand 8-5
|
|
in XV mode 12-11 INTENB 6-40
|
|
with offset 12-8 internal interrupts 8-5
|
|
with postincrement 12-9 interrupt request pins 8-3
|
|
with predecrement 12-10 interrupt requests 6-37
|
|
input clock 2-7 INTIN bit 6-37
|
|
instruction cache 1-6, 5-20-5-25 INTOUT bit 6-37
|
|
cache disable 6-14 INTPEND 6-41
|
|
cache flush 6-33 local interrupt request signals 2-8
|
|
cache hit 5-22 nonmaskable interrupt 6-32, 6-33,
|
|
cache miss 5-22 8-5
|
|
cache replacement algorithm 5-21 priorities 8-2, 8-5
|
|
disabling 5-24 processing 8-6
|
|
downloading new code 5-23 reg isters 8 -3
|
|
flushing 5-23 RESET 2-11
|
|
LRU stack 5-21 stack operations 3-8
|
|
operation 5-22 vector addresses 8-2
|
|
P flag 5-22 window interrupt 8-5
|
|
segment miss 5-22 intersecting rectangles 7-3
|
|
segments 5-21 INTIN bit 6-36, 6-37
|
|
SSA register 5-21 INTOUT bit 6-36, 6-37
|
|
subsegment miss 5-22 INTPEND register 6-12, 6-41
|
|
instruction set 12-1
|
|
addressing modes 12-4
|
|
arithmetic instructions 1 2 -1 9
|
|
compare instructions 12-19 J
|
|
condition codes 12-31
|
|
graphics instructions 12-26 JAcc instruction 12-92
|
|
jump instructions 12-30 J Rcc instruction 12-94, 12-96
|
|
logical instructions 12-19 JUMP instruction 12-98
|
|
move instructions 12-20 jump instructions 12-30
|
|
operand formats 12-4
|
|
program control instructions 12-29
|
|
shift instructions 12-32
|
|
instruction words 5-20 K
|
|
INTENB register 6-40
|
|
interlaced display 9-25
|
|
interlaced video 9-1 i, 9-17 key features of the TMS3401 0 1 -3
|
|
internal interrupts 8-5
|
|
interrupt interface
|
|
|
|
|
|
|
|
|
|
Index-4
|
|
LRDY 2-8, 11-2
|
|
L
|
|
LADO-LAD15 2-8, 11 -2
|
|
LAL 2-7,11-2 M
|
|
LBL bit 6-32, 6-34
|
|
LCLK1,LCLK2 2-8, 11 -2 MAX operation 7 -16
|
|
LCSTRT bits 6-24 memory bus request priorities 11 -4
|
|
line clipping 7 -29 memory map 3-4
|
|
LINE instruction 12-99 message buffers 6-36, 6-37
|
|
linear addressing 4-10 microcontrol ROM 1 -7
|
|
LlNT1,LlNT2 2-8,8-3, 11-2 midpoint subdivision 7 -30
|
|
LMO instruction 12-108 MIN operation 7-16
|
|
LNCNT bits 6-17,6-24 MMFM instruction 12-109
|
|
local address/data bus 2-8 MMTM instruction 12-111
|
|
local memory interface 11 -1, 11 -30 MODS instruction 12-113
|
|
addressing mechanisms 11-23 MODU instruction 12-114
|
|
hold interface timing 11 -18 MOVB instruction 12-115,12-116,12-
|
|
I/O register access cycles 11-13 117,12-118,12-119,12-120,12-121,
|
|
internal cycles 11 -13 1 2 -1 23, 1 2 -1 24
|
|
memory bus request priorities 11 -4 MOVE instruction 12-126, 12-127, 12-
|
|
read cycle 11 -8 128, 12-130, 12-132, 12-134, 12-135,
|
|
read-modify-write operations 11-15 12-137,12-139,12-141,12-143,12-
|
|
registers 6-8 145, 12-147, 12-149, 12-151, 12-153,
|
|
CONTROL 6-11, 11-3 12-155,12-157,12-159,12-160
|
|
CONVDP 6-15, 11-3 move instructions 12-20
|
|
CONVSP 6-16, 11-3 MOVK instruction 12-161
|
|
PMASK 6-43, 11-3 MOVX instruction 12-162
|
|
PSIZE 6-45, 11-3 MOVY instruction 12-163
|
|
REFCNT 6-46, 11-3 MPYS instruction 12-164
|
|
register-transfer cycles 11 -9 MPYU instruction 12-166
|
|
signals 11 -2 MSGIN bits 6-36
|
|
timing 11 -5-11 -22 MSGOUT bits 6-36, 6-37
|
|
wait states 11 -1 6 multiple-GSP systems 9-15
|
|
write cycle 11 -7
|
|
local memory interface pins 2-4, 2-7 -2-8
|
|
CAS 2-7
|
|
DDOUT 2-7 N
|
|
DEN 2-7
|
|
INCLK 2-7
|
|
LADO-LAD15 2-8 Nbit 5-18
|
|
LAL 2-7 NEG instruction 12-168
|
|
LCLK1,LCLK2 2-8 NEG B instruction 12-169
|
|
LlNT1,LlNT2 2-8 NIL bit 6-19, 6-22
|
|
LRDY 2-8 NMI bit 6-32
|
|
RAS 2-7 non-branch 5-19
|
|
TR/OE 2-7 noninterlaced video 9-9
|
|
W 2-7 nonmaskable interrupt 6-8, 6-32, 8-5
|
|
local read/write strobes 2-7 nonmaskable interrupt mode 6-33
|
|
logical instructions 12-19 NOP instruction 12-170
|
|
logical pixels 4-6 NOT instruction 12-171
|
|
|
|
|
|
|
|
|
|
Index-5
|
|
o program counter 1 -5, 5-19
|
|
PSIZE register 4-12, 6-45
|
|
PUSHST instruction 12-228
|
|
OFFSET register 4-12, 5-11 PUTST instruction 12-229
|
|
on-screen memory 9-18
|
|
OR instruction 12-172
|
|
ORG bit 6-19, 6-20
|
|
ORI instruction 12-173 R
|
|
outcode 7-30
|
|
output clocks 2-8 RAS 2-7,11-2
|
|
REFCNT register 6-46
|
|
references 1 -11
|
|
p register file A 5-2
|
|
register file B 5-3, 5-5-5-17
|
|
register-direct operands 12-6
|
|
P flag 5-22 related documentation 1 -1 2
|
|
panning 9-25 relative branch 5-1 9
|
|
PATTRN register 5-17 replace operation 7 -18
|
|
PBHbit 6-11,6-12 RESET 2-11,8-10-8-13
|
|
PBV bit 6-11, 6-13 effect on cache 5-21
|
|
PBX bit 5-18 effect on instruction cache 8-11
|
|
PC 5-19 effect on TMS3401 0 registers 8-12
|
|
pick window 7 -26 effects on I/O registers 6-3
|
|
picture elements 4-6 HLT bit 6-35
|
|
pin descriptions 2-2 RETI instruction 12-230
|
|
pinout 2-2 RETS instruction 12-232
|
|
pitch 7-4 REV instruction 12-233
|
|
pitch conversion factors 4-1 2 RINTVL bits 6-46
|
|
PlxBlt direction 6-13 RL instruction 12-234, 12-235
|
|
PIXBLT instruction 12-174, 12-179, row address strobe 2-7
|
|
12-187,12-193,12-200,12-206 row and column addressing 11 -6
|
|
PixBlts 4-15, 7-4 ROWAOR bits 6-46
|
|
pixel array 4-1 5 RR bit 6-11
|
|
pixel block transfers 4-15, 7-4 RUN/EMU 2-10
|
|
pixel processing 6-1 3, 7 -1 5
|
|
pixels 4-1,4-6-4-10
|
|
addressing 4-6
|
|
on the screen 4- 7 s
|
|
pixel size 6-45
|
|
PSIZE register 6-45 SAOOR register 5-6
|
|
representation in a register 4-6 scan line counter 6-17
|
|
size 4-6 screen origin 4-8, 6-19, 6-20
|
|
storage in memory 4-7 screen refresh 6-21,6-24, 9-1-9-27
|
|
XV addressing 4-8 screen refresh enable 6-19
|
|
PIXT instructions 12-213, 12-215, 12- screen size limits 9-2
|
|
218,12-220,12-222,12-224 screen-refresh address 6-17
|
|
plane mask 7 -1 2 screen-refresh cycles 9-18
|
|
plane masking 6-43 SOB 1-12
|
|
DII." J\CI{ r"" ... i.,+""r ~_A'2
|
|
I IYlr-1o",," I\,I,=,I~L"" V '"TV
|
|
segment miss 5-22
|
|
POPST instruction 12-227 self-bootstrap mode 8-10, 8-13
|
|
postclipping 7 -29 self-modifying code 5-23
|
|
PP bit 6-11 SETC instruction 12-236
|
|
PPOP bits 6-13 SETF instruction 12-237
|
|
preclipping 7-29 SEXT instruction 12-238
|
|
program control instructions 12-29 shift instructions 12-32
|
|
|
|
Index-6
|
|
shift register transfer enable pin 2-7
|
|
shift register transfers 6-19 v
|
|
sign (N) bit 5-18
|
|
SLA instruction 12-239, 12-240 V bit 5-18
|
|
SLL instruction 12-241, 12-242 and window checking 7-25
|
|
software development board 1 -1 2 VCLK 2-9, 9-3
|
|
software traps 8-9 VCOUNT register 6-23, 6-48
|
|
source address register 5-6 VEBLNK register 6-49
|
|
source conversion factor 6-16 vector addresses 8-2
|
|
source pitch register 5-7 vertical back porch 9-5
|
|
SP 1-6,3-6,5-2,5-4 vertical front porch 9-5
|
|
SPTCH register 5-7,6-16 vertical sync 2-9
|
|
SRA instruction 12-243, 12-244 vertical timing registers
|
|
SRE bit 6-19, 6-21 VCOUNT 6-48, 9-4
|
|
SRFADR bits 6-17, 6-24 VEBLNK 6-49, 9-4
|
|
SRL instruction 12-245, 12-246 VESYNC 6-50, 9-4
|
|
SRSTRT bits 6-24 VSBLNK 6-51, 9-4
|
|
SRT bit 6-19, 6-21 VTOTAL 6-52, 9-4
|
|
SSA register 5-21 vertical video timing 9-8-9-12
|
|
ST 5-18 VESYNC register 6-50
|
|
stack 3-6-3-11 video clock 2-9
|
|
multiple-register operations 3-8 video enable 6-19
|
|
operation during a subroutine 3-9 video timing 9-1 -9-27
|
|
operation during interrupts 3-9 video timing and screen refresh
|
|
structure 3-7 display address 6-17, 6-19
|
|
32-bit register operations 3-8 display interrupt 6-23
|
|
stack pointer 5-2, 5-4 reg isters 6 -9
|
|
starting address of array 4-15, 7-7 DPYADR 6-17
|
|
starting corner selection 7 -7 DPYCTL 6-19
|
|
status register 1 -5, 5-18-5-19 DPYINT 6-23
|
|
strobes 10-4 D PYSTRT 6-24
|
|
SUB instruction 12-247 DPYTAP 6-25
|
|
SUBB instruction 12-248 HCOUNT 6-26, 9-4
|
|
SUBI instruction 12-249, 12-250 HEBLNK 6-27, 9-4
|
|
SUBK instruction 12-251 H ESYNC 6-28, 9-4
|
|
subroutine calls 12-48, 12-49, 12-50 HSBLNK 6-29, 9-4
|
|
subsegment miss 5-22 HTOT AL 6-39, 9-4
|
|
subtract with saturation 7 -16 VCOUNT 6-48, 9-4
|
|
SUBXY instruction 12-252 VEBLNK 6-49, 9-4
|
|
VESYNC 6-50, 9-4
|
|
VSBLNK 6-51, 9-4
|
|
VTOTAL 6-52, 9-4
|
|
T video timing signals 9-3
|
|
video timing signals 2-4, 2-9
|
|
T bit 6-11 BLANK 2-9
|
|
tap point register 6-25 HSYNC 2-9
|
|
TEMP register 5-17 VCLK 2-9
|
|
TR/QE 2-7, 11-2 VSYNC 2-9
|
|
transparency 7 -11 VRAM 11-5
|
|
enabling (T bit) 6-12 VRAMs 6-9, 9-18
|
|
TRAP 8-9 bulk initialization 9-26
|
|
TRAP instruction 12-253 tap point address 6-25
|
|
traps 8-9 VSBLNK register 6-51
|
|
two-dimensional arrays 4-15, 7-4
|
|
|
|
|
|
|
|
Index-7
|
|
VSYNC 2-9, 6-22, 9-3
|
|
VTOTAL register 6-52 x
|
|
XOR instruction 12-255
|
|
w XORI instruction 12-256
|
|
XY addressing 4-8, 4-10, 4-11, 4-14,
|
|
5-14
|
|
W 2-7,11-2 benefits 4-11
|
|
Wbit 6-11,6-12 DYDX register 5-14
|
|
WEND register 5-13 format 4-11
|
|
window checking 4-16,6-12,7-25 OFFSET register 5-11
|
|
window clipping 7 -27 XY -to-linear conversion 4-12, 6-15,
|
|
window end address register 5-13 6-16
|
|
window hit detection 7 -26 X1 E bit 6-40
|
|
window interrupt 8-5 X1 P bit 6-41
|
|
window miss detection 7-27 X2E bit 6-40
|
|
window start address register 5-12 X2P bit 6-41
|
|
windows 5-12, 5-13 X3E bit 6-40
|
|
WEND register 5-13 X3P bit 6-41
|
|
WSTART register 5-12
|
|
WSTART register 5-12
|
|
WVE bit 6-40
|
|
WVP bit 6-41 z
|
|
Z bit 5-18
|
|
ZEXT instruction 12-257
|
|
|
|
|
|
|
|
|
|
Index-8
|
|
August 1988 Reader Response Card
|
|
|
|
TMS34010 User's Guide
|
|
|
|
We want to pro vide you with the best documentation possible - please help us by answering
|
|
these questions and returning this card.
|
|
|
|
Is this manual adequate in helping you to understand the TMS34010 and how to use it
|
|
within a system? Please explain.
|
|
|
|
|
|
|
|
How do you use this book - did you (or will you) read it from front to back, or do you use
|
|
it mainly as a reference?
|
|
|
|
|
|
|
|
Are the descriptions of graphics operations (transparency, pixel processing, XV addressing,
|
|
etc.) clear and complete?
|
|
|
|
|
|
|
|
Is the Instruction Set (Section 12) clear? Is it easy to use as a reference?
|
|
|
|
|
|
|
|
What kinds of examples would you like to be included in this manual?
|
|
|
|
|
|
|
|
What information would you add to or delete from the Reference Card?
|
|
|
|
|
|
|
|
What would you add or change that would make this manual more accurate or easy to read?
|
|
|
|
|
|
|
|
Additional comments:
|
|
|
|
|
|
|
|
|
|
Thank you for taking the time to fill out this card.
|
|
VourName: ___________________________________________________________
|
|
|
|
Company and Application:
|
|
NO POSTAGE
|
|
NECESSARY
|
|
IF MAILED
|
|
IN THE
|
|
UNITED STATES
|
|
|
|
|
|
|
|
|
|
BUSINESS REPLY MAIL
|
|
FIRST-CLASS MAIL PERMIT NO. 6189 HOUSTON, TEX#\S
|
|
POSTAGE WILL BE PAID BY ADDRESSEE
|
|
|
|
Technical Publications Manager
|
|
Texas Instruments Incorporated
|
|
Semiconductor Group MIS 640
|
|
P.O. Box 1443
|
|
Houston, Texas 77251-9879
|
|
|
|
|
|
|
|
|
|
11'1111 ••• 1•• 1.1.1.1. 11.111.111 1•• 1.1 ••• 11. I••• 1.1. I
|
|
~
|
|
TEXAS
|
|
INSTRUMENTS
|
|
|
|
Printed in U.S.A., August 1988 SPVUO~~A
|
|
1604899-9703
|
|
|