Abstract:
A multiplexing bus controller with input conditioning is provided in which the need for a dedicated microprocessor for handling input filtering, input change detection and serial-to-parallel/parallel-to-serial I/O data conversion is eliminated. The controller is realized in a gate array and provides input data oversampling and output refreshing to eliminate random noise coupled to the data lines. In addition, the oversampled data is filtered to debounce the signal received from the input devices. The input data is converted from serial-to-parallel and checked to detect any change from the previous input data stream. Upon detection of an input change, the host microprocessor is interrupted. When the host microprocessor sends data to the bus controller, the bus controller then converts the data to a serial stream for communication to the appropriate output device. Additionally, the bus controller is provided with an internal turnaround circuit to loop back outputs to the inputs for diagnostic purposes. Very low gate counts realized in the design of the multiplexing bus controller allow it to be realized on a single chip.

Description:
FIELD OF THE INVENTION 
     The present invention relates generally to multiplexing bus controllers and more particularly concerns an interface controller for handling multiple inputs from a plurality of integrated input/output controllers in an electronic reprographic machine. 
     BACKGROUND OF THE INVENTION 
     In general, existing copiers, printers and fax machines have several inputs and outputs that must be sensed in order for the machines to function properly. Some of these inputs and outputs sense and turn on/off a wide variety of devices present in the machines, such as, for example, clutches, motors, switches, etc. A microprocessor based controller is generally used to control each and every input/output throughout any particular system. In order for the microprocessor to be able to perform its control function, each and every wire from the respective inputs and outputs must be routed, i.e., harnessed, back to the board containing the microprocessor controller. An average 50 copies per minute copier, for example, may have as many as 200 or more such input and output signals. This high number of input/output signals being routed to and from the microprocessor board can lead to very large wire harness bundles and an almost unmanageable number of connectors on the main processor board to enable communication with the microprocessor controller. In addition to the problem of high harnessing costs associated with this form of input/output control, noise and packaging are also problems associated with this form of input/output control. Moreover, connectors and wires are traditionally the most unreliable components in a copier&#39;s electronic subsystems. 
     One solution to reduce the number of connectors on the main processor board and to overcome the problems associated with the high harnessing requirements described above, has been to multiplex the input/output data onto less wires, thereby reducing the number of wires and connectors required by the system. In a multiplexed system, only one wire is used for inputs and one wire is used for outputs. For example, FIG. 1 shows a multiplexing scheme for a high-end electronic reprographic system. In this system, a plurality of integrated input/output controllers (IIOC) are utilized to control various switches, relays, clutches, etc. associated with the system. The IIOC can be a digital type device or an analog type device. In the analog configuration, the IIOC can be used to provide a reference to set the output voltage or current of a xerographic power supply, for example, as well as to monitor the setting for variations from this setting. In a digital configuration, the IIOC has the capability of providing required higher power drive signals. For example, digitally configured IIOCs can provide connections to electromechanical devices, such as, for example, solenoids and motors as well as the required interface to detect the state of input devices, such as, for example, mechanical switches and optical sensors. These IIOCs are multiplexed using five wire multiplex buses 18, connected in parallel to each IIOC module 20. The multiplex buses 18 require only five wires for the &#34;N&#34; modules connected to each bus. These wires represent serial input data (SID), serial output data (SOD), clock data, power and ground. FIG. 1 shows eight five wire buses 18 connected to the &#34;N&#34; IIOC modules 20. 
     The controller 10 has a microprocessor 15 that interfaces to the IIOC modules 20 through a device called a serial input/output controller (SIOC) 12. The SIOC, in its basic form performs parallel to serial conversion and serial to parallel conversion with the necessary timing logic to generate the framing pulse and clock signals. The SIOC 12 performs the function of accepting parallel data from the microprocessor 15 and sequentially placing the data onto the outgoing SID line, and collects the incoming serial data from the incoming SOD line and presents that data in parallel to the microprocessor 15. Thus, the SIOC frees the microprocessor 15 from the time consuming task of performing the serial to parallel and parallel to serial conversions and generating the required timing to drive the buses 18. In a high speed or high performance system, this task would be too much of a real time burden but in low speed or low performance environments, this task could be performed by the microprocessor 15 without the SIOC 12. 
     However, in IIOC/SIOC configured systems, the SIOC must rely on a dedicated microprocessor to filter the inputs received from the individual IIOCs. Since there are many inputs to filter, there is no real time left over to perform any other functions. Thus, a system of this type requires memory and interface hardware in addition to a dedicated microprocessor(s) to achieve suitable input filtering. The dedicated microprocessor and its associated hardware increase both the cost and space requirements of the system to provide compatibility with an IIOC based system architecture. 
     SUMMARY OF THE INVENTION 
     If the need for dedicated microprocessor SIOC configurations can be eliminated, the need for an expensive and complex bus control configuration with its related support components and large space requirements would be eliminated. Further, in view of the above problems relating to highly complex IIOC control architectures in high-end electronic reprographic systems, what is needed is a simplified, yet efficient, interface controller for controlling the data exchange between a five wire bus configuration and the plurality of IIOCs associated with each five wire bus. Specifically, an architecture using a chain interface controller specifically designed to handle data transfers between the host controller and the five wire buses that is also capable of generating a framing clock for accurate communications with the various IIOCs without a dedicated microprocessor and its associated support components is needed. 
     In order to overcome the above and other problems and deficiencies with respect to electronic systems employing an IIOC base architecture, the present invention provides a single chip chain interface controller for providing communications control between the host microprocessor and the IIOCs without a dedicated microprocessor for handling input filtering and the like. 
     It is, therefore, an object of the present invention to provide a single chip chain interface controller that controls communications between the IIOCs and the host microprocessor without the requirement for a dedicated microprocessor to perform its functions. 
     It is another object of the present invention to provide a chain interface controller that performs input filtering of the input signals received from the various IIOCs. 
     It is another object of the present invention to provide a chain interface controller that provides a data clock and a frame clock to control communications between the various IIOCs and the host microprocessor. 
     It is another object of the present invention to provide a chain interface controller having an internal turnaround mode of operation wherein output data can be looped back to the chain interface controller to enable testing of the controller. 
     It is another object of the present invention to provide a chain interface controller having an external turnaround mode of operation wherein output data is looped back to the point-of-load to verify load and harness connectivity. 
     It is another object of the present invention to provide a chain interface controller that provides output refreshing at predetermined intervals to ensure efficient an error-free communications between the IIOCs and the host microprocessor. 
     It is a further object of the present invention to reduce the cost and complexity of the system architecture without degrading system performance. 
     To realize these and other objects and to overcome the deficiencies set forth above with respect to conventional electronic reprographic systems, a single chip chain interface controller for providing communications control between the various IIOCs and the host microprocessor without its own dedicated microprocessor is provided, comprises: an oversampling means for eliminating voltage spikes coupled to the incoming data lines; a filtering means for debouncing the oversampled signal; an input data change detection means; an output data refreshing means; and an interrupt signal generating means. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The invention will be described in detail with reference to the following drawings in which like reference numerals refer to like elements and wherein: 
     FIG. 1 is a block diagram representing an IIOC architecture using SIOCs; 
     FIG. 2 is a block diagram representing an IIOC architecture in accordance with the present invention; 
     FIG. 3 is a block diagram of the chain interface controller; 
     FIG. 4 is a logic diagram showing the oversampling circuit of the chain interface controller; 
     FIG. 5 is a logic diagram showing the filtering circuit of the chain interface controller; 
     FIG. 6 is a logic diagram showing the input detection circuitry of the chain interface controller; and 
     FIG. 7 is a timing diagram showing the data and framing clocks superimposed to represent a frame interval. 
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     While this invention is described in detail herein with specific reference to certain illustrated embodiments, there is no intent to be limited to those embodiments. On the contrary, the aim is to cover all modifications, alternatives and equivalents falling within the scope of the invention as defined by the claims. 
     For a general understanding of the features of the present invention, reference is made to the drawings in which like references have been made throughout to designate identical elements. FIG. 2 is a block diagram showing an IIOC based architecture for an electronic reprographic system employing the chain interface controller of the present invention. It will become evident from the following discussion that the present invention is equally well suited for use in a wide variety of electronic systems and is not necessarily limited in its application to the particular system shown herein. 
     Turning initially to FIG. 2, during operation of the system, a number of IIOCs 20 are used to control various electrical, mechanical, optical and electromechanical devices within the electronic reprographic system. Each IIOC 20 controls a single device within the system. The IIOCs 20 communicate with the host microprocessor 15 through the controller 10 which multiplexes onto a five wire input/output bus 18. Each input/output bus 18 consists of five wires and is capable of communicating signals to and from up to 32 IIOCs. Other configurations accommodating more or less than 32 IIOCs are also possible, depending on the data clock interval and required system response time. Each input/output bus 18 and its associated IIOCs 20 make up a chain. Each chain is linked back to the microprocessor 15 via its own dedicated chain interface controller 30. Therefore, there is a one-to-one correspondence between the number of chains and the number of chain interface controllers. The chain interface controllers are formed in a single chip configuration using field programmable gate array (FPGA) techniques. Currently, each FPGA is capable of supporting up to four chain interface controllers. In a preferred embodiment, each FPGA supports three individual chain interface controllers. For ease of description and understanding, the general operation of the chain interface controller will be described with reference to only one chain of IIOCs and one chain interface controller, with the understanding that multiple chain interface controllers may be implemented in a single FPGA 50. 
     Signals indicating the current state of each IIOC 20 in a chain are communicated to the host microprocessor 15 via the chain interface controller 30 dedicated to that particular chain. The input chain of data is subjected to various environmental conditions that may affect the signal on the bus 18 and, therefore, the accuracy of the data read by the host microprocessor 15. Every input that is read by the host microprocessor 15 is subjected to two types of noise. The first type of noise consists of random voltage spikes that are coupled onto the harness (i.e., bus 18) that carries the input signal to the processor board 10. This can cause erroneous readings of the input by the host microprocessor 15, such as, for example, indication of an open switch when in fact the switch is closed. The second type of noise is called &#34;bounce&#34;. Bounce is caused by the mechanical action of a switch. When a switch is activated, i.e., opened or closed, the host microprocessor 15 may see multiple &#34;ons&#34; and &#34;offs&#34; until the mechanical action has settled. Ideally, the host microprocessor 15 only wants to know when the switch has changed state and has settled. In order to more accurately assess the information on the individual chains and filter out undesired noise, the chain interface controllers 30 employ a sophisticated, yet simple architecture to process the incoming signals. 
     With reference to FIG. 7, the bus configuration, as described above, consists of five wires, one wire each for serial input data (SID), serial output data (SOD), clock, power and ground/return. Each IIOC 20 responds to a particular edge of the data clock to which it has been programmed. The SID wire carries output data as a serial stream to the IIOCs 20 while the SOD wire carries input data as a serial stream to the controller 30. 
     With reference to FIG. 3 showing a block diagram representative of the chain interface controller 30, the SOD lines are connected to the oversampling circuit 35 of the chain interface controller. The oversampling circuit 35 filters out random noise, such as, for example, voltage spikes, which have coupled onto the serial output data signal. The input data is sampled (i.e., read by the controller) multiple times during its data clock period at predetermined intervals. This is called oversampling. In the oversampling scheme of the present invention, each chain of input data is sampled on a bit-by-bit basis three times during a data clock period of the chain of data. Each sample is taken, for example, at a 1 μs interval from the immediately preceding sample. The oversampling circuit outputs a binary value for each bit that is representative of a majority of the three samples (i.e., at least two of the three samples) taken during the data clock period. Oversampling in this manner filters out noise associated with random voltage spikes coupled to the input lines. A diagram showing the logic circuitry of the oversampling circuit of the present invention is shown in FIG. 4. 
     With continued reference to FIG. 3, the data output by the oversampling circuit 35 is then debounced by the filtering circuit 40. The filtering circuit 40 debounces the input data on a bit-by-bit basis by storing two successive readings at the frame interval into the previous read registers 45. The filtering circuit then compares the current input data to the previously read data and updates the debounced input register 75 if all three readings have not changed. For example, if three successive high signals have occurred, over three frame intervals, it would take three low signals to reflect a change in the corresponding bit of the debounced input register 75. The filtering circuit used in the present invention, shown in FIG. 5, is unique because there is only one filtering circuit per input data chain. The data clock increments a selector to the corresponding bit in the last read, previous read and debounced state registers so only one bit of each register is fed through the filtering circuit 40. Other filtering schemes condition inputs in parallel, which requires one filtering circuit per bit and, therefore, a very high gate count. The output from this circuit is stored on a bit basis in the debounced input register 75 (i.e., the filtered input register). Thus, extremely efficient filtering with a minimal gate count is achieved. 
     Referring again to FIG. 3, the input change detector circuit 51 together with the interrupt logic circuit 65 is designed to generate an interrupt signal that is sent to the host microprocessor 15 when an input bit has changed state. The input change detector circuit 51 also sets the corresponding bit in the status register 60. With a change of input state an interrupt will occur. A read of the status register 60 will give the interrupting chain. The data word read can then be written to the interrupt clear register and the proper interrupting chain will be cleared without missing and input changes. Software must then be responsible for isolating the input that changed state by maintaining an input map and comparing it to the filtered input registers of the interrupting chain. Once again the circuit is unique and a very low gate count is achieved by taking advantage of the additional multiplexing of the filtered input registers to accomplish input detection. Without this additional multiplexing scheme, every input would need to be exclusively ORed with its last filtered input reading, and all of them would need to be ORed to clock a flip flop. Therefore, the need for dedicated microprocessors having sophisticated polling schemes is eliminated. The input change detection circuitry is shown in FIG. 6. 
     Referring again to FIG. 3, the host microprocessor 15 writes output data to the 16-bit wide output registers 55. The output register&#39;s data is fed to the multiplexers 80. The multiplexer 80 uses the data clock to shift out (i.e., serialize) the data onto the SID wire. This parallel-to-serial conversion occurs every frame interval, allowing the outputs to be refreshed. Output refresh is required because voltage spikes can induce noise on the SID wire that could change the state (i.e., on or off) of an output. The refresh circuit resends the data from the output register 55 onto the SID wire every frame interval. The IIOC responds to the value on the SID line at the appropriate data clock time and echoes the bit value to the output pin, thereby effectuating the desired output signal. 
     The chain interface controller is also adapted to run in a variety of operational modes. The above description relates to the normal operational mode of the chain interface controller designated as the Runmode. In the Runmode, outputs will be refreshed every frame interval. and input sampling and addressing will also be performed as described above with additional filtering and oversampling. In addition to the Runmode of operation, the chain interface controller has two &#34;Turnaround&#34; modes of operation called Internal Turnaround and External Turnaround. The Turnaround modes of operation are generally used in a self-test or integration and test environment. 
     The Internal Turnaround feature is added for diagnostic purposes. When in Internal Turnaround mode, the chain interface controller will internally connect the SID and SOD signals, via an internal turnaround circuit 70 (see FIG. 3), thereby allowing monitoring and verification of operation of the oversampling and filtering circuits as well as all the input and output registers. 
     The External Turnaround feature is implemented via the IIOC specification by writing a binary &#34;1&#34; to the External Turnaround bit of the control register. This will initiate an IIOC turnaround during the next framing pulse and successive framing pulses until the External Turnaround bit is cleared. By putting the IIOC in External Turnaround mode, the host microprocessor can send test signals to the IIOC and technicians are then able to check the settings and connections of the various components the IIOCs control. 
     Referring now to FIG. 4, a logic diagram of the oversampling circuit is shown. When data is received by the chain interface controller, it is sampled three times at successive 1 μs. intervals as described above. The chain of data is sampled on a bit-by-bit basis. As can be seen in FIG. 5, sample one, sample two and sample three, are each gated to the logic circuitry and whenever the majority of the samples is the same (i.e., two out of three match), the oversampled bit is sent to the filtering circuit to be debounced. The clocks of the chain interface controller are manipulated such that a 1 MHz clock pulse will provide successive sampling pulses at 1 μs. intervals. Thus, the oversampling circuit will filter out any high frequency noise that may couple onto the SOD lines. Using Karnaugh maps, a minimal gate count was achieved in implementing the oversampling circuit. 
     Referring to FIG. 5, a logic diagram of the filtering, or debounce, circuit is shown. The oversampled data from the oversampling circuit described above is sent to the filtering circuit to debounce the signal. The signals are sampled on a frame basis, i.e., at 500 μs intervals, the framing pulse of the system. The filter circuitry stores the filtered (debounced) input to the input register for reading by the host microprocessor when an input change is detected by the change detection circuitry. The filtering circuit shown achieves this debouncing function by comparing old debounced signals stored in the filtered input register with previous reads of the same bit in the previous read registers and the data currently being sampled. Again, using Karnaugh maps, the gate count was minimized. 
     The input detect circuitry of the present invention is shown in FIG. 6. The input detect circuit employs an exclusive OR scheme to generate an input change detected signal when the previous debounced state signal corresponding to a particular bit of the chain of data and the current debounced state signal corresponding to the same address are different. Once this signal is generated, the interrupt signal generator outputs an interrupt signal to the microprocessor indicating that at least one bit of the input data stream has changed. Therefore, by implementing this simple input detect circuit, input change detection is achieved with almost no significant additional gate count. Moreover, input detection interrupt achieved in the above described manner allows drastic reduction in software overhead by eliminating the need for software to poll the debounced input register to detect when an input data bit has changed. 
     While this invention has been described in conjunction with a specific embodiment thereof, it is evident that many alternatives, modifications and variations will be apparent to those skilled in the art. Accordingly, the preferred embodiments of the invention, as set forth herein, are intended to be illustrative, not limiting. Various changes may be made without departing from the spirit and scope of the invention as defined in the following claims.