U.S. patent application number 10/513008 was filed with the patent office on 2005-11-24 for print engines.
Invention is credited to Abello, Lluis.
Application Number | 20050260021 10/513008 |
Document ID | / |
Family ID | 9935679 |
Filed Date | 2005-11-24 |
United States Patent
Application |
20050260021 |
Kind Code |
A1 |
Abello, Lluis |
November 24, 2005 |
Print engines
Abstract
A print engine receives image data elements relating to an image
to be printed and generates print element control instructions for
communication to a plurality of pens (e.g. inkjet pens) the control
of the print engine. The print engine includes: a halftoning
processor for receiving the image data elements and generating a
halftone data set therefrom; and a plurality of print element
controllers associated with said halftoning processor, each print
element controller being adapted to generate print element control
instructions from said halftone data set to drive different
printing elements.
Inventors: |
Abello, Lluis; (Tarragona,
ES) |
Correspondence
Address: |
HEWLETT PACKARD COMPANY
P O BOX 272400, 3404 E. HARMONY ROAD
INTELLECTUAL PROPERTY ADMINISTRATION
FORT COLLINS
CO
80527-2400
US
|
Family ID: |
9935679 |
Appl. No.: |
10/513008 |
Filed: |
July 18, 2005 |
PCT Filed: |
April 28, 2003 |
PCT NO: |
PCT/EP03/04413 |
Current U.S.
Class: |
400/62 |
Current CPC
Class: |
H04N 1/4052 20130101;
H04N 1/4015 20130101; H04N 1/1934 20130101; H04N 1/1903 20130101;
G06K 15/1857 20130101 |
Class at
Publication: |
400/062 |
International
Class: |
B41J 005/30 |
Foreign Application Data
Date |
Code |
Application Number |
Apr 27, 2002 |
GB |
0209722.8 |
Claims
1. A print engine for receiving image data elements relating to an
image to be printed and generating therefrom print element control
instructions for communication to a plurality of printing elements
under the control of said print engine, said print engine
comprising: a halftoning processor for receiving said image data
elements and generating a halftone data set therefrom; and a
plurality of print element controllers associated with said
halftoning processor, each print element controller being adapted
to generate print element control instructions from said halftone
data set to drive different printing elements.
2. A print engine as claimed in claim 1, further comprising a
plurality of ink printing elements grouped together in a plurality
of pen arrays such that all of the nozzles of a given pen array
print the same colour of ink.
3. A print engine as claimed in claim 2, wherein said arrays are
disposed in use such that at least two arrays are provided to print
overlapping swaths of ink of the same colour during a single
printing pass, and wherein both of said at least two arrays are
under the control of the same print element controller.
4. A print engine as claimed in claim 3, wherein the arrays are
disposed in use such that all arrays which print the same ink onto
the same portion of image are under the control of the same print
element controller.
5. A print engine as claimed in claim 1, further comprising a
memory for storing halftone data produced by said halftoning
processor, wherein said memory is accessible by each of said print
element controllers to retrieve the halftone data required by each
print element controller.
6. A print engine as claimed in claim 5, wherein said memory is a
buffer for temporarily storing halftone data produced by the
halftoning processor.
7. A print engine as claimed in claim 1, further comprising a
plurality of memories, each associated with one of said print
element controllers for storing halftone data produced by said
halftoning processor, wherein each memory is accessible by the
associated print element controllers to retrieve the halftone data
required by that print element controller.
8. A print engine as claimed in claim 1, further comprising a
communications link to which said halftone data is sent, each of
said print element controllers being connected to said link.
9. A print engine as claimed in claim 8, wherein said link is a bus
and said print element controllers are addressable via said
bus.
10. A print engine as claimed in claim 9, wherein said halftone
processor packetises said halftone data and addresses different
packets of halftone data to different print element
controller(s).
11. A print engine as claimed in claim 1, wherein each print
element controller is adapted to retrieve halftone data from a
store repeatedly and to generate therefrom on repeated retrievals
print element control instructions for different sets of printing
elements.
12. A printing system comprising a print engine as claimed in claim
1, further comprising a print medium advance mechanism for
advancing a print medium past said print engine.
13. A wide array printing system comprising a plurality of print
engines as claimed in claim 1, said print engines being disposed in
an array across a width defining a print area, with each print
engine responsible for halftoning and printing a portion of said
print area.
14. A wide array printing system as claimed in claim 13, wherein
each of said print engines further comprises a plurality of
printing elements arranged in a plurality of pens, whereby said
pens combine to extend across the width of the print area.
15. A wide array printing system as claimed in claim 14, wherein
said pens include a pen grouping comprising at least two pens
arranged to print the same ink at the same point across the width
of the print area, said at least two pens being separated from one
another in the direction perpendicular to the direction spanning
the width, wherein both of said pens receive print element control
instructions from the same print element controller.
16. A wide array printing system as claimed in claim 15, wherein
said pens include a plurality of said pen groupings, wherein each
grouping is under the exclusive control of a single one of said
print element controllers.
17. A scanning printing system comprising a print engine as claimed
in claim 1 and further comprising a plurality of printing element
sets, each set being under the control of one of said print element
controllers, wherein said sets are disposed on a carriage for
scanning across a print medium while printing thereon.
18. A scanning printing system as claimed in claim 17, wherein each
set of printing elements exclusively prints one or more inks, such
that the print element control instructions for printing each ink
are generated by a single print element controller.
19. A scanning printing system as claimed in claim 17, wherein each
print element controller is responsible for controlling a set of
nozzles divided into four pens.
20. A scanning printing system as claimed in claim 17, wherein a
first print element controller is responsible for controlling a set
of pens printing three primary colour inks and a black ink, and a
second print element controller is responsible for controlling a
set of pens printing light tones of two of said primary colours, a
pigmented black ink and a fixer.
21. A method of generating print element control instructions from
a set of image data elements representative of an image, said
method comprising: preparing halftone data from said image data
elements; making said halftone data available to a plurality of
print element controllers; with each of said print element
controllers, preparing print element control instructions from said
halftone data set using a print mask effective to cause a set of
print elements under the control of said print element controller
to print said print mask.
22. A method as claimed in claim 21, further comprising printing
with said print elements.
23. A method as claimed in claim 22, wherein each different part of
said image is set of one or more colour planes of the image in an
image swath.
24. A computer program comprising instructions in machine readable
form which when executed within a printing system including a
halftoning processor and a plurality of print element controllers
connected to said processor are effective to cause the system to
carry out the method of claim 21.
25. A computer program carrier comprising an encoded computer
program as claimed in claim 24.
Description
TECHNICAL FIELD
[0001] The present invention relates to print engines. The
invention has particular application in inkjet printers.
BACKGROUND ART
[0002] Conventional inkjet printers employ one or more printheads
mounted on a carriage which is repeatedly scanned across a scan
axis as the print medium is advanced stepwise past the scan axis.
The printheads lay down swaths of ink during each scan, between
advances of the print medium.
[0003] In a conventional high speed printer, each page of a print
job is rasterised (converted from a computer output format such as
Postscript.TM. or Portable Document Format.TM. to a bitmap of
pixels) by a dedicated raster image processor (RIP).
[0004] The rasterised pages are buffered and then processed by an
application specific integrated circuit (ASIC) which converts the
bitmap into a halftone image composed of "halftone pixels" (which
are not the same as print dots), and in each halftone pixel there
is typically specified a number of ink dots of various colours, to
give the appearance of a continuous tone image when printed. The
most basic colour printer will use combinations of cyan, magenta
and yellow (CMY) to make the various colours, or for increased
quality true black ink may be also available (CMYK). For high
quality images, two additional inks, light cyan and light magenta
are also employed to provide increased fidelity particularly with
lighter tones such as skin tones (CcMmYK printing).
[0005] Since there may be typically six inks available in
specifying the halftone image, and each ink is printed from a
separate pen on a printhead or from a separate printhead, each
printhead has its own controller circuitry which analyses the
halftone image and specifies the nozzle firing sequence to cause
the printhead to lay down its ink at the correct point on the page,
so that the pens in combination reproduce the halftone image.
[0006] A continuing goal of inkjet printing technology is to
improve printing speeds, which are limited by a number of factors
including the time taken to scan across the page, which may be
increased in multiples where multiple pass print modes are employed
(in which each area of the printed image is covered by a multiple
number of swaths to improve print quality).
[0007] One way of reducing print times is to employ a page wide
array (PWA) of printheads. In PWA printers, an array of printheads
extending across the width of the page is maintained in a static
position during printing and the medium advances under the PWA,
eliminating scanning times. As the number of printheads increases
however, the processing requirements of the printer similarly
increase.
DISCLOSURE OF THE INVENTION
[0008] The invention provides a print engine for receiving image
data elements relating to an image to be printed and generating
therefrom print element control instructions for communication to a
plurality of printing elements under the control of said print
engine, said print engine comprising:
[0009] a halftoning processor for receiving said image data
elements and generating a halftone data set therefrom; and
[0010] a plurality of print element controllers associated with
said halftoning processor, each print element controller being
adapted to generate print element control instructions from said
halftone data set to drive different printing elements.
[0011] The term "print element" as used herein refers to an
individual print-creating device such as an inkjet printhead or
pen. The term also encompasses other types of print-creating
components such as dot matrix printheads or indeed any other type
of device which can be arranged in arrays whereby each device
prints a portion of the image across the page. The printers of the
present invention may be adapted to receive such printing
components in an array, and so the printing components need not
form part of the printer and can be replaceable. The means for
receiving the array can be a simple mounting axis on which the
components are fixed in position by suitable attachment means.
[0012] By associating two or more print element controllers with
one halftoning processor, halftoning may be done once for a given
portion of the image. Each of the print element controllers may
access this halftone data and generate the necessary print element
control instructions for the printing elements under its control
from the same set of halftone data.
[0013] Preferably, said print engine further comprises a plurality
of ink printing elements grouped together in a plurality of pen
arrays such that all of the nozzles of a given pen array print the
same colour of ink.
[0014] Further, preferably, said arrays are disposed in use such
that at least two arrays are provided to print overlapping swaths
of ink of the same colour during a single printing pass, and
wherein both of said at least two arrays are under the control of
the same print element controller.
[0015] This arrangement is particularly advantageous as it allows a
single print element controller to carry out the masking for the
ink in question and to divide the deposition of droplets for this
colour along the swath between the two or more arrays (by
generating firing instructions for the two arrays which combine to
create the complete mask). By repeating this arrangement it is
possible to ensure that all pens of the same colour which print the
same portion of an image are controlled by the same print element
controller. The controller responsible for each such group of pen
arrays can access the halftoning data from a buffer, for example,
and generate the necessary masking data and firing instructions
once, feeding the relevant control instructions to each pen.
[0016] Further, preferably, the arrays are disposed in use such
that all arrays which print the same ink onto the same portion of
image are under the control of the same print element
controller.
[0017] In a preferred embodiment, the print engine further
comprises a memory for storing halftone data produced by said
halftoning processor, wherein said memory is accessible by each of
said print element controllers to retrieve the halftone data
required by each print element controller.
[0018] In another preferred embodiment, the engine includes a
plurality of memories, each associated with one of said print
element controllers for storing halftone data produced by said
halftoning processor, wherein each memory is accessible by the
associated print element controllers to retrieve the halftone data
required by that print element controller.
[0019] In this way, the relevant portion of data can be held
locally at each print element controller to accelerate the
accessing and processing of the halftone data to firing signals.
The print element controller preferably accesses this data a number
of times as it prepares firing instructions for a number of
distinct groupings of printing elements, and therefore the use of
local dedicated buffering allows the data processing rate to be
increased.
[0020] The print engine may also include a communications link to
which said halftone data is sent, each of said print element
controllers being connected to said link.
[0021] Said link is preferably a bus and said print element
controllers are preferably addressable via said bus.
[0022] Preferably, said halftone processor packetises said halftone
data and addresses different packets of halftone data to different
print element controller(s).
[0023] Preferably, each print element controller is adapted to
retrieve halftone data from a store repeatedly and to generate
therefrom on repeated retrievals print element control instructions
for different sets of printing elements.
[0024] The invention also provides a printing system comprising a
print engine as defined above, and further comprising a print
medium advance mechanism for advancing a print medium past said
print engine.
[0025] In another aspect the invention provides a wide array
printing system comprising a plurality of print engines as defined
above, each for printing from a set of printing elements which sets
are disposed in an array across a width defining a print area, with
each print engine responsible for halftoning and printing a portion
of said print area.
[0026] Preferably, each of said print engines further comprises a
plurality of printing elements arranged in a plurality of pens,
whereby said pens combine to extend across the width of the print
area.
[0027] Further, preferably, said pens include a pen grouping
comprising at least two pens arranged to print the same ink at the
same point across the width of the print area, said at least two
pens being separated from one another in the direction
perpendicular to the direction spanning the width, wherein both of
said pens receive print element control instructions from the same
print element controller.
[0028] Most preferably, in this embodiment, said pens include a
plurality of said pen groupings, wherein each grouping is under the
exclusive control of a single one of said print element
controllers.
[0029] It should be noted that this arrangement does not exclude
the possibility of having two or more groupings under the control
of the same print element controller. What is important in relation
to this preferred feature of the invention is that the bars of any
one grouping are mutually controlled by one controller, so that the
masking of a subset of halftone data can be prepared by that
controller to fully define the firing instructions for the nozzles
of the grouping.
[0030] In another aspect the invention provides a scanning printing
system comprising a print engine as defined above which includes a
plurality of printing element sets, each set being under the
control of one of said print element controllers, wherein said sets
are disposed on a carriage for scanning across a print medium while
printing thereon.
[0031] Preferably, each set of printing elements exclusively prints
one or more inks, such that the print element control instructions
for printing each ink are generated by a single print element
controller.
[0032] It should be appreciated that each print element controller
may generate print masks and firing instructions (e.g. in an inkjet
system) for the nozzles of a number of different coloured inks, but
that this preferred features specifies that for any given ink (e.g.
cyan), the entire print mask is specified within one controller,
even if the cyan print mask is shared between two pens, such that
both pens will be controlled by the same controller.
[0033] In a particularly preferred embodiment of a scanning
printer, each print element controller is responsible for
controlling a set of nozzles divided into four pens. Most
preferably, a first print element controller is responsible for
controlling a set of pens printing three primary colour inks and a
black ink, and a second print element controller is responsible for
controlling a set of pens printing light tones of two of said
primary colours, a pigmented black ink and a fixer.
[0034] This system is particularly advantageous as it enables a
family of modular components to be used. For example, where a basic
printer might have a halftoning processor and a set of printhead
pens printing cyan, magenta, yellow and black inks, under the
control of a print element controller, the present invention can
utilise the same components and the associated software in the
print element controller and add a second print element controller
with a set of printheads printing light cyan, light magenta,
pigmented black and a fixer.
[0035] In another aspect the invention provides a method of
generating print element control instructions from a set of image
data elements representative of an image, said method comprising
the steps of:
[0036] preparing halftone data from said image data elements;
[0037] making said halftone data available to a plurality of print
element controllers;
[0038] with each of said print element controllers, preparing print
element control instructions from said halftone data set using a
print mask effective to cause a set of print elements under the
control of said print element controller to print said print
mask.
[0039] The method of the invention preferably also involves the
step of printing said mask with said print elements.
[0040] Preferably, each different part of said image is set of one
or more colour planes of the image in an image swath.
[0041] In another aspect the invention provides a computer program
comprising instructions in machine readable form which when
executed within a printing system including a halftoning processor
and a plurality of print element controllers connected to said
processor are effective to cause the system to carry out a method
as defined above.
[0042] The invention further provides a computer program carrier
comprising an encoded computer program as defined above.
[0043] The carrier for the computer program may, for example, be an
optical or magnetic carrier (such as a floppy diskette, a compact
disk or a digital versatile disk), an electrical signal, an
electromagnetic signal, or an electronic circuit encoding the
program logic.
BRIEF DESCRIPTION OF DRAWINGS
[0044] The invention will now be illustrated by the following
descriptions of embodiments thereof given by way of example only
with reference to the accompanying drawings, in which:
[0045] FIG. 1 is a block diagram of the architecture of a first
printing system according to an embodiment of the invention;
[0046] FIG. 2 is a representation of an image file sent to the
printer for printing;
[0047] FIG. 3 is a representation of a rasterised version of the
image of FIG. 2;
[0048] FIG. 4 shows the slices of the rasterised image of FIG. 3 as
sent for processing to the three individual halftoning processors
of FIG. 1;
[0049] FIG. 5 is an enlarged view of the slices illustrating the
order of processing of the raster bitmap pixels by the three
processors using a matrix algorithm;
[0050] FIG. 6 is an enlarged view of the slices illustrating the
order of processing of the raster bitmap pixels by the three
processors using a forward error diffusion algorithm;
[0051] FIG. 7 is an enlarged view of the slices illustrating the
order of processing of the raster bitmap pixels by the three
processors using a first serpentine forward error diffusion
algorithm;
[0052] FIG. 8 is an enlarged view of the slices illustrating the
order of processing of the raster bitmap pixels by the three
processors using a second serpentine forward error diffusion
algorithm;
[0053] FIG. 9 is a diagram showing the relationship between the
print element controllers of the system of FIG. 1 and the printbars
under their control;
[0054] FIG. 10 is a diagram illustrating the scalability of the
architecture of FIG. 1; and
[0055] FIG. 11 is a block diagram of the architecture of a scanning
printing system according to the invention.
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
[0056] FIG. 1 shows the main components of a printer according to
an embodiment of the invention, which receives print jobs from a
computer directly connected to the printer via a parallel port 10.
The same printer could be used to print from a local area network
connection or from a wide area network connection, e.g. over the
Internet.
[0057] Print jobs are received by the printer in any one of a
number of supported formats, such as in the form of Postscript.TM.
files (although the skilled person will be aware that the nature of
file received as a print job can vary according to prevailing
standards and the use to which the printer is to be put).
[0058] A raster imaging processor (RIP) 12 receives the incoming
print jobs and converts them to a rasterised bitmap, in known
manner. The output of the RIP in the embodiment being described is
a contone image file. The print job is processed on a page-by-page
basis with each page being rasterised in turn and forwarded via a
bridge 14 to a RAM buffer 16 which stores multiple pages to allow
print jobs to be sent quickly to the ASICs for further processing
and avoid delays due to real time processing of the images which
might otherwise occur.
[0059] The bridge provides a link between the RIP or the RAM buffer
to a common I/O bus which connects to three parallel halftoning
ASICs 18,20,22. Each ASIC is essentially identical and comprises a
dedicated halftoning processor which is designed to convert a
contone bitmap input to a halftone output specified in the ink
colours provided in the printer. In the illustrated embodiment the
printer is a CMYK printer and so the halftone image will specify
each pixel of the halftone image as a combination of dots of one or
more of the four CMYK colours. In addition to the cyan, magenta,
yellow and black inks, there are printheads for printing a fixative
(F) before the ink is laid down and a post-printing treatment T
after the ink is laid down. The fixative and any other pre-printing
or post-printing treatment, can of course be substituted with inks
of other colours.
[0060] Each ASIC 18,20,22 is dedicated to processing a particular
parallel slice of the image, where the image is sliced into three
equal strips. The strip boundaries run along the direction of the
page advance, so that for any particular page printed by the PWA of
printheads (described below) each ASIC is responsible for
specifying the dots printed in one third of the page.
[0061] Each ASIC outputs halftone data corresponding to the strip
of image which it processes. This halftone data set is converted
into pen firing instructions by a corresponding set of thirty-three
printhead controllers arranged in three groups 30,32,34. Since the
same halftone data for a given strip can be used by all of the
eleven printhead controllers in a group, the halftone data for each
strip is held in a buffer 36, 38, 40. Each of the printhead
controllers can access the halftone data in the buffer and carry
out the necessary masking operations to generate firing
instructions for the printing pens (indicated generally at 42)
under their control. The printhead controllers are ASICs which
analyse the halftone data for the slice under their control and
generate from the data a set of firing instructions for the pens
covering that slice (i.e. converting the halftone data into ink
drops to be printed by its associated printheads). In this way,
each halftoning ASIC can drive multiple printhead controllers.
[0062] Thus, in the illustrated embodiment has three print engines.
The first print engine comprises halftoning ASIC 18, buffer 36,
printhead controllers 30, and the group of pens 44 indicated in
slice 1. The second print engine comprises halftoning ASIC 20,
buffer 38, printhead controllers 32, and 26a-h, the group of pens
46 indicated in slice 2, and the third print engine comprises
halftoning ASIC 22, buffer 40, printhead controllers 34, and the
group of pens 48 indicated in slice 3.
[0063] In a variation on this embodiment, the common buffers
36,38,40 are omitted, and the printhead controllers are connected
to the halftone processor in daisychain configuration, i.e. with a
common bus carrying the halftone output and each printhead
controller accessing the bus to grab data required by that
printhead. The printhead controllers can be addressable, and the
halftone data packetised, so that the halftone data relating to the
printheads under the control of any given controller can be
addressed to that controller. Each controller has its own dedicated
buffer to store the halftone data addressed to it or required by
it.
[0064] In this variation, the halftone data packets are sent once
along the common bus and stored in the buffer(s) of the
controller(s) which require access to that data. Then each
printhead controller can repeatedly access the data, apply the
print masks in turn for each printhead it controls to that data and
supply the firing instructions to the respective printheads.
[0065] This alternative arrangement can be advantageous from a
signal processing and network traffic viewpoint, since the data is
held locally in each controller's buffer and is accessed locally by
the controller without other network traffic interference. This
arrangement also has advantages for scalability as will be
discussed in more detail below.
[0066] Before describing in detail the configuration of the pens
and the interaction between the printhead controllers and the pens,
the initial stages of the printing process will be described.
[0067] FIG. 2 shows a simple image sent as a print job to the
printer. The image 50 is received by the RIP 12 and is rasterised
to provide a pixelated image 52 (FIG. 3) of differently coloured
pixels 54,56. (The image shown in FIGS. 2 and 3 is black and white
for simplicity but it will be appreciated that a coloured image
will give rise to a large number of different colours of pixels).
The rasterised image is then optionally buffered and fed to the
halftoning processors 18,20,22, where it is split into three
parallel slices 58,60,62, as shown in FIG. 4.
[0068] In practice the splitting occurs as the halftoning ASICs
capture the image file from the RAM buffer through the I/O bus. The
halftoning processors are configured to pick out the pixels in the
particular slices assigned to each halftoning ASIC. This may be
achieved simply by reading the appropriate DRAM addresses of the
buffer. More preferably, each ASIC will determine that for a page
of a given width W (W being the number of pixels), it is
responsible for W/3 pixels per line. The first ASIC reads the
pixels "numbered" from 1 to W/3 in each line. The second ASIC reads
the pixels from (W/3+1) to 2W/3, and the third ASIC reads the
pixels from (2W/3+1) to W in each line.
[0069] By this means the rasterised contone image is divided in
three for further processing, and each halftone ASIC 18,20,22
operates on its own set of pixels to generate the halftone data set
for that slice of the page, e.g. by using a conventional halftoning
algorithm.
[0070] FIG. 5 illustrates a parallel process for processing the
contone bitmap. In the example of FIG. 5, the halftoning ASICS
operate on the pixels using a matrix algorithm which contains no
forward diffusion of error terms. Thus, processor 18 will operate
on its contone bitmap in the pixel order 1a,2a,3a,4a, . . . without
any reference to the other processors. Similarly processor 20
operates on pixels 1b,2b,3b,4b, . . . and processor 22 on pixels
1c,2c,3c,4c, . . . , etc.
[0071] As the halftone images are generated they are sent to the
printhead controllers 30,32,34. The printhead controllers then
generate firing instructions.
[0072] In FIG. 6 a more sophisticated halftoning algorithm is shown
which relies on the forward diffusion of error terms in the contone
bitmap. The algorithm used is a linear algorithm, and operates
across the three slices in turn. Thus, after the first of the
processors 18 has processed pixels 1a,2a, . . . ,7a,8a, it delivers
the error term to processor 20, at this point processor 18 can
start processing the next line 9a,10a, . . . since there are no
further dependencies. Processor 20 carries forward the error term
from pixel 8a to process pixels 1b,2b, . . . ,7b,8b before handing
over in turn to processor 22. Thus processor 18 is one line ahead
of processor 20 which in turn is one line ahead of processor 22 and
so the 3 processors work in pipeline fashion. Once the pipeline has
been filled up the three processors work in parallel. The mechanism
for handling over the error term can be achieved either through the
same IO bus or a dedicate link between processors.
[0073] FIG. 7 shows a variation on this algorithm where instead of
a linear left-to-right processing order, the direction of
processing is reversed for each row in a serpentine fashion. Thus,
while the first row is processed in the order described above for
FIG. 6, processor 22 begins processing the second row with the
pixel shown as 25 in FIG. 7. This serpentine error diffusion
algorithm can achieve higher quality output but it creates
dependencies in both directions. Thus processor 18 after it has
processed pixel 8 is stalled until it receives the error term for
pixel 41 from processor 20. In a similar way processors 20 and 22
are also stalled. Thus this serpentine error diffusion algorithm
offers no parallelism and at any point in time only one processor
is working while the others are stalled.
[0074] FIG. 8 shows a particularly preferred embodiment which
overcomes this difficulty by halftoning the individual slices of
the page longitudinally as opposed to transversely. Thus, processor
18 performs a serpentine algorithm down and up the columns as
opposed to across the rows of pixels, in the order 1a,2a,3a, . . .
etc. Once it has finished with the slice, processor 18 delivers a
full row of error terms to processor 20. At this point processor 18
can start processing the left-hand slice of the next page of the
print job and processor 20 is then free to process its slice in the
order 1b,2b,3b,4b, . . . etc. When processor 20 finishes processing
the centre slice of the first page it delivers the row of error
terms to processor 22.
[0075] At this point processor 18 will have finished processing the
left-hand slice of page 2 and given the error terms for page 2 to
processor 20, which can then start processing the centre slice of
page 2 (allowing processor 18 to start processing page 3).
Processor 20 similarly hands its row of error terms from page 1 to
processor 22, allowing processor 22 to begin processing the
right-hand slice of the first page. Thus processor 18 is one page
ahead of processor 20 which in turn is one page ahead of processor
22, and the 3 processors work in pipeline fashion. Once the
pipeline has been filled up the three processors work in
parallel.
[0076] The following table illustrates the order of processing of
the various slices on successive pages of an n-page print job. In
this table, a timeslot is the length of time required for a
processor to receive the error terms associated with the pixels of
a slice, then to process the slice, and finally to hand over the
error terms from that slice to the next processor (where
applicable). Thus, from timeslot 3 onwards, each of the processors
processes a slice in parallel with the other processors but with
processor 18 leading processors 20 and 22 by 1 and 2 pages
respectively.
1 Processor 18 Processor 20 Processor 22 Timeslot # (Left Hand
Slice) (Centre Slice) (Right Hand Slice) 1 Page 1 Idle Idle 2 Page
2 Page 1 Idle 3 Page 3 Page 2 Page 1 4 Page 4 Page 3 Page 2 5 Page
5 Page 4 Page 3 . . . . . . . . . . . . . . . . . . . . . . . . n -
1 Page n - 1 Page n - 2 Page n - 3 n Page n Page n - 1 Page n - 2 n
+ 1 Idle Page n Page n - 1 n + 2 Idle Idle Page n
[0077] In this way the sophistication of a forward error diffusion
algorithm is utilised whilst reducing the extent to which each
processor is dependent on the results of the others.
[0078] When the halftone data has been generated by the respective
halftoning processors, it is retrieved from the buffers by the
various printhead controllers responsible for generating printing
firing instructions for the pens in that slice (or more
particularly, for the nozzles of the pens in that slice). It can be
seen from FIG. 1 that 44 separate pens are provided to print each
slice of a printed page. In this embodiment, each printhead
controller is capable of generating nozzle firing instructions for
four separate pens. (In this context, a pen is an array of nozzles
provided on a die). There is no reason why a printhead controller
could not be responsible for generating the firing instructions for
a smaller or greater number of pens. This arrangement is scaleable
by replicating the printhead controller/printhead modules. The
scalability can be employed to increase speed, image quality,
printhead redundancy, etc. The ratio of printheads per controller
can be varied, or the width of slice for which a controller is
responsible can be varied.
[0079] FIG. 9 shows the group of pens responsible for printing a
particular slice, and the relationship between these pens and the
printhead controllers. While the physical relationship between the
pens is reasonably accurate, in that the width of the strip being
printed is fully covered by a printbar comprising four pens, and in
that 11 different printbars are provided parallel to one another
(such that any given point on the print medium passes in turn under
each printbar), the disposition of the printhead controllers
relative to the printbars is immaterial, and only the connections
between the controllers and the individual pens are of relevance to
the discussion which follows.
[0080] Each pen is identified by a letter and a numeral. The letter
indicates the colour ink being printed according to the following
code: T=post-printing treatment (this can be of any suitable type);
Y=yellow; M=magenta; C=cyan; K=Black; F=fixer (note that the fixer
is laid down before the inks, and the last printbar to print on the
page is the post-printing treatment T. The numeral indicates the
printhead controller which is responsible for generating the firing
instructions for the nozzles of the pen in question.
[0081] For illustrative purposes, the connections between printhead
controller nos. 1, 2, 9 and 11, and the pens under the control of
these printhead controllers are shown. The other connections have
been omitted for clarity.
[0082] The top printbar 70 (as seen in FIG. 9) is the only printbar
containing pens printing the post-printing treatment (labelled
"T"). All 4 of these pens are commonly controlled by printhead
controller 1. However, each of the other printbars 72, 74, 76, 78,
80, 82, 84, 86, 88, 90 includes pens controlled by at least two
separate printhead controllers. The reason for this is that each of
the other printbars (with the exception of printbar 90) is composed
of pens which are mutually redundant with the pens in another
printbar. For example, the left-most pen of printbar 72 which is
denoted as "Y 2" and the left-most pen of printbar 80 (also "Y 2")
are mutually redundant in that they each print the same ink onto
the same spot on a print medium passing below the array of
printbars. Such mutually redundant pens are all controlled by the
same printhead controller. It's can therefore be seen that
printhead controller 2 controls the two yellow pens Y 2 in each of
the printbars 72 and 80. The yellow pens Y 3 which complete these
two printbars are controlled by a separate printhead controller,
namely printhead controller 3. Printhead controller 2 can therefore
perform the masking and the print element control instructions
generation for the yellow ink in the left half of the strip and
printhead controller 3 performs the same task for the right hand of
the strip. Each printhead controller thus operates on only the
halftone data for the portion of strip for which it is
responsible.
[0083] If each printhead controller stores the halftone data in a
buffer of its own it can be repeatedly accessed to drive different
printheads as different print masks are applied to the data. There
is no need to re-ask a common buffer for halftone data, which
improves the bandwidth of the printing pipeline. In this regard, it
is particularly useful to store in a single buffer the halftone
data commonly required by a number of different printing elements
printing the same ink on the same point on the page (as the page
moves past the respective printing elements. In practice, this is
advantageously achieved by using a common printhead controller for
a number of same colour, same position printheads, and storing the
halftone data for these printheads is a single buffer exclusively
accessed by that controller.
[0084] In the case of the black printbars 78, 82, 88 four separate
printhead controllers (numbers 8, 9, 10 and 11) are required, since
each set of three mutually redundant pens (for example, the pens
labelled "K 9") should preferably be under the control of a single
printhead controller to obtain maximum benefit from the invention.
Since each printhead controller can control four pens, each of
these printhead controllers also controls a fixative pen (F 8, F 9,
F 10, F 11).
[0085] It will be recalled that only a single set of halftone data
is required for all of the printhead controllers shown in FIG. 9.
All of the printhead controllers access the same data in a buffer
and perform their respective tasks on the portion of the data
corresponding to the pens under their control.
[0086] FIG. 10 illustrates how this concept is scalable. When a
page is divided into N slices (N greater than or equal to 1), the
contone data arriving over a PCI bus 91 is divided between a number
of halftone processors 92, 94, 96 (in practice, each halftone
processor will select the data relevant to its slice, or the data
for each slice will be addressed to the relevant halftone
processor).
[0087] Each halftone processor produces a halftone data set and
addresses the packets of halftone data to the printhead controllers
responsible for printing a particular colour on a particular
section of the page wide arrays. The addressed packets travel from
each halftoner 92,94,96 along an associated bus or communications
link 93,95,97 from each of which a number of printhead controllers
98 are connected.
[0088] Each printhead controller 98 has an internal buffer (not
shown) into which the halftone data in the packets are loaded for
processing by a masking processor (not shown). Thus, the page image
is first split into slices and each slice is processed in parallel
and sent out along a bus once. Each printhead controller 98 stores
the data which it requires for the pens under its control. In the
illustrated embodiment, each controller 98 has four pens 100 under
its control. Connected between any printhead controller and each of
its pens is a pen power supply unit 102 (optional) which in
addition to supplying power also performs ink short protection and
provides an interface with the pen circuitry.
[0089] To generate firing signals for each of the four pens, a
printhead controller processor accesses the locally buffered
halftone data and applies a first print mask to generate firing
signals for a first of the pens 100. Next, the data is again
retrieved from the buffer and a second print mask applied for the
second pen. The data is retrieved and processed again and again
until the requisite firing signals have been sent to all of the
pens under the control of the printhead controller, following which
the buffer can be cleared. In order that all of the pens fire their
ink droplets in synchronicity, each pen may have a small buffer for
the firing signals or the printhead controller may have an output
buffer storing the firing signals until these are sent to the pens
to fire the nozzles.
[0090] It can be seen from FIG. 10 that the number of pens used to
print a slice can be scaled up (assuming a limited number of pens
per printhead controller) by dedicating additional printhead
controllers to each slice. Dividing the page into more slices can
increase printing speed.
[0091] If a printhead controller can process a certain amount of
data this can control a wide band of printing area without any
redundancy or the same amount of data can be used to control
printheads covering a narrower band with greater redundancy.
[0092] Many of the concepts described above can also be applied to
a scanning printer. In particular, the set of pens and printhead
controllers shown in FIG. 9 could, in a perpendicular orientation,
be employed in a scanning printer. By mounting the pens on a
scanning carriage, a four pen swath can be printed with the
multiple redundant pens shown as the array of printbars is scanned
back and forth across a print medium (with the medium being
advanced between traverses of the carriage).
[0093] Even without multiple redundant pens, the concepts of the
present invention can be employed in a scanning printer. FIG. 11
shows a schematic architecture for such a printer. A halftoning
processor 110 provides a halftone data set to a bus 111 accessed by
a pair of printhead controllers 112, 114. Bach printhead controller
has four pens under its control as previously described. Shown in
this embodiment is a separate dedicated buffer 113,115 for each
printhead controller.
[0094] Printhead controller 112 controls a first black pen 116, a
cyan pen 118, a magenta pen 120, and a yellow pen 122. This
printhead controller and associated set of pens can be taken from a
simpler four-pen printer. Printhead controller 114 generates
nozzle-firing instructions for a second black pen (which may be of
a different type of ink e.g. pigmented black if the first ink is
dye-based black ink) 124, a light cyan pen 126, a light magenta pen
128, and a fixer pen 130.
[0095] To fire the pens, each controller 112,114 buffers the
halftone data for its colours as previously discussed and then
accesses this data four times in succession applying print masks
for the four colours to output four sets of print element control
instructions (i.e. nozzle firing instructions), one for each
printhead.
[0096] As a variation on this ink choice, one could double up a
normal four colour printer having a tri-colour ink pen and a black
pen to provide two tri-colour pens and two black pens, so that
whether printing in colour mode or monochrome, the printing speed
is doubled.
[0097] As in the page-wide system previously described, the
scanning print engine of FIG. 11 takes advantage of re-using a
single set of halftone data elements in two different print element
controllers.
[0098] The invention is not limited to the embodiments described
herein which may be varied without departing from the spirit of the
invention.
* * * * *