# Patent

## Title
Configurable ASIC for use with a programmable I/O module

## Abstract

An application-specific integrated circuit (ASIC) for use with a programmable I/O module includes programmable circuitry that enables the ASIC to be configured to support various different I/O functions. The ASIC includes a pin interface, a data interface, a digital section, and an analog section. The pin interface supports analog and digital signal communication and the data interface supports digital data communication. The digital section includes registers for storing digital data such as configuration commands, signal control commands, and digital signal information. The analog section is in electrical signal communication with pin interface and digital data communication with the registers. The analog section includes multiple function-specific elements for processing an electrical signal that is communicated via the pin interface such that the analog section can be configured to establish one of multiple different function-specific processing paths in response to a configuration command received via the data interface.

## Background
CROSS-REFERENCE TO RELATED APPLICATION
This application is a continuation-in-part of previously filed and co-pending patent application Ser. No. 11/595,045, filed 9 Nov. 2006 and is related to patent application Ser. No. 11/609,753, filed 12 Dec. 2006.


BACKGROUND OF THE INVENTION
Devices that provide electrical signal outputs and/or are controlled by electrical signal inputs are referred to generally as input/output (I/O) devices. Typical I/O devices used in industrial applications include pumps, valves, mass flow controllers, and thermocouples. I/O devices used in industrial applications are usually accompanied by an I/O module, which converts electrical signals into raw digital or analog values when functioning as an input module and converts digital or analog values into electrical control signals when functioning as an output module. Raw digital and/or analog values are usually interpreted by remotely hosted software into meaningful outputs, such as for example, the state of a pump or valve, the flow rate of a liquid, or the temperature of an environment. The remotely hosted software must be programmed with specific knowledge of the I/O device and the I/O module to enable monitoring and control of the I/O device.
Conventional I/O modules are designed specifically for a particular I/O application. For example, application-specific I/O modules include analog input modules, analog output modules, digital input modules, and digital output modules. Because I/O modules are designed for specific applications, different types of I/O modules are often needed for each different type of I/O device that is used. In complex industrial applications with many different types of I/O devices in use, many different types of I/O modules may be needed.
SUMMARY OF THE INVENTION
An application-specific integrated circuit (ASIC) for use with a programmable I/O module includes programmable circuitry that enables the ASIC to be configured to support various different I/O functions. One ASIC can be associated with each pin of an electrical connector, such as a D-sub connector, to form an I/O module that is fully programmable on a pin-by-pin basis.
In an embodiment, the ASIC includes a pin interface, a data interface, a digital section, and an analog section. The pin interface supports analog and digital signal communication between the ASIC and an I/O device and the data interface supports digital data communication between the ASIC and a microprocessor. The digital section is in data communication with the data interface and includes registers for storing digital data such as configuration commands, signal control commands, ASIC status information, and digital signal information. The analog section is in electrical signal communication with pin interface and digital data communication with the registers of the digital section. The analog section includes multiple function-specific elements for processing an electrical signal that is communicated via the pin interface such that the analog section can be configured to establish one of multiple different function-specific processing paths in response to a configuration command received via the data interface.
In an embodiment, the ASIC can be programmed to generate an electrical signal for output via the pin interface or to generate digital data for output via the data interface in response to an electrical signal received via the pin interface. In an embodiment, the analog section of the ASIC includes function-specific module including, but not limited to, a power supply module that includes analog circuit elements for supplying power via the pin interface, an output module that includes analog circuit elements for providing an output signal to the pin interface, an input module that includes analog circuit elements for converting an input signal received via the pin interface to digital data, and a serial I/O module that includes circuit elements for serial communications.
In an embodiment, an I/O module for use with I/O devices such as pumps, valves, thermocouples, and mass flow controllers includes one of the ASICs associated with each electrical signal interface to an I/O device. Additionally, a matrix switch can be incorporated into each of the ASICs in order to enable electrical signals related to the I/O device to be distributed between the ASICs. Matrix switches within the different ASICs are electrically connected by at least one signal path that is dedicated to electrical signal distribution within the I/O module and the matrix switches are configurable on an ASIC-by-ASIC basis such that the desired electrical signal distribution can be achieved on a per-application basis. Incorporating configurable matrix switches into the ASICs enables electrical signals to be easily distributed among the ASICs in an I/O module.
In an embodiment, the matrix switch within each ASIC is configured via the same serial interface that is used to configure the analog and digital sections of the ASIC. Because the matrix switches are configured via the same serial interfaces, no additional configuration interfaces need to be added to the ASICs to facilitate configuration of the matrix switches.
In another embodiment, the I/O module includes I/O interface software pre-programmed within the I/O module. The pre-programmed I/O interface software enables a user to remotely configure the I/O module, including the ASICs and the matrix switches within the ASICs, to support an I/O device by selecting an I/O device from a menu of pre-programmed I/O devices. Once an I/O device is selected and the I/O module is configured to support the selected I/O device, a user can utilize pre-programmed interfaces to remotely monitor a parameter of the I/O device and to control the operation of the I/O device, e.g., through manual commands or through a process control loop. Because the I/O module includes configuration, monitoring, and control capability pre-programmed within the I/O module, no additional I/O software is required to configure an I/O module to support a connected I/O device, to begin monitoring a parameter of the connected I/O device, and/or to control a parameter of the connected I/O device. The I/O module can be configured using a simple menu driven interface without the need for an end user to develop device-specific software code. Further, the configuration, monitoring, and control interfaces of the I/O module can be accessed remotely via a well known network connection such as an Ethernet connection and through a well known interface such as a web browser.
In an embodiment, the I/O module is pre-programmed with configuration, monitoring, and control interface modules for multiple different types of I/O devices. Through the corresponding configuration, monitoring, and control interface modules, a user can remotely configure the I/O module to support whichever type of I/O device the I/O module is connected to. Because the I/O module is pre-programmed to support multiple different types of I/O devices, the same type of I/O module can be used to support many different types of I/O devices. Additionally, a single I/O module can be configured to support multiple different I/O devices in parallel.
Other aspects and advantages of the present invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 depicts an embodiment of an I/O module that can be programmed to be used with different types of I/O devices.
FIG. 2 is a functional block diagram of an embodiment of I/O interface software that is pre-programmed into the I/O module of FIG. 1.
FIG. 3 depicts an example of a configuration interface that is supported by the I/O module of FIG. 1.
FIG. 4 depicts an exemplary configuration interface that provides additional configuration parameters that are specific to the selected I/O device.
FIG. 5 depicts exemplary monitoring and control interfaces for an I/O device such as a valve.
FIG. 6 depicts an example of a configuration interface for a fluid flow sensor that is pre-programmed into the I/O module of FIG. 1.
FIG. 7 depicts an exemplary monitoring interface for the fluid flow sensor of FIG. 6.
FIG. 8 depicts an exemplary monitoring and control interface of an I/O module in which two different I/O devices are monitored and controlled in parallel.
FIG. 9 is a functional block diagram of an I/O module that is configured with three different active logical I/O modules that support three different I/O devices in parallel.
FIG. 10 is a process flow diagram of a method for configuring an I/O module for use with an I/O device in an industrial application.
FIG. 11 depicts an embodiment of the I/O module from FIG. 1 that includes a matrix switch incorporated into each one of the ASICs.
FIG. 12 depicts an expanded view of one of the matrix switches from FIG. 11.
FIG. 13 depicts an embodiment of a serial command in which some of the bits are dedicated to carrying a matrix switch command.
FIG. 14 depicts an example of an electrical signal that is distributed from ASIC 1 to ASIC 2 via the matrix switches.
FIG. 15 depicts an example of an electrical signal that is distributed from ASIC 1 to multiple other ASICs via the matrix switches.
FIG. 16 depicts an example of an electrical signal that is generated at an ASIC within the I/O module, distributed to another ASIC within the I/O module, and then provided to the I/O device via the pin associated with the other ASIC.
FIG. 17 depicts the ASICs of an I/O module that are clustered into two different groups of four ASICs.
FIG. 18 is a process flow diagram of a method for configuring an I/O module for use with an I/O device in an industrial application.
FIG. 19 depicts an expanded view of one ASIC that is connected to one pin of the I/O module.
FIG. 20 depicts a functional layout of an embodiment of the analog section of the ASIC.
FIG. 21 depicts an embodiment of the analog section configured to establish a power supply path.
FIG. 22A illustrates the output module configured to function as a voltage source.
FIG. 22B illustrates the output module configured to function as a current source.
FIG. 23A illustrates an embodiment of the analog input module configured to measure an input voltage.
FIG. 23B illustrates an embodiment of the analog input module configured to measure an input current.
FIG. 24 illustrates an embodiment of the digital input module configured to sense digital input signals at the pin interface.
FIG. 25A illustrates an embodiment of the serial I/O module configured for serial signaling between the microprocessor and the I/O device.
FIG. 25B illustrates how two components of a differential signal can be routed to the differential signaling circuit of one of two ASICs.
FIG. 26 illustrates synchronization logic between an ASIC and the microprocessor.
FIG. 27A illustrates a first embodiment of a synchronization scheme between the microprocessor and multiple ASICs.
FIG. 27B illustrates a second embodiment of a synchronization scheme between the microprocessor and multiple ASICs.
FIG. 28A illustrates data communications between the microprocessor and multiple different ASICs that are accomplished via direct communications between the microprocessor and the ASICs.
FIG. 28B illustrates data communications between the microprocessor and multiple different ASICs that is accomplished in a “daisy-chain” fashion using the ASIC-to-ASIC data interfaces.
FIG. 28C illustrates parallel data communications between the microprocessor and multiple different ASICs.
FIG. 29 illustrates multiple interfaces that may be present on each ASIC.



Throughout the description similar reference numbers may be used to identify similar elements.
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 depicts an embodiment of an I/O module 100 that can be programmed to be used with different types of I/O devices 102. An I/O module is often referred to as an input module when it receives electrical signals from an I/O device and as an output module when it provides electrical signals to an I/O device. The term “I/O” is used generally to refer to a device that includes input and/or output functionality. The I/O module depicted in FIG. 1 includes a housing 104, an electrical connector 106, application-specific integrated circuits (ASICs) 108, a microprocessor 110, memory 112 and 114, and a communications module 116.
The electrical connector 106 is an interface that enables an electrical signal connection to be made between an I/O device 102 and the I/O module 100. The electrical connector is typically a connector such as a D-subminiature or “D-sub” connector 107. D-sub connectors typically include two or more parallel rows of electrical signal interfaces 109, in the form of, for example, pins or sockets, which are surrounded by a “D” shaped metal shield. Exemplary D-sub connectors include DA-15, DB-25, DC-37, DD-50, and DE-9 connectors, having 15, 25, 37, 50, and 9 pins, respectively. D-sub connectors are well-known in the field of I/O devices. Although D-sub connectors are described, other types of electrical connectors, including terminal blocks, plug and socket connectors, RS-232 connectors, and RS-422/485 connectors, can be used with the I/O module.
The housing 104 of the I/O module 100 contains the ASICs 108, the microprocessor 110, the memory 112 and 114 and the communications module 116. The housing may be, for example, a plastic or metal shell that encases the ASICs, the microprocessor, the memory, and the communications module.
The ASICs 108 within the housing of the I/O module process signals that are received from and/or provided to an I/O device 102. In the embodiment of FIG. 1, each ASIC includes signal processing circuitry 111 and is connected to one pin 109 of the electrical connector 106 by an electrical signal path 115. When the I/O module is functioning as an input module, the ASICs convert input electrical signals (e.g., either a voltage or current) into a digital or analog value (e.g., a digital output or a voltage/current measurement). The conversion of an electrical signal from an I/O device to a digital or analog value is accomplished through the signal processing circuitry and is described below. The digital or analog value, which is generated by the ASIC, is then provided to the microprocessor 110 via a global data bus 113 for further processing as described below.
When the I/O module 100 is functioning as an output module, the ASICs 108 convert digital data received from the microprocessor 110 into electrical signals that are used to control the corresponding I/O device 102. For example, an ASIC converts digital data into an electrical signal of a particular voltage or current that is used to control an I/O device. The conversion of digital data to electrical signals to control an I/O device is accomplished through the signal processing circuitry 111 and is described in more detail below. The electrical signals generated by the ASICs are provided to the I/O devices via the electrical connectors and are used to control the corresponding I/O device.
In the embodiment of FIG. 1, the ASICs 108 are configurable devices. In particular, the ASICs can be configured to perform various different digital and/or analog I/O signal conversions. Additionally, the ASICs are configurable to correspond with different signal levels (e.g., low signal levels in the millivolt range or high signal levels in the volt range, e.g., up to 24V) and/or to correspond with different types of signals (e.g., single-ended and/or differential in/out signals). The configurability of the ASICs is one aspect of the I/O module 100 that enables the same type of I/O module to support many different types of I/O devices. In the embodiment of FIG. 1, each ASIC includes a communications interface 117, such as a serial interface, which enables data communication between the ASICs and the microprocessor 110.
The I/O module 100 depicted in FIG. 1 includes multiple ASICs 108, with each ASIC supporting one electrical signal interface (e.g., one pin). The existence of multiple ASICs enables the I/O module to support multiple different I/O devices in parallel and/or multiple electrical signal connections between a single I/O device and the I/O module. An example of the I/O module supporting two different I/O devices in parallel is described below.
The microprocessor 110 within the housing 104 of the I/O module 100 may include a multifunction microprocessor and/or an application specific microprocessor that is operationally connected to the memory. In an embodiment, the microprocessor executes computer readable program code and runs a real-time operating system such as Linux, WINDOWS CE, ITRON, VxWORKS, or Micro-C/OS-II. Although some examples of real-time operating systems are provided, other operating system software can be used in conjunction with the microprocessor.
The memory 112 and 114 within the housing 104 of the I/O module 100 may include non-volatile memory 112 such as electrically erasable programmable read only memory (EEPROM) or flash memory and volatile memory 114 such as random access memory (RAM). Operating system code and other pre-programmed computer readable program code are typically stored in the non-volatile memory while data generated and used during operation of the I/O module is typically stored in the volatile memory. Although the microprocessor and memory are depicted as separate functional units, in some instances, the microprocessor and memory are integrated onto the same device and typically the microprocessor will include some on-chip memory. In an embodiment, there may be more than one discrete microprocessor unit and more than two memory units in the I/O module. As indicated in FIG. 1, the memory also includes I/O interface software 120 that enables the I/O module to operate as described below.
The communications module 116 within the housing 104 of the I/O module 100 enables the I/O module to communicate with a remote computer 122. For example, the communications module supports a well known network communications protocol such as Ethernet, which allows protocol data units (e.g., Ethernet packets) to be exchanged between the I/O module 100 and the remote computer via a network 124, e.g., a local area network (LAN), a wide are network (WAN), a backbone network, etc. In an embodiment, the Ethernet-compatible communications module is incorporated into the microprocessor.
In accordance with an embodiment of the invention, the I/O interface software 120 resident within the I/O module 100 allows a user to remotely configure the I/O module to support an I/O device 102 by selecting an I/O device from a menu of pre-programmed I/O devices. Once an I/O device is selected and the I/O module is configured to support the selected I/O device, a user can utilize pre-programmed software to remotely monitor a parameter of the I/O device and to control the operation of the I/O device, e.g., through manual commands or through a process control loop. Because the I/O module includes configuration, monitoring, and control capability pre-programmed within the I/O module, no additional I/O software is required to get an I/O module configured, to begin monitoring a parameter of the I/O device, and/or to control a parameter of the I/O device. The I/O module can be configured using a simple menu driven interface without the need to develop device-specific software code. Further, the configuration, monitoring, and control interfaces of the I/O module can be accessed remotely via a well known network connection such as an Ethernet connection and through a well known interface such as a web browser.
In an embodiment, the I/O module 100 is pre-programmed with configuration, monitoring, and control interface modules for multiple different types of I/O devices 102. Through the corresponding configuration, monitoring, and control interface modules, a user can remotely configure the I/O module to support whichever type of I/O device the I/O module is connected to. Because the I/O module is pre-programmed to support multiple different I/O devices, the same type of I/O module can be used to support many different types of I/O devices. Additionally, a single I/O module can be configured to support multiple different I/O devices in parallel.
As described above, the I/O module 100 is pre-programmed with I/O interface software 120 that enables configuration of an I/O module, monitoring of a connected I/O device, and control of a connected I/O device. FIG. 2 is a functional block diagram of an embodiment of the I/O interface software 120 that is pre-programmed into the I/O module of FIG. 1. The I/O interface software includes a configuration interface module 130, a monitoring interface module 132, a control interface module 134, and various device-specific and parameter-specific modules 136, 138, and 140. The configuration interface module includes computer readable program code that provides configuration functionality for the I/O module. In particular, the configuration interface module provides a configuration user interface that enables a user to select an I/O device from a menu of I/O devices that are supported by the I/O module. The configuration interface module is also associated with configuration modules that are specific to configuring the I/O module to correspond to a selected I/O device. For example, device-specific configuration modules 136 such as a pump configuration module, a valve configuration module, a mass flow controller configuration module, and a thermocouple configuration module are pre-programmed as part of the I/O interface software. Each device-specific configuration module includes computer readable program code that is specific to configuring the I/O module to support a specific type of I/O device. Configuration operations that are accomplished via the device-specific configuration modules include, but are not limited to:
1) identification of the pins to which an I/O device is connected;
2) configuration of the ASICs. In an embodiment, the ASICs are configured through configuration commands that are sent from the microprocessor via a bus communications protocol such as the serial peripheral interface (SPI) protocol;
3) configuration of signal paths within the I/O module;
4) loading of translation code that is responsible for translating digital and/or analog values to meaningful outputs (e.g., translating a digital “1” to the meaningful output “valve open”) or translating a meaningful input to a digital or analog value (e.g., translating the command “close valve” to a digital “0”); and
5) loading of various graphical user interfaces, such as configuration, monitoring, and control graphical user interfaces.
The monitoring interface module 132 includes computer readable program code that provides monitoring functionality through the I/O module 100. In particular, the monitoring interface module provides a monitoring user interface that enables a parameter of an I/O device 102 to be monitored from a remote computer 122. For example, monitoring of an I/O device may include monitoring the status of a pump (on/off) or a valve (open/closed), monitoring the current temperature of an environment in which a thermocouple is present, or monitoring the flow rate of a mass flow controller. In the embodiment of FIG. 2, the monitoring interface module is associated with monitoring modules that are specific to monitoring a particular type of I/O device. For example, device-specific monitoring modules 138 such as a pump monitoring module, a valve monitoring module, a mass flow controller monitoring module, and a thermocouple monitoring module are pre-programmed as part of the I/O interface software. Each device-specific module includes program code that is pre-programmed into the I/O module to enable monitoring of the I/O device to be set up through a simple graphical user interface and without having to write new program code.
The control interface module 134 includes computer readable program code that provides control functionality through the I/O module 100. In particular, the control interface module provides a control user interface that enables a parameter of a supported I/O device to be controlled. Control of the I/O device may include, for example, manual control of the I/O device via user commands entered by a user at a remote computer, automatic control through a control routine hosted at a remote computer, or automatic control via a control routine that is pre-programmed within the I/O module. In an embodiment, controlling an I/O device through the I/O interface software within the I/O module includes turning on or off a pump, opening or closing a valve, or changing the setting of a mass flow controller. In the embodiment of FIG. 2, the control interface module includes control modules 140 that are specific to controlling a particular parameter. For example, parameter-specific control modules for various different parameters (e.g., parameters A, B, C, and D) are pre-programmed as part of the I/O interface software.
Although the I/O interface software 120 is depicted as having various different separate software modules 130-140, it should be understood that the computer readable program code associated with these software modules can be integrated and/or interconnected in many different ways that are known in the field of software development. For example, configuration, monitoring, and/or control software code related to a particular type of I/O device may be integrated into a device-specific software module. The particular organization of the I/O interface software within the I/O module is not critical to the invention.
An I/O module as described above can be configured by remotely accessing the configuration interface module that is pre-programmed into the I/O module, where remote access involves utilizing a network communications protocol to communicate between the I/O module and the remote computer. Further, an I/O device that is connected to the I/O module can be remotely monitored and/or remotely controlled by accessing the monitoring and control interface modules that are pre-programmed into the I/O module. Examples of configuration, monitoring, and control operations performed via the I/O module and I/O interface software of FIGS. 1 and 2 are described below with reference to FIGS. 3-9.
FIG. 3 depicts an example of a configuration interface 150 that is supported by the I/O module 100. In the example, the configuration interface, which is pre-programmed within the I/O module, is accessed via a remote computer through a network connection and a web browser. The configuration interface provides a menu 152 of I/O devices to select from. The I/O devices in the “I/O device type” menu represent different types of I/O devices for which pre-programmed configuration modules exist. In the example of FIG. 3, the menu of devices for which pre-programmed configurations exist includes a pump, a valve, a thermocouple, and a mass flow controller. The act of selecting one of the I/O devices in the menu initiates a process to configure the I/O module to correspond to the selected I/O device. In particular, selection of one of the I/O devices triggers the execution of a device-specific configuration module. In one embodiment, the I/O module is completely configured in response to the device selection while in other embodiments, the selection of a device triggers additional configuration parameters which are presented through a graphical user interface. For example, configuration parameters may include identifying the pins of the I/O module to which the I/O device is connected, selecting signal characteristics, naming device states, etc.
FIG. 4 depicts an exemplary configuration interface 156 that provides configuration parameters that are specific to the selected I/O device (e.g., a valve). The configuration parameters are pre-programmed into the I/O module and include:
1) I/O device name—an I/O device name that can be arbitrarily assigned to the I/O device on an application-specific basis;
2) pin settings—an identification of the pins to which the I/O device is connected. For example, the valve has two connections to the I/O module, a “signal” connection at a first pin and a “return” connection at a second pin. Through the selection menu, a user identifies the pin numbers of the pins to which the I/O device is connected;
3) signal state—the valve has two states and in this instance the states can be given application-specific names. For example, the “on” state of the valve can be named “opened” while the “off” state of the valve can be named “closed”; and
4) voltage—the voltage of the electrical signal that is expected from the I/O device and/or used to control the I/O device is identified. In this embodiment, the voltage is selected from a menu of expected voltages.
Although an exemplary configuration interface 156 is described with reference to FIG. 4, the particular configuration parameters provided in a configuration interface are device-specific. Further, although a particular type of graphical user interface is depicted, the exact type of graphical user interface used to present the configuration parameters is not critical. The critical aspect of the configuration interface is that the configuration parameters are pre-programmed within the I/O module and presented to a user that desires to configure the I/O module to correspond to a particular I/O device.
Once an I/O module is configured to support a particular I/O device, the monitoring and/or control interface modules 132, 134 (FIG. 2) can be used to monitor and/or control the I/O device to which the I/O module is connected. FIG. 5 depicts exemplary monitoring and control interface 158 for an I/O device such as a valve. In the example of FIG. 5, the current state of the valve is monitored through a monitoring interface 160 and the current state of the valve is identified as either “opened” or “closed.” The state of the valve is controlled through a control interface 162 and the state of the valve can be changed from “opened” to “closed” or from “closed” to “opened.” Although exemplary monitoring and control parameters are described with reference to FIG. 5, the particular monitoring and control parameters are device specific. Further, although the monitoring and control interfaces are presented in a particular manner, other techniques for presenting monitoring and control parameters are contemplated. For example, the monitoring and control interfaces can be presented at a remote computer as graphical images of dials, buttons, graphs, charts, tickers, etc.
The exemplary configuration, monitoring, and control interfaces described with reference to FIGS. 3-5 relate to a valve that has two states, “opened” or “closed.” As stated above, the I/O module can be configured to support various different types of I/O devices. FIG. 6 depicts an example of a configuration interface 164 for a fluid flow sensor that is also pre-programmed into the I/O module. The configuration interface of FIG. 6 includes some configuration parameters that are similar to the valve, e.g., “I/O device name,” “pin settings,” and “voltage.” However, the configuration interface also includes configuration parameters such as “engineering unit,” “scale,” and “offset,” which are specific to the fluid flow sensor. Again, although an exemplary configuration interface is described with reference to FIG. 6, the particular configuration parameters provided in a configuration interface are device-specific. Further, although a particular type of graphical user interface is depicted, the exact type of graphical user interface used to present the configuration parameters is not critical. The critical aspect of the configuration interface is that the configuration parameters are pre-programmed within the I/O module and presented to a user that desires to configure the I/O module to correspond to a particular I/O device.
FIG. 7 depicts an exemplary monitoring interface 166 for the fluid flow sensor of FIG. 6. In the example of FIG. 7, the flow rate measured by the fluid flow sensor is presented in engineering units such as liters per second. In this example, the flow rate is determined by converting an electrical signal (voltage or current) from the I/O device into an analog value and then translating the analog value to a flow rate in liters per second, where both the converting and translating are done at the I/O module itself. That is, the I/O module translates analog or digital values into meaningful outputs (e.g., a reading in liters per second). Again, although an exemplary monitoring parameter is described with reference to FIG. 7, the particular monitoring and/or control parameters are device specific. Further, although the monitoring interface is presented in a particular manner, other techniques for presenting monitoring and control parameters are contemplated. For example, the monitoring and control interfaces can be presented as graphical images of dials, buttons, graphs, charts, tickers, etc.
In addition to basic control functions such as controlling a valve to open or close, the control interface of the I/O module 100 can be pre-programmed to support more advanced control techniques. For example, the control interface of the I/O module can be pre-programmed to support process loop control with, for example, proportional-integral-derivative (PID) tuning. In an embodiment, a process loop control interface, such as a temperature control interface, presents various control parameters for configuration. For example, the temperature control interface may prompt a user to specify the desired temperature, the loop control method, and a control parameter such as a PID value. Interfaces for other process loop controls may present other configuration parameters.
In an embodiment, the I/O module 100 described with reference to FIGS. 1 and 2 can support multiple I/O devices 102 in parallel. In an embodiment, a configuration operation is performed for each supported I/O device. Once the I/O module is configured to support multiple I/O devices in parallel, the monitoring and control interface modules 132 and 134 pre-programmed into the I/O module can be used to monitor and/or control multiple devices in parallel. FIG. 8 depicts an exemplary monitoring and control interface 168 in which two different I/O devices are monitored and controlled in parallel. The monitoring and control interface for the two different I/O devices can be presented to a user on the same screen of a remote computer or on separate screens that can be called up on command.
Once an I/O module is configured to support an I/O device, a new I/O module is effectively created within the I/O module by the combination of the configured ASICs 108 and the device-specific software code that is executed by the microprocessor 110. Each new I/O module that is created is logically distinct from the other I/O modules and is therefore referred to as a “logical I/O module.” Because the physical I/O module described above with reference to FIGS. 1 and 2 can be configured to support multiple different I/O devices in parallel, the physical I/O module can have multiple logical I/O modules active at the same time. FIG. 9 is a functional block diagram of an I/O module 100 that is configured with three different active logical I/O modules 180, 182, and 184 that support three different I/O devices 102A, 102B, and 102C in parallel. In the example of FIG. 9, I/O device 102A is a digital I/O device such as a valve. On the I/O device side of the I/O module, the valve outputs an electrical signal to logical I/O module 1 that indicates the state of the valve and logical I/O module 1 translates the signal to a meaningful output that is indicative of the current state of the valve, e.g., either “opened” or “closed.” Logical I/O module 1 outputs the current state of the valve, e.g., either “opened” or “closed,” to a remote computer. On the remote computer side of the I/O module, the remote computer provides a change state command to logical I/O module 2 of the I/O module, e.g., a command to either “open” the valve or “close” the valve. Logical I/O module 2 translates the change state command to an electrical signal that can change the state of the valve from “opened” to “closed” or from “closed” to “opened.” In the example of FIG. 9, the current state of the valve is either “opened” or “closed” and the change state command is either “open” or “close.”
I/O device 102B is an analog I/O device such as a thermocouple that is used to measure temperature. On the I/O device side of the I/O module 100, I/O device 102B outputs an analog electrical signal (e.g., a voltage) that is translated by logical I/O module 3 to a meaningful output expressed as the current temperature in degrees Fahrenheit. The current temperature is provided to the remote computer for remote temperature monitoring.
I/O device 102C is an analog I/O device such as a mass flow controller that is used to control the flow rate of a fluid, e.g., the flow rate of gas to a furnace. On the remote computer side of the I/O module 100, a user sets the desired temperature. A temperature setting is provided to logical I/O module 3 as a temperature in degrees Fahrenheit. Logical I/O module 3 then generates an output control signal for the mass flow controller in response to the measured current temperature and the temperature setting. The control signal for the mass flow controller can be generated according to a process control algorithm that is configured via the control interface.
In an embodiment, the I/O interface software 120 depicted in FIG. 2 can be updated as necessary, for example, to add new modules to support new I/O devices and/or to update existing modules. The above-described I/O module can be configured to operate simultaneously as an input and an output module or as any combination of input and/or output modules. Further, the I/O module can simultaneously support multiple different types of I/O devices.
Although the I/O module has been described as supporting pumps, valves, thermocouples, and mass flow controllers, the I/O module can be used to support other types of I/O devices, including, for example, I/O devices that are used in industrial applications. Additional exemplary I/O devices that can be supported by the above-described I/O module include light bulbs, solenoid valves, relays, potentiometers, proximity sensors, switches, relay contacts, limit switches, push buttons, flasher, temperature controller, and a ModBus data device.
FIG. 10 is a process flow diagram of a method for configuring an I/O module for use with an I/O device in an industrial application. At block 1002, an I/O device is connected to at least one electrical connector of an I/O module. At block 1004, a configuration program, which is stored within the I/O module, is accessed from a remote host computer. At block 1006, an I/O device is selected from a menu of pre-programmed I/O devices available via the configuration program, wherein the selected I/O device corresponds to the type of I/O device to which the I/O module is connected and wherein the selecting triggers the activation of a device-specific program that is stored within the I/O module and is specific to the selected I/O device.
As described above, the I/O module includes multiple ASICs that can receive electrical signals from the I/O device and/or generate electrical signals for the I/O device. In some applications, it may be desirable to distribute an electrical signal related to a connected I/O device to different ASICs within the I/O module. For example, it may be desirable to distribute an electrical signal, which is received from the I/O device on pin 1 of the I/O module, to pins 10 and 25 of the I/O module. The distribution of electrical signals between ASICs could be achieved by incorporating one or more “off-the-shelf” crosspoint switch chips onto the same printed circuit board (PCB) as the ASICs. Although it is possible to incorporate one or more off-the-shelf crosspoint switch chips onto the same PCB as the ASICs, the additional components add cost and complexity to the I/O module.
In accordance with an embodiment of the invention, matrix switches are incorporated into the ASICs that are described above with reference to FIG. 1. Matrix switches within the different ASICs are electrically connected by at least one signal path that is dedicated to electrical signal distribution. Additionally, the matrix switches are configurable on an ASIC-by-ASIC basis such that the desired signal distribution can be achieved in each I/O module. Incorporating configurable matrix switches into the ASICs enables electrical signals to be easily distributed among the ASICs in the I/O module.
FIG. 11 depicts an embodiment of the I/O module 100 from FIG. 1 that includes a matrix switch incorporated into each one of the ASICs 108. As depicted in FIG. 11, each ASIC includes the signal processing circuitry 111, the serial interface 117, and a matrix switch 200. The matrix switches of the ASICs are connected to each other by a signal path 202. Each matrix switch includes circuitry that enables configurable electrical signal connectivity between a set of inputs and a set of outputs.
FIG. 12 depicts an expanded view of a matrix switch 200 that includes a switch fabric 204, a configuration module 206, an electrical signal interface 208 to an electrical signal interface of the I/O module (e.g., to a pin), electrical signal interfaces 210 to the signal path that connects the matrix switches, and configuration interfaces 212. The switch fabric provides configurable electrical signal paths between the inputs and outputs and the configuration module provides the logic to process configuration commands that are received at the configuration interfaces. In an embodiment, each matrix switch is a crosspoint switch that includes a matrix grid of rows and columns of signal paths. The intersection points of the rows and columns can be connected by activating a switch at the desired signal path intersection. Although one embodiment of the matrix switch is a crosspoint switch, the matrix switch may utilize other switching techniques. In an embodiment, the signal path 202 between the matrix switches 200 includes multiple parallel signal paths between the matrix switches.
Referring back to FIG. 11, in an embodiment, the matrix switch 200 within each ASIC 108 is configured in response to configuration commands received via the respective serial interfaces 117. In particular, serial configuration commands generated by the microprocessor 110 are communicated to the ASICs through the global data bus 113 and the serial interfaces. Because the matrix switches are configured via the existing serial interfaces, no additional configuration interfaces need to be added to the ASICs to facilitate configuration of the matrix switches.
In an embodiment, some bits of a serial command protocol are dedicated to configuration of the matrix switches. FIG. 13 depicts an embodiment of a 32-bit serial command 220 in which twelve bits (e.g., bits 0-2 and bits 9-17) are dedicated to carrying a matrix switch configuration command 222. Although in the embodiment of FIG. 13 the matrix switch configuration command is formed by two sets of non-continuous bits, in other embodiments, a matrix switch configuration command is formed by one continuous set of bits or more than two continuous sets of bits. Further, in another embodiment, the matrix switch command is carried in a stand alone serial command.
Using an I/O module that includes configurable matrix switches 200 incorporated into the ASICs 108 as described above with reference to FIG. 11, electrical signals destined for and/or received from an I/O device 102 can be distributed amongst the ASICs. Examples of electrical signal distribution via the matrix switches are described with reference to FIGS. 14-16. In each case, the matrix switches are configured via a matrix switch configuration command that is generated by the microprocessor 110. Typically, the configuration command is generated in response to a user interaction with the configuration interface (FIG. 2).
FIG. 14 illustrates an example of an electrical signal 226 that is distributed from ASIC 1 to ASIC 2. In the example of FIG. 14, the I/O device 102, such as a thermocouple, provides two electrical signals 226 and 228 to the I/O module 100. For example, two electrical signals of different voltage are provided to the I/O module via two different pins of the I/O module. The two different electrical signals are typically measured as a voltage differential. In order to measure the voltage differential of the two electrical signals, the electrical signal received at ASIC 1 (pin 1) is distributed to ASIC 2 and the voltage differential between the two electrical signals is measured by the signal processing circuitry within ASIC 2. The electrical signal distribution is achieved by configuring the matrix switch within ASIC 1 to distribute the electrical signal on a first signal path and by configuring the matrix switch within ASIC 2 to receive the signal on the same signal path. Because electrical signals are able to be distributed to different ASICs within the I/O module via the matrix switches, different signal processing operations such as a differential signal measurement can be easily facilitated.
In the example of FIG. 14, the electrical signal 226 from ASIC 1 is distributed only to one other ASIC (ASIC 2). The distribution of electrical signals using the above-described technique is not limited only to one other ASIC. FIG. 15 depicts an example of an electrical signal 226 that is distributed from ASIC 1 to multiple other ASICs via the matrix switches 200. In particular, the electrical signal received at ASIC 1 is distributed to ASIC 2 and to ASIC 25.
The examples of FIGS. 14 and 15 depict cases in which an electrical signal received at the I/O module 100 from the I/O device 102 is distributed to different ASICs 108 within the I/O module. FIG. 16 depicts an example of an electrical signal 230 that is generated at an ASIC within the I/O module, distributed to another ASIC within the I/O module, and then provided to the I/O device via the pin associated with the other ASIC. In the example of FIG. 16, an electrical signal 230 is generated at ASIC 1 and then provided to ASIC 2. An electrical signal 232 is also generated at the I/O device and provided to ASIC 1. In an embodiment, the electrical signal that is distributed to ASIC 2 is generated in response to the electrical signal that is received from the I/O device at ASIC 1 although this is not required. The electrical signal that is generated at ASIC 1 is distributed to ASIC 2 via the matrix switches and the signal path that connects the two matrix switches. From ASIC 2, the electrical signal is provided to the I/O device through the corresponding electrical signal interface (e.g., pin 2).
Although some examples of electrical signal distribution between the ASICs are described with reference to FIGS. 14-16, other distribution arrangements are possible. Further, although examples of the distribution of electrical signals received from the I/O device or generated by the I/O module are depicted separately, the distribution of externally received and internally generated electrical signals can occur simultaneously.
In another embodiment, electrical signal connectivity between ASICs is established on a per-group basis. For example, ASICs are clustered into groups within the I/O module and electrical signal paths are provided between the ASICs within each group and between the groups. FIG. 17 depicts the ASICs 108 of an I/O module (not shown) that are clustered into two different groups 240 and 242 of four ASICs. Each ASIC includes a matrix switch (not shown) as described above and electrical signal connectivity between each ASIC in a group is provided via group-specific signal paths 244. Electrical signal connectivity between the groups is provided via signal paths 246 and a main electrical signal path such as a global signal bus 243. In an alternative embodiment, one of the ASICs in each group provides the interface to the global signal bus. Clustering the ASICs into groups can reduce the complexity of the circuit board design by reducing the number of signal paths required to provide complete mesh connectivity. This clustering technique provides a tradeoff between complexity and flexibility.
In an embodiment, the global signal bus 243 can only be used by one ASIC at a time. For example, while ASIC 1a connects to ASIC 2a via the global signal bus, ASIC 2d cannot use the bus to connect to ASIC 1b, or any other ASIC in the “a” group of ASICs 240. In an embodiment, an ASIC can use the global signal bus to distribute a signal to more than one ASIC. For example, ASIC 1a can “broadcast” a signal to all other ASICs via the global signal bus. In an embodiment, ASICs are grouped into groups that correspond to neighboring pins 109 of the connector 106 (FIG. 11). For example, in DB-25 connector, each pin has four surrounding pins that are referred to as “neighboring pins,” with the exception of the pins at both ends of the connector. In an embodiment, the ASICs are grouped into groups of four ASICs, with the groups corresponding to the groups of four neighboring pins.
FIG. 18 is a process flow diagram of a method for configuring an I/O module for use with an I/O device in an industrial application. At block 1802, an I/O device is connected to at least one electrical connector of an I/O module, wherein the I/O module comprises application-specific integrated circuits (ASICs) and wherein each ASIC comprises a matrix switch and signal processing circuitry. At block 1804, a configuration program, which is stored within the I/O module, is accessed from a remote host computer. At block 1806, the I/O module is configured to correspond to the I/O device to which the I/O module is connected, wherein configuring the I/O module comprises generating a matrix switch configuration command, communicating the matrix switch configuration command to at least one of the matrix switches, and configuring the matrix switch in response to the matrix switch configuration command.
As described above, the ASICs are programmed to support specific I/O functions depending on the application of the I/O module. Further, one ASIC is typically associated with each pin of the corresponding electrical connector. FIG. 19 depicts an expanded view of an embodiment of one ASIC 108 that is connected to one pin 109 of the I/O module 100. The ASIC includes a data interface 117, a pin interface 300, a digital section 302, and an analog section 304. The data interface 117 communicates digital data between the ASIC 108 and the microprocessor 110. The data interface may be a serial or parallel interface. In an embodiment, the data interface supports parallel communications when more than one ASIC is in data communication with the microprocessor. In another embodiment, the data interface supports serial communications between the microprocessor and the ASIC and/or serial communications directly between ASICs. Examples of different parallel and serial communication configurations are described in more detail below. The pin interface 300 communicates electrical signals between the ASIC 108 and the pin 109 of connector 106 of the I/O module 100. As is described in more detail below, the electrical signals communicated via the pin interface may be treated as analog signals or as digital signals depending on the intended use of the I/O module. In an embodiment, the pin interface is an electrical connection point on the ASIC that electrically connects the ASIC to the pin 109 via electrical signal path 115.
The digital section 302 of the ASIC 108 stores and processes digital data. In operation, the digital section receives digital commands from the microprocessor 110 and provides the digital commands to the analog section 304 of the ASIC. The digital section may parse a received digital command to direct certain bits of the command to certain elements of the analog section. The digital commands may include, for example, configuration commands and/or signal control commands. When the ASIC is configured to perform output operations, the digital section provides signal control commands to the analog section and when the ASIC is configured to perform input operations, the digital section receives digital signal data from the analog section and provides the digital signal data to the data interface. In the embodiment of FIG. 19, the digital section includes a transmit register 310, a receive register 312, and a storage register 314. The receive register supports digital data communications from the microprocessor to the ASIC. Exemplary digital data received from the microprocessor includes configuration commands and signal control commands. The transmit register supports digital data communications from the ASIC to the microprocessor. Exemplary digital data transmitted by the transmit registers includes, for example, digital signal data and digital status data. The storage register supports communications of digital data between the digital and analog sections of the ASIC.
The analog section 304 of the ASIC 108 processes electrical signals that are communicated via the pin interface 300, that is, electrical signals that are input from an I/O device 102 via the pin interface or output to an I/O device via the pin interface. The analog section includes multiple different function-specific analog processing elements (not shown in FIG. 19) for processing an analog signal. The analog section of the ASIC can be programmed to establish one of multiple different processing paths in response to a configuration command from the digital section. The function that the analog section is programmed to perform depends on how the corresponding pin 109 of connector 106 is intended to be used. In an embodiment, the analog section can be configured to support various different functions including power supply, ground, analog voltage input processing, analog voltage output processing, analog current input processing, analog current output processing, digital input processing, digital output processing, and serial I/O processing. Exemplary configurations of the analog section of the ASIC are described in more detail below.
The ASIC 108 described with reference to FIG. 19 can be programmed to perform various different I/O module functions depending on the intended use of the corresponding pin 109 of connector 106. Because there is an ASIC associated with each pin, each pin 109 of connector 106 of the I/O module 100 is fully programmable and can be configured to support a different function.
As described with reference to FIG. 19, the analog section includes multiple function-specific analog signal processing elements. The function-specific analog signal processing elements can be logically grouped into function-specific modules. FIG. 20 depicts a functional layout of an embodiment of the analog section 304 of the ASIC 108. In the embodiment of FIG. 20, the analog section includes a power supply module 316, an output module 318, a digital input module 320, an analog input module 322, and a serial I/O module 324. The power supply module includes a power supply/ground circuit 328, a current limit/current sense circuit 330, and a fault detection circuit 332. The output module includes a digital-to-analog converter (DAC) 334, a variable gain amplifier 336, and a current sense circuit 338. The digital input module includes a comparator 340 and an internal pull-up/down circuit 342. The analog input module includes an analog-to-digital converter (ADC) 344, a low pass filter 346, a variable gain amplifier 348, a matrix switch 350, and an on/off switch 352. The serial I/O module includes a transmit/receive circuit 354, a level shifter circuit 356, a differential signaling circuit 358, and a selectable termination circuit 360. Note that the matrix switch 350 of FIG. 20 is the same as matrix switch 200 in FIGS. 11, 12, and 14-16.
The analog section 304 of the ASIC 108 can be configured to establish many different function-specific processing paths depending on how the corresponding pin 109 of the connector 106 is intended to be used within the I/O module 100. Various different function-specific processing paths, which can be established using the function-specific elements of FIG. 20, are described with reference to FIGS. 20-25B.
Power Supply/Ground Module
The power supply/ground module 316 is utilized when the ASIC 108 is programmed to function as a power supply or a ground for a connected I/O device 102. The function of the power supply/ground circuit 328 is configured in response to a digital power control command from the digital section 302. For example, the digital power control command configures the power supply/ground circuit to function as either a power supply or a ground. FIG. 21 depicts an embodiment of the analog section 304 configured to establish a power supply path. When the power supply/ground circuit is configured to function as a power supply, the power supply/ground circuit offers a selectable supply voltage. The selectable supply voltage is set in response to the digital power control command from the digital section. In an embodiment, the selectable supply voltages include different voltage levels (e.g., 5 v and 24 v). In the power supply/ground configuration, the on/off switch 352 of the analog input module 322 is set in an off (or “open” state).
The current limit/current sense circuit 330 sets the limit of the current sourcing when the ASIC 108 is programmed to supply power to the connected I/O device 102 and sets the limit of current sinking when the ASIC is programmed as ground. The current limit/sense circuit is controlled by a limit control command and the current limit value is set by the DAC 334 of the output module 318 in response to a current limit command from the digital section. The current limit/current sense circuit also senses the current being sourced or sunk by the pin interface 300 depending on whether the ASIC is programmed for power supply or ground. The sensed signal, in voltage equivalent, is fed back through the ADC 344 of the analog input module 322. The ADC converts the sensed signal to digital current data which is provided to the digital section 302. The digital signal data can be used to verify the source/sink limit set by the DAC.
The fault detection circuit 332 detects fault conditions such as short circuit and reverse voltage. The fault detection circuit is configured in response to a fault detection control command from the digital section 302 and provides a digital status signal to the digital section. In an embodiment, the fault detection circuit detects reverse voltage that is caused when the voltage from the connected I/O device 102 is higher than the voltage supplied by the ASIC 108. In an embodiment, the fault detection circuit detects over-voltage, whereby voltage at the pin interface is beyond all the programmable voltage ranges.
In an embodiment, the ASIC 108 features a “freewheeling” mechanism. The function of the freewheeling mechanism is to protect the ASIC in applications involving large inductive load. In such an application, switching off a large inductive load generates large back EMF (reverse voltage) that could damage the ASIC. The freewheeling mechanism of the ASIC allows the energy in the inductive load to dissipate before it is completely switched off. In an embodiment, the freewheeling mechanism includes separate switches that re activated by a digital configuration command to form a freewheeling path.
In addition to the power supply/ground functionality, the power supply/ground module 316 can be used to provide an output signal that corresponds to a digital logic value. In an embodiment, the magnitude of the output signal is set by the digital power control command.
Output Module
The output module 318 is utilized when the ASIC 108 is programmed to function as a signal source. FIG. 22A illustrates the output module programmed to function as a voltage source. When the output module is configured to function as a voltage source, an output signal is generated in response to a digital voltage control command that is provided to the DAC 334 from the digital section 302. The variable gain amplifier 336 can scale the output signal up. The magnitude of the gain provided by the variable gain amplifier is set in response to a digital gain control command from the digital section. In an embodiment, the analog section is programmed to feed the output signal back through the analog input module 322 so that the output signal can be monitored. For example, as illustrated in FIG. 22A, a voltage feedback path includes the on/off switch 352, the variable gain amplifier 348, and the ADC 344. With the on/off switch on (i.e., open), the voltage is fed through the variable gain amplifier and to the ADC. The ADC generates digital voltage data in response to the supplied voltage and the digital voltage data is provided to the digital section of the ASIC.
FIG. 22B illustrates the output module 318 configured to function as a current source. When the output module is configured to function as a current source, an output signal is generated in response to a digital current control command that is provided to the DAC 334. Again, the variable gain amplifier 336 can scale the output signal up, with the magnitude of the gain being set by a digital gain control command. The current sense circuit 338 is activated by a digital current control command and converts the voltage generated by the DAC and the variable gain amplifier into current. In an embodiment, the current sense circuit also feeds back a signal, in voltage equivalent, to the variable gain amplifier 348 of the analog input module 322. The signal from the variable gain amplifier 348 is converted to digital current data by the ADC 344. The feedback loop enables the current of the output signal to be monitored by the microprocessor 110.
Whether the output signal is a voltage or current signal, the magnitude of the output signal is a function of the digital control commands that are provided to the DAC 334 and to the variable gain amplifier 336 of the output module 318. The digital control commands are received at the ASIC 108 from the microprocessor 110 as digital data.
Analog Input Module
The analog input module 322 is utilized when the ASIC 108 is programmed to measure an analog input signal. FIG. 23A illustrates an embodiment of the analog input module configured to measure an input voltage. In this configuration, the on/off switch 352 and matrix switch 350 are programmed to provide the input voltage to the variable gain amplifier 348. The variable gain amplifier provides gain to the input voltage in response to the gain control command. Selectable gain levels allow the analog input module to be programmed to handle signals of different voltage levels. Additionally, the selectable gain levels allow the measurement of unipolar and bipolar input signals by setting the gain and input range. The low pass filter 346 removes higher frequency components of the input signal and noise in order to improve the accuracy of the analog-to-digital conversion. In an embodiment, the desired input signal voltage range is known or estimated so that interference and noise of a frequency higher than the desired range can be removed. The output of the low pass filter is provided to the ADC 344. The ADC converts the received input signal into digital voltage data that is representative of the magnitude of the voltage at the pin interface 300. The digital voltage data is provided to the microprocessor 110 via the digital section 302 of the ASIC.
FIG. 23B illustrates an embodiment of the analog input module 322 configured to measure an input current. In an embodiment, input current measurement involves generating an output voltage using the DAC 334 and the variable gain amplifier 336 from the output module 318. The current sense circuit 338 of the output module uses the output voltage to convert the input current at the pin interface 300 into an equivalent voltage. The equivalent voltage is then processed through the variable gain amplifier 348, the low pass filter 346, and the ADC 344 of the analog input module 322 as described above with reference to FIG. 22A to produce digital current data. The digital current data is provided to the microprocessor 110 via the digital section 302 of the ASIC 108.
Digital Input Module
The digital input module 320 is utilized when the ASIC 108 is programmed to sense digital input signals, that is, input signals whose voltage represents a logic high or low. FIG. 24 illustrates an embodiment of the digital input module configured to sense digital input signals at the pin interface 300. In operation, the comparator 340 compares the voltage at the pin interface to a threshold voltage and determines if the input signal represents a logic high or low. The digital output from the comparator is passed to the digital section 302 of the ASIC. In the embodiment of FIG. 24, the threshold voltage is set in response to a digital threshold command from the digital section. In the embodiment of FIG. 24, the internal pull-up/down circuit 342 internally connects the pin interface 300 to logic high or ground. An internal pull-up circuit allows the digital input module to sense a negative logic signal, whereas an internal pull-down circuit allows the digital input module to sense a positive logic signal. In an embodiment, the internal pull-up/down circuit includes selectable pull-up and pull-down resistors (not shown) that are configured in response to a digital control command from the digital section. In an embodiment, the logic high voltage for pull-up (“pull-up voltage”) is provided by the variable gain amplifier 336 of the output module 318. The logic high value can be set according to application need.
Serial I/O Module
The serial I/O module 324 is utilized to support serial input or output signaling (e.g., universal asynchronous receiver/transmitter (UART) signals such as those used in RS232, RS422, and RS485). When the analog section 304 of the ASIC 108 is configured for serial output signaling, serial data flows from the microprocessor 110 to the pin interface 300. Referring to FIG. 25A, a serial signal is received at the transmit/receive circuit 354 from the microprocessor. The signal is passed to the level shifter circuit 356 where the voltage of the signal is converted from the voltage platform of the microprocessor to the voltage platform of the connected I/O device 102. For example, serial data generated by the microprocessor may be at 3.3 v while the connected I/O device operates in the 12 v range. In an embodiment, the level shifter circuit converts unipolar data to bipolar format. For example, if the I/O device uses RS232 signaling, then the level shifter circuit needs to convert 3.3 v logic signals to RS232 signaling.
When the analog section 304 of the ASIC 108 is configured for serial input signaling, serial data flows from the pin interface 300 to the microprocessor 110. Referring again to FIG. 25A, the level shifter circuit 356 converts the input voltage from the pin interface to the voltage platform of the microprocessor.
The selectable termination circuit 360 enables the serial I/O module 324 to be configured with different termination resistances when the ASIC is programmed in serial receive mode. The termination resistance is selected in response to a digital termination control command. In an embodiment, the termination resistance is selected to support RS422 or a multi-drop configuration of RS485.
In an embodiment, the serial I/O module 324 can be configured to receive a differential signal having components that are received on two different pins 109 of the connector 106, for example, the pin of ASIC 1 and the pin of ASIC 2 (FIGS. 1 and 11). FIG. 25B illustrates how two components of a differential signal can be routed to the differential signaling circuit 358 of one of two ASICs (e.g., ASIC 1 and ASIC 2). For example, two ASICs are configured such that one component of a differential signal is routed through the matrix switches 350 to the differential signaling circuit of the other ASIC. The two components of the differential signal are processed at the corresponding differential signaling circuit. The routing of the two components of a differential signal to the same differential signaling circuit is only required for receive operations. In transmit operations, the two components of a differential signal are transmitted separately from two different ASICs.
In an alternative serial I/O embodiment, the ASIC 108 includes a signal path that creates a direct link from the pin interface 300 to an output interface that can be connected directly to the microprocessor 110. When the ASIC is configured to utilize this signal path for serial I/O signaling, neither the analog nor digital sections of the ASIC have any effect on the signal.
Synchronization Section
Because one of the possible functions of the ASIC 108 is as an input or measuring device that provides digital data to the microprocessor 110 and because multiple ASICs are typically connected to the same microprocessor, there is a need for synchronization between the microprocessor, the ASIC, and other ASICs within the I/O module. When signals measured by the ASIC are converted to digital data by the ADC 344 of the analog input module 322, the digital data is sent to the microprocessor for processing. The ADC performs the conversion to digital data at a given rate, hence it is important that the data transaction between the microprocessor and the ASIC takes place only when the ADC produces a valid output. In an embodiment, a synchronization section 364 (see FIG. 26) is incorporated into the ASIC to ensure synchronization between the microprocessor and the ASIC. The synchronization section notifies the microprocessor when the ADC produces a valid output by sending a synchronization signal. Data transaction between the microprocessor and the ASIC is initiated by the synchronization signal. This process is illustrated in FIG. 26.
In the case where two or more ASICs 108 are required, the ASICs can be run asynchronously or synchronously. When the ASICs are run asynchronously, each ASIC generates its own synchronization signal and the microprocessor 110 interfaces with the ASICs independently. When the ASICs are run synchronously, there are a couple of different synchronization techniques that can be implemented. In a first embodiment as illustrated in FIG. 27A, one of the ASICs is responsible for generating the synchronization signal. The synchronization signal is sent to the microprocessor and all of the other ASICs such that the transaction between the microprocessor and each of the ASICs commences at the same time. In a second embodiment as illustrated in FIG. 27B, one of the ASICs is responsible for the synchronization signal. The synchronization signal is sent only to the microprocessor and, in response, the microprocessor generates synchronization signals to all the ASICs. In order to support both synchronization techniques, the synchronization section 364 of each ASIC is able to generate a synchronization signal as well as receive and process a synchronization signal.
As described above, each ASIC 108 includes a data interface 117 that enables direct data communications between the ASIC and the microprocessor 110. FIG. 28A illustrates data communications between the microprocessor 110 and multiple different ASICs 108 that are accomplished via direct communications between the microprocessor and the ASICs. In an embodiment, the ASICs also include ASIC-to-ASIC data interfaces 366 that enable data communications between the ASICs. Using the ASIC-to-ASIC data interfaces it is possible to pass data from the microprocessor to multiple different ASICs in a serial or “daisy-chain” fashion. FIG. 28B illustrates data communications between the microprocessor and multiple different ASICs that are accomplished in a “daisy-chain” fashion using the ASIC-to-ASIC data interfaces. Daisy-chaining enables multiple ASICs to be configured using a single long command generated by the microprocessor, with the single long command including command bits for each ASIC. For example, the length of the long command is the number of bits per command times the number ASICs in the chain. Additionally, a single long command approach does not require any address decoding to be done by the ASICs. In another embodiment, ASIC-to-ASIC data communications can be accomplished through the data interface 117 or the ASIC-to-ASIC data interfaces 366 depending on the application. FIG. 28C illustrates parallel data communications between the microprocessor and multiple different ASICs. In this embodiment, ASIC-specific commands are uniquely addressed to the ASICs and the digital sections of the ASICs include address decoding capability. ASIC-to-ASIC data communications can also be accomplished using ASIC-specific address coding and decoding at each ASIC.
In an embodiment, each ASIC 108 includes multiple function-specific interfaces. FIG. 29 illustrates interfaces that may be present on each ASIC. The interfaces include the data interface 117 and the pin interface 300 as described above along with a power supply interface 370, an ASIC power interface 372, a matrix switch interface 374, a synchronization interface 376, and a serial I/O interface 378. The power supply interface is provided to support the power supply function of the ASIC. In an embodiment, the power supply interfaces includes multiple different interfaces configured to support different voltage levels. The ASIC power interface is provided to power the ASIC itself, for example, the circuits of the analog and digital sections of the ASIC. The matrix switch interface is provided to enable the ASICs to distribute signals between the ASICs as described above with reference to FIGS. 11-18. The synchronization interface is provided to support synchronization signaling between the synchronization section of the ASIC and the microprocessor or other ASICs. The serial I/O interface may be provided to support direct serial I/O signaling as described above. If direct serial I/O signaling is not supported, then the serial I/O interface could be eliminated from the ASIC.
In an embodiment, the commands (see, for example, FIG. 13) that are used to program/configure the ASICs are generated in response to programming selections made using the I/O interface software 120 (FIG. 2) and the associated graphical user interfaces as described, for example, with reference to FIGS. 1-10.
Although specific embodiments of the invention have been described and illustrated, the invention is not to be limited to the specific forms or arrangements of parts as described and illustrated herein. The invention is limited only by the claims.

## Claims

1. An application-specific integrated circuit for interfacing with an I/O device, the application-specific integrated circuit comprising:
a pin interface for electrical signal communication;
a data interface for digital data communication;
a digital section in data communication with the data interface, the digital section comprising registers for storing digital data; and
an analog section in electrical signal communication with the pin interface and digital data communication with the registers of the digital section, the analog section comprising multiple function-specific elements for processing an electrical signal that is communicated via the pin interface and a differential signaling element configured to convert a differential signal to a single-ended format, wherein one component of the differential signal is received on the pin interface and the other component of the differential signal is received via a matrix switch interface, wherein the analog section can be configured to establish one of multiple different function-specific processing paths in response to a configuration command received via the data interface.

2. The application-specific integrated circuit of claim 1 wherein the multiple different function-specific processing paths comprise:
first function-specific processing path configured to utilize a first subset of the function-specific elements to generate an electrical signal for output via the pin interface in response to digital data received via the data interface; and
a second function-specific processing path configured to utilize a second subset of the function-specific elements to generate digital data for output via the data interface in response to an electrical signal received via the pin interface.

3. The application-specific integrated circuit of claim 1 wherein the analog section comprises:
a power supply module that includes analog circuit elements for supplying power via the pin interface;
an output module that includes analog circuit elements for providing an output signal to the pin interface; and
an input module that includes analog circuit elements for converting an input signal received via the pin interface to digital data.

4. The application-specific integrated circuit of claim 3 wherein the analog section further comprises a serial input/output module that includes analog circuit elements for processing a serial signal.

5. The application-specific integrated circuit of claim 1 further comprising a power supply and ground circuit that is configured to function as a power supply or as a ground in response to a digital power control command from the digital section.

6. The application-specific integrated circuit of claim 1 wherein the analog section comprises a power supply circuit that is configured to provide a selectable supply voltage to the pin interface, wherein the supply voltage is selected in response to a digital power control command from the digital section.

7. The application-specific integrated circuit of claim 6 wherein the analog section further comprises a current limit circuit and a digital-to-analog converter (DAC), wherein the current limit circuit is configured to limit the current sourcing of the selectable supply voltage, wherein the current limit of the current limit circuit is set in response to an analog current limit signal from the DAC, wherein the analog current limit signal is generated in response to a digital current limit command from the digital section.

8. The application-specific integrated circuit of claim 6 wherein the analog section further comprises a current sense circuit and an analog-to-digital converter (ADC), wherein the current sense circuit is configured to sense the current being supplied to the pin interface, wherein the sensed value, in voltage equivalent, is provided to the ADC for conversion to digital current data.

9. The application-specific integrated circuit of claim 6 further comprising a fault detection element configured to detect a fault condition at the pin interface.

10. The application-specific integrated circuit of claim 1 wherein the analog section comprises a digital-to-analog converter (DAC), wherein the output of the DAC is set in response to a digital voltage control command from the digital section.

11. The application-specific integrated circuit of claim 10 wherein the analog section further comprises a variable gain amplifier that scales the output of the DAC in response to a digital gain control command from the digital section.

12. The application-specific integrated circuit of claim 11 wherein the analog section further comprises a switch element, a second variable gain amplifier, and an analog-to-digital converter (ADC), wherein the switch element is configured to provide the output of the DAC to the second variable gain amplifier and then to the ADC for conversion to digital voltage data.

13. The application-specific integrated circuit of claim 12 wherein the analog section further comprises a second variable gain amplifier and an analog-to-digital converter (ADC), wherein the second variable gain amplifier is configured to provide the output current, in voltage equivalent, to the ADC for conversion to digital current data.

14. The application-specific integrated circuit of claim 10 wherein the analog section further comprises a current sense circuit configured to convert the output voltage to an output current.

15. The application-specific integrated circuit of claim 1 wherein the analog section comprises an analog-to-digital converter (ADC) that converts an analog signal received via the pin interface to digital data.

16. The application-specific integrated circuit of claim 15 wherein the analog section further comprises a variable gain amplifier that scales the received analog signal in response to a digital gain control command.

17. The application-specific integrated circuit of claim 1 wherein the analog section comprises a switch element, a matrix switch, a variable gain amplifier, a low pass filter, and an analog-to-digital converter configured to convert analog voltage and current to digital data.

18. The application-specific integrated circuit of claim 1 wherein the analog section comprises a matrix switch that is configured in response to a digital matrix switch configuration command from the digital section.

19. The application-specific integrated circuit of claim 1 wherein the analog section comprises a comparator for comparing an electrical signal received via the pin interface to a threshold value to determine a logic high or logic low.

20. The application-specific integrated circuit of claim 19 wherein the threshold value is set in response to a digital threshold command from the digital section.

21. The application-specific integrated circuit of claim 1 wherein the analog section comprises a level shifter element configured to perform voltage conversion.

22. An application-specific integrated circuit for interfacing with an I/O device, the application-specific integrated circuit comprising:
a pin interface for electrical signal communication;
a data interface for digital data communication;
a digital section in data communication with the data interface, the digital section comprising registers for storing digital data;
an analog section in electrical signal communication with the pin interface, the analog section comprising multiple function-specific circuits for processing an electrical signal that is communicated via the pin interface and a differential signaling element configured to convert a differential signal to a single-ended format, wherein one component of the differential signal is received on the pin interface and the other component of the differential signal is received via a matrix switch interface, wherein the function-specific circuits can be programmed into one of multiple different function-specific configurations in response to a configuration command received via the data interface.

23. An application-specific integrated circuit for interfacing with an I/O device, the application-specific integrated circuit comprising:
a pin interface for electrical signal communication;
a data interface for digital data communication;
a digital section in data communication with the data interface, the digital section comprising registers for storing digital data; and
an analog section in electrical signal communication with the pin interface and digital data communication with the registers of the digital section, the analog section comprising multiple function-specific elements for processing an electrical signal that is communicated via the pin interface, wherein the analog section can be configured to establish one of multiple different function-specific processing paths in response to a configuration command received via the data interface, wherein the analog section comprises:
a power supply module that includes a programmable power supply and ground circuit configured to supply power via the pin interface in response to a digital power control command from the digital section;
a programmable output module that includes a digital-to-analog converter configured to provide an output signal to the pin interface in response to digital data from the digital section;
a current limit circuit configured to limit a current sourced from a supply voltage, wherein the current limit circuit is set in response to an analog current limit signal from the DAC, the analog current limit signal generated in response to a digital current limit command from the digital section; and
a programmable input module that includes an analog-to-digital converter configured to convert an analog input signal received via the pin interface to digital data.