Agilent 1670D Programmers Guide

Programmer’s Guide
Publication number 01670-97005 First edition, August 1996
For Safety information, Warranties, and Regulatory information, see the pages behind the Index
© Copyright Hewlett-Packard Company 1992-1996 All Rights Reserved
HP 1670D-Series Logic Analyzers
ii

In This Book

Introduction to Programming the
1
HP 1670D
This programmer’s guide contains general information, instrument level commands, logic analyzer commands, and programming examples for programming the HP 1670D-series logic analyzers. This guide focuses on how to program the instrument over the HP-IB and the RS-232-C interfaces. For information on using Ethernet refer to the LAN User’s Guide.
What is in the HP1670D-Series Programmer’s Guide?
The HP1670D-Series Programmer’s Guide is organized in four parts.
Part 1 Part 1 consists of chapters 1 through 7 and contains general information about programming basics, HP-IB and RS-232-C interface requirements, documentation conventions, status reporting, and error messages.
2
3
4
5
6
7
8
9
10
Programming Over HP-IB
Programming Over RS-232-C
Programming and
Document ation Conventions
Message Communica ti on
and System Functions
Status Reporting
Error Messages
Common Commands
Instrument Commands
Module Level Commands
If you are already familiar with IEEE
488.2 programming and HP-IB or RS-232-C, you may want to just scan these chapters. If you are new to programming the system, you should read part 1.
11
12
13
14
SYSTem Subsystem
MMEMory Subsystem
MACHine Subsystem
WLISt Subsystem
iii
Chapter 1 is divided into two sections. The first section, "Talking to the Instrument," concentrates on program syntax, and the second section, "Receiving Information from the Instrument," discusses how to send queries and how to retrieve query results from the instrument.
Read either chapter 2, "Programming Over HP-IB," or chapter 3, "Programming Over RS-232-C" for information concerning the physical connection between the HP 1670D-series logic analyzer and your controller.
Chapter 4, "Programming and Documentation Conventions," gives an overview of all instructions and also explains the notation conventions used in the syntax definitions and examples.
Chapter 5, "Message Communication and System Functions," provides an overview of the operation of instruments that operate in compliance with the IEEE 488.2 standard.
Chapter 6 explains status reporting and how it can be used to monitor the flow of your programs and measurement process.
Chapter 7 contains error message descriptions. Part 2 Part 2, chapters 8 through 12, explains each command in the
command set for the entire logic analyzer. These chapters are organized in subsystems with each subsystem representing a front-panel menu.
The commands explained in this part give you access to common commands, instrument commands, system level commands, disk commands, intermodule measurement, and module level commands. This part is designed to provide a concise description of each command.
Part 3 Part 3, chapters 13 through 27, explains each command in the subsystem command set for the logic analyzer. Chapter 27 contains information on the SYSTem:DATA and SYSTem:SETup commands for the logic analyzer.
Part 4 Part 4 , chapter 28, contains program examples of actual tasks that show you how to get started in programming the HP 1670D-series logic analyzers. The complexity of your programs and the tasks they accomplish are limited only by your imagination. These examples are written in HP BASIC 6.2; however, the program concepts can be used in any other popular programming language that allows communications over HP-IB or RS-232 buses.
iv
15
16
SFORmat Subsystem
STRigger (STRace) Subsystem
17
18
19
20
21
22
23
24
25
SLISt Subsystem
SWAVeform Subsystem
SCHart Subsy stem
COMPare Subsystem
TFORmat Subsystem
TRIGger {TRACe} Subsystem
TWAVeform Subsystem
TLISt Subsystem
SPA Subsystem
26
27
28
SYMBol Commands
DATA and SETup Commands
Programming Ex amples
Index
v
vi

Contents

Part 1 General Information
1 Introduction to Programming the HP 1670D
Talking to the Instrument 1–3
Initialization 1–4 Instruction Syntax 1–5 Output Command 1–5 Device Address 1–6 Instructions 1–6 Instruction Terminator 1–7 Header Types 1–8 Duplicate Keywords 1–9 Query Usage 1–10 Program Header Options 1–11 Parameter Data Types 1–12 Selecting Multiple Subsystems 1–14
Receiving Information from the Instrument 1–15
Response Header Options 1–16 Response Data Formats 1–17 String Variables 1–18 Numeric Base 1–19 Numeric Variables 1–19 Definite-Length Block Response Data 1–20 Multiple Queries 1–21 Instrument Status 1–22
2 Programming Over HP-IB
Interface Capabilities 2–3 Command and Data Concepts 2–3 Addressing 2–3 Communicating Over the HP-IB Bus 2–4 Local, Remote, and Local Lockout 2–5 Bus Commands 2–6
Contents–1
Contents
3 Programming Over RS-232-C
Interface Operation 3–3 RS-232-C Cables 3–3 Minimum Three-Wire Interface with Software Protocol 3–4 Extended Interface with Hardware Handshake 3–4 Cable Examples 3–6 Configuring the Logic Analyzer Interface 3–8 Interface Capabilities 3–9 RS-232-C Bus Addressing 3–10 Lockout Command 3–11
4 Programming and Documentation Conventions
Truncation Rule 4–3 Infinity Representation 4–4 Sequential and Overlapped Commands 4–4 Response Generation 4–4 Syntax Diagrams 4–4 Notation Conventions and Definitions 4–5 The Command Tree 4–5 Tree Traversal Rules 4–6 Command Set Organization 4–12 Subsystems 4–12 Program Examples 4–13
5 Message Communication and System Functions
Protocols 5–3 Syntax Diagrams 5–5 Syntax Overview 5–7
6 Status Reporting
Event Status Register 6–4 Service Request Enable Register 6–4 Bit Definitions 6–4 Key Features 6–6 Serial Poll 6–7
Contents–2
7 Error Messages
Device Dependent Errors 7–3 Command Errors 7–3 Execution Errors 7–4 Internal Errors 7–4 Query Errors 7–5
Part 2 Instrument Commands
8 Common Commands
*CLS (Clear Status) 8–5 *ESE (Event Status Enable) 8–6 *ESR (Event Status Register) 8–7 *IDN (Identification Number) 8–9 *IST (Individual Status) 8–9 *OPC (Operation Complete) 8–11 *OPT (Option Identification) 8–12 *PRE (Parallel Poll Enable Register Enable) 8–13 *RST (Reset) 8–14 *SRE (Service Request Enable) 8–15 *STB (Status Byte) 8–16 *TRG (Trigger) 8–17 *TST (Test) 8–18 *WAI (Wait) 8–19
Contents
9 Instrument Commands
BEEPer 9–6 CAPability 9–7 CARDcage 9–8 CESE (Combined Event Status Enable) 9–9 CESR (Combined Event Status Register) 9–10 EOI (End Or Identify) 9–11 LER (LCL Event Register) 9–11 LOCKout 9–12 MENU 9–12
Contents–3
Contents
MESE<N> (Module Event Status Enable) 9–14 MESR<N> (Module Event Status Register) 9–16 RMODe 9–18 RTC (Real-time Clock) 9–18 SELect 9–19 SETColor 9–21 STARt 9–22 STOP 9–22 XWINdow 9–23
10 Module Level Commands
ARMLine 10–5 DBLock 10–5 MACHine 10–6 WLISt 10–6
11 SYSTem Subsystem
DATA 11–5 DSP (Display) 11–6 ERRor 11–7 HEADer 11–8 LONGform 11–9 PRINt 11–10 SETup 11–11
12 MMEMory Subsystem
AUToload 12–7 CATalog 12–8 CD (Change Directory) 12–9 COPY 12–10 DOWNload 12–11 INITialize 12–13 LOAD [:CONFig] 12–14 LOAD :IASSembler 12–15 MKDir (Make Directory) 12–16
Contents–4
MSI (Mass Storage Is) 12–17 PACK 12–18 PURGe 12–18 PWD (Present Working Directory) 12–19 REName 12–19 STORe [:CONFig] 12–20 UPLoad 12–21 VOLume 12–22
Part 3 Logic Analyzer Commands
13 MACHine Subsystem
MACHine 13–4 ARM 13–5 ASSign 13–6 LEVelarm 13–7 NAME 13–8 REName 13–8 RESource 13–9 TYPE 13–10
Contents
14 WLISt Subsystem
WLISt (Waveforms/LISting) 14–4 DELay 14–5 INSert 14–6 LINE 14–7 OSTate 14–7 OTIMe 14–8 RANGe 14–8 REMove 14–9 XOTime 14–9 XSTate 14–10 XTIMe 14–10
Contents–5
Contents
15 SFORmat Subsystem
SFORmat 15–6 CLOCk 15–6 LABel 15–7 MASTer 15–9 MOPQual 15–10 MQUal 15–11 REMove 15–12 SETHold 15–12 SLAVe 15–14 SOPQual 15–15 SQUal 15–16 THReshold 15–16
16 STRigger (STRace) Subsystem
Qualifier 16–7 STRigger (STRace) (State Trigger) 16–9 ACQuisition 16–9 BRANch 16–10 CLEar 16–12 FIND 16–13 MLENgth 16–14 RANGe 16–15 SEQuence 16–16 STORe 16–17 TAG 16–18 TAKenbranch 16–19 TCONtrol 16–20 TERM 16–21 TIMER 16–22 TPOSition 16–23
Contents–6
17 SLISt Subsystem
SLISt 17–7 COLumn 17–7 CLRPattern 17–8 DATA 17–9 LINE 17–9 MMODe (Marker Mode) 17–10 OPATtern 17–11 OSEarch 17–12 OSTate 17–13 OTAG 17–14 OVERlay 17–15 REMove 17–15 RUNTil (Run Until) 17–16 TAVerage 17–17 TMAXimum 17–17 TMINimum 17–18 VRUNs 17–18 XOTag 17–19 XOTime 17–19 XPATtern 17–20 XSEarch 17–21 XSTate 17–21 XTAG 17–22
Contents
18 SWAVeform Subsystem
SWAVeform 18–4 ACCumulate 18–5 ACQuisition 18–5 CENTer 18–6 CLRPattern 18–6 CLRStat 18–7
Contents–7
Contents
DELay 18–7 INSert 18–8 MLENgth 18–8 RANGe 18–9 REMove 18–10 TAKenbranch 18–10 TPOSition 18–11
19 SCHart Subsystem
SCHart 19–4 ACCumulate 19–4 CENTer 19–5 HAXis 19–5 VAXis 19–6
20 COMPare Subsystem
COMPare 20–4 CLEar 20–5 CMASk 20–5 COPY 20–6 DATA 20–6 FIND 20–8 LINE 20–8 MENU 20–9 RANGe 20–9 RUNTil (Run Until) 20–10 SET 20–12
21 TFORmat Subsystem
TFORmat (Timing Format) 21–4 ACQMode 21–5 LABel 21–6 REMove 21–7 THReshold 21–8
Contents–8
22 TTRigger (TTRace) Subsystem
Qualifier 22–6 TTRigger (TTRace)(Trace Trigger) 22–8 ACQuisition 22–9 BRANch 22–9 CLEar 22–12 EDGE 22–13 FIND 22–14 MLENgth 22–15 RANGe 22–16 SEQuence 22–17 SPERiod 22–18 TCONtrol (Timer Control) 22–19 TERM 22–20 TIMER 22–21 TPOSition (Trigger Position) 22–22
Contents
23 TWAVeform Subsystem
TWAVeform 23–7 ACCumulate 23–7 ACQuisition 23–8 CENTer 23–8 CLRPattern 23–9 CLRStat 23–9 DELay 23–9 INSert 23–10 MLENgth 23–11 MMODe (Marker Mode) 23–12 OCONdition 23–12 OPATtern 23–13 OSEarch 23–14 OTIMe 23–15 RANGe 23–16 REMove 23–16 RUNTil (Run Until) 23–17 SPERiod 23–18
Contents–9
Contents
TAVerage 23–18 TMAXimum 23–19 TMINimum 23–19 TPOSition 23–19 VRUNs 23–20 XCONdition 23–21 XOTime 23–21 XPATtern 23–22 XSEarch 23–23 XTIMe 23–24
24 TLISt Subsystem
TLISt 24–7 COLumn 24–7 CLRPattern 24–8 DATA 24–9 LINE 24–9 MMODe (Marker Mode) 24–10 OCONdition 24–11 OPATtern 24–12 OSEarch 24–13 OSTate 24–14 OTAG 24–14 REMove 24–15 RUNTil (Run Until) 24–15 TAVerage 24–16 TMAXimum 24–16 TMINimum 24–17 VRUNs 24–17 XCONdition 24–18 XOTag 24–18 XOTime 24–19 XPATtern 24–19 XSEarch 24–20 XSTate 24–21 XTAG 24–21
Contents–10
25 SPA Subsystem
MODE 25–7 OVERView:BUCKet 25–8 OVERView:HIGH 25–9 OVERView:LABel 25–10 OVERView:LOW 25–11 OVERView:MLENgth 25–12 OVERView:OMARker 25–13 OVERView:OVSTatistic 25–14 OVERView:XMARker 25–15 HISTogram:HSTatistic 25–16 HISTogram:LABel 25–17 HISTogram:OTHer 25–18 HISTogram:QUALifier 25–19 HISTogram:RANGe 25–20 HISTogram:TTYPe 25–21 TINTerval:AUTorange 25–22 TINTerval:QUALifier 25–22 TINTerval:TINTerval 25–24 TINTerval:TSTatistic 25–25
Contents
26 SYMBol Subsystem
SYMBol 26–5 BASE 26–5 PATTern 26–6 RANGe 26–7 REMove 26–8 WIDTh 26–8
27 DATA and SETup Commands
Introduction 27–2
Data Format 27–3 SYSTem:DATA 27–4 Section Header Description 27–6
Contents–11
Contents
Section Data 27–6 Data Preamble Description 27–6 Acquisition Data Description 27–10 Tag Data Description 27–12 SYSTem:SETup 27–12
Part 4 Programming Examples
28 Programming Examples
Making a Timing Analyzer Measurement 28–3 Making a State Analyzer Measurement 28–5 Making a State Compare Measurement 28–9 Transferring the Logic Analyzer Configuration 28–14 Checking for Measurement Completion 28–17 Sending Queries to the Logic Analyzer 28–18
Index
Contents–12
Part 1

General Information

1

Introduction to Programming the HP 1670D

Introduction
This chapter introduces you to the basics of remote programming and is organized in two sections. The first section, "Talking to the Instrument," concentrates on initializing the bus, program syntax and the elements of a syntax instuction. The second section, "Receiving Information from the Instrument," discusses how queries are sent and how to retrieve query results from the mainframe instruments.
The programming instructions explained in this book conform to IEEE Std 488.2-1987, "IEEE Standard Codes, Formats, Protocols, and Common Commands." These programming instructions provide a means of remotely controlling the HP 1670D-series logic analyzers. There are three general categories of use. You can:
Set up the instrument and start measurements.
Retrieve setup information and measurement results.
Send measurement data to the instrument.
The instructions listed in this manual give you access to the measurements and front panel features of the HP 1670D-series. The complexity of your programs and the tasks they accomplish are limited only by your imagination. This programming reference is designed to provide a concise description of each instruction.
1–2

Talking to the Instrument

In general, computers acting as controllers communicate with the instrument by sending and receiving messages over a remote interface, such as HP-IB or RS-232-C. Instructions for programming the HP 1670D-series will normally appear as ASCII character strings embedded inside the output statements of a "host" language available on your controller. The host language’s input statements are used to read in responses from the HP 1670D-series.
For example, HP 9000 Series 200/300 BASIC uses the OUTPUT statement for sending commands and queries to the HP 1670D-series. After a query is sent, the response can be read in using the ENTER statement. All programming examples in this manual are presented in HP BASIC.
Example This BASIC statement sends a command that causes the logic analyzer’s
machine 1 to be a state analyzer:
OUTPUT XXX;":MACHINE1:TYPE STATE" <terminator>
Each part of the above statement is explained in this section.
1–3
Introduction to Programming the HP 1670D
Initialization
Initialization
To make sure the bus and all appropriate interfaces are in a known state, begin every program with an initialization statement. BASIC provides a CLEAR command that clears the interface buffer. If you are using HP-IB, CLEAR will also reset the parser in the logic analyzer. The parser is the program resident in the logic analyzer that reads the instructions you send to it from the controller.
After clearing the interface, you could preset the logic analyzer to a known state by loading a predefined configuration file from the disk.
Refer to your controller manual and programming language reference manual for information on initializing the interface.
Example This BASIC statement would load the configuration file "DEFAULT " (if it
exists) into the logic analyzer.
OUTPUT XXX;":MMEMORY:LOAD:CONFIG ’DEFAULT ’"
Refer to chapter 12, "MMEMory Subsystem" for more information on the LOAD command.
Example This program demonstrates the basic command structure used to program
the HP 1670D-series logic analyzers.
10 CLEAR XXX !Initialize instrument interface 20 OUTPUT XXX;":SYSTEM:HEADER ON"!Turn headers on 30 OUTPUT XXX;":SYSTEM:LONGFORM ON" !Turn longform on 40 OUTPUT XXX;":MMEM:LOAD:CONFIG ’TEST E’" !Load configuration file 50 OUTPUT XXX;":MENU FORMAT,1" !Select Format menu for machine 1 60 OUTPUT XXX;":RMODE SINGLE" !Select run mode 70 OU TPUT XXX;":START" !Ru n the measurement
1–4
Figure 1-1
Introduction to Programming t he HP 1670D
Instr uction Syntax
Instruction Syntax
To program the logic analyzer remotely, you must have an understanding of the command format and structure. The IEEE 488.2 standard governs syntax rules pertaining to how individual elements, such as headers, separators, parameters and terminators, may be grouped together to form complete instructions. Syntax definitions are also given to show how query responses will be formatted. Figure 1-1 shows the three main syntactical parts of a typical program statement: Output Command, Device Address, and Instruction. The instruction is further broken down into three parts: Instruction header, White space, and Instruction parameters.
Program Message Syntax
Output Command
The output command depends on the language you choose to use. Throughout this guide, HP 9000 Series 200/300 BASIC 6.2 is used in the programming examples. If you use another language, you will need to find the equivalents of BASIC Commands, like OUTPUT, ENTER and CLEAR in order to convert the examples. The instructions are always shown between the double quotes.
1–5
Introduction to Programming the HP 1670D
Device Address
Device Address
The location where the device address must be specified also depends on the host language that you are using. In some languages, this could be specified outside the output command. In BASIC, this is always specified after the keyword OUTPUT. The examples in this manual use a generic address of XXX. When writing programs, the number you use will depend on the cable you use, in addition to the actual address. If you are using an HP-IB, see chapter 2, "Programming over HP-IB." If you are using RS-232-C, see chapter 3, "Programming Over RS-232-C."
Instructions
Instructions (both commands and queries) normally appear as a string embedded in a statement of your host language, such as BASIC, Pascal or C. The only time a parameter is not meant to be expressed as a string is when the instruction’s syntax definition specifies block data. There are just a few instructions which use block data.
Instructions are composed of two main parts: the header, which specifies the command or query to be sent; and the parameters, which provide additional data needed to clarify the meaning of the instruction. Many queries do not use any parameters.
Instruction Header
The instruction header is one or more keywords separated by colons (:). The command tree in figure 4-1 illustrates how all the keywords can be joined together to form a complete header (see chapter 4, "Programming and Documentation Conventions").
The example in figure 1-1 shows a command. Queries are indicated by adding a question mark (?) to the end of the header. Many instructions can be used as either commands or queries, depending on whether or not you have included the question mark. The command and query forms of an instruction usually have different parameters.
1–6
Introduction to Programming t he HP 1670D
Instruction Terminator
When you look up a query in this programmer’s reference, you’ll find a paragraph labeled "Returned Format" under the one labeled "Query." The syntax definition by "Returned format" will always show the instruction header in square brackets, like [:SYSTem:MENU], which means the text between the brackets is optional. It is also a quick way to see what the header looks like.
White Space
White space is used to separate the instruction header from the instruction parameters. If the instruction does not use any parameters, white space does not need to be included. White space is defined as one or more spaces. ASCII defines a space to be a character, represented by a byte, that has a decimal value of 32. Tabs can be used only if your controller first converts them to space characters before sending the string to the instrument.
Instruction Parameters
Instruction parameters are used to clarify the meaning of the command or query. They provide necessary data, such as: whether a function should be on or off, which waveform is to be displayed, or which pattern is to be looked for. Each instruction’s syntax definition shows the parameters, as well as the range of acceptable values they accept. This chapter’s "Parameter Data Types" section has all of the general rules about acceptable values.
When there is more than one parameter, they are separated by commas (,). White space surrounding the commas is optional.
Instruction Terminator
An instruction is executed after the instruction terminator is received. The terminator is the NL (New Line) character. The NL character is an ASCII linefeed character (decimal 10).
The NL (New Line) terminator has the same function as an EOS (End Of String) and EOT (End Of Text) terminator.
1–7
Introduction to Programming the HP 1670D
Header Types
Header Types
There are three types of headers: Simple Command, Compound Command, and Common Command.
Simple Command Header
Simple command headers contain a single keyword. START and STOP are examples of simple command headers typically used in this logic analyzer. The syntax is: <function><terminator>
When parameters (indicated by <data>) must be included with the simple command header, the syntax is: <function><white_space><data>
<terminator>
Example :RM ODE SINGLE<terminator>
Compound Command Header
Compound command headers are a combination of two or more program keywords. The first keyword selects the subsystem, and the last keyword selects the function within that subsystem. Sometimes you may need to list more than one subsystem before being allowed to specify the function. The keywords within the compound header are separated by colons. For example, to execute a single function within a subsystem, use the following:
:<subsystem>:<function><white_space><data><terminator>
Example :SYSTEM:LONGFORM ON
To traverse down one level of a subsystem to execute a subsystem within that subsystem, use the following: <subsystem>:<subsystem>:<function><white_space>
<data><terminator>
Example :MMEMORY:LOAD:CONFIG "FILE "
1–8
Common Command Header
Common command headers control IEEE 488.2 functions within the logic analyzer, such as, clear status. The syntax is: *<command header><terminator>
No white space or separator is allowed between the asterisk and the command header. *CLS is an example of a common command header.
Combined Commands in the Same Subsystem
To execute more than one function within the same subsystem, a semicolon (;) is used to separate the functions:
:<subsystem>:<function><white space><data>;<function><white space><data><terminator>
Example :SYSTEM:LONGFORM ON;HEADER ON
Introduction to Programming t he HP 1670D
Duplicate Keyw ords
Duplicate Keywords
Identical function keywords can be used for more than one subsystem. For example, the function keyword MMODE may be used to specify the marker mode in the subsystem for state listing or the timing waveforms:
:SLIST:MMODE PATTERN - sets the marker mode to pattern in
the state listing.
:TWAVEFORM:MMODE TIME - sets the marker mode to time in the
timing waveforms.
SLIST and TWAVEFORM are subsystem selectors, and they determine which marker mode is being modified.
1–9
Introduction to Programming the HP 1670D
Query Usage
Query Usage
Logic analyzer instructions that are immediately followed by a question mark (?) are queries. After receiving a query, the logic analyzer parser places the response in the output buffer. The output message remains in the buffer until it is read or until another logic analyzer instruction is issued. When read, the message is transmitted across the bus to the designated listener (typically a controller).
Query commands are used to find out how the logic analyzer is currently configured. They are also used to get results of measurements made by the logic analyzer.
Example This instruction places the current full-screen time for machine 1 in the
output buffer.
:MAC HINE1:TWAVEFORM:RA NGE?
In order to prevent the loss of data in the output buffer, the output buffer must be read before the next program message is sent. Sending another command before reading the result of the query will cause the output buffer to be cleared and the current response to be lost. This will also generate a "QUERY UNTERMINATED" error in the error queue. For example, when you send the query :TWAVEFORM:RANGE? you must follow that with an input statement. In BASIC, this is usually done with an ENTER statement.
In BASIC, the input statement, ENTER XXX; Range, passes the value across the bus to the controller and places it in the variable Range.
Additional details on how to use queries is in the next section of this chapter, "Receiving Information for the Instrument."
1–10
Loading...
+ 426 hidden pages