A printing system can include a printhead that has nozzles to dispense printing fluid to a target. In a two-dimensional (2D) printing system, the target is a print medium, such as a paper or another type of substrate onto which print images can be formed. Examples of 2D printing systems include inkjet printing systems that are able to dispense droplets of inks. In a three-dimensional (3D) printing system, the target can be a layer or multiple layers of build material deposited to form a 3D object.
Some implementations of the present disclosure are described with respect to the following figures.
Throughout the drawings, identical reference numbers designate similar, but not necessarily identical, elements. The figures are not necessarily to scale, and the size of some parts may be exaggerated to more clearly illustrate the example shown. Moreover, the drawings provide examples and/or implementations consistent with the description; however, the description is not limited to the examples and/or implementations provided in the drawings.
In the present disclosure, use of the term “a,” “an”, or “the” is intended to include the plural forms as well, unless the context clearly indicates otherwise. Also, the term “includes,” “including,” “comprises,” “comprising,” “have,” or “having” when used in this disclosure specifies the presence of the stated elements, but do not preclude the presence or addition of other elements.
A printhead for use in a printing system can include nozzles that are activated to cause printing fluid droplets to be ejected from respective nozzles. Each nozzle includes a nozzle activation element. The nozzle activation element when activated causes a printing fluid droplet to be ejected by the corresponding nozzle. In some examples, a nozzle activation element includes a heating element (e.g., a thermal resistor) that when activated generates heat to vaporize a printing fluid in a firing chamber of the nozzle. The vaporization of the printing fluid causes expulsion of a droplet of the printing fluid from the nozzle. In other examples, a nozzle activation element includes a piezoelectric element. When activated, the piezoelectric element applies a force to eject a printing fluid droplet from a nozzle. In further examples, other types of nozzle activation elements can be employed.
A printing system can be a two-dimensional (2D) or three-dimensional (3D) printing system. A 2D printing system dispenses printing fluid, such as ink, to form images on print media, such as paper media or other types of print media. A 3D printing system forms a 3D object by depositing successive layers of build material. Printing fluids dispensed from the 3D printing system can include ink, as well as agents used to fuse powders of a layer of build material, detail a layer of build material (such as by defining edges or shapes of the layer of build material), and so forth.
In the ensuing discussion, the term “printhead” can refer generally to a printhead die or an overall assembly that includes multiple printhead dies mounted on a support structure. A die (also referred to as an “integrated circuit (IC) die”) includes a substrate on which is provided various layers to form nozzles and control circuitry to control ejection of a fluid by the nozzles.
Although reference is made to a printhead for use in a printing system in some examples, it is noted that techniques or mechanisms of the present disclosure are applicable to other types of fluid ejection devices used in non-printing applications that are able to dispense fluids through nozzles. Examples of such other types of fluid ejection devices include those used in fluid sensing systems, medical systems, vehicles, fluid flow control systems, and so forth.
In some examples, a fluid ejection device can be implemented with one die. In further examples, a fluid ejection device can include multiple dies.
As devices, including printhead dies or other types of fluid ejection dies, continue to shrink in size, the number of signal lines used to control circuitry of a device can affect the overall size of the device. A large number of signal lines can lead to using a large number of signal pads (referred to as “bond pads”) that are used to electrically connect the signal lines to external lines. Adding features to fluid ejection devices can lead to use of an increased number of signal lines (and corresponding bond pads), which can take up valuable die space, for example. Examples of additional features that can be added to a fluid ejection device include memory devices.
An issue associated with accessing memory in a fluid ejection device is that an address space available given a particular number of address lines connected to the fluid ejection device is restricted. Without increasing the number of address lines over the particular number of address lines, then the fluid ejection device may not be able to support a larger memory to store more data. In addition, bandwidth for accessing data (reading data or writing data) of the memory in the fluid ejection device can also be constrained, which can lead to slow operation when data access is to be performed.
Techniques or mechanisms according to various implementations can be employed to address the foregoing. In some implementations (referred to as “multi-data line implementations”), a multi-data line arrangement can be used where multiple data lines (e.g., ID lines) connected to a fluid ejection controller are shared by memories in multiple fluid ejection devices. As used here, the term “line” can refer to an electrical conductor (or alternatively, multiple electrical conductors) that can be used to carry a signal (or multiple signals).
In alternative implementations of the present disclosure, techniques or mechanisms for interleaved memory access (or more simply, “interleaved access”) can be employed. In the alternative implementations (referred to as “interleaved access implementations”), multiple decoders (that include shift registers in some examples) are used to control selection of respective memories of a fluid ejection device. The multiple decoders can cause activation of control signals at different times in response to a common address, for selecting respective memories of the fluid ejection device for interleaved access. To control durations of the control signals produced by the multiple decoders, respective pass gates and discharge switches can be included in the respective decoders. The discharge switch in each respective decoder deactivates a control signal of the respective decoder while another decoder of the plurality of decoders is activating a control signal in response to the common address.
In yet further implementations of the present disclosure, a multi-data line implementation can be combined with an interleaved access implementation to provide an even greater address space, given a specific set of address lines.
Multi-Data Line Implementations
This section refers to examples of multi-data line implementations.
As shown in
A “controller” can refer to a hardware processing circuit, such as any or some combination of the following: a microprocessor, a core of a multi-core microprocessor, a microcontroller, a programmable integrated circuit device, a programmable gate array, and so forth. A controller can be implemented with one IC chip (or die) or multiple IC chips (or dies). In further examples, a microcontroller can refer to a combination of a hardware processing circuit and machine-readable instructions (software and/or firmware) executable on the hardware processing circuit.
The fluid ejection controller 100 generates various control signals and address signals that are transported over lines to the fluid ejection devices 104-1 and 104-2. In addition, the fluid ejection controller 100 can write data to the fluid ejection devices 104-1 and 104-2 over data lines, and read data from the fluid ejection devices 104-1 and 104-2 over data lines.
In some examples, multiple data lines 102-1 and 102-2 are shared by multiple fluid ejection devices 104-1 and 104-2. For example, a first data line 102-1 communicates data of a first memory 106-1 or 108-1 of each fluid ejection device, and a second data line 102-2 communicates data of a second memory 106-2 or 108-2 of each fluid ejection device. Thus, the data of the memories 106-1 and 106-2 in the fluid ejection device 104-1 can be communicated in parallel over the data lines 102-1 and 102-2. Similarly, the data of the memories 108-1 and 108-2 in the fluid ejection device 104-2 can be communicated in parallel over the data lines 102-1 and 102-2.
In some examples, each memory 106-1, 106-2, 108-1, or 108-2 can be implemented as an electrically programmable read-only memory (EPROM) or another type of memory, such as a memristor memory, a phase change memory, and so forth.
A first end of the data line 102-1 is connected to memories 106-1 and 108-1 of the respective fluid ejection devices 104-1 and 104-2. Similarly, a first end of the data line 102-2 is connected to memories 106-2 and 108-2 of the respective fluid ejection devices 104-1 and 104-2. The second ends of the data lines 102-1 and 102-2 are connected to the fluid ejection controller 100.
The memories 106-1 and 106-2 (and similar memories 108-1 and 108-2) can be implemented as separate memory devices or as part of different portions of one memory device.
Although a specific number of data lines, fluid ejection devices, and memories are depicted in
In
In
A given set of address lines connected to a particular fluid ejection device supports an address space of a first size. Use of multiple data lines to communicate data of the multiple memories of the particular fluid ejection device in parallel effectively increases an available address space to a size greater than the first size (e.g., use of two data lines to communicate data of memories in parallel effectively doubles the address space). Additionally, use of multiple data lines to communicate data of the multiple memories of the particular fluid ejection device in parallel increases the bandwidth of accessing data of the particular fluid ejection device, as compared to an available bandwidth where just one data line is used to communicate data of the particular fluid ejection device.
The fluid ejection device 104-2 includes the memories 108-1 and 108-2 as well as nozzle arrays 206-1 and 206-2.
The fluid ejection controller 100 is divided into two control segments 208-1 and 208-2 (or more than two control segments in examples where there are more than two fluid ejection devices). The control segment 208-1 is used to control activation of nozzles of the fluid ejection device 104-1, while the control segment 208-2 is to control activation of nozzles of the fluid ejection device 104-2. The control segments 208-1 and 208-2 can include substantially similar circuitry, except that they are used to control activation of respective different nozzles in different fluid ejection devices.
The control segment 208-1 outputs fire signals FIREA-1 and FIREA-2, which are provided over respective fire lines to the fluid ejection device 104-1. The signal FIREA-1 controls activation of the nozzle array 204-1, and the fire signal FIREA-2 controls activation of the nozzle array 204-2.
The memories 106-1 and 106-2 in some examples are ID memories, which are used to store identification data (and other data). The identification data can identify the respective fluid ejection device. As such, the data line that is output by the control segment 208-1 is referred to as an ID line, which can be used to write or read identification data as well as other data in a respective memory.
The control segment 208-1 is connected over an ID-1 line to the memory 106-1 of the fluid ejection device 104-1. However, the memory 106-2 of the fluid ejection device 104-1 is connected to an ID line of the control segment 208-2, and more specifically, the ID-2 line that interconnects the control segment 208-2 and the memory 106-2.
The control segment 208-2 further produces two fire signals, FIREB-1 and FIREB-2, which are provided over fire lines to respective nozzle arrays 206-1 and 206-2 of the fluid ejection device 104-2, to control activation of the nozzle arrays 206-1 and 206-2. The ID-2 line interconnects the control segment 208-2 and the memory 108-2 in the fluid ejection device 104-2. However, the memory 108-1 of the fluid ejection device 104-2 is connected over the ID-1 line to the control segment 208-1.
In the arrangement shown in
The circuit 302 further includes memories 306-1 and 306-2. Alternatively, the memories 306-1 and 306-2 can be part of the fluid ejection device 300. The memory 306-1 is connected over a path 308-1 to the bond pad 304-1, and the memory 306-2 is connected over a path 308-2 to the bond pad 304-2. Each path 308-1 or 308-2 can be formed using electrical conductors (e.g., electrically conductive traces, wires, etc.) that interconnect the bond pad 304-1 or 304-2 and the memory 306-1 or 306-2. Alternatively, each path 308-1 or 308-2 can include intermediate devices, such as amplifiers, filters, and so forth, through which signals communicated between the bond pad 304-1 or 304-2 and memory 306-1 or 306-2 are propagated.
The circuit 402 includes ID pads 414-1 and 414-2, to connect to respective ID-1 and ID-2 lines (similar to the ID-1 and ID-2 lines shown in
In addition, the circuit 402 includes fire pads 416-1 and 416-2, which provide respective FIRE-1 and FIRE-2 signals to corresponding nozzle arrays 404-1 and 404-2. For example, the fire pad 416-1 can receive the FIREA-1 or FIREB-1 signal of
The circuit 402 further includes address pads 418 to receive address bits. The address bits are received by an address decoder 420, which produces address select signals provided to select respective cells in the memories 420-1 and 420-2.
The process further includes connecting (at 504) address lines to a first fluid ejection device of the plurality of fluid ejection devices, the address lines supporting an address space of a first size, wherein use of the plurality of data lines to communicate data of the plurality of memories in parallel effectively increases an available address space to a size greater than the first size. The plurality of fluid ejection devices are addressed to avoid multiple fluid ejection devices being active concurrently on a data line of the plurality of data lines, to avoid data corruption. In some examples, the data in memories of different fluid ejection devices can be independent of one another (i.e., the data in the memories of the different fluid ejection devices are associated with different address spaces). The data stored in a first fluid ejection device can be completely or partially independent of the data stored in a second fluid ejection device.
Interleaved Access Implementations
In alternative examples, interleaved access implementations can be used instead of the multi-data line implementations discussed above. In further examples (discussed further below), a combination of multi-data line implementations and interleaved access implementations can be employed.
With interleaved access, multiple decoders are used to access respective different memories in an interleaved manner in response to a same address (i.e., a single address). In other words, in response to the single address (or common address), the multiple address decoders can select the respective memories at different times to cause the communication of data with the different memories at the different times. Interleaving access of memories refers to communicating data over a specific data line in different time intervals with corresponding different memories. For example, the interleaved access can include performing the following over a data line in response to a common address: communicate data (read data or write data) of a first memory in a first time interval, communicate data of a second memory in a second time interval, and so forth.
In response to the same address provided on D1, D2, and D3, the address decoder 602-1 and 602-2 can access data of the memories 604-1 and 604-2, respectively, in an interleaved manner over a data line 608 (e.g., an ID line). To enable the interleaved access, each address decoder includes a respective enable circuit. The address decoder 602-1 includes an enable circuit 610-1, and the address decoder 602-2 includes an enable circuit 610-2. The enable circuit 610-1 includes a pass gate 612-1 and a discharge switch 614-1. Similarly, the enable circuit 610-2 includes a pass gate 612-2 and a discharge switch 614-2.
In examples where the address decoder 602-1 or 602-2 includes shift registers, where each shift register has multiple shift register cells, a pass gate controls the transfer of a state of an address bit (received over D1, D2, or D3) from one stage of a shift register cell to a select transistor of a memory circuit in a memory. The select transistor (in combination with other select transistors) is activated to enable access of a memory cell in the memory circuit. The discharge switch 614-1 or 614-2 controls a deactivation of a control signal of a respective address decoder 602-1 or 602-2 while the other address decoder is activating a control signal in response to the common address. For example, if the address decoder 602-1 is activating a control signal in response to the address received on D1, D2, and D3 to access data of the memory 604-1, then the discharge switch 614-2 in the address decoder 602-2 deactivates the control signal provided by the address decoder 602-2 to the memory 604-2, to deactivate access of the memory 604-2 while the address decoder 602-1 is enabling access of the memory 604-1.
Similarly, if the address decoder 602-2 is activating a control signal in response to the address received on D1, D2, and D3 to access data of the memory 604-2, then the discharge switch 614-1 in the address decoder 602-1 deactivates the control signal provided by the address decoder 602-1 to the memory 604-1, to deactivate access of the memory 604-1 while the address decoder 602-2 is enabling access of the memory 604-2.
The pass gate 612-1 or 612-2 in each enable circuit isolates dynamic memory nodes of a shift register cell. As explained further below, the isolation provided by the pass gate 612-1 or 612-2 ensures that address data that is being shifted will not be lost due to discharge performed by the discharge switch 614-1 or 614-2, respectively.
In examples where a shift register includes multiple shift register cells, each shift register cell can include a respective enable circuit that has a pass gate and a discharge switch.
In some examples, the control signals provided by each address decoder 602-1 or 602-2 to a respective memory 604-1 or 604-2 includes a row select signal, a column select signal, and a bank select signal. A row select signal selects a row of the memory, a column select signal selects a column of the memory, and a bank select signal selects a bank (from multiple banks) of the memory. Each memory can be arranged as multiple banks, where each bank has an array of rows and columns of memory cells. The row, column, and bank select signals are also referred to as control signals that control selection of a memory.
The address on D1, D2, and D3 received by the address decoder 602-1 or 602-2 can perform row, column, and bank select as follows: the address bit on D1 is used to control the row select signal, the address bit on D2 is used to control the column select signal, and the address bit on D3 is used to control the bank select signal.
In examples where the address decoder 602-1 or 602-2 includes shift registers, then a first shift register can be used to shift the address bit on D1 through the first shift register in successive cycles, a second shift register can be used to shift the address bit on D2 through the second shift register in successive cycles, and a third shift register can be used to shift the address bit D3 through the third shift register in successive cycles.
Each shift register includes a series of shift register cells, which can be implemented as flip-flops, other storage elements, or any sample and hold circuits (such as circuits to pre-charge and evaluate address data bits) that can hold their values until the next selection of the storage elements. The output of one shift register cell in the series can be provided to the input of the next shift register cell to perform data shifting through the shift register. By using shift registers in the address decoder 602-1 or 602-2, a small number of address data bits, e.g., D1, D2, and D3, can be used to select a larger address space. For example, each shift register can include 8 (or any other number of) shift register cells. Assuming that three address data bits are input to the address decoder 602-1 or 602-2 that includes three shift registers, each of length 8, then the address space that can be addressed by the address decoder 602-1 or 602-2 is 512 bits (instead of just 8 bits if the three address bits D1, D2, and D3 are used without using the shift registers).
An enable circuit 610-1 or 610-2 can be included in shift register cells of just one of the multiple shift registers, or alternatively, can be included in shift register cells of the multiple shift registers of the address decoder 602-1 or 602-2.
As further shown in
The shift register cell 702 includes an enable circuit 610 (which is either the enable circuit 610-1 or 610-2 of
The first stage 714 further includes a pre-charge transistor 720. The gate of the pre-charge transistor 720 is connected to a drain of the pre-charge transistor 720. A signal T3 is provided to the drain of the pre-charge transistor 720. The source of the pre-charge transistor 720 is connected to an output node 722 of the first stage 714. A transistor 724 and a transistor 726 are connected in series between the output node 722 and a reference voltage.
The gate of the transistor 724 is controlled by T4LV, which is a low-voltage version of a signal T4. For example, the voltage level of T4LV can be half that (or some other percentage) of the voltage of T4. For example, T4LV can be produced by passing T4 through a voltage divider. The gate of the transistor 726 is connected to a node 727 that is connected to the source of a pre-charge transistor 728 that has a gate connected to a drain that is in turn connected to the signal T1. The gate of the transistor 726 is pre-charged by T1 through the pre-charge transistor 728. A transistor 730 and the transistor 718 are connected in a series between the node 727 and a reference voltage. The gate of the transistor 730 is controlled by T2LV, which is a low-voltage version of a T2 signal.
The output node 722 of the first stage 714 is provided through the pass gate of the enable circuit 610 to a select node 736 that controls the gate of a transistor 766 in the memory circuit 704. In the example of
The pass gate of the enable circuit 610 includes two parallel transistors 732 and 734 that are connected in parallel between the output node 722 of the first stage 714 and the select node 736, which is connected to the gate of the transistor 766. The transistor 732 of the pass gate is controlled by a signal T3, and the gate of the transistor 734 is controlled by the signal T4. When either T3 or T4 is at an active state (e.g., a high state), the corresponding transistor 732 or 734 is turned on to allow the voltage at the output node 722 of the first stage 714 to pass to the select node 736.
The pass gate including the pass gate transistors 732 and 734 controls when the output node 722 of the first stage 714 is connected to or isolated from the select node 736. If the signals T3 and T4 are both at an inactive state (e.g., a low state), the pass gate transistors 732 and 734 are both off so that the first stage 714 is isolated from the gate of the select transistor 766.
The discharge switch of the enable circuit 610 is implemented as a transistor 740, which is connected between the select node 736 and a reference voltage. The gate of the transistor 740 is connected to a T1LV signal, which is a low-voltage version of the T1 signal. The transistor 740 when activated by T1LV discharges the gate of the transistor 766 to turn off the select transistor 766, which effectively disables the memory circuit 704.
The output node 722 of the first stage 714 is further provided to the gate of a transistor 738. The transistor 738 is part of the second stage 716, which also includes other transistors, including a pre-charge transistor 742. The pre-charge transistor 742 has a gate connected to a drain of the transistor 742, which is driven by the T3 signal. Transistors 744 and 746 are connected in series between the source of the pre-charge transistor 742 and a reference voltage. The common node 745 between the transistors 744 and 746 is output to the next shift register cell of the shift register, to shift the value of Dx to the next shift register cell.
The gate of the transistor 744 is driven by the T4LV signal, and the gate of the transistor 746 is driven through a pre-charge transistor 748. The T1 signal is provided through the pre-charge transistor 748 to a gate node 750. Transistors 752 and 738 are connected in series between the gate node 750 and a reference voltage. The gate of the transistor 752 is connected to the T2LV signal.
The pass gate transistors 732 and 734 of the enable circuit 610 isolate dynamic memory nodes of the shift register cell 702. In the example of
For example, when the T3 signal is set to an active state (e.g., a high state), both the first stage output node 722 (of the first stage 714) and the select node 736 (that controls the select transistor 766 in the memory circuit 704) are charged to an active state, and the nodes 722 and 736 will remain charged so long as T4 is not activated to perform a discharge. However, the select node 736 will be discharged when T1LV is set to an active state, while the first stage output node 722 remains unchanged at T1LV (in other words, if the first stage of the node 722 is initially high, it will remain high). This isolation between the nodes 722 and 736 is performed to ensure that shifting data through the shift register that includes the shift register cell 702 does not cause loss of data.
Various signals are depicted as being provided to transistors in the first and second stages of the shift register cell 702. These signals include T1, T2LV, T3, and T4LV. In
The signals T1, T2LV, T3, and T4LV are connected to different combinations of select signals depending on whether the shift register cell 702 is in the address decoder 602-1 or address decoder 602-2 (
Table 1 below sets forth how the signals T1, T2LV, T3, and T4LV in
According to Table 1, signals T1, T2LV, T3, and T4LV of the shift register cell 702 are connected to respective select signals S1, S2LV, S3, and S4LV in the address decoder 602-1. The signals T1, T2LV, T3, and T4LV in the shift register cell 702 of
In
The pass gate transistors 732 and 734 are controlled by the T3 and T4 signals, respectively. In the address decoder 602-1, T3 and T4 are connected to S3 and S4, respectively, and in the address decoder 602-2, T3 and T4 are connected to S1 and S2, respectively.
The discharge switch 740 is controlled by T1LV. In the address decoder 602-1, T1LV is connected to S1LV, and in the address decoder 602-2, T1LV is connected to S3LV.
As further shown in
If any of the column select signal 708, the row select signal 710, and the bank select signal is set to an inactive state (e.g., a low state), then the memory cell 706 is not selected since the corresponding transistor 762, 764, or 766 would be off.
In the
The D1, D2, and D3 address bits all set to an active state at 802 causes the row select (RS), column select (CS), and bank select (BS) signals of the address decoder 602-1 to be active in time interval 804. The D1, D2, and D3 address bits all set active at time 806 causes the row select (RS′), column select (CS′), and bank select (BS′) signals of the address decoder 602-2 to be set active in time interval 808.
Table 810 in
As further shown in
As shown in
Each memory address decoder shown in
In
In
In the foregoing description, numerous details are set forth to provide an understanding of the subject disclosed herein. However, implementations may be practiced without some of these details. Other implementations may include modifications and variations from the details discussed above. It is intended that the appended claims cover such modifications and variations.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2017/040880 | 7/6/2017 | WO | 00 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2019/009903 | 1/10/2019 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
6439697 | Axtell et al. | Aug 2002 | B1 |
7278703 | Benjamin et al. | Oct 2007 | B2 |
7372475 | Vazac et al. | May 2008 | B2 |
7497536 | Benjamin | Mar 2009 | B2 |
8474943 | Ness et al. | Jul 2013 | B2 |
8717206 | Geerlings | May 2014 | B2 |
8745433 | Sato | Jun 2014 | B2 |
8864260 | Ge et al. | Oct 2014 | B1 |
9592664 | Ge et al. | Mar 2017 | B2 |
20050190217 | Wade | Sep 2005 | A1 |
20080172515 | Croxford | Jul 2008 | A1 |
20090147035 | Nakano | Jun 2009 | A1 |
20100302293 | Torgerson et al. | Dec 2010 | A1 |
20160332439 | Ge et al. | Nov 2016 | A1 |
Number | Date | Country |
---|---|---|
WO-2015116129 | Aug 2015 | WO |
WO-2015167477 | Nov 2015 | WO |
WO-2016018199 | Feb 2016 | WO |
WO-2016167763 | Oct 2016 | WO |
WO-2019009902 | Jan 2019 | WO |
Entry |
---|
Andrews, K. et al. A Theory of Interleavers, May 29, 2012 < https://www.cs.cornell.edu/˜kozen/papers/interl.pdf >. |
Zwang, D., Drupa 2012, the Inkjet Drupa again? a Closer Look at Xerox, Nov. 28, 2011, < http://whattheythink.com/articles/55245-drupa-2012-inkjet-drupaagain-closer-look-xerox/. |
Number | Date | Country | |
---|---|---|---|
20200130351 A1 | Apr 2020 | US |