專利名稱:打印引擎/控制器和集成了引擎/控制器的打印頭接口芯片的制作方法
技術領域:
本發明涉及一種適合于與各種打印機產品共同使用的打印引擎/控制器(PEC),尤其涉及一種嵌入在打印頭接口芯片中的打印引擎/控制器。
微電機墨滴可控型打印頭(稱為Memjet打印頭)在與本專利申請同時提交的同類國際專利申請中已有所描述,我們以交叉索引方式把與此有關的同類專利申請總結如下
Memjet打印頭從某些打印頭產品中發展而來,這些打印頭可以在全頁寬范圍內打印1600dpi雙層墨點。墨點之間相對獨立,因此可以充分利用散布的墨點的抖動效果。彩色面能夠非常好地重合,實現理想的重疊點打印效果。這種打印頭支持使用微電機墨滴技術實現高速打印。
與本發明有關的各種方法、系統和裝置在下列同類專利申請中揭示。這些專利申請是本發明的專利申請人或受讓人與本發明同時申請的PCT/AU00/00518, PCT/AU00/00519, PCT/AU00/00520,PCT/AU00/00521, PCT/AU00/00522, PCT/AU00/00523,PCT/AU00/00524, PCT/AU00/00525, PCT/AU00/00526,PCT/AU00/00527, PCT/AU00/00528, PCT/AU00/00529,PCT/AU00/00530, PCT/AU00/00531, PCT/AU00/00532,PCT/AU00/00533, PCT/AU00/00534, PCT/AU00/00535,PCT/AU00/00536, PCT/AU00/00537, PCT/AU00/00538,PCT/AU00/00539, PCT/AU00/00540, PCT/AU00/00541,PCT/AU00/00542, PCT/AU00/00543, PCT/AU00/00544,PCT/AU00/00545, PCT/AU00/00547, PCT/AU00/00546,PCT/AU00/00554, PCT/AU00/00556, PCT/AU00/00557,PCT/AU00/00558, PCT/AU00/00559, PCT/AU00/00560,PCT/AU00/00561, PCT/AU00/00562, PCT/AU00/00563,PCT/AU00/00564, PCT/AU00/00565, PCT/AU00/00566,PCT/AU00/00567, PCT/AU00/00568, PCT/AU00/00569,PCT/AU00/00570, PCT/AU00/00571, PCT/AU00/00572,PCT/AU00/00573, PCT/AU00/00574, PCT/AU00/00575,PCT/AU00/00576, PCT/AU00/00577, PCT/AU00/00578,PCT/AU00/00579, PCT/AU00/00581, PCT/AU00/00580,PCT/AU00/00582, PCT/AU00/00587, PCT/AU00/00588,PCT/AU00/00589, PCT/AU00/00583, PCT/AU00/00593,PCT/AU00/00590, PCT/AU00/00591, PCT/AU00/00592,PCT/AU00/00584, PCT/AU00/00585, PCT/AU00/00586,PCT/AU00/00594, PCT/AU00/00595, PCT/AU00/00596,PCT/AU00/00597, PCT/AU00/00598, PCT/AU00/00517,PCT/AU00/00511, PCT/AU00/00501, PCT/AU00/00502,PCT/AU00/00503, PCT/AU00/00504, PCT/AU00/00505,PCT/AU00/00506, PCT/AU00/00507, PCT/AU00/00508,PCT/AU00/00509, PCT/AU00/00510, PCT/AU00/00512,PCT/AU00/00513, PCT/AU00/00514, PCT/AU00/00515,上述同類專利申請可作為相互參考。
上述打印頭的性能由其引擎/控制器決定。高速打印是打印頭和其引擎/控制器共同作用的結果。采用上述技術的頁寬打印頭需要能夠快速提供墨滴控制信號的引擎/控制器。典型的頁面版面可以包含混排的圖像、圖形和正文。由于上述微電機打印頭的頁寬特點,每一頁都能以恒定的速度打印,從而避免產生可見的瑕疵。這意味著不需要改變打印速度來匹配輸入數據速率。但是,這種打印方式需要把文檔光柵化和文檔打印分離開來,也就是說,為了保證以恒定速率向打印頭提供數據,必須首先把頁面內容完全光柵化,然后才能進行打印。理想情況下,在光柵化簡單頁面時,光柵化速度應該超過打印機的打印速度,以便留出時間對比較復雜的頁面進行光柵化。而引擎/控制器的性能決定了光柵化工作的性能。
打印速度的提高同時取決于打印頭和其引擎/控制器的性能的提高。打印引擎/控制器的體系結構必須能夠以較高的速度為打印頭提供大量數據。
打印引擎/控制器為產生頁面提供最終步驟,頁面從計算機或打印分發系統提供的適當格式的壓縮頁面數據產生。上述步驟包括擴大頁面圖形,抖動連續色調層,把黑色層合成到連續色調層上,向紅外層增加紅外標記,以及向打印頭發送所得到的頁面內容。
打印引擎/控制器最好使用高速串行接口接收壓縮頁面數據。連續色調圖像平面由JPEG解碼器解碼,并在頁邊單元的控制下在半色調器/合成器中縮放。一個Group4傳真解碼器對雙水平圖像平面進行解碼,雙水平圖像平面也在頁邊單元的控制下在半色調器/合成器中縮放。還可以使用一個紅外標記編碼器產生紅外圖像平面,然后把紅外墨水打印標記加入到打印頁面中。半色調器/合成器帶有一個抖動顯示陣存取單元,它從壓縮頁面數據中提供抖動數據以抖動連續色調圖像平面。
本發明還包括一個與墨滴打印頭接口的打印/控制器芯片,該墨滴打印頭通過其接口接收壓縮頁面數據;一個連續色調圖像解碼器,該解碼器對所接收的壓縮頁面數據中的連續色調圖像平面進行解碼;一個雙水平解碼器,該解碼器對接收的壓縮頁面數據中的雙水平圖像平面進行解碼并抖動數據;一個半色調器/合成器,該半色調器/合成器把雙水平圖像平面合成到連續色調圖像平面上;以及一個打印頭驅動器,該驅動器向打印頭輸出合成圖像數據。
·K,用于黑色文本和其它黑色內容的打印。
·IR(紅外),用于支持標記的應用。
·F(固定劑),支持高速打印。
由于本發明所述的打印機支持高速打印,所以應使用固定劑進行高速打印,使下一頁打印完成前本頁上的墨水能夠完全干燥,否則頁面之間可能發生蹭色現象。在較低速度的打印環境中,不需要使用固定劑。
打印引擎/控制器可以制造在一個芯片中,并與打印頭相連。該芯片應具有4個基本功能通過串行接口(例如IEEE1394)接收壓縮頁面內容。
提供一個從壓縮格式產生頁面的打印引擎。該打印引擎的功能包括放大頁面圖像、抖動連續色調層、把黑色層合成到連續色調層上、增加紅外標記(可選)、以及向打印頭發送所得圖像。
一個用于控制打印頭和步進電機的打印控制器。
兩個標準的低速串行口,用于與兩個QA芯片通信。需要注意的是,在驗證過程中,為了保證較大的安全性,必須使用兩個端口,而不是一個端口。
圖1所示為從計算機系統向打印頁面發送文檔的數據流。文檔在11處被接收,然后被裝入到存儲緩沖器12中,在緩沖區12中,可以生成頁面布局,同時還可以增加一些所需的對象。從存儲緩沖器12中送出的頁面在13處被光柵化,在14處被壓縮,然后被傳送給打印機引擎控制器10。打印機引擎控制器10接收壓縮的頁面圖像,把壓縮的頁面圖像存儲到緩沖器15中,然后壓縮的頁面圖像被送入到頁面擴展器16中,并在頁面擴展器中被還原為非壓縮格式。在17處,可以進行任何必要的抖動處理。在18處,可以把黑色雙水平層復合到連續色調層上,在19處還可以加入紅外標記。在20處,合成后的頁面數據被打印出來,形成頁面21。
打印引擎/控制器接收壓縮頁面圖像,對頁面進行擴展,然后以管道方式打印頁面內容。頁面擴展和打印最好采用管道方式,因為不可能在內存中存儲可變大小的雙水平CMYK+IR頁面圖像。
管道打印的第一個階段擴展JPEG格式壓縮的連續色調CMYK層(見下文的說明),擴展一個Group4傳真格式壓縮的雙水平抖動顯示陣選擇圖(見下文的說明),并且擴展一個Group4傳真格式壓縮的雙水平黑色層(見下文的說明),所有擴展工作都以并行方式進行,同時,標記編碼器對壓縮的頁面圖像編碼雙層IR標記數據。第二個階段使用由抖動顯示陣選擇圖選擇的抖動顯示陣抖動連續色調CMYK層。如果需要C、M、Y、K、或IR通道,那么在每個點的位置上還會產生一個固定劑層。最后一個階段通過打印頭和打印頭接口(見下文的說明)打印雙水平CMYK+IR數據。
圖2所示為打印引擎/控制器10與總體打印機系統體系的關系。打印機系統可能包含的部件有·一個打印引擎/控制器(PEC)一個PEC芯片10或芯片集負責接收壓縮的頁面數據,并把數據存儲到存儲緩沖器24中,執行頁面擴展、黑色層復合,并把點數據發送給打印頭23。PEC芯片10或芯片集還可以與QA芯片25,26通信,從而提供一種獲得打印頭特性數據的方法,以保證最佳打印效果。PEC是本發明的主體。
·一個存儲緩沖器存儲緩沖器24用于存儲壓縮的頁面圖像,并且在打印特定頁面的過程中存儲臨時數據。存儲緩沖器的構造和原理是習知技術,在使用本發明的PEC時,可以利用相關的各種標準的芯片和技術。
·一個主QA芯片主芯片25與可更換墨盒QA芯片26配合使用。QA單元的構造和原理是一種習知技術,在使用本發明的PEC時,可以利用相關的各種現有QA過程。例如,在我們的同類美國專利申請中描述了一種QA芯片
QA芯片通信功能最好包含在PEC芯片的總體功能中,因為它在圖像擴展和驅動物理打印頭方面有一定的作用。通過嵌入QA芯片的通信功能,可以保證打印頁面時不會發生卻墨現象。另外,還可以使用一個鑒權芯片把QA嵌入到打印頭組件中。由于它是主QA芯片,所以只包含鑒權密鑰,不包含用戶數據。但是,該該芯片必須與墨盒的QA芯片匹配。墨盒中的QA芯片儲存保證最佳打印質量所需的信息,它是一個鑒權芯片。優選的是使用64M位(8MB)存儲緩沖器存儲壓縮頁面圖像。這樣,當向緩沖區中寫入一個頁面時,可以同時從緩沖區中讀取另一個頁面(雙緩沖)。另外,在打印頁面時,PEC使用內存來緩沖計算得到的點信息。在打印第N個頁面時,緩沖區用于·讀取壓縮頁面N·讀取和寫入頁面N的雙水平點信息·寫入壓縮頁面N+1優選的是PEC芯片帶有一個簡單的微處理器CPU核心35以執行下列功能·在打印頁面過程中,通過串行接口36執行的QA芯片鑒權協議·在打印頁面過程中,通過并行接口91驅動步進電機(步進電機需要5KHz的處理頻率)·在打印過程中同步PEC芯片的各部分·提供與外部數據請求(編程寄存器等)的一種接口方法·提供與打印頭段低速數據請求(例如讀取向量屬性和寫入脈沖參數)的一種接口方法·提供向外部DRAM寫入橫向和縱向打印標記的一種方法由于所有圖像處理工作都由專用的硬件執行,所以上述CPU不需要處理像素。因此,CPU可以非常簡單。多種現有的CPU核心都可以勝任上述工作任何一種具有足夠處理能力執行所需計算和控制功能的處理器核心都可以使用。例如一個速度為1MHz的Philips 8051微控制器。可以為CPU核心35配備一個程序ROM和一個小的程序RAM。CPU通過內存映射I/O與PEC芯片內的其它單元通信。可以把特定的地址范圍與特定的單元映射,在每個地址范圍內,可以把特定地址與相應單元的特定寄存器映射,其中包括串口36和并口91。在PEC芯片中可以集成一個比較小的程序閃存ROM,其大小取決于所選的CPU,但是不能超過8KB。同樣,可以在PEC芯片中集成一個小的RAM區。由于程序代碼不需要控制圖像,所以不需要很大的RAM。RAM的大小與所選的CPU有關(例如堆棧機制、子程序調用規定、寄存器大小等),但是不能超過2KB。
使用上述基于引用段的頁寬打印頭的PEC芯片可以在全點陣分辨率(通常為1600dpi)下再生黑色,但是需要使用半色調處理以較低的分辨率再生連續色調顏色。因此,頁面描述被分為黑色雙水平層和連續色調層。黑色雙水平層用于復合到連續色調層上。黑色雙水平層由包含1位暗度/像素的位圖構成。黑色層蒙罩的分辨率是打印機的全點分辨率的一個整數因子。它所支持的最高分辨率是1600dpi,即打印機的全點分辨率。連續色調層由包含32位CMYK顏色/像素的一個位圖構成,其中的K是可選的。這種連續色調圖像的分辨率是打印機的點分辨率的一個整數因子。對于單個PEC來說,它所支持的最高分辨率是320ppi/12英寸,即打印機的點分辨率的1/5。對于更高的連續色調分辨率,需要使用多個PEC,其中的每個PEC產生輸出頁面的一條。為了簡化RIP中的計算,連續色調分辨率通常還是黑色雙水平分辨率的一個整數因子。但是,這不是一種強制要求。為了實現在打印機的內存中的高效存儲,黑色雙水平層和連續色調層都為壓縮形式。
圖3所示為打印機引擎的體系結構。打印機引擎的頁面擴展和打印管道由一個高速串行接口27(例如標準的IEEE1394接口)、一個標準的JPEG解碼器28、一個標準的Group4傳真解碼器、一個定制的半色調器/合成器單元29、一個定制的標記編碼器30、一個行裝載器/格式器單元31、以及一個連接打印頭33的定制接口32構成。解碼器28,88和編碼器30向半色調器/合成器單元29緩沖。標記編碼器30根據協議向頁面增加頁面標記,協議與頁面的使用有關。討論標記的內容已經超出了本打印引擎以雙緩沖方式工作。一個頁面從高速串行接口27通過DRAM接口89和數據總線90被裝載到DRAM34中,同時裝載的前一個頁面被從DRAM34讀出,并被通過打印引擎管道傳送。當完成頁面的打印時,剛剛裝入的頁面成為被打印頁面,同時通過高速串行接口27向DRAM34裝入一個新頁面。在第一個階段,管道擴展所有JPEG壓縮的連續色調(CMYK)層,并擴展所有兩個Group4傳真壓縮的雙水平數據流。上述兩個數據流是一個黑色層(當然,PEC不知道是否為彩色,而且該雙水平層可以定向到任何輸出墨水)以及一個蒙罩(該蒙罩用于為連續色調的抖動選擇抖動點陣,見下文的說明)。在第二個階段,上述數據被并行地加入標記,以便隨后以紅外(IR)或黑色墨水渲染。最后,在第三個階段中,對連續色調層進行抖動處理,并把位置標記和雙水平點層復合到抖動后的雙水平層上。然后,數據流被很好地調整,以便在打印頭中的重合段之間產生平滑的漸變效果,同時補償打印頭中的被堵噴嘴。在此階段最多可以生成6個通道的雙水平數據。但是需要注意,并不是全部6個通道都出現在打印頭上。例如,打印頭可能只是CMY的,此時K被推入CMY通道,而IR被忽略。另外,如果沒有IR墨水(或者出于測試目的),位置標記也可以被打印到K中。所得到的雙水平CMYK-IR點數據被緩沖并格式化,然后被通過一套行緩沖器(見下文的說明)輸出到打印頭上。大多數行緩沖器可以在芯片DRAM34中實現。在最后一個階段中,通過打印頭接口32打印上述6個通道的雙水平點數據。
在使用PEC的打印系統中通常采用壓縮處理。這是為了降低主機和PEC之間的帶寬要求以及降低頁面存儲的內存要求。在267ppi分辨率下,連續色調CMYK數據的一個信封頁面的數據量為25MB。使用有損連續色調壓縮算法(例如JPEG,見下文的說明),連續色調圖像的壓縮比可達到10∶1,同時不會對打印質量產生明顯影響,因此,壓縮后的頁面大小為2.5MB。在800dpi分辨率下,雙水平數據的一個信封頁面的數據量為7MB(壓縮后)。連貫的數據(例如文本)的壓縮效果很好。使用無損雙水平壓縮算法(例如Group4傳真,見下文的說明),10點文本內容的壓縮比可達到10∶1以上,因此上述信封頁面的壓縮數據量為0.8MB。經過抖動后,一個CMYK連續色調圖像頁面的數據為114MMB雙水平數據。下文中所述的雙層壓縮頁面圖像格式綜合利用了有損JPEG連續色調圖像壓縮算法和無損雙水平文本壓縮算法的各自優點。經過壓縮處理后,數據的格式已非常緊湊,實現了高效存儲,同時保持了簡單性,從而可以在打印過程中直接地、實時地擴展。由于文本和圖像通常不重疊,所以在正常的最壞情況下,頁面圖像數據為2.5MB(即,完全為圖像),而在最佳情況下,頁面圖像數據只有0.8MB(即,完全為文本)。在極端最壞情況下,頁面圖像數據為3.3MB(即,文本在圖像之上)。假設圖像占1/4頁面,則頁面圖像數據為1.2MB。
對于通過慢速線路或噪音較高的電話線路傳輸無損壓縮雙水平數據的情況,可以使用Group3傳真壓縮算法(見ANSI/EIA 538-1988,Group4傳真設備的傳真編碼方案和編碼控制功能,1988年8月)。雙水平數據代表在白色背景上掃描的黑色文本和圖形。而且,上述算法還針對此類圖像進行了優化(但是對于半色調雙水平圖像沒有進行優化)。1DGroup3算法以掃描寬度編碼方法對每個掃描行進行編碼,然后采用霍夫曼編碼方法對所得到的掃描寬度編碼。范圍在0到63之間的掃描寬度使用終止編碼處理;范圍在64到2623之間的掃描寬度使用標記編碼處理。每個標記編碼為64的整數倍,后跟一個終止碼。超過2623的掃描寬度使用多標記編碼處理,后跟一個終止碼。霍夫曼表是固定的,但是針對黑色和白色掃描分別進行了優化(但超過1728的標記編碼除外,它們是通用的)。在可能的情況下,2D Group3算法把一個掃描行作為一系列相對于前一個掃描行的短邊偏移(delta)(0,±1、±2、±3)編碼。delta符號是統一編碼的(因此0偏移符號只占一位)。2D編碼行中無法采用delta編碼的邊以掃描寬度編碼處理,并加一個1D-前綴。而以2D編碼的掃描行采用不同的方法標記。不管需要與否,1D編碼的掃描行都以正常間隔產生,以便保證解碼器可以從行噪中恢復數據,同時盡可能不損失圖像質量。2D Group3通常可以實現6∶1的壓縮比(見Urban,S.J.,“傳真系統的電子成像標準回顧”,電子成像雜志,1992年1月,Vol.1(1),第5-21頁)。
對于通過無錯通信線路(即,線路可實現真正無錯傳輸,或者在較低的協議層進行糾錯)傳輸數據的情況,Group4傳真算法(見ANSI/EIA538-1988,Group4傳真設備的傳真編碼方案和編碼控制功能,1988年8月)可以無損壓縮雙水平數據。Group4算法以2D Group3算法為基礎,其主要修改是由于傳輸是無錯的,所以不需要再為糾錯而每隔一定間隔產生1D編碼行。對于CCITT測試圖像,Group4算法的壓縮比在20∶1到60∶1之間。Group4壓縮算法的設計目標和性能使其成為雙水平層的一種理想壓縮算法。但是,其霍夫曼表針對較低的掃描分辨率(100-400dpi)進行了優化,而且它會拙劣地編碼超過2623的掃描寬度。在800dpi分辨率下,我們的最大掃描寬度是6400。雖然Group4解碼器核心可以在PEC中使用,它可能無法處理超過正常的400dpi傳真應用中的掃描寬度,所以需要進行適當的修改。使用G4傳真對黑色層(通常為1600dpi)進行無損壓縮的壓縮比為10∶1以上。使用G4傳真對抖動顯示陣選擇層(通常為320dpi,與連續色調彩色層相配)進行無損壓縮的壓縮比為50∶1以上。
Group4(G4)傳真解碼器反而則對雙水平數據進行解壓縮。雙水平數據被限制為單點顏色(通常黑色用于文本和線圖像),抖動顯示陣選擇位圖用于對連續色調數據(由JPEG解碼器解壓縮)進行后續抖動。輸入G4傳真解碼器的數據是從外部DRAM讀取的2個平面的雙水平數據。由G4傳真解碼器輸出的數據是2個平面的解壓縮雙水平數據。解壓縮后的雙水平數據被送到半色調器/合成器單元(HCU)進行打印管道中的下一個階段的處理。兩個雙水平數據緩沖器用于在G4傳真解碼器和HCU之間傳送雙水平數據。每個解壓縮的雙水平層被輸出到兩個行緩沖器中。每個緩沖器可以儲存一個最大分辨率的12英寸整點行。采用兩個行緩沖器的好處是,當HCU讀取一行數據時,G4傳真解碼器可以寫另一行數據。這種能力是非常重要的,因為單個雙水平行通常低于1600dpi,所以必須在點和行方向上同時擴展。如果緩沖低于一個整行,那么G4傳真解碼器就必須對同一行多次解碼——每次用于輸出一個600dpi點行。
點顏色1能夠使輸出圖像的單個彩色平面具有高分辨率的點數據。雖然連續色調層為圖像提供的足夠的分辨率,但是點顏色1更適用于文本和線圖形(通常為黑色)的應用。當點顏色用于文本和線圖形時,壓縮比通常可以超過10∶1。點顏色1支持的最高分辨率為1600dpi。因此,每個行緩沖器的數據為2400B(12英寸×1600dpi=19200位)。
抖動顯示陣選擇圖的分辨率應該較好地匹配連續色調分辨率。所以每個行緩沖器的數據是480B(3840位),可以存儲320dpi的12英寸點行。當抖動顯示陣選擇圖與連續色調的分辨率匹配時,壓縮比一般可以超過50∶1。
為了支持下列功能·800dpi點顏色1層(通常為黑色)·320dpi抖動顯示陣選擇層為了實現1頁/秒的打印速度(頁寬可以是12英寸或8.5英寸),壓縮帶寬應為9.05MB/秒,在最高打印速度時(30000行/秒),對于12英寸頁面寬度和8.5英寸頁面寬度,所需的壓縮帶寬分別為20MB/秒和14.2MB/秒。當解壓縮數據被輸出到行緩沖器中時,G4傳真解碼器可以快速地、同時地從每個輸出中解壓縮出行數據。
G4傳真解碼器通過DRAM接口直接從內存中接收數據。壓縮量決定了與外部DRAM之間的帶寬要求。由于G4傳真是無損壓縮的,所以圖像的復雜程度影響數據量和帶寬。通常一個800dpi黑色文本/圖形層的壓縮比超過10∶1,所以1頁/秒的打印速度需要0.78MB/秒的帶寬。同樣,通常一個320dpi抖動選擇陣的壓縮比在50∶1以上,所以1頁/秒的打印速度需要0.025MB/秒的帶寬。對與最快打印速度,320dpi抖動選擇陣和800dpi點顏色1所需的帶寬分別為1.72MB/秒和0.056MB/秒。因此,2MB/秒的總帶寬完全可以滿足DRAM的帶寬要求。
G4傳真解碼功能通過G4傳真解碼器核心實現。可以使用各種G4傳真解碼器核心只要這種G4傳真解碼器核心的處理速度足以執行所需的計算和控制功能。G4傳真解碼器核心必須能夠處理在超過400dpi分辨率的傳真應用中的掃描寬度,因此可能需要進行一些修改。
JPEG壓縮算法(見ISO/IEC 19018-11994,信息技術——連續色調靜態圖像的數字壓縮和編碼要求與原則,1994)在特定質量等級上對連續色調圖形進行有損壓縮。在壓縮比低于5∶1時,JPEG算法不會給圖像質量帶來可見影響。在壓縮比低于10∶1時,圖像質量的下降可以忽略(見Wallace,G.K.,“JPEG靜態圖形壓縮標準”,ACM通信,Vol.34,No.4,1991年4月,33-44)。JPEG通常首先把圖像轉化為一個顏色空間,該顏色空間把亮度和色度分離為獨立的顏色通道。這樣,色度通道可以被二次取樣,同時不會使圖像質量降低很多,因為人類視覺系統對亮度的敏感性要比對色度的敏感性強得多。經過第一步后,對每個顏色通道獨立壓縮,把圖像分解為8×8的像素塊。然后,通過離散余弦變換(DCT)把每個像素塊變換為頻域。這種變換相對較低的頻率因子中的圖像能量集中,從而較高頻率因子能夠自然地量化。這種量化是JPEG中的主要壓縮源。下一步,根據頻率排列因子,盡可能使零因子相鄰,然后以掃描寬度編碼處理零因子,從而實現進一步壓縮。最終,對掃描寬度和非零頻率因子進行統一編碼。解壓縮是壓縮的反過程。
CMYK(或CMY)連續色調層被壓縮為一個平面顏色JPEG字節流。如果出于表共享或色度二次取樣的目的需要進行亮度/色度分離,那么CMYK將被轉化為YCrCb和Cr,而Cb被適當地二次取樣。JPEG字節流是完整的、自包容的。它包含解壓縮所需的全部數據,包括量化和霍夫曼表。
JPEG解碼器負責對連續色調數據層進行實時解壓縮。向JPEG解碼器輸入的數據最多可以是4個平面的連續色調數據。輸入數據通常可以是3個平面,代表CMY連續色調圖像,也可以是4個平面,代表CMYK連續色調圖像。雖然一般情況下所有彩色平面的分辨率是相同的,但是每個彩色平面的分辨率也可以不同。連續色調層從外部DRAM讀取。JPEG解碼器的輸出是解壓縮的連續色調數據,這些連續色調數據在獨立的彩色平面中。解壓縮后的連續色調圖像被送到半色調器/合成器單元(HCU)29,進行打印管道的下一個階段的處理。4個平面連續色調緩沖器用于在JPEG解碼器和HCU29之間傳送連續色調數據。
解壓縮后的連續色調數據的每個彩色平面被輸出到一套雙行緩沖器(見下文的說明)中,每個行緩沖器的容量為3840B,因此可以存儲12英寸寬的320ppi分辨率的單個彩色平面的像素。行緩沖的目的,當HCU從一個行緩沖器中讀數據時,JPEG解碼器可以向另一個行緩沖器寫數據。這種能力是非常重要的,因為單個連續色調行通常低于1600dpi,所以必須在點和行方向上同時擴展。如果緩沖低于一個整行,那么JPEG解碼器就必須對同一行多次解碼——每次用于輸出一個600dpi點行。雖然JPEG支持多種分辨率,但是必須在分辨率和可用帶寬之間進行權衡。當分辨率和顏色數增加時,帶寬要求也隨之增加。另外,PEC芯片的目的段的數量也會影響帶寬和分辨率。注意,由于連續色調圖像被以平面格式處理,所以每個彩色平面可以采用不同的分辨率存儲(例如,CMY平面的分辨率可以高于K平面的分辨率)。所支持的最高連續色調分辨率是1600dpi(與打印機的全點分辨率匹配)。但是,輸出行緩沖器的容量只能儲存12英寸320ppi的連續色調像素。如果需要以更高連續色調分辨率輸出完整的12英寸寬度,那么需要使用多個PEC,但是需要注意的是,打印機上的最終輸出仍是雙水平數據。如果支持320ppi的4種顏色,對于1頁/秒的打印速度(頁寬可以是12英寸或8.5英寸),解壓縮后的輸出帶寬應為40MB/秒;對于最高的打印機速度性能(30000行/秒),12英寸和8.5英寸頁寬所要求的解壓縮輸出帶寬分別為88MB/秒和64MB/秒。
JPEG解碼器通過DRAM接口直接從主內存接收數據。壓縮量決定了與外DRAM進行數據傳輸的帶寬要求。當壓縮水平提高時,帶寬會相應降低,但是最終的輸出圖像的質量也同時降低。單個彩色平面的DRAM帶寬可以通過壓縮帶寬×壓縮比的方式快速得出。例如,為了實現1頁/秒的打印速度,壓縮比為10∶1的320ppi的單個彩色平面所要求與DRAM通信的帶寬為1MB/秒。
JPEG的功能由一個JPEG核心實現。有多種JPEG核心可用只要它具有足夠的處理能力來執行所需的計算和控制功能。例如,BTGX-March核心的解壓縮速度最高可達140MB/秒,對于最高的打印機速度(1600dpi,30000行/秒),它可以對4個400ppi的連續色調彩色平面同時解壓縮;對于1頁/秒的打印機速度,它可以對4個800ppi的連續色調彩色平面同時解壓縮。需要注意的是,上述JPEG核心只需要支持解壓縮功能,因此,降低了對通用型JPEG壓縮/解壓縮核心的要求。由于解壓縮數據被輸出到行緩沖器中,所以JPEG解碼器可以一次快速解壓一個彩色平面的一整行,消除了在上下文中的行處理中的切換工作,同時簡化了JPEG解碼器的控制。此時,必須維護4個上下文(每個彩色平面使用一個上下文),每個上下文包含外部DRAM的當前地址以及適當的JPEG解碼參數。
圖4中顯示的半色調器/合成器單元(HCU)29把半色調和連續色調(通常是CMYK)層合并為一個雙水平層,并把Spot1雙水平層復合到適當的半色調連續色調層上。如果打印機中沒有K墨水,那么HCU29可以把K適當地映射為CMY點。它還根據抖動顯示陣選擇圖中的相應數值逐點選擇抖動顯示陣。HCU29的輸入是(從JPEG解碼器單元)通過緩沖器37輸入的一個擴展的連續色調調層,通過緩沖器38輸入的一個擴展的雙水平Spot 1層,通過緩沖器39輸入的一個擴展的抖動顯示陣選擇位圖(通常與連續色調層的分辨率一樣),以及通過緩沖器40輸入的全點分辨率的標記數據。HCU29最多可以使用從外部DRAM34讀取的兩個抖動顯示陣。由HCU29向行裝載器/格式器單元(LLFU)41的輸出是一套打印機分辨率雙水平圖像行,最多可以達到6個彩色平面。連續色調層一般是CMYK或CMY,而雙水平Spot1層是K。
圖5中更詳細地描述了HCU單元。在啟動后,HCU不斷運行,直到檢測到一個頁面結束條件或通過其控制寄存器被明確停止。HCU的第一個任務是把從緩沖器平面(例如42)中接收并存儲到各個比例單元(例如比例單元43)中的數據在水平和垂直方向上同時縮放為打印機的分辨率。
比例單元提供了在水平和垂直方向上把連續色調數據或雙水平數據縮放為打印機分辨率的一種方法。縮放是通過把上述兩個方向上的數據值復制為該值的整數倍而實現的。縮放數據的處理過程是本領域的技術人員所熟知的。
頁邊單元57向比例單元43提供兩個控制位前進點和前進行。前進點位允許狀態機為同一個點數據生成多個實例(用于頁邊和為打印頭中的重疊段創建點數據)。前進行位允許狀態機控制特定點行的結束時間,從而根據打印機的頁邊;截斷數據。它還使比例單元不必執行特殊的行結束邏輯。比例單元的輸入數據是一個整行緩沖器。該行被重復使用比例因子次,以便通過行復制實現垂直方向的縮放,在每一行中,每個值被重復使用比例因子次,以便通過像素復制實現水平方向的縮放。當輸入行被重復使用比例因子次時(前進行位已經被設置為比例因子次),地址的輸入緩存選擇位被切換(雙緩沖)。縮放單元的邏輯對于8位和1位的情況都是相同的,因為比例單元只產生地址。
由于每個連續色調層可以使用不同的分辨率,所以每個連續色調層被單獨縮放。緩沖器45中的雙水平Spot1層和緩沖器46中的抖動顯示陣選擇層也需要縮放。由于緩沖器47中的雙水平標記數據是以正確的分辨率建立的,所以不需要縮放。縮放后的抖動顯示陣選擇位被抖動顯示陣存取單元48用于從兩個抖動顯示陣中選擇一個8位值。該8位值被輸出到4個比較器中44,和49-51,在這些比較器中,它們與特定的8位連續色調值相比較。實際抖動顯示陣的產生與打印頭的結構有關,而產生抖動顯示陣的過程是一種習知技術。如果連續色調值大于或等于上述8位抖動矩陣值,那么就輸出1,否則輸出0。在52-56中,這些位與從頁邊單元57而來的inPage位(指示特定點是否在頁面的可打印區域內)進行“與(AND)”操作。HCU中的最后一個步驟是合成步驟。對于6個輸出層中的每一層,都有一個單點合并單元(例如單元58),每個單點合并單元使用6個輸入值。每個點合并單元的輸出位是上述輸入位的合并值。這樣,點顏色就能夠被放入到任何輸出彩色平面中(包括用于測試的紅外彩色平面),黑色被合并到青色中、洋紅色和紅色(CMY)中(如果打印頭中沒有黑色墨水),而標記點數據被放入到一個可見平面中。定色劑顏色層也可以立即生成。點再生單元(DRU)59負責把為特定顏色層產生的點流組織到32位數值中,這樣,輸出內容被按段排列,而在每一段中,輸出內容被按點排列。由于疊加段的點不是以段順序生成的,所以還需要進行稍許調整。
頁邊單元57向比例單元43提供兩個控制位前進點和前進行。前進點位允許狀態機為同一個點數據生成多個實例(用于頁邊和為打印頭中的重疊段創建點數據)。前進行位允許狀態機控制特定點行的結束時間,從而根據打印機的頁邊;截斷數據。它還使比例單元不必執行特殊的行結束邏輯。
比較器單元帶有一個簡單的8位“大于或等于”比較器。該比較器用于確定8位連續色調值是否大于或等于8位抖動顯示陣值。因此,比較器單元使用兩個8位輸入,并產生一個1位長度的輸出。
圖6更詳細地描述了點合并單元。點合并單元提供了一種把雙水平抖動數據、Spot 1顏色以及標記數據與實際打印頭的輸出墨水映射的方法。每個點合并單元使用6個1位輸入,產生一個1位長度的輸出,該輸出值代表彩色平面的輸出點。在60處的輸出位是輸入位的合并值。這樣,點顏色可以被放入到任何輸出彩色平面中(包括用于測試的紅外彩色平面),黑色被合并到青色中、洋紅色和紅色(CMY)中(如果打印頭中沒有黑色墨水),而標記點數據被放入到一個可見平面中。定色劑顏色層可以通過簡單地合并所有輸入位生成。點合并器包含一個6位ColorMask寄存器61,該寄存器中的值作為6個輸出位的掩碼。每個輸出位與相應的ColorMask寄存器位進行“與(AND)”操作,然后,把所得到的6位進行“或(OR)”操作,形成最終的輸出位。
圖7描述了點再生單元(DRU),該單元負責為特定彩色平面把生成的位流組織到為32位數值中,這樣,輸出內容被按段排列,而在每一段中,輸出內容被按點排列。由于疊加段的點不是以段順序生成的,所以還需要進行稍許調整。DRU帶有一個32位移位寄存器,一個普通的32位寄存器、以及一個普通的16位寄存器。一個5位計數器跟蹤所處理的位數。抖動顯示陣存取單元(DMAU)發出的點前進信號被用于指令DRU輸出具體位值。
圖7中的寄存器(A)62每個周期移位一次。它包含32個由點合成器單元(DMU)最近產生的點。每過32個周期,寄存器(A)62中的全部32位值被復制到寄存器(B)63中,復制動作由DRU狀態機64通過一個簡單的5位計數器產生的WriteEnable信號觸發。在WriteEnable脈沖的同時,寄存器(B)63中的16位奇位(1,3,5,7等)被復制到寄存器(C)65中。然后,一個32位多路器根據狀態機中的2位在下列3個輸出中作出選擇·寄存器B中的全部32位·由寄存器A中的16個偶數位(0,2,4,6等)和寄存器B中的16個偶數位構成的一個32位值。寄存器A的16個偶數位構成該32位值的0-15位,而寄存器B中的16個偶數位構成該32位值的16-31位。
由寄存器B中的16個奇數位(1,3,5,7等)和寄存器C中的16位構成的一個32位數值。寄存器C中的位構成該32位值的0-15位,而寄存器B中的16個奇數位構成該32位值的16-31位。
DRU的狀態機如表1所示。狀態機的起始狀態為0,每隔32個周期改變狀態。在一個32周期過程中,一個noOverlap位為該32周期累計所有dot advance位的“與(AND)”值(周期0的noOverlap=dot advance,周期1-31的noOverlap=noOverlap AND dot advance)。表1.DRU的狀態機
圖5中的頁邊單元(MU)57負責根據當前頁的頁邊距把從抖動顯示陣存取單元(DMAU)獲得的前進點和前進行信號轉化為一般控制信號。它還負責生成end of page條件。MU的計數器保存著當前頁的點和行的數值。在一頁開始時,這兩個值都為0。每次當MU從DMAU接收一個dot advance信號時,點計數器加1。當MU從DMAU接收到line advance信號時,行計數器加1,而點計數器被置0。在每個周期內,把當前行和點值與頁邊值進行比較,然后根據這些頁邊值輸出dot advance、lineadvance,和within margin信號。DMAU只包含HCU的實際存儲要求。
圖8所示為行裝載器/格式器單元(LLFU)。LLFU從HCU接收點信息,為特定的打印行把點裝載到適當的緩沖器中(某些在芯片中,某些在外部DRAM34中),并把這些點數據格式化為打印頭所需的順序。圖9為一個LLFU的外部接口的高級模塊圖。向LLFU的輸入67是一套32位字和一個DataValid位,這些數據都由HCU產生。輸出68是一套90位的值,代表6種顏色的15個打印頭段的最大值。并不是所有輸出位都有效,這與打印頭中實際使用的顏色數有關。
本文中所述的打印頭的噴嘴部分由兩排噴嘴構成,也就是說,同一種顏色的奇數和偶數點在不同的行上打印,偶數點用于行L,而奇數點用于行L-2。另外,在一個顏色的點與另一種顏色的點之間有若干行。因為HCU同時計算相同點位置的6個彩色平面,所以必須為每個彩色平面延遲點數據,直到同一個點定位到相應的彩色噴嘴上。
每個緩沖行的大小取決于打印頭的寬度。由于每個PEC為多達15個打印頭段產生點數據,所以單個奇數緩沖行或偶數緩沖行由15套640點組成,總數據量為9600位(1200B)。例如,color 6奇數點所需的緩沖器為45KB。
所有必要的緩沖器最好內建在PEC芯片中。否則,colors 2以上的緩沖器應存儲在外部DRAM芯片中。這樣,即使將來彩色平面之間的距離發生變化,PEC仍然可用。在PEC上保存color 1的偶數點意義不大,因為所有內容都是相對于該特定點行(不需要額外的行緩沖器)打印的。另外,緩存color 1奇數點所需的2個半行可節省實際的DRAM帶寬。在打印頁面前,各種行緩沖器(片上緩沖器和DRAM緩沖器)都需要預置0,使打印頁面有一個空邊。頁面的結尾由HCU自動產生,所以頁面將有一個空邊。
圖10是Color N OESplit(見圖9的Oesplit 70)的模塊圖,圖9中的每個緩沖器E和F,71和72的模塊圖可以在圖10和圖11中找到。緩沖器EF是一種雙緩存機制,用于向圖3中顯示的打印頭接口(PHI)32傳輸數據。因此,緩沖器E和F具有相同的結構。在點行的處理過程中,當上述緩沖器E和F中一個用于寫數據時,另一個用于讀數據。這兩個緩沖器在接收到從PHI發來的行同步信號時進行邏輯交換。緩沖器E和F都由6個子緩沖器構成,一個子緩沖器對應一個顏色,如圖11所示。Color 1的子緩沖器編號為73。每個子緩沖器的容量是2400B,足以儲存15個1280點/段的段。由于內存是以32位方式讀寫的,所以每個子緩沖器有600個地址(需要10個地址位)。在每個顏色的子緩沖器中,所有偶數點都被放在奇數點的前面。如果有未用的空間(用于少于15個段的打印),那么未用空間應位于每個顏色的子緩沖器的末端。每個子緩沖器實際使用的存儲量與PEC實際編址的端數量直接相關。對于一個15段打印頭,由1200B個偶數點,后跟1200B個奇數點,沒有未用空間。所使用的子緩沖器的數量與打印頭所用的顏色數直接相關。所支持的最多顏色數為6。
每個緩沖器E和F的尋址編碼電路可以保證在一個特定周期中對所有6個子緩沖器進行一次32位訪問——可以從所有6個緩沖器讀取數據,也可以向其中的某個緩沖器寫入數據。從每個顏色緩沖器中讀取的32位中,只有一位被選擇用來構成6個輸出位的輸出。這個過程在圖11中示出。地址的15位中,10位地址用于選擇32位數據,5位地址用于從所選的32位數據中選擇1位,從而獲得要讀取的1位數據。每個子緩沖器73-78都有自己的WriteEnable行,因此,一個32位值可以在給定周期內寫入特定的顏色緩沖器。這些WriteEnable行是通過上述WriteEnable輸入與顏色選擇的解碼形式的“與(AND)”操作實現的。行79的DataIn的32位是共享的,因為實際上只有一個緩沖器接受數據。
用于從緩沖器E和F中讀取數據的地址是直接生成的。每個周期產生一個用于為特定段取上述6位數值(1位/顏色)的位地址。通過向當前位地址上加640,可以轉到下一個段中的對應點。加640而不是1280是因為,在緩沖器中奇數和偶數點是分離的。對上述動作重復NumSegments次,可以取回代表偶數點的數據,然后把這些位傳送給PHI。當NumSegments=15時,位數為90(15×6位)。然后,為奇數點重復上述過程。因此,完整的偶數/奇數位生成過程需要重復動作640次,每次需對起始地址加1。采取這種方法,所有點數據都在640×2×NumSegments個周期中被以打印頭所需要的順序傳遞到PHI中。當NumSegments=15時,要經歷19200個周期。需要注意的是,不管在打印頭中實際使用的顏色數是多少,在給定讀取周期中,都會產生6位數值(每位用于1個顏色緩沖器)。
另外,我們為寫入到圖9中的90位Transfer寄存器90產生TWriteEnable控制信號。由于LLFU在PHI之前開始,我們必須從PHI傳送Advance脈沖前的第一個值。我們還必須為第一個Advance脈沖產生下一個值。方法是在NumSegments周期后把第一個值傳送給Transfer寄存器,然后停止NumSegments個周期,等待Advance脈沖啟動下一個NumSegments周期組。當第一個Advance脈沖到達時,LLFU將與PHI同步。
單個點行的讀取過程在下面的偽代碼中說明<pre listing-type="program-listing"> DoneFirst=FALSE WantToXfer=FALSE ForDotInSegment0=0 to 1279 If(DotInSegment0bit0=0) CurrAdr=DotInSegment0(high bits)(puts in range 0 to 639)<dp n="d28"/> EndIf XfersRemaining=NumSegments Do WantToXfer=(XfersRemaining=0) TWriteEnable=(WantToXfer AND NOT DoneFirst)OR PHIADVANCE DoneFirst=DoneFirst OR TWriteEnable Stall=WantToXfer AND(NOT TWriteEnable) SWriteEnable=NOT(Stall) If(SWriteEnable) Shift Register=Fetch 6 bits from EFSense[ReadBuffer]CurrAdr CurrAdr=CurrAdr+640 XfersRemaining=XfersRemaining-1 EndIf Until(TWriteEnable) EndFor Wait until BufferEF Write process has finished EFSense=NOT(EFSense)</pre>當讀進程從E或F向PHI傳送數據時,一個寫進程正在準備另一個緩沖器中的下一個點行。
被寫入E或F的數據是由HCU產生的color 1數據以及從緩沖器D(由DRAM提供數據)提供的color 2-6數據。每當HCU的OutputValid被置為真時,Color 1數據就被寫入EF中;在其它時間,color 2-6數據被從寄存器C中寫入EF。
圖9中的緩沖器OE181是一個32位寄存器,它用于存儲某個HCU為color 1產生的連續32個點的集合。雖然點在頁面上是連續的,但是奇數和偶數點不是同時打印的。
緩沖器AB82采用一種雙緩存機制,它為color 1把奇數點數據延遲2個點行。因此,緩沖器A和B的結構是相同的。在點行的處理過程中,一個點行被從緩沖器中讀取,其中一個點行被讀取,然后被寫入。當整個點行處理完成后,這兩個緩沖器互換邏輯。一個1位標志ABSense確定從哪個緩沖器中讀取以及向哪個緩沖器寫入。
每當輸出有效控制標志被設置為真時(在第一個標志發送后,每隔32個周期設置一次),HCU提供color 1的32位數據。這32位數據為一個點行定義了一個連續的32點集,其中有16個偶數點(位0、2、4等),16個奇數點(位1、3、5等)。輸出有效控制器標志作為OE1寄存器81的WriteEnable控制標記。我們每隔2個OutputValid信號處理一次HCU數據。HCU color 1的16個偶數位被與寄存器OE1的16個偶數位合并,產生32位的偶數color 1數據。同樣,HCU的16個奇數位被與寄存器OE1的16個奇數位合并,產生32位的奇數color 1數據。在收到第一個OutputValid信號時,我們讀取緩沖器AB的數據,把奇數數據傳送給緩沖器EF中的color 1,如圖11中的73。在收到第二個OutputValid信號時,我們把奇數數據的32位寫入上述緩沖器AB中,然后把偶數數據的32位寫到緩沖器EF的color 1中。
每當OutputValid被設置為真時,HCU就為每個彩色平面提供32位數據。這種動作每隔32個周期出現一次(不包括在特定啟動時間內)。這32位數據為一個點行定義了一個連續的32點,其中包含16個偶數點(位0、2、4等)和16個奇數點(位1、3、5等)。
緩沖器OE1(圖10中的83)用于為color 1存儲一個32位值,但是緩沖器OE2到OE6分別用于為color 2到color 6存儲一個32位值。正如color 1的點每隔64個周期(每隔兩個OutputValid標志)被分為代表color 1的奇數點的32位數據和代表color 1的偶數點的32位數據一樣,其它彩色平面的點也被劃分為偶數和奇數點。
但是,點數據被延遲若干行,然后被通過緩沖器CD(圖9中的84)輸出到DRAM中,而不是直接寫入緩沖器EF中。當特定行的點被寫入DRAM時,前一行的點被從DRAM中讀出,并被寫入緩沖器EF71,72。這個過程必須與把color 1寫入緩沖器EF的過程交錯進行。
每次從HCU收到一個OutputValid標志時(如圖10中的85行),顏色N的32位數據就被寫入緩沖器OEN83。每次收到第二個OutputValid標志時,合并后的64位數據就被寫入顏色緩沖器N86。對于彩色平面2-6,這個過程是并行進行的。顏色緩存區N 86含有40套64位數據(320B),以便為兩個完整的段存儲點數據。這樣,前一個段的數據(包括奇數和偶數點)在一個整段生成時間(20×64=1280周期)內被輸出到DRAM中。寫入操作的地址是直接生成的。行87的ColorNWriteEnable信號每隔兩個OutputValid標志產生一次。地址從0開始,每隔兩個OutputValid標記增加1,直到39。當地址到達39時,它將被重置為0,而不是步進到40,這樣可以實現雙緩沖方案。只要在OutputValid標記出現之間不發生讀操作,上述工作就一直進行,并且前一個段的數據可以在產生單個段的數據的時間內被寫入到DRAM中。下面的偽代碼說明了上述過程<pre listing-type="program-listing">adr=0 firstEncountered=0 While(NOT AdvanceLine) If(HCU_OutputValid)AND(firstEncountered)) ColorNWriteEnable=TRUE ColorNAdr=adr If(adr=39) adr=0 Else adr=adr+1 EndIf Else ColorNWriteEnable=FALSE EndIf If(HCU_OutputValid) firstEncountered=NOT(firstEncountered)<dp n="d32"/> EndIf EndWhile</pre>讀操作的地址生成過程比較復雜一些,因為它與DRAM讀寫(包括讀和寫)、緩沖器EF的讀寫、以及color 1的生成時間有關。讀操作的地址生成過程在下面進一步說明。
緩沖器C、D、E、F和color N的地址生成都與DRAM讀寫的時間有關,并且不能影響與緩沖器E和F有關的color 1的處理。地址生成的基本原理是,把color N(奇數點或偶數點)的一個段的數據從DRAM中通過緩沖器CD傳送給緩沖器EF,當從DRAM中讀出數據時,根據ColorBufferN中的值替換上述點,同樣,對奇數和偶數點中的每種顏色執行相同的過程。當累積了一個完整段的所有點數據后(需要20個64周期),重新開始上述過程。當把給定行的所有段的數據在寄存器與DRAMA之間傳輸完成后,把該顏色的DRAM的當前地址步進1次,直到把該顏色的點行的特定數據從DRAM中讀回。在本處理方法中,DRAM與一種FIFO非常相似。最終的結果是,colorN(偶數或奇數點)被從DRAM中讀入緩沖器D,同時color N(前述偶數或奇數點)被復制到緩沖器C中。向緩沖器C復制數據需要20或21個周期,具體周期數取決于OutputValid標志是否在20次傳輸過程中出現。當上述兩個操作都完成后(通常,DRAM存取是一種較慢的工作),過程的第二部分開始。也就是說,把緩沖器C中的數據寫入到DRAM中(寫到上述讀操作的同一個地點),并且把緩沖器D中的數據復制到緩沖器EF中(同樣,由于正在傳輸color 1的數據,所以當OutputValid標志出現時,不會傳輸color N的數據)。當上述兩個操作完成后,為color N(奇數或偶數點)執行相同的過程,然后為每個剩余的顏色也執行相同的過程。上述的完整雙過程被重復執行10次。然后,為下一行的處理更新DRAM中存儲的每個當前行的地址。
在帶寬方面,為點數據緩存區存取DRAM會占用從PEC訪問DRAM的大部分帶寬。對于每一個打印行,需要為color2-6讀取整個點行,并且為color2-6寫入整個點行。因此,15個段(最多)的數據量為2×5×15×1280位=192000位(24000B)/打印行。對于最快速的打印系統(30000行/秒),帶寬必須為687MB/秒。對于1頁/秒的打印系統,所要求的帶寬為312MB/秒。由于所要求的帶寬太高,所以必須針對所用的存儲器類型優化DRAM中每種顏色的各種半行的地址。例如,在一個RDRAM存儲器系統中,為了最大限度地增加DRAM存取的打印頁面點數,必須為每種顏色把第一個半行緩沖區調整為1KB范圍。當處理各種段時,如果下一段的起始位置在1KB頁面中的960B處,那么640位存取會跨越2個頁面。為此,可以使用DRAMMax Val變量檢查這種情況。如果這種情況發生,那么就需要把下一個半行緩沖區的地址調整為與頁面對齊。這樣雖然每13段會浪費64B存儲空間,但是640位存取將完全發生在一個頁面中。
上述的地址生成過程可以視為NumSegments需要10個(20×32位讀操作+20×32位寫操作)。下面的偽代碼可以說明這種地址生成過程<pre listing-type="program-listing"> EFStartAdr=0 Do NumSegments times<dp n="d34"/> For CurrColor=0 to MaxHalfColors DRAMStartAddress=ColorCurrAdr[CurrColor] While reading 640 bits from DRAMStartAddress into D(>=20cycles) ColorNAdr=0 While(ColorNAdr!=20) If(NOT HCU_Output Valid) Transfer ColorNBuffer[ColorNAdr|CurrColor_bit0] toC[ColorNAdr] ColorNAdr=ColorNAdr+1 EndIf EndWhile EndWhile-wait until read has finished While writing 640 bits from C into DRAMStartAddress(>=20cycles) ColorNAdr=0 EFAdr=EFStartAdr While(ColorNAdr!=20) If(NOT HCU_OutputValid) Transfer D[ColorNAdr]to EF[CurrColor|EFAdr]<dp n="d35"/> If((ColorNAdrNAdr=19)AND(CurrColor=NumHalfColors)) EFStartAdr=EFAdr+1 Else EFAdr=EFAdr+1 EndIf ColorNAdr=ColorNAdr+1 EndIf EndWhile EndWhile-wait until write has finished If(DRAMStartAddress=DRAMMaxVal) ColorCurrAdr[currColor]=round up DRAMStartAddress tonext 1KByte page Else ColorCurrAdr[currColor]=DRAMStartAddress+640bits EndIf If(Segment=maxSegments) If(ColorCurrRow[CurrColor]=ColorMaxRow[CurrColor]) ColorCurrRow[currColor]=ColorStartRow[currColor] ColorCurrAdr[currColor]=ColorStartAdrcurrColor]<dp n="d36"/> Else ColorStartRow[currColor]=ColorCurrRow[currColor]+1 EndIf EndIf EndFor EndDo Wait until next Advance signal from PHI</pre>需要注意的是,MaxHalfColors寄存器應小于需要對奇數顏色和偶數顏色單獨處理的顏色(但不包括color 1)數。例如,對于一個標準的6顏色打印系統,需要處理的總顏色數(包括奇數顏色和偶數顏色)為10(colors2-6的奇數和偶數色),所以應該把MaxHalfColors設置為9。
LLFU需要2個NumSegments周期來為PHI準備數據的第一個180位。因此,必須在已經LLFU啟動2個NumSegments周期的時間后才能啟動打印頭和開始第一個LineSync脈沖。這樣Transfer的初始值才有效,也才能向Transfer寄存器中裝入下90位數據。
打印頭接口(PHI)是處理器向打印頭裝載要打印點的途徑,它控制著實際的點打印過程。它從LLFU接收數據,并把數據輸出給打印頭。必須能處理各種打印頭寬度和格式。PHI的內部結構應支持6種打印顏色、每次傳輸8個段、以及2個段組。這樣才能滿足能夠以全頁寬打印A4/信封幅面的15段(8.5英寸)打印機的要求。
上述描述內容的主要目的是闡述本發明的優選實施例,但該描述和所述實例不應限制本發明的范圍。本領域的技術人員可以很容易地根據本發明的具體實施例進行多種變化。任何根據本發明的具體實施例進行的修改都在本發明的保護范疇內。
權利要求
1.一種驅動墨滴打印頭的打印引擎/控制器,包括一個接口,用于接收壓縮的頁面數據;一個連續色調圖像解碼器,用于對接收到的壓縮頁面數據中的壓縮的連續色調圖像平面進行解碼;一個雙水平解碼器,用于對接收到的壓縮頁面數據中的壓縮的雙水平圖像平面解碼;一個半色調器/合成器,用于抖動連續色調圖像平面和把雙水平圖像平面數據與任一輸出平面合成;一個打印頭驅動器,用于向打印頭輸出合成數據。
2.如權利要求1所述的打印引擎/控制器,其中所述接口是一種高速串行接口。
3.如權利要求1所述的打印引擎/控制器,其中所述連續色調圖像解碼器是一個JPEG解碼器。
4.如權利要求1所述的打印引擎/控制器,其中所述連續色調圖像解碼器向所述半色調器/合成器前端的獨立緩沖器輸出解碼后的圖像的獨立的彩色平面。
5.如權利要求1所述的打印引擎/控制器,其中所述每個連續色調圖像平面中的頁面數據在半色調器/合成器中被縮放。
6.如權利要求1所述的打印引擎/控制器,其中所述雙水平解碼器是一個Group4傳真解碼器。
7.如權利要求1所述的打印引擎/控制器,其中所述雙水平解碼器把接收到的壓縮圖像平面中的壓縮雙水平圖像平面解碼到所述半色調器/合成器前端的各緩沖器中。
8.如權利要求1所述的打印引擎/控制器,其中所述雙水平圖像平面中的頁面數據在半色調器/合成器中被縮放。
9.如權利要求1所述的打印引擎/控制器,還包括一個紅外標記解碼器,用于產生紅外圖像平面,從而把紅外墨水打印的標記放入到所打印的頁面中。
10.一種驅動墨滴打印頭的打印引擎/控制器,包括一個連續色調圖像解碼器,用于對接收到的壓縮頁面數據中的壓縮的連續色調圖像平面進行解碼;一個雙水平解碼器,用于對壓縮的雙水平圖像平面解碼;以及一個半色調器/合成器,包括一個由彩色蒙罩控制的點合并單元,用于使用打印頭中提供的墨水整合圖像平面。
11.一種驅動墨滴打印頭的打印引擎/控制器,包括一個連續色調圖像解碼器,用于對接收到的壓縮頁面數據中的壓縮的連續色調圖像平面進行解碼;一個雙水平解碼器,用于對壓縮的雙水平圖像平面解碼;以及一個半色調器/合成器,包括一個頁邊單元,用于在合并過程中將頁邊數據用于各個圖像平面。
12.一種與墨滴打印頭連接的打印引擎/控制器芯片,包括一個接口,用于接收壓縮的頁面數據;一個連續色調圖像解碼器,用于對接收到的壓縮頁面數據中的連續色調圖像平面進行解碼;一個雙水平解碼器,用于對接收到的壓縮頁面數據中的雙水平圖像平面解碼;一個半色調器/合成器,用于抖動連續色調圖像平面和把雙水平圖像平面數據與任一輸出平面合成;一個打印頭驅動器,用于向打印頭輸出合成數據。
13.一種由打印引擎/控制器驅動的墨滴打印機,包括一個接口,用于接收壓縮的頁面數據;一個連續色調圖像解碼器,用于對接收到的壓縮頁面數據中的連續色調圖像平面進行解碼;一個雙水平解碼器,用于對接收到的壓縮頁面數據中的雙水平圖像平面解碼;一個半色調器/合成器,用于抖動連續色調圖像平面和把雙水平圖像平面數據與任一輸出平面合成;一個打印頭驅動器,用于向打印頭輸出合成數據;以及一個打印頭。
14.一種操作墨滴打印機的方法,包括接收壓縮的頁面數據;把接收到的壓縮頁面數據中的一些連續色調圖像平面進行解碼,以產生輸出平面;把接收到的壓縮頁面數據中的一些雙水平圖像平面解碼,以產生一個輸出平面;抖動一些連續色調圖像平面;把雙水平圖像平面數據與輸出平面合成;以及把合成后的數據轉發給打印頭。
全文摘要
本發明提供了一種適合于與噴墨打印頭一起使用的打印引擎/控制器。該打印引擎/控制器處理具有JPEG連續色調圖像層和使用Group 4傳真協議壓縮的雙水平圖像平面的壓縮的頁面數據。它接收壓縮的圖像平面數據,對圖像平面數據進行擴展,并以管道方式打印擴展后的圖像平面數據。該打印引擎/控制器由一個高速串行接口(27)(例如標準的IEEE 1394接口)、一個標準的JPEG解碼器(28)、一個標準的Group 4傳真解碼器(28)、一個半色調器/合成器單元(29)、一個用于把紅外標記放入打印頁面中的標記編碼器(30)、一個通過接口(32)向打印頭(33)提供數據的行裝載器/格式器單元(31)構成。解碼器(28,88)和解碼器(30)向半色調器/合成器(29)緩沖數據。
文檔編號H04N1/41GK1452558SQ00819571
公開日2003年10月29日 申請日期2000年5月24日 優先權日2000年5月24日
發明者卡·西爾弗布魯克, 保羅·拉普斯頓, 西蒙·羅伯特·瓦爾姆斯利 申請人:西爾弗布魯克研究有限公司