Multi-channel data communications controller
First Claim
1. An apparatus which serves as a communications interface for transferring data characters and associated status information between a host computing device and a set of one or more external computing devices comprising:
- a storage area, said storage area comprising means for storing a plurality of said data characters, said data characters comprising one or more bits of data;
first transmitting means connected between said storage area and said host computing device for transmitting said data characters from said storage area to said host processor;
first receiving means connected between said storage area and said host computing device for receiving said data characters from said host computing device and storing said data characters in said storage area;
second receiving means having an input coupled to one or more external devices for receiving one or more bits of data per unit time from one or more of said external devices, said second receiving means having an output;
second transmitting means having an input for receiving bits of data and having an output coupled to at least one of said external devices for sending one or more bits of data per unit time to one or more of said external devices;
assembly means having an input and output, and including means coupling said input to the output of said second receiving means, said assembly means functioning to assemble said one or more bits of data received by said second receiving means into data characters and provide said data characters at said output;
means coupling said output terminal of said assembly means to said storage area for storing said assembly data characters in said storage area;
disassembly means having an input and an output, including means coupling said input of said disassembly means to said storage area for receiving and for disassembling data characters received by said first receiving means and stored in said storage area into one or more bits of data which are provided at said output of said disassembly means to be sent to said one or more of said external devices by said second transmitting means;
means coupling said output of said disassembly means to said input of said second transmitting means; and
programming means coupled to said disassembly means and said assembly means for programming said apparatus, said programming means comprising means for modifying the steps by which said apparatus assembles and disassembles data characters.
3 Assignments
0 Petitions
Accused Products
Abstract
This invention provides a flexible, general-purpose, engine-based architecture for a multi-channel data communications controller. It can be customized to handle a wide range of protocols and other host system requirements with minimal reliance on the host'"'"'s processing power. The always present time-critical tasks of transmitting and receiving serial data, as well as transmitting and receiving characters to/from the host, are handled quickly and efficiently by utilizing dedicated interface processors. This leaves the general purpose main engine less burdened with these time cricital tasks, enabling it to perform the relatively more complex (though less time critical) tasks of assembling and disassembling characters, as well as maintaining RAM-based data FIFOs and performing error-checking and other protocol-related tasks. Custon protocols can be implemented merely by re-microcoding the machine, without requiring modifications to the basic architecture of the chip, substantially reducing design time. The flexibility of this general purpose architecture enables controllers to be more customized to a particular user'"'"'s requirements, resulting not only in faster performance by the controller itself, but also in far less reliance on the host'"'"'s processing power. What could previously only be done by the host in software can now be done by the controller itself much more quickly.
37 Citations
18 Claims
-
1. An apparatus which serves as a communications interface for transferring data characters and associated status information between a host computing device and a set of one or more external computing devices comprising:
-
a storage area, said storage area comprising means for storing a plurality of said data characters, said data characters comprising one or more bits of data; first transmitting means connected between said storage area and said host computing device for transmitting said data characters from said storage area to said host processor; first receiving means connected between said storage area and said host computing device for receiving said data characters from said host computing device and storing said data characters in said storage area; second receiving means having an input coupled to one or more external devices for receiving one or more bits of data per unit time from one or more of said external devices, said second receiving means having an output; second transmitting means having an input for receiving bits of data and having an output coupled to at least one of said external devices for sending one or more bits of data per unit time to one or more of said external devices; assembly means having an input and output, and including means coupling said input to the output of said second receiving means, said assembly means functioning to assemble said one or more bits of data received by said second receiving means into data characters and provide said data characters at said output; means coupling said output terminal of said assembly means to said storage area for storing said assembly data characters in said storage area; disassembly means having an input and an output, including means coupling said input of said disassembly means to said storage area for receiving and for disassembling data characters received by said first receiving means and stored in said storage area into one or more bits of data which are provided at said output of said disassembly means to be sent to said one or more of said external devices by said second transmitting means; means coupling said output of said disassembly means to said input of said second transmitting means; and programming means coupled to said disassembly means and said assembly means for programming said apparatus, said programming means comprising means for modifying the steps by which said apparatus assembles and disassembles data characters. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. In a system capable of transmitting and receiving a plurality of categories of data characters between a host computing device and an external computing device, at least one of which categories requires different processing by the host computing device than other categories, a method of informing the host computing device of the category of data characters received from an external computing device, said method comprising the steps of:
-
categorizing each received data character into one of the selected plurality of categories; and informing the host computing device that one or more characters of a selected category have been received. - View Dependent Claims (10, 11)
-
-
12. An apparatus for receiving data characters comprising one or more bits of data, said apparatus comprising:
-
data character receiving means for receiving data characters from (n) sources and identifying the source of the received characters, said data character receiving means having an input for receiving said data characters and for providing at an output m, signals identifying the source of related data characters; a control storage area, including a plurality of locations each containing a control word, each of said control words comprising a plurality of control signals which direct said apparatus to perform a particular function, a context storage area including (n) locations each containing a vector, each of said vectors being uniquely associated with one of said (n) sources of data characters, which identifies the location in said control storage area of the first control word of a pre-defined sequence of said control words, said context storage area having an output for providing said vectors to said control storage area and an input for receiving from said data character receiving means said signals identifying the source of received data characters, means coupling said output m of said data character receiving means to said input of said context storage area; means for determining the vector corresponding to the one of said n sources of data characters from which said data character was received, and for using said vector to access the first location of its associated control word in said control storage area, means coupled to said control storage area for executing the control word at said accessed location, and each subsequent control word in a predefined sequence, by causing said control words to cause said apparatus to perform a first function, and means for modifying the vector corresponding to one of said n sources of data characters so that the modified vector specifies a different first control word of another sequence of control words for performing a second function, said means for modifying the vector is employed within each predefined control sequence to produce a predetermined series of functions performed in response to the receipt of data characters. - View Dependent Claims (13)
-
-
14. A method for assembling bits of data into a data character having one or more bits, said method being implemented utilizing an array of storage registers, each register having storage locations for at least (n) bits, and means for executing a control word to access said registers in said array, said method comprising the steps of:
utilizing a control word to direct the assembly of bits into a storage register, said control word comprising a plurality of control signals which cause said means for executing said control word to perform a function which, when repeated (n) times, where (n) is the number of bits in said data character being assembled, causes the assembled (n)-bit data character to be right justified in a first data storage register in said array, said function comprising the steps of using a first portion of said control word to select a second data storage register in said array having data that defines (n), using a second portion of said control word to identify said first register, using a third portion of said control word to direct; shifting the bits in said first register one bit to the right, inserting the next bit in the sequence of bits comprising the data character into the bit position in the first register in which the data character is being assembled corresponding to the most significant bit, and inserting a zero into each storage location of said first register more significant than the storage location containing the most significant bit of said (n) bits.
-
15. A method for disassembling data characters having one or more bits of data into a sequence of bits, said method being implemented utilizing an apparatus comprising an array of storage registers, each register having storage locations for at least (n) bits, and a storage device for storing a bit of said sequence of bits and means for executing a control word to access said registers in said array and said storage device, said method comprising the steps of:
utilizing a control word to direct the disassembly of a data character in a storage register, said control word comprising a plurality of control signals which cause said apparatus to use portions of said control word to identify the data storage register containing the data character to be disassembled, and to shift the bits of said data storage register and to cause said apparatus to store the least significant bit in said storage device prior to said shift of said identified data storage register.
-
16. A method for assembling bits of data into a data character having one or more bits or disassembling a data character having one or more bits into a sequence of bits, said method being implemented utilizing an apparatus comprising an array of storage registers, each register having storage locations for at least (n) bits, and means for executing a control word to access said registers in said array, said control word comprising a plurality of control signals which cause said apparatus to perform a plurality of functions which, when repeated (n) times, once for each bit in the data character where (n) is the number of bits in said data character being assembled or disassembled, supports the assembly or disassembly of an (n)-bit data character, said method comprising the steps of:
-
using a first portion of said control word to identify a first data storage register in said array in which predetermined data character parity options are stored, using a second portion of said control word to identify a second data storage register is said array in which parity accumulation, running break detection status, and a running bit count for the character being assembled or disassemble are stored, determining the accumulated parity of said character being assembled or disassembled based upon the bits received or transmitted for said data character being assembled or disassembled and the predetermined parity option, determining the accumulated break detection status of said character being assembled based upon the bits received for said data character being assembled, determining the number of bits received or transmitted for said character being assembled or disassembled, and setting status bits of said apparatus to indicate the parity error status of said assembled data character, the break condition status of said assembled data character, and the number of bits of said assembled or disassembled data character.
-
-
17. An apparatus for transmitting data characters comprising one or more bits of data, said apparatus comprising:
-
data character transmitting means for transmitting data characters to (n) destinations and identifying the destination of the transmitted data characters, said data character transmitting means having an output for transmitting said data characters and for providing, at an output m, a signal identifying the destination of transmitted data characters; a control storage data, including a plurality of locations each containing a control word, each of said control words comprising a plurality of control signals which direct said apparatus to perform a particular function; a context storage area including (n) locations each containing a vector, each of said vectors being uniquely associated with one of said (n) destinations of data characters, which identifies the location in said control storage area of the first control word of a pre-defined sequence of said control words, said context storage area having an output for providing said vectors to said control storage area and an input for receiving from said data character transmitting means said signals identifying the destination of transmitted data characters; means coupling said output m of said data character transmitting means to said input of said context storage area; means for determining the vector corresponding to the one of said (n) destinations identified by the signal at said output m, and for using said vector to access the first location of its associated control word in said control storage area; means coupled to said control storage area for executing the control word at said accessed location, and each subsequent control word in a predefined sequence, by causing said control words to cause said apparatus to perform a first function; and means for modifying the vector corresponding to one of said (n) destinations of data characters so that the modified vector specifies a different first control word of another sequence of control words for performing a second function, said means for modifying the vector is employed within each predefined control sequence to produce a predetermined series of functions performed in the transmission of data characters. - View Dependent Claims (18)
-
Specification