Printing devices, such as ink jet, laser printers, and the like, operate according to control signals, commands, and/or computer readable instruction sets to effectuate the transfer of ink onto print media. Print media comes in many forms and can include draft paper, photo paper, cardstock, letterhead, envelopes, business cards, and transparencies, among others. Operation of the printing device is administered by one or more controllers, such as a microprocessor controlled printed circuit board and one or more application specific integrated circuits (ASICs or chipsets) connected by appropriate interfaces, e.g. cabling. In an ink jet printer, the controllers regulate the movement of a carriage, holding one or more ink jet pens, across a print media. The controllers further regulate the timing and firing of the ink on to the print media. Various controllers or chipsets are designed to perform measurement functions associated with the printing process, such as ink flight time and ink drop impact. The results of such measurements enable the printing device to calibrate pen velocity, paper speed, printhead temperature, and other printing properties in communication with such hardware as carriage encoders, paper encoders and the like.
Multiple time sensitive processes exist in many environments. The inkjet printer area has numerous processes that must occur nearly simultaneously. For example, two particular processes that must occur nearly simultaneously include motor and measurement routine control. That is, servo control of a motor for paper or carriage movement and the collection of multiple measurement samples from one or more measurement sensors must be taken at nearly the same motor position. In order to perform both of these functions, communication to an analog IC takes place. In some cases, the measurement commands lock out other use of the command area (e.g. instruction routine, data registers, and interface use) until it has acquired two nearly simultaneous measurements. The interface will be idle during the actual analog to digital data conversion time. The time to do this is too long to lock out the servo routine from use of the interface that they must share, when a single analog IC is used for both functions.
Previous approaches to resolving this problem involved using two separate analog ASICs each with their own dedicated interfaces to do each time sensitive process. Though there were other advantages to using separate ICs in the past, those advantages no longer exist with certain inkjet pen architectures. The disadvantage of a multiple IC implementation is cost. That is, using two analog ASICs creates added cost in real estate and chip count as well as cost in the form of extra interface circuitry and pin count on the ASICs.
The present invention provides techniques for an instruction architecture using two instruction stacks. Various embodiments allow the use of a single serial bus interface for multiple time sensitive processes. Various embodiments utilize three programmable command areas, or firmware programmable instruction stacks, coupled via grant and request lines to an arbiter. In various embodiments, the instruction stacks have space for eight (8) or more instructions (commands). In various embodiments, at least two of the command areas have looping and delay capability. In various embodiments, a third command area is an instruction queue, such as a first-in-first-out instruction queue. In various embodiments, the third command area includes an instruction stack similar to the first two instruction stacks.
In various embodiments, different firmware processes or routines can be programmed to the one or more firmware programmable instruction stacks in a dedicated fashion such that the instruction stacks do not have to share a command area, e.g. routines being written, erased, rewritten, etc. In this manner, there can be less conflict for command area. In various embodiments, instructions or commands can be sent out over a single serial bus based on a priority assigned to each instruction stack. A regulation based on a priority, or time sensitivity, can ameliorate interface issues and reduce delay for various processes executable by the routines programmed to each of the one or more instruction stacks.
Various embodiments of the invention can be performed in one or more devices, device types, and system environments including networked environments.
As shown in the embodiment of
In the embodiment of
For example, ASIC 210 can contain routines applicable to print head firing and control. ASIC 210 can communicate to an analog ASIC 212-1 to perform measurement routines. Measurement routines from the analog ASIC 212-1 can interface with sensors, 222-1, 222-2, . . . , 222-N, associated with one or more ink reservoirs, 221-1, 221-2, . . . , 221-N, to determine fluid levels therein. ASIC 210 can also communicate to an analog/digital ASIC 212-1 to control the firing of one or more print heads 231-1, 231-2, . . . , 231-N.
ASIC 210 can contain media sensing routines applicable to detect a media type in a printing device. For example, ASIC 210 can communicate to analog ASIC 212-1 to drive circuitry 260. Circuitry 260 can be operable to perform measurement routines with sensors, 261, to detect a media type. That is, sensors 261 can conduct specular and diffuse measurements on the present media.
ASIC 210 can also contain paper servo routines applicable to paper servo control in a printing device. For example, ASIC 210 can communicate to an analog ASIC 212-2 to read a motor encoder 240. Measurement routines can interface with registers, sensors, and counters, 241, associated with the motor encoder to track and control paper movement, including speed and direction.
Additionally, ASIC 210 can contain carriage servo routines applicable to carriage servo control in a printing device. For example, ASIC 210 can communicate to an analog ASIC 212-2 to control, e.g. turn “on” and “off”, a carriage encoder 250. Carriage encoder 250 circuitry can provide output from a digital sensor 251 to registers and counters associated with ASIC 210 to track and control carriage movement, including speed and direction.
The above described instructions and measurement routines can be provided to the above described ASIC, 210, from memory 214 and/or firmware 216 associated with the printing device.
In this specification, conductive paths, interfaces, and/or connections are intended to include any one or a combination of signal media such as hardwired electrical links, radio frequency links, infrared links, optical links and the like.
Memory 214 can include one or more computer readable media distributed throughout a printing device. The one or more computer readable memory can include large, fixed memory media such as DRAM and DDRAM, magnetic and optically read media, NV memory such as Flash memory, and many smaller memory media locations. Likewise, firmware 216 can include one or more computer readable media distributed throughout a printing device including various sorts of ROM, PROM, EPROM, EEPROM, and Flash memory among others.
As noted, the above described ASIC, 210 can include measurement and control instruction routines. Such measurement and control routines include, but are not limited to; motor control instructions, printhead temperature measurement instructions, printhead fire instructions, and calibration measurement instructions, among others.
In summary, printers can have multiple analog ASICs, e.g. 212-1 and 212-2, to perform a variety of functions. Some of these functions are going away for new platforms, due to the additional functionality of new printhead families. Some of the remaining functions could be implemented in a single analog IC, except for a conflict between time sensitive processes that need to use the interface between the analog IC, such as 212-1 and 212-2, and a digital IC, e.g. 210. Some analog ASICs use high speed, high bandwidth, register based serial interfaces which allow connection of multiple ICs to the same interface. A method of using such a register based serial interface is to write commands into a command area of a firmware programmable instruction stack. Delay and Loop commands are implemented as part of the instruction stack structure. Once an instruction stack is written, a GO signal is issued and the stack is executed until all commands, including loops, are done.
Previous instruction stack structures/architectures have only one stack on a given digital IC, e.g. 210, which means that that time sensitive processes lock out other processes, even though a register based serial interface bandwidth could allow other processes to use the interface. The reason this is true is because another system process would have to clear and rewrite the instruction stack to use the interface. By the time the original process gets the main processor, e.g. 211, back and rewrites the instruction stack, significant time has elapsed.
In various embodiments, the serial interface 306 includes a register based serial interface. In various embodiments, the serial interface 306 is operable to connect to multiple integrated circuits. In various embodiments, the serial interface includes a high speed serial interface operable at frequencies of twelve (12) MegaHertz or greater. In the embodiment of
In the embodiment of
In various embodiments, the at least two instruction stacks, 308 and 310, are configured to run off of timers or interrupt lines, illustrated in
The embodiment of
In the embodiment of
In various embodiments, the arbiter 312 is operable to provide a first priority to a first one 308 of the at least two instruction stacks, 308 and 310. The arbiter is operable to provide a second priority between the instruction queue 315 and a second one 310 of the at least two instruction stacks, 308 and 310.
In various embodiments, at least one of the at least two instruction stacks, 308 and 310 includes one or more functions selected from the group of a loop function, a delay function, a read register function, a write register function, and a read register and write to memory function (such as memory 318 operably couple to the first integrated circuit 302).
In the embodiment of
As shown in the embodiment of
As shown in the embodiment of
In various embodiments of the present invention, the instruction architecture 300 described above includes a printer instruction architecture. The invention, however, is not limited to printer instruction architectures. That is, the scope of the various embodiments is intended to include any operating environment having at least two firmware programmable instruction stacks on a first ASIC, a second ASIC coupled to the first ASIC by a serial interface, and means for arbitrating instructions between the first ASIC and the second ASIC so that multiple firmware programmable instruction stacks can access the second ASIC using the serial interface in a time sensitive manner.
In various embodiments, at least one, or a first one (e.g. 308), of the at least two instruction stacks, 308 and 310, is operable to gather data for motor servo control calculations. In various embodiments, by way of example and not by way of limitation, the first one 308 of the at least two instruction stacks, 308 and 310, is operable to gather data for motor servo control associated with a printing device. In various embodiments, by way of example and not by way of limitation, the first one 308 of the at least two instruction stacks, 308 and 310, operable to gather data for motor servo control, is dedicated a first priority to access the serial interface 306 by the arbiter 312.
In various embodiments, a second one, e.g. 310, of the at least two instruction stacks, 308 and 310, is operable to receive commands for measurement routines. In various embodiments, by way of example and not by way of limitation, the second one 310 of the at least two instruction stacks, 308 and 310, is operable to receive commands for measurement routines associated with a printing device. In various embodiments, by way of example and not by way of limitation, the second one 310 of the at least two instruction stacks, 308 and 310, operable to receive commands for measurement routines, includes measurement routines selected from the group of carriage servo measurement routines, service station servo measurement routines, paper type (e.g. media sensor) measurement routines, ink placement measurement routines (sometimes referred to herein as SPOT measurement routines), ink cartridge temperature measurement routines, and ink level fluid measurement routines (e.g. for measuring the fluid level in ink cartridge reservoirs), among others of the like. The invention, however, is not so limited. In various embodiments, the second one 310 of the at least two instruction stacks, 308 and 310, operable to receive commands for measurement routines, is provided a second priority to access the serial interface 306 by the arbiter 312.
In various embodiments, the instruction queue 315 is operable to receive command instructions. In various embodiments, the instruction queue 315 is operable to receive motor speed and direction instruction commands, associated with a printing device, from the one or more processors 322 located on the first integrated circuit 302. The invention, however, is not so limited. In various embodiments, the motor speed and direction instruction commands can include phase data and pulse width modulation (PWM) data which are intended to be written to the second integrated circuit 304, having the A/D converter 305, to make motor adjustments. In various embodiments, the instruction queue is provided a second priority to access the serial interface 306 by the arbiter 312. In various embodiments, the instruction queue shares a second priority, to access the serial interface 306, with the second one 310 of the at least two instruction stacks, 308 and 310.
In various embodiments, by way of example and not by way of limitation, the PWM and phase data can be less than 16 bits and can therefore fit into one serial interface transaction. The instruction queue 315 is large enough, e.g. deep enough, to hold serial data for as long as the serial interface is anticipated being held busy by a concurrent transaction. In various embodiments, the instruction queue 315 at least large enough to hold eight or more command instructions. The one or more processors 322 can load the command instruction data into the instruction queue 315 and then continue with other tasks. The instruction queue 315 can be configured and/or designed so that the instruction queue 315 does not fill up and create a wait.
In various embodiments, such as shown in
In various embodiments, the means for arbitrating instructions between the first ASIC 302 and the second ASIC 304 includes providing dedicated instruction routines on the at least two firmware programmable instruction stacks, e.g. 308 and 310, which are operable to read data values and manage measurement routines. In various embodiments, the means for arbitrating instructions includes an arbiter 312 which is configured to yield a first priority to a first one of the at least two firmware programmable instruction stacks, e.g. 308. The arbiter 312 is configured to share a second priority between the instruction queue 315 and one or more additional firmware programmable instruction stacks, e.g. 310. In various embodiments, the shared second priority can involve alternating access to the serial interface 306 between the instruction queue 315 and one or more additional firmware programmable instruction stacks, e.g. 310.
In various embodiments, the means for arbitrating instructions between the first ASIC 302 and the second ASIC 304 includes a set of computer executable instructions operable to request a one or more processors, e.g. 322, when read measurement data are complete in one or more of the at least two firmware programmable instruction stacks, 308 and 310. In various embodiments, the set of computer executable instructions are operable to provide instruction commands to the instruction queue 315 representing calculations by the one or more processors 322 on the read measurement data. The instruction commands can include such time sensitive instruction commands as instruction commands to change the speed and direction of a paper motor in a printing device. The invention, however, is not so limited. In various embodiments, the set of computer executable instructions are operable to grant and/or regulate access to the register based serial interface 306. And, in various embodiments, the set of computer executable instructions are operable to provide measurement instructions (e.g. from the instruction stacks), measurement data (e.g. from the A/D converter), instruction commands from the one or more processor, among other information, between the instruction stacks and/or instruction queue on the first ASIC 302 and A/D converter on the second ASIC. That is, one or more sets of computer executable instructions can grant and/or regulate access to the register based serial interface 306.
In this manner, the one or more sets of computer executable instructions provide measurement instructions from the at least two firmware programmable instruction stacks, e.g. 308 and 310, to the second ASIC 304 using the register based serial interface 306. And, in various embodiments, the one or more sets of computer executable instructions are operable to provide received measurement data from the second ASIC 304 to one or more registers located in and/or associated with, e.g. 321, the at least two firmware programmable instruction stacks.
In various embodiments, as will be discussed next in reference to the embodiment of
The serial interface 406 includes a register based serial interface. In various embodiments, the serial interface 406 is operable to connect to multiple integrated circuits. And, as with the embodiment in
In the embodiment of
One or more of the at least three instruction stacks, 408-1, 408-2, . . . , 408-N, can be configured to run off of timers or interrupt lines, illustrated in
The embodiment of
The arbiter 412 is operable to provide a first priority to a first one, e.g. 408-1, of the at least three instruction stacks, 408-1, 408-2, . . . , 408-N. The arbiter 412 is operable to provide a second priority between the other ones of the at least three instruction stacks, e.g. 408-2, . . . , 408-N. In various embodiments, by way of example and not by way of limitation, providing a second priority between the other ones of the at least three instruction stacks, e.g. 408-2, . . . , 408-N can involve alternating access to the serial interface 406 between the other ones of the at least three instruction stacks, e.g. 408-2, . . . , 408-N.
In various embodiments, one or more of the at least three instruction stacks, 408-1, 408-2, . . . , 408-N, includes one or more functions selected from the group of a loop function, a delay function, a read register function, a write register function, and a read register and write to memory function (such as memory 418 operably couple to the first integrated circuit 402).
In the embodiment of
As shown in the embodiment of
As shown in the embodiment of
In various embodiments of the present invention, the instruction architecture 400 described above includes a printer instruction architecture. However, the scope of the various embodiments is intended to include any operating environment having at least two firmware programmable instruction stacks on a first ASIC, a second ASIC coupled to the first ASIC by a serial interface, and means for arbitrating instructions between the first ASIC and the second ASIC so that multiple firmware programmable instruction stacks can access the second ASIC using the serial interface in a time sensitive manner.
At least one, or a first one (e.g. 408-1), of the at least three instruction stacks, 408-1, 408-2, . . . , 408-N, is operable to gather data for motor servo control calculations. In various embodiments, the first one 408-1 of the at least three instruction stacks, 408-1, 408-2, . . . , 408-N, is used as the paper motor servo instruction stack for a printing device. The paper motor servo instruction stack 408-1 is triggerable by a timer, such as a paper timer, over interrupt line 414-1. In this embodiment, by way of example and not by way of limitation, the paper motor servo instruction stack 408-1 is dedicated a first priority to access the serial interface 406 by the arbiter 412 due to the time sensitive nature of paper motor servo instruction routines associated with a printing device.
In various embodiments, a second one, e.g. 408-2, of the at least three instruction stacks, 408-1, 408-2, . . . , 408-N, is operable to receive commands for ink placement measurement routines associated with a printing device. As used herein, ink placement measurement routines are sometimes referred to as SPOT measurement routines and the second instruction stack 408-2 is then sometimes referred to as a SPOT instruction stack. The invention, however, is not so limited. And, in various embodiments, the second one 408-2 of the at least three instruction stacks, 408-1, 408-2, . . . , 408-N, is operable to receive commands for other measurement routines. By way of example and not by way of limitation way, other example measurement routines include measurement routines selected from the group of paper type (e.g. media sensor) measurement routines, ink cartridge temperature measurement routines, and ink level fluid measurement routines (e.g. for measuring the fluid level in ink cartridge reservoirs), among others of the like. The SPOT instruction stack is triggerable by one or more timers and/or interrupt signals. In various embodiments, the SPOT instruction stack can be triggered by a paper encoder interrupt signal receivable over interrupt line 424-1 from the second integrated circuit 404. In various embodiments, the SPOT instruction stack can be triggered by one or more signals from a digital sensor 415 derivable from a carriage encoder pulse.
In various embodiments, the second one 408-2 of the at least three instruction stacks, 408-1, 408-2, . . . , 408-N, is provided a second priority to access the serial interface 406 by the arbiter 412 to accommodate the time sensitive nature of these measurement routines.
As shown in the embodiment of
In various embodiments, by way of example and not by way of limitation, the PWM and phase data can be less than 16 bits and can therefore fit into one serial interface transaction. In the embodiment of
The instruction architecture shown in
By way of example and not by way of limitation, three methods of accessing a serial interface 406 are provided which accommodate time sensitive command and measurement instruction routines. Paper motor control and SPOT measurement routines are time sensitive command and measurement instruction routines. In various embodiments, a SPOT instruction stack, e.g. 408-2, can be triggered off of the paper encoder interrupt, e.g. 424-2, from an ASIC 404. Additionally, a SPOT instruction stack, e.g. 408-2, can be triggered by one or more signals from a digital sensor 415 which is derived from the carriage encoder pulses over interrupt line 414-2. A paper instruction stack, e.g. 408-1, can be triggered off of a paper timer over interrupt line 414-1. The three sources of serial interface 406 transactions are managed by a fixed priority arbiter 412 using grant and request lines, e.g. G1, R1; G2, R2; G3, R3.
In various embodiments a paper servo needs to be able to read
1) an A/D (analog/digital) value—8 bits
2) PENC (paper encode) values—2 bits
3) Digital position data—10-12 bits
4) High and low crossing point values for the current quadrature state—16 bits
Each read can be from a unique register location in an analog ASIC, e.g. second integrated circuit 404. In some embodiments the A/D and PENC values can be combined in a single register. Thus, to read the above four (4) values at least three (3) serial interface 406 reads are used. As used herein, a serial interface read is interpreted as having 16 bits of data. The invention, however, is not so limited. The four values are to be synchronized to produce meaningful results. Therefore, an analog ASIC, such as ASIC 404, is configured and provided with a method to hold off updating any of the appropriate registers until all three serial interface 406 reads are complete. Various embodiments thus address latency issues regarding when data is needed and when the data is received in consideration of the time sensitivity of the data. Absent the various embodiments of the present invention there can be inappropriate delay with processes being locked out and a greater chance of having an error, such as a position error. By way of the various embodiments, multiple transactions can be configured to occur automatically over a single serial interface 406 without any additional delay.
In various embodiments, multiple dedicated instruction stacks can be used to perform consecutive serial interface 406 reads when a timer goes off, such as a paper timer in the printing device environment. An instruction stack will interrupt a CPU, e.g. 422, when the data is ready. By way of example and not by way of limitation, after reading the data and processing it, a paper servo routine can write phase and PWM values to an analog ASIC in order to make motor adjustments. The PWM and phase data is approximately 16 bits or less and therefore can fit into one serial interface 406 transaction. In various embodiments an instruction queue is provided which is deep enough to hold the PWM and phase data. In various embodiments, an instruction stack is provided to hold the PWM and phase data.
The method further includes arbitrating instructions through a serial bus to a second integrated circuit with a first priority given to the first instruction routine from the first firmware programmable stack and a second priority shared between the second instruction routine and instructions from the instruction queue, as illustrated in block 640.
Although specific embodiments have been illustrated and described herein, those of ordinary skill in the art will appreciate that any arrangement calculated to achieve the same techniques can be substituted for the specific embodiments shown. This disclosure is intended to cover any and all adaptations or variations of various embodiments of the invention. It is to be understood that the above description has been made in an illustrative fashion, and not a restrictive one. Combination of the above embodiments, and other embodiments not specifically described herein will be apparent to those of skill in the art upon reviewing the above description. The scope of the various embodiments of the invention includes any other applications in which the above structures and methods are used. Therefore, the scope of various embodiments of the invention should be determined with reference to the appended claims, along with the full range of equivalents to which such claims are entitled.
It is emphasized that the Abstract is provided to comply with 37 C.F.R. § 1.72(b) requiring an Abstract that will allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to limit the scope of the claims.
In the foregoing Detailed Description, various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the embodiments of the invention require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment.
Number | Name | Date | Kind |
---|---|---|---|
5828814 | Cyman et al. | Oct 1998 | A |
6361137 | Eaton et al. | Mar 2002 | B1 |
6570604 | Able et al. | May 2003 | B2 |
6782468 | Nakazato | Aug 2004 | B1 |
Number | Date | Country | |
---|---|---|---|
20040179048 A1 | Sep 2004 | US |