Controls Hardware Release No. 70.2
(Firmware Version # 1.50)

CAMAC 145 Module

Vacuum Readback Interface

K. C. Seino and B. S. Hendricks
January 15, 1990

TABLE OF CONTENTS

INTRODUCTION

The CAMAC 145 module does what the CC45 used to do, i.e.,
  1. It converts incoming serial data words to parallel data words,and
  2. It stores them in memory until the front end computer reads them. In addition to the above mentioned functions, the C145 performs
  3. Conversion of the special BCD data format of the vacuum scanner to the IEEE standard floating point format,
  4. Averaging of the readback values from a number of ion gauges in each service building, and
  5. Local alarm scanning.
The C145 was designed with the Motorola MC68000 microprocessor and MC68881 floating point coprocessor. The serial to parallel conversion and its support circuits were implemented in the Altera EPM5128 (erasable PLD). The CAMAC interface circuits were designed with the same philosophy as the one for the C193, i.e.,
  1. Read module status without interrupting the CPU
  2. direct F to vector conversion is done in a single PROM and
  3. Clear-cut synchronization between CAMAC and the CPU is done in two sets of tandem flip flops.
The C145 returns data in the IEEE standard floating point format to the front end computer, and it allows Main Ring vacuum devices to be placed on Parameter Pages and Datalogger Lists.

2. SPECIFICATIONS

  1. CPU: Motorola MC68000 microprocessor clocked at 8 MHz
  2. Memory: 64K bytes of RAM, 64K bytes of EPROM, 2K bytes of NVR (Nonvolatile RAM)
  3. Interrupt controller: AMD Am9519A
  4. Timer: AMD Am9513A (five timing channels)
  5. TCLK event source: Programmable with PLS153
  6. RS232 port: Signetics 2681 communication interface
  7. CAMAC interface: Command decoder (providing up to 192 interrupt vectors), 16 bit read and write registers, command managing circuits and LAM circuit
  8. Vacuum readback interface: Incoming line is coupled with transformer and terminated into 51 ohms.
  9. Serial to parallel conversion: Conversion circuit is implemented in Altera EPM5128 (erasable PLD), which includes parity check, time-out detection, clear synchronization as well as serial to parallel conversion.
  10. Floating point conversion: Done with Motorola MC68881, full confirmation to IEEE P754 standard, capable of handling seven data types (byte, word and long word integers; single, double and extended precision real numbers; and packed BCD real numbers)
  11. Vacuum data: Module acquires up to 63 channels of vacuum data, converts it from BCD format to IEEE floating point format and stores it in memory. Data is delivered to module at rate of one channel per second.
  12. Averaging: Module averages up to 63 channels of vacuum data approximately once a minute, excluding bad readings.
  13. Alarm scanning: Module alarms when average vacuum value is out of limits or when 15 or more pumps are returning bad readings. Bypass bits are provided.

3. FIRMWARE DESCRIPTION

The C145 firmware consists of three software modules, i.e., ENVIRON C145 and FLTRP. These software modules are linked together along with the 68 floating point library. The ENVIRON module creates an environment for a C program running on the MC68000 microprocessor. The module does the following
  1. Switch off the PROM from the lowest memory locations
  2. Disable interrupts
  3. Initialize the stack pointer
  4. Initialize the frame pointer and
  5. Call 'main' in the C program.
The C145 program consists of global variable declarations, the main program (initialization and background processing), error exception handlers, a heart beat interrupt routine, CAMAC interrupt routines, an FPC reset routine, a vacuum interrupt routine, a vacuum time-out interrupt routine and a routine to calculate average vacuum value. The MC68000 does not execute the MC68881 Floating Point Coprocessor (FPC op codes. However, if it detects or traps them, it forces itself into an exception state. While it is in the exception state, the CPU transfers control to the FLTRP (F-Line Trap) routine which decodes the FPC op code and emulates it with a series of 68000 instructions that control the 68881. The FLTRP module consists of a general instruction handler, an external operand to register instruction handler and a register to external destination instruction handler.

3.1 Vectored Interrupt Handling

CAMAC commands, the vacuum interface and its time-out, the serial I/O the Clock Event 1, and the heart beat gain attention from the CPU as a vectored interrupt request. The priority of vectored interrupts is determined with PLD6 and the Am9519A (UIC). The C145 has the following priority scheme for vectored interrupts.

PRIORITYEVENTNOTE
0 (highest) CAMAC command
1 Vacuum interface interrupt UIC, level 0
2 Vacuum time-out interrupt UIC, level 1
3 Serial I/O interrupt UIC, level 2
4 Clock event 1 UIC, level 3
5   UIC, level 4
6   UIC, level 5
7   UIC, level 6
8 (lowest) Heart beat UIC, level 7

The combined interrupt request (CAMAC command and UIC request) is fed to the CPU as the Level-6 interrupt request. When more than one interrupt request is pending, the one with the highest priority is honored. Once an interrupt is acknowledged, other interrupts are disabled until the acknowledged interrupt is completely serviced due to the fact that the MC68000 inhibits interrupts for all priority levels less than or equal to the current priority. This prevents multiple interrupt acknowledgment. One has to remember that other exceptions (reset, errors, traps and nonmaskable interrupt) are still honored by the CPU while a vectored interrupt is being serviced. In exiting from the service routine, the previous status register is restored (Level-0 is restored), and interrupts are thus enabled.

3.2 CAMAC Command Request Clearing

When a CAMAC command arrives at the C145, it generates an interrupt request if there is no other command pending. When the CPU acknowledges the request, it clears the request in the interrupt service routine. The software has control over when to clear and does not allow the next command to come in before it reads the data. The reader is suggested to read (5.3.1) in HARDWARE DESCRIPTION.

3.3 CAMAC Read Buffer Content Flag

The identification of the last serviced CAMAC read command is stored in a variable. The identification of the current service routine is compared with the previous one, and a proper action is taken based upon the comparison result.

3.4 Vacuum Interface Interrupt Routine

When the vacuum interface has data, it interrupts the CPU. The CPU then reads and stores the vacuum channel and data. The vacuum data is first converted to an PDR (Packed Decimal Real) before it is further processed in the FPC (Floating Point Coprocessor). The data is converted from PDR to SPBR (Single Precision Binary Real) by the FPC, and it is stored into the vacuum data buffer. The interrupt routine performs the following.
  1. Read the channel number and the raw vacuum data.
  2. If the interrupt is the first after the interface has been reset, discard the data and return.
  3. If there is a parity error, discard the data and return.
  4. Check the channel number to see
  5. If the pump for the channel is out of service, decrement the bad pump count (if it has been marked as a bad pump) and return.
  6. Extract the error status, the exponent, the M part of the mantissa and the N part of the mantissa.
  7. Check to see if it is a bad reading or not.
  8. If not, build up an PDR for the data, use the FPC to convert the PDR to an SPBR, decrement the bad pump count (if it had been previously marked as a bad pump), do the averaging routine and return.
  9. If yes, increment the bad pump count, check it for alarm and return.
The vacuum data word arrives at the C145 module at a rate of approximately 1 KHz. The data is repeated for one channel for a duration of about 1 sec and then it moves on to the next channel. Therefore, if there are 63 channels for a building, it takes about 63 seconds to complete updating for the building. In order to efficiently deal with a fast word rate and slow channel updating, the vacuum interface interrupt routine was written so that it takes one reading per channel for averaging and discards the other readings.

3.5 Procedure to Calculate the Average Value

The latest channel number is first checked against channel numbers in the averaging pool to see if it is repeated. If it is repeated, this means that all the channels have been read since last averaging and that it is a time to do another averaging.

If it is not already in the averaging pool, the current channel number and vacuum value are saved, the averaging sum is updated. The pool index is incremented, and control is returned to the vacuum interrupt routine.

If it is in the pool, the averaging LED is turned on, and the average vacuum value is calculated. The average value is then checked against the alarm limits. If it exceeds the limits, the alarm retry count is incremented. If the retry count reaches the retry limit, an alarm is generated. If it does not exceed the limits, the alarm retry count is reset to zero. In either case, the averaging sum is cleared, and the averaging LED is then turned off. The current channel number and vacuum value are saved, and the averaging sum is updated. The pool index is then incremented, and control is returned to the vacuum interrupt routine.

4. CAMAC COMMANDS AND DATA FORMATS

4.1 F0A0

Read vacuum data as specified with F16A0. A starting channel and a number of channels are specified with F16A0. The data is in the IEEE floating point format requiring two word reads per channel.

4.2 F0A1

Read module status (implemented in hardware, Q is always returned). The status word is organized as follows.
Bit-0Heart beat OK
Bit-1Vacuum data reception in progress,
Bit-2Vacuum interface time-out error.

4.3 F0A2

Read LAM source register. The word is organized as follows.
Bit-0Average vacuum reading is out of tolerance,
Bit-1Fifteen or more pumps are returning bad readings.

4.4 F0A3

Read LAM mask register. The word format is identical to the LAM source register. A bit which is set in the mask register will permit generation of a module LAM due to that LAM source. Other bits will not generate LAM unless they are set. At module reset, the LAM mask register is initialized to FFFF (hex).

4.5 F0A4

Read average vacuum data. The data is in the IEEE floating point format requiring two word reads.

4.6 F0A5

Read vacuum alarm limit. The data is in the IEEE floating point format requiring two word reads.

4.7 F0A6

Read the number of pumps currently returning bad readings.

4.8 F0A7

Read the number of vacuum interface time-outs that have occurred.

4.9 F0A8

Read the number of FPC errors that have occurred.

4.10 F0A9

Read the system timer for diagnostic purposes. The data is two words in length. The timer is clocked at 15 Hz.

4.11 F0A10

Read the alarm retry limit (number of times out of tolerance before generating an alarm).

4.12 F0A11

Read the current alarm retry count.

4.13 F0A12

Read the number of pumps in the most recent average.

4.14 F0A13

Read the vacuum interface reset count.

4.15 F0A14

Read the parity error count.

4.16 F1A0

Read the status of pumps (or channels) specified with F17A0. A starting channel and a number of channels are specified with F17A0. The data format is organized as follows.
+---+---+---+---+---+---+---+---+
| 7 | 6 | 5 | x | x | x | 1 | 0 |
+---+---+---+---+---+---+---+---+

Bit-0: pump equipped if set
Bit-1: pump in service if set
Bit-5: bad reading (invalid digit)
Bit-6: parity error
Bit-7: time-out error

4.17 F1A1

Read diagnostic counter registers specified with F17A1. A starting counter and a number of counters are specified with F17A1.

4.18 F1A3

Read the averaging pool index data (a record of which pumps have been used for averaging). A starting data point is specified with F17A3.

4.19 F2A0

Read the high word of the average vacuum reading and save the low word for a subsequent read with an F2A1 command ( the data is in the IEEE floating point format requiring two words).

4.20 F2A1

Read the low word of the average vacuum reading. (See F2A0 for the high word.)

4.21 F2A2

Read the high word of the system timer (the data is two words in length).

4.22 F2A3

Read the low word of the system timer. (See F2A2 for the high word.)

4.23 F2A4

Read the high word of the vacuum alarm limit (the data is in the IEEE floating point format requiring two words).

4.24 F2A5

Read the low word of the vacuum alarm limit. (See F2A4 for the high word.)

4.25 F2A6

Read the high word of the average vacuum reading and save the low word for a subsequent read with an F2A7 command. (F2A6 is an auxiliary command for F2A0, the data is in the IEEE floating point format requiring two words).

4.26 F2A7

Read the low word of the average vacuum reading (F2A7 is an auxiliary command for F2A1). (See F2A6 for the high word.)

4.27 F2A8

Read the high word of the vacuum averaging sum (the data is in the IEEE floating point format requiring two words).

4.28 F2A9

Read the low word of the vacuum averaging sum. (See F2A8 for the high word.)

4.29 F6A0

Read module ID number. The number 145 (91 in hex) is returned.

4.30 F6A1

Read module firmware version number. A 16 bit value is returned. The most significant byte is the major version number, and the least significant byte is the minor version number.

4.31 F6A2

Make a diagnostic memory read from the address specified with F17A2. This command keeps reading one memory location.

4.32 F6A3

Make diagnostic block memory reads from the address specified with F17A2. This command allows you to read consecutive memory locations.

4.33 F6A7

Read hardware debugging value. This value increments each time an F6A7 is done, and it is reset to zero when an F16A15 is done. The amount of time that this command uses is determined by the delay value written with F16A15.

4.34 F8A0

Test module LAM. The Q response indicates whether the module is requesting LAM (Q = true) or not (Q = false). This command is implemented entirely in the hardware and does not interrupt the module CPU. Consequently, No-Q retries are not required. A single access always returns the proper status.

4.35 F9A0

Reset module. This command always returns Q. This command is implemented entirely in the hardware and is equivalent to pressing the reset button on the module front panel. It causes the module CPU to be reset, and the ensuing module initialization may take as much as 100 msec. Attempts at communication before reset is complete will result in No-Q.

4.36 F16A0

Write a starting channel and a number of channels to read vacuum data with F0A0. The data format is as follows.
Bits 15:8Starting channel (0 to 63)
Bits 7:0 Number of channels (1 to 64)

4.37 F16A1

Write LAM mask register. See F0A2 for the register bit organization.

4.38 F16A5

Write vacuum alarm limit. The data is in the IEEE floating point format requiring two word writes.

4.39 F16A10

Write alarm retry limit (number of times out of tolerance before generating an alarm).

4.40 F16A15

Write a delay value and reset the hardware test counter for F6A7 (read test). The value written by this command determines how long subsequent F6A? commands will be delayed. F16A15 also resets the hardware test counter to zero.

4.41 F17A0

Write a starting channel and a number of channels to read status word with F1A0. The data format is as follows.
Bits 15:8Starting channel (0 to 63)
Bits 7:0 Number of channels (1 to 64)

4.42 F17A1

Write a starting counter and a number of counters to read with F1A1. The data format is as follows.
Bits 15:8 Starting counter (0 to 10)
Bits 7:0Number of counters (1 to 11)

4.43 F17A2

Write a starting address for F6A2 (memory read) and F6A3 (block memory read).

4.44 F17A3

Write a starting data point to read the averaging pool index data (A record of which pumps have been used for averaging) with F1A3.

4.45 F19A0

Write vacuum channel status bits. The channel to be modified is specified with F19A1. The data format is as follows.
Bit-0 equipped if set
Bit-1 in service if set

4.46 F19A1

Write a vacuum channel (0 to 63) to modify the status bits.

4.47 F19A2

Clear diagnostic counters (located in CNTBUF). The data format is as follows.
Bits 15:8Starting counter (0 to 10)
Bits 7:0Number of counters (1 to 11)

4.48 F24A0

Disable module LAM.

4.49 F24A1

Reset vacuum interface.

4.50 F24A2

Reset the FPC (MC68881).

4.51 F26A0

Enable module LAM.

4.52 F26A1

Reset all word pointers for reading.

4.53 F26A2

Reset all word pointers for writing.

5. HARDWARE DESCRIPTION

The CAMAC 145 is a single wide module, which consists of a board and front panel. Main functions of the module are a microcomputer, a floating point processor, an CAMAC interface and a vacuum readback interface.

5.1 Hardware Functions

  1. CPU: Motorola MC68000 microprocessor clocked at 8 MHz
  2. Memory: 64K bytes of RAM, 64K bytes of EPROM, 2K bytes of NVR
  3. Interrupt controller: AMD Am9519A
  4. Timer: AMD Am9513A (five timing channels)
  5. TCLK event source: Programmable with PLS153
  6. RS232 port: Signetics 2681 communication interface and Linear Tech. LT1081 driver/ receiver
  7. CAMAC interface: Command decoder (providing up to 192 interrupt vectors), 16 bit read and write registers, command managing circuits and LAM circuit
  8. Vacuum readback interface: Incoming line is coupled with transformer and terminated into 51 ohms, and Signetics NE521 dual-comparator reshapes incoming signal converting it from bipolar signal to unipolar TTL signal.
  9. Serial to parallel conversion: Conversion circuit is implemented in Altera EPM5128 (high density, erasable PLD), which includes parity check, time-out detection, clear synchronization as well as serial to parallel conversion.
  10. Floating point conversion: Motorola MC68881, full confirmation to the IEEE P754 standard, capable of handling seven data types (byte, word and long word integers; single, double and extended precision real numbers; and packed BCD real numbers)
  11. DTACK generation and CAMAC command managing circuits are implemented in Altera EPM5032.
  12. Others: 8 bit data display on front panel

5.2 Memory Map

Memory Map of CAMAC 145 Module with MC68000
       | SP     | SD     |
       |        |        |
FE8000 +--------+--------+
       |        |--------| IOPG (4Kb)
       |                 |
FF0000 +--------+--------+
       |                 |
       |                 |
       |   PROM (64Kb)   |
       |                 |
0      +--------+--------+
       |Note(*) |        |
4000   +--------+        +
       |                 |
       | RAM (64Kb)      |
       |                 |
       +--------+--------+
10000  |        |--------| NVR (4Kb) Only odd locations are used for
                           this (Data Bits 0:7).
Notes: (*) A block of address locations (from 0 to $3FFF in the SP space is switched from PROM to RAM. At the system reset, a part of PROM is mapped into the address block, where the CPU reads the initial stack pointer and program counter and starts executing the firmware which resides in the PROM. The CPU turns off the PROM from the address block with the first instruction in the firmware. Because the PROM is no longer needed to be mapped there once the firmware execution is started.

5.3 CAMAC Command Management

The CAMAC command management circuits for the 145 are the same as the one for the 193 except the fact that they are implemented in the Altera EPM5032.

5.3.1 General Command Control

All the CAMAC commands except F0A1, F8A0 and F9A0 are processed through the circuit shown in Fig. 1a. The circuit has two D-type flip-flops, which are connected together in tandem. The CAMAC dataway cycle is totally asynchronous with the CPU memory cycle. The two flip-flops synchronize the CAMAC cycle with the CPU cycle in an orderly manner.

When there is no command pending, GCMD (General Command) in the figure arrives at Pin-CK of the flip-flop on the left, and the low to high transition of the signal triggers the flip-flop. If QD1 is low, CMPND (Command Pending stays false, and the Q is generated as shown in Fig. 1b. At the lagging edge of S2, the flip-flop on the right is set by QP1, and the interrupt request INT1 is sent to the CPU. When the CPU acknowledges the request, it clears the request with CMWDEN (CAMAC Write Data Enable) during the interrupt service routine. If QD1 is high, CMPND becomes true, and the Q is not generated as shown in Fig. 1c.

5.3.2 Read Command Control

When a read command arrives, it is processed through the circuit discussed in (5.3.1), and if another command is not pending, the interrupt request INT1 is generated. The CPU fetches and latches a word of data for the next read command during the service routine. If a word of data has been latched with the previous read command, the current command reads it. The read command control circuit is shown in Fig. 2a. When RCMD (Read Command) arrives, if QD? is true (data ready), and if CMTCH (Command Match) is high, what result from these are (1) RDVAL (Read Data Valid) = true, (2) RDEN (Read Data Enable) true and (3) Q = true as shown in Fig. 2b. When RCMD arrives, if QD2 is not true, the results are (1) RDVAL = false, (2) RDEN = false and (3) Q = false as shown in Fig. 2c. When RCMD arrives, even if QD2 is true, if CMTCH is false, QD2 is cleared 100 nSec after the leading edge of GCMD (that is before S? arrives), and the results are (1) RDVAL = false, (2) RDEN = false and (3) Q ? false. Synchronization between RCMD and CMRDLT (CAMAC Read Data Latch) is done by two flip-flops shown in Fig. 2a.

5.4 CAMAC F & A to Interrupt Vector Conversion

One simple device called 82S147A (512 x 8 bipolar PROM) does convert CAMAC functions/ subaddresses to interrupt vectors. The device can be programmed for any applications that one would imagine, and if one wants to change the repertoire of F/As, all that he has to do is to program another PROM. The only restriction is the fact that 9 bit information produces 8 bit information or that the MC68000 can handle up to 192 user interrupt vectors.

5.5 The MC68881 Floating Point Coprocessor (FPC)

The MC68881 was designed for use as a coprocessor with the MC68020 microprocessor. However, when it is used with the MC68000, it is treated as a peripheral device rather than as a coprocessor. The MC68000 sees a number of registers in the MC68881, through which the CPU transfers instructions and data to the FPC and receives flags and data from it.

The FPC software was written using what is called the F-line trap technique. The MC68000 does not execute the FPC op-codes, however it does detect or trap them, forcing itself into an exception state. While it is in the exception state, the CPU transfers control to a routine that decodes the FPC op-codes and emulates it with a series of 68000 instructions that control the 68881.

5.6 Serial to Parallel Conversion (Implemented in EPM5128)

The serial to parallel conversion circuits consist of Input Control, Data Shifter, Data Strobe Generator, Output Enable, Parity Check, Time-out Detector, Timing Generator and Clear Synchronize.

5.6.1 Parity Check

The incoming serial word is made of 20 bits (one header bit, 18 data bits and one parity bit). A flip-flop is set when the header bit arrives because it always contains an '1'. The flip-flop is toggled whenever an '1' arrives, and it produces an even parity over 19 bits (one header bit and 18 data bits). If there is a mismatch between the produced bit and the incoming parity bit the parity error is generated.

5.6.2 Time-out

A flip-flop is set with the first bit of the incoming serial word and is reset with the 20th bit. If resetting does not occur within one msec, the time-out error is generated. Under normal conditions, it takes 20 uSec to complete the serial reception.

5.6.3 Clear Synchronization

When the CPU reads the data, it attempts to clear the serial to parallel conversion circuits. However, because the CPU read is asynchronous with the serial reception, if clear occurs in the middle of reception, the following operation becomes totally out of order. In order to avoid all of this, the clear request is temporarily stored on a flip-flop and is inhibited until the serial reception completes. The CINHB (Clear Inhibit) signal is generated by an one-shot which is triggered by bit cell pulses.

5.7 Front Panel

  1. N: When on, it indicates that the module is addressed by the crate controller.
  2. LAM: When on, it indicates that the module is asserting the LAM.
  3. LMEN: When on, it indicates that the LAM is enabled.
  4. HB: When on, it indicates that the CPU is alive and functioning normally under program control.
  5. HALT: When on, it indicates that the CPU is being reset or that the CPU has stopped executing instructions (such as in a double bus fault condition).
  6. TCLK: When on, it indicates that the 10 MHz carrier of the Tevatron clock is detected at the module.
  7. VRIP: When on, it indicates that vacuum data reception is in progress.
  8. DSB<0:7>: These are used for various diagnostic purposes, e.g., indication of module initialization.
  9. VIV: This is a test point for vacuum readback input.
  10. GND: This is a test point for the ground.
  11. RS232: It provides a standard asynchronous terminal port.
  12. RESET: When depressed, it resets the module hardware and re-starts the module firmware.
  13. +5 and -5: These indicate the status on +5 and -5 power supplies.

5.8 I/O Connections

The I/O connections are made via the 36 contact Viking type connector.
ContactSignalContactSignal
1LGnd1RGnd
2Lnc2RTCKIN
7LVCMN7RVCMP
13LRXDA13Rnc
14LGnd14RTXDA
15LRXDB15Rnc
16LGnd16RTXDB
Notes: L = left, R = right, nc = no connections

6. FUSEWARE

There are a total of eight PLDs (Programmable Logic Devices) used on the C145 module. The documentation on these devices exist on VAX or an IBM PC AT, and their file names are listed as follows.
  1. PLD1: FTV145A.LS on SYS$AUX1:[EXORMACS.C145], C145 FA TO VECTOR CONVERSION #A
  2. PLD2: PLD2.ABL on A:\C145, this device decodes CAMAC FAN and produces general command, read command, F0A1, (F8A0) and F9A0, and it also generates Q and X responses.
  3. PLD3: PLD3.ABL on A:\C145, this device produces memory select lines (PROM, RAM, I/O Page, IACK and NVR).
  4. PLD4: PLD4.ABL on A:\C145, this device produces select lines for CAMAC registers, latches, SIO, timer, UIC and FPC.
  5. PLD5: PLD5.ABL on A:\C145, this device produces select lines for vacuum read channel/ data, heart beat, display data bits and map register.
  6. PLD6: PLD6.ABL on A:\C145, this device produces LAM, LAM enable, R/ W data strobes, IAK1 and IAK2.
  7. PLD11 (EPM5032): CRCDT.* on A:\C145, this includes DTACK generator, CAMAC command control and CAMAC read control.
  8. PLD12 (EPM5128): SPCNV2.* on A:\C145, this includes serial to parallel conversion, parity check, time-out and clear synchronize.

7. REFERENCES

  1. B. Hendricks, C145.C (Firmware program list), April 19, 1989.
  2. K. Seino, TS145B.SRC (Test program list), July 7, 1989.
  3. Motorola, Inc., 16 Bit Microprocessor User's Manual, 1982.
  4. Motorola, Inc., MC68881/ MC68882 Floating Point Coprocessor User's Manual, 1987.
  5. Advanced Micro Devices, Inc., MOS Microprocessors and Peripherals 1985 Data Book.
  6. Motorola, Inc., AR233, Software links math chip to 68000-family uPs.

8. DRAWINGS

  1. C145 Schematic: ED-218520
  2. C145 Front Panel: MD-218521
  3. C145 FP Silkscreen: MD-218522
  4. C145 Assembly: MD-218544

APPENDIX A

Summary of CAMAC Commands
F0A0 Read vacuum data for number of channels as specified with F16A0
F0A1 Read module status.
F0A2 Read and clear LAM source register.
F0A3 Read LAM mask register.
F0A4 Read average vacuum data.
F0A5 Read alarm limit.
F0A6 Read number of bad pumps.
F0A7 Read number of vacuum interface time-outs.
F0A8 Read number of FPC errors.
F0A9 Read system timer.
F0A10 Read alarm retry limit.
F0A11 Read current alarm retry count.
F0A12 Read number of pumps in average.
F0A13 Read vacuum interface reset count
F0A14 Read parity error count
F1A0 Read status for pumps specified with F17A0.
F1A1 Read diagnostic counter registers.
F1A3 Read vacuum averaging pool indices.
F2A0 Read the high word of the average vacuum reading.
F2A1 Read the low word of the average vacuum reading.
F2A2 Read the high word of the system timer.
F2A3 Read the low word of the system timer.
F2A4 Read the high word of the vacuum alarm limit.
F2A5 Read the low word of the vacuum alarm limit.
F2A6 Read the high word of the average vacuum reading. (Auxiliary)
F2A7 Read the low word of the average vacuum reading. (Auxiliary)
F2A8 Read the high word of the vacuum averaging sum.
F2A9 Read the low word of the vacuum averaging sum.
F6A0 Read module number.
F6A1 Read firmware version number.
F6A2 Make diagnostic memory reads from address specified with F17A2.
F6A3 Make diagnostic block memory reads from address specified with F17A2.
F6A7 Make diagnostic CAMAC reads.
F8A0 Test LAM, Q is returned if LAM is on.
F9A0 Reset module.
F16A0 Write starting channel and number of channels for F0A0.
F16A5 Write vacuum alarm limit.
F16A10 Write vacuum alarm retry limit.
F16A15 Write diagnostic delay value for CAMAC read/ write tests.
F17A0 Write starting channel and number of channels for F1A0.
F17A1 Write starting counter and number of counters for F1A1.
F17A2 Write address for subsequent F6A2 and F6A3.
F17A3 Write starting datapool index for F1A3.
F19A0 Write vacuum channel status bits.
F19A1 Write status channel to modify.
F19A2 Clear diagnostic counters.
F24A0 Disable LAM.
F24A1 Reset vacuum interface.
F24A2 Reset the FPC (68881).
F26A0 Enable LAM.
F26A1 Reset all word pointers for reading.
F26A2 Reset all word pointers for writing.

A.2 Vacuum Data Formats

Vacuum channel and status
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| PE| TE|       |               |       | CHANNEL NUMBER        |
+---+---+---+---+---+---+---+---+-------+---+---+---+---+---+---+
  15  14                       8 7         5                   0

PE = Parity Error, TE = Time-out Error

Vacuum data
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|               |       M       |       N       |       E       |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
  15          12 11            8 7             4 3             0

M.N x 10 ** (-E)

PDR (Packed Decimal Real)
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|   | SE|       |               |               |      EXPO     |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
  15  14      12 11            8 7             4 3             0

SE = Sign of Exponent

+---------------+---------------+---------------+---------------+
|               |               |               |    MANT16     | Decimal
+---------------+---------------+---------------+---------------+ Point
+---------------+---------------+---------------+---------------+
|    MANT15     |               |               |               |
+---------------+---------------+---------------+---------------+
Words 3 through 5 are not shown here.

SPBR (Single Precision Binary Real)
+---+-------------------------------+---------------------------+
| S |     BIASED EXPONENT (8)       |      FRACTION (7)         |
+---+-------------------------------+---------------------------+
  15 14                            7 6                         0

    S E-127
(-1) x 2 x 1.F

+---------------------------------------------------------------+
|                     FRACTION (16)                             |
+---------------------------------------------------------------+

Security, Privacy, Legal