Direction | Data | Description |
Tx transmit | ‘TT’ | ASCII character ‘T’ repeated twice |
Rx receive | ‘TT’ + 10 status bytes | see the description of the status record total number of bytes to receive: 12 bytes |
Direction | Data | Description |
Tx | ‘??’ | |
Rx | byte1 byte2 | State (see the description of the State record) ErrCode total number of bytes to receive: 2 bytes (’??’ not echoed!): |
Direction | Data | Description |
Tx | ‘Q’ | once only! |
Rx | ’Q’ ’T’ ’E’ ’Y’ or none | one of the following: ok to communicate expecting the status (’T’) command error, send ’T’ to cancel error flag busy |
Direction | Data | Description |
Tx | ’PP’ | |
Rx | none | |
run | R |
stop | S |
normal burst | G |
burst and invert all waveforms | B |
end of data transfer | F (ends L, W, M commands) |
Direction | Data | Description |
Tx | ‘R’ ‘R’ | send 2 bytes |
Rx | ‘R’ ‘R’ ErrCode | receive 3 bytes |
Tx Data | Size | Description |
‘L’ | byte | ASCII character ‘L’ |
‘L’ | byte (repeated) | |
select | byte | designated channels; ‘1’ at bit position selects the channel |
select | byte (repeated) | b0 = channel1,…,b7 = channel8; all ‘0’ = timing |
count | word | = number of data words to follow; HiAddr = count-1 |
data | word | |
data | word | |
…… | words | |
| | undefined length (at least 8 bytes) |
Download one by one (timing and all waveforms) and then send ‘F’ command.
Tx Data | Size | Description |
‘W’ | byte | |
‘W’ | byte | |
select | byte | designated channels; ‘1’ at bit position selects the channel |
select | byte | b0 = channel1,…,b7 = channel8; all ‘0’ = timing |
count | word | = number of data words to follow; HiAddr = count-1 |
data | word | |
data | word | |
…… | words | |
| | undefined length (at least 8 bytes) |
Download one by one (timing and all waveforms) and then send ‘F’ command.
For large number of data to be sent (>24k) stop the generator first, download and restart.
Tx Data | Size | Description |
‘D’ | byte | |
‘D’ | byte | |
select | byte | designated channels; ‘1’ at bit position selects the channel |
select | byte | b0 = channel1,…,b7 = channel8; all ‘0’ = timing |
address | word | defined as offset from memory start as: (pulse number)*2-2 |
data | word | amplitude or pulse-width |
| | undefined length (at least 8 bytes) |
Tx Data | Size | Description |
‘M’ | byte | |
‘M’ | byte | |
select | byte | designated channels; ‘1’ at bit position selects the channel |
select | byte | b0 = channel1,…,b7 = channel8; all ‘0’ = timing |
address | word | defined as offset from memory start as: (pulse number)*2-2 |
data | word | |
| | undefined length (at least 8 bytes) |
Tx Data | Size | Description |
‘C’ | byte | |
‘C’ | byte | |
data | word | |
| | undefined length (at least 8 bytes) |
Tx Data | Size | Description |
‘U’ | byte | |
‘U’ | byte | |
theClock Choice | byte | see Setup codes |
theMode | byte | see Setup codes |
| | total length of the command: 4 bytes |
Tx Data | Size | Description |
‘X’ | byte | |
‘X’ | byte | |
start address | word | inclusive, defined as offset (see ’D’ cmd) |
pulse count | word | |
| | total length of the command: 6 bytes |
Tx Data | Size | Description |
‘I’ | byte | ASCII character, capital ‘i’ |
‘I’ | byte | |
before address | word | inclusive, defined as offset (see ’D’ cmd) |
pulse count | word | |
| | total length of the command: 6 bytes |
Tx Data | Size | Description |
‘Z’ | byte | ASCII character, capital ‘i’ |
‘Z’ | byte | |
select | byte | designated channels; ‘1’ at bit position selects the channel |
select | byte | b0 = channel1,…,b7 = channel8; all ‘0’ = timing |
start address | word | inclusive, defined as offset (see ’D’ cmd) |
pulse count | word | |
| | total length of the command: 8 bytes |
Tx Data | Size | Description |
‘O’ | byte | ASCII character, capital ‘o’, not ‘zero’ |
‘O’ | byte | |
select | byte | designated channels; once only |
direction | byte | Boolean; right = TRUE, left = FALSE(0) |
step count | word | |
| | total length of the command: 6 bytes |
Tx Data | Size | Description |
‘V’ | byte | ASCII character, capital ‘o’, not ‘zero’ |
‘V’ | byte | |
select | byte | designated waveform; one at a time only; |
select | byte | designation of timing not allowed |
start address | word | inclusive, defined as offset (see ’D’ cmd) |
pulse count | word | -1 means ’all’ |
| | total length of the command: 8 bytes |
The status record contains 10 bytes.
Byte 1 | Variable | Meaning |
b0 | XCLK | monitors the external clock |
b1 | XTRG | monitors external start/stop signal |
b2 | START | control signal (as placed by the microprocessor) |
b3 | MEM | swap control: =0 CPU accesses RAM1 and scanning counter <-> RAM2, (as placed by the microprocessor) |
b4 | RST | extended reset signal (as placed by the microprocessor) |
b5 | XI | external/internal time-base clock choice (see below) |
b6 | FS | external/internal time-base clock choice (see below) |
b7 | SOFTCK | software generated time-base output |
Byte 2 | Variable | Meaning |
b0…5 | | not implemented |
b6 | CLEAR | monitors the real state of RUN/STOP, =0 running, =1 stopped |
b7 | SWAP | monitors which RAM is being scanned for output (cf. MEM bit above) |
Byte | Content | Description |
Byte 3 | Card Mask | bit b0…7 set if the corresponding output channel is installed and working properly |
Byte 4 | Ready Flag | if <>0 then the generator may accept the RUN command |
Byte 5,6 | HiAddr | highest occupied RAM address |
Byte 7 | model | 2 or 8-channel model |
Byte 8 | decimal value | firmware revision |
Byte 9 | State message | Meaning |
b0 | XCLK | monitors the external clock |
b1 | XTRG | monitors external start/stop signal |
b2 | START | control signal (as placed by the microprocessor) |
b3 | MEM | swap control: =0 CPU accesses RAM1 and scanning counter <-> RAM2, (as placed by the microprocessor) |
b4 | RST | extended reset signal (as placed by the microprocessor) |
b5 | XI | external/internal time-base clock choice (see below) |
b6 | FS | external/internal time-base clock choice (see below) |
b7 | SOFTCK | software generated time-base output |
Byte 10 | Error Code | Meaning |
kNoError | 0 | |
kNotReady | 1 | |
kFramingError | 2 | serial i/f flags, bits 1..3 |
kNoiseFlag | 4 | |
kOverrun | 8 | |
kOverflow | 16 | data or command |
kNotRecognized | 32 | |
kHardwareError | 64 | |
kTimeOutError | 128 | |
Constant | Value | Meaning |
kStopped | 0 | all bits must be 0 |
kRunning | 1 | |
kRunOut | 2 | STOP command received, finishing the waveform |
kWaitSwap | 4 | one memory bank has been updated and WFG is waiting for the end of waveform to swap the memory banks and gain access to the other memory bank |
kBurst | 8 | the single burst mode is selected |
kPanel | 16 | external triggering selected |
kUndefined | 32 | |
kArmed | 64 | ready to run |
kExpectingData | 128 | current communication not completed |
theMode | Hex value | Meaning |
codeBurst | 0x04 | burst / continuous mode |
codePane | 0x08 | enable external triggering |
theClockChoice | Hex value | Meaning |
codeEclock | 0x60 | 20 MHz internal clock |
codeE2clock | 0x20 | 1 MHz internal clock |
codeSoft | 0x40 | software-controlled internal clock (slow) |
codeExt | 0x00 | external clock |