KR100714810B1 - 다중으로 동작하는 프린트 엔진/컨트롤러 및 다중 프린트엔진/컨트롤러에 의해 구동되는 프린트헤드 - Google Patents
다중으로 동작하는 프린트 엔진/컨트롤러 및 다중 프린트엔진/컨트롤러에 의해 구동되는 프린트헤드 Download PDFInfo
- Publication number
- KR100714810B1 KR100714810B1 KR1020027017428A KR20027017428A KR100714810B1 KR 100714810 B1 KR100714810 B1 KR 100714810B1 KR 1020027017428 A KR1020027017428 A KR 1020027017428A KR 20027017428 A KR20027017428 A KR 20027017428A KR 100714810 B1 KR100714810 B1 KR 100714810B1
- Authority
- KR
- South Korea
- Prior art keywords
- printhead
- data
- interface
- controller
- Prior art date
Links
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B41—PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
- B41J—TYPEWRITERS; SELECTIVE PRINTING MECHANISMS, i.e. MECHANISMS PRINTING OTHERWISE THAN FROM A FORME; CORRECTION OF TYPOGRAPHICAL ERRORS
- B41J2/00—Typewriters or selective printing mechanisms characterised by the printing or marking process for which they are designed
- B41J2/005—Typewriters or selective printing mechanisms characterised by the printing or marking process for which they are designed characterised by bringing liquid or particles selectively into contact with a printing material
- B41J2/01—Ink jet
- B41J2/21—Ink jet for multi-colour printing
Landscapes
- Record Information Processing For Printing (AREA)
Abstract
잉크 드롭형 프린트헤드(33)를 구동하기 위해 다른 프린트 엔진/컨트롤러와 결합하여 구성되는 프린트 엔진/컨트롤러(10). 그것은 압축된 페이지 데이터를 수신하기 위한 인터페이스(27)를 가진다. 이미지 디코더(28,88)은 상기 수신된 압축된 페이지 데이터에서 압축된 이미지 면을 디코딩한다. 하프토너/합성기(29)는 상기 디코딩된 이미지 면의 각 스트립을 합성하여 프린트헤드 인터페이스(32)로 출력한다. 프린트헤드 인터페이스(32)는 프린트헤드와 인터페이스한다. 동기 신호 발생기(89,90)는 프린트 엔진/컨트롤러들을 동기화하기 위해 이용되는 동기 신호를 출력한다. 하나의 프린트헤드 인터페이스(32)는 더 빠른 속도, 더 높은 입력 해상도, 더 높은 출력 해상도 또는 더 넓은 포맷 중 어느 하나 또는 그 이상의 조건으로 프린트헤드를 구동하기 위해 모든 프린트 엔진/컨트롤러를 동기화하기 위해 동기 신호를 생성하는 마스터로서 동작한다. 프린트헤드 인터페이스(32)는 입력(91)을 포함하고, 그 입력에 프린트 엔진/컨트롤러가 마스터 컨트롤러인지 슬레이브인지를 결정하는 신호가 있다. 하프토너/합성기(29)는, 다중 프린트 엔진/컨트롤러들로부터의 각 스트립으로 구축되는 이미지만의 스트립을 위한 프린트 데이터를 생성하도록 프린트 엔진/컨트롤러를 설정하는 마진 유닛(57)의 제어하에 입력 이미지 면을 스케일링한다.
프린트 엔진/컨트롤러, 하프토너/합성기, 이미지 디코더.
Description
본 발명은 프린트헤드를 구동함에 있어서 많은 프린트 엔진/컨트롤러와 함께 동작하는 데에 적용되는 프린트 엔진/컨트롤러 및 다중 프린트 엔진/컨트롤러에 의해 구동되는 프린트헤드에 관한 것이다.
종래에는 단일 프린트 엔진/컨트롤러가 단일 프린트헤드를 제어하였다. 그러나, 이 방식은 더 넓은 포맷의 프린트헤드나 고해상도의 입력 이미지 또는 보다 빠른 인쇄에 잘 적응되지 않는다. 넓은 포맷의 프린트헤드를 위해, 컨트롤러 칩은 지금은 더 길어진 같은 수의 프린트라인을 인쇄하기 위해 보다 빨리 동작하도록 만들어져야 한다. 또는, 프린트헤드가 보다 빨리 동작하여야 한다면, 컨트롤러는 보다 빠른 클록속도로 동작되어야 한다. 또는, 입력 이미지가 고해상도라면, 컨트롤러 칩은 내부적으로 보다 많은 버퍼를 가지거나 보다 빨리 동작하거나, 또는 더 큰 입력 이미지는 더 높은 해상도를 가지므로 이를 효과적으로 처리하기 위해 두가지(많은 버퍼와 빠른 동작)를 모두 구비하여야 한다.
일련의 프린터 타입들은 도트 포맷으로 페이지에 선택적으로 잉크를 부여하 여 이미지를 구현하도록 발전되어 왔다. Kia Silverbrook이 발명자로 되어 있는 US 특허 제6045710호('Self-aligned construction and manufacturing process for monolithic printheads')에서는 그 제조프로세스와 함께 드롭-온-디맨드형 프린터에 관해 종래기술의 검토가 기재되어 있다.
본 발명과 관련한 여러가지 방법, 시스템 및 장치가 본 출원인 또는 그 승계인에 의해 2000년 5월 24일에 출원된 아래의 공동 계류중인 출원에 개시되어 있다.
PCT/AU00/00518, PCT/AU00/00519, PCT/AU00/00520, PCT/AU00/00521, 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/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/00594, PCT/AU00/00595, PCT/AU00/00596, PCT/AU00/00597, PCT/AU00/00598, PCT/AU00/00516, PCT/AU00/00517, PCT/AU00/00511.
이들 공동 계류중인 출원에 개시된 내용은 상호 참조된다.
덧붙여, 본 발명과 관련하여 여러가지 방법, 시스템 및 장치가 본 출원인 또는 그 승계인에 의해 동시에 출원된 다음의 공동 계류중인 PCT 출원에 개시되어 있다.
PCT/AU00/00755, PCT/AU00/00756, PCT/AU00/00757.
이들 공동 계류중인 출원에 개시된 내용은 상호 참조된다. 각 출원은 임시적으로 도킷 번호로 구분한다. 이것은 대응하는 PCT 출원번호가 나오면 치환될 것이다.
공동 계류중인 출원들 중 특히 주목할 출원의 출원번호는 PCT/AU00/00591, PCT/AU00/00578, PCT/AU00/00579, PCT/AU00/00592 및 PCT/AU00/00590이고, 이들은 이하에서 멤젯 프린트헤드(memjet printhead)로 불리는 마이크로일렉트로미케니컬 드롭-온-디맨드형 프린트헤드에 대해 기술하고 있다.
멤젯 프린트헤드는, 예컨대 페이지의 전체 폭을 가로질러 액체 잉크로 2-레벨 도트를 1600dpi로 생성할 수 있는 프린트헤드 세그먼트로부터 발전되었다. 도트들은 이산된 도트 디더링(dispersed-dot dithering)을 최대한 이용하면서 쉽게 분리되어 생성된다. 컬러면은 이상적인 도트-온-도트(dot-on-dot) 인쇄를 허용하면서 완벽히 정합하여 인쇄될 수 있다. 프린트헤드는 마이크로일렉트로미케니컬 잉크 드롭 기술을 이용하여 고속인쇄를 가능하게 한다.
아울러, 공동 계류중인 PCT 출원 PCT/AU00/00516, PCT/AU00/00517, PCT/AU00/00511, PCT/AU00/00755, PCT/AU00/00756 및 PCT/AU00/00757은 상기한 폭이 넓은 프린트헤드를 구동하기에 적합한 프린트 엔진/컨트롤러에 대해 기술하고 있다.
단일 프린트 엔진/컨트롤러(PEC) 칩은 상기한 타입의 프린트헤드를 구동하여 12인치 프린트헤드를 통해 디더 버젼의 320ppi 연속톤 이미지를 인쇄할 수 있다. 더 높은 품질의 출력을 위해 더 높은 해상도 이미지를 인쇄할 수 있어야 하는 것이 요구된다. 프린트헤드를 더 빠르게 동작시킬 수 있어야 하는 것이 요구된다.
본 발명에 의하면, 잉크 드롭 프린트헤드를 구동하기 위해 다른 것과 연결되도록 구성된 프린트 엔진/컨트롤러는,
압축된 페이지 데이터를 수신하는 인터페이스와;
상기 수신된 압축 페이지 데이터에서 압축된 이미지 면을 디코딩하는 이미지 디코더와;
상기 디코딩된 이미지 면들의 각 스트립을 합성하는 하프토너/합성기와;
상기 합성 스트립을 프린트헤드로 출력하는 프린트헤드 인터페이스를 구비하여 이루어지고,
상기 프린트헤드 인터페이스는,
프린트헤드 포맷 데이터를 출력하는 멀티-세그먼트 프린트헤드 인터페이스와;
프린트 엔진/컨트롤러들을 연결하여 프린트헤드에서 각각의 스트립을 동기하기 위한 동기신호를 출력하는 동기신호 발생기를 포함하여 이루어진다.
멤젯 프린트헤드는 멀티-세그먼트 프린트헤드이고, 여기서 프린트헤드의 각 세그먼트는 물리적으로 연결되어 있다. 예컨대, 멤젯 프린트헤드는 다중 칩으로 구성되고, 각각은 하나의 프린트헤드 세그먼트 또는 하나 이상의 프린트헤드 세그먼트를 포함하고 있다. 두가지 경우에 모두 배선도 같고, 논리적 결합도 같다. 다중 세그먼트가 결합하여 더 넓은 프린트헤드를 형성한다.
본 발명은 멀티-세그먼트 프린트헤드를 구동하기 위해 다중 복제된 동일한 프린트 엔진/컨트롤러 칩을 유용하게 이용하고, 각각은 페이지의 스트립을 맡게되며, 모두 마스터 칩으로부터 동기된다. 요구되는 사양에 따라 다양한 구성이 이루어질 수 있다. 예를 들면, 12-세그먼트 프린트헤드가 주어지면, 320ppi의 연속톤 해상도 및 초당 30,000라인의 최대 라인속도로 전체의 프린트헤드를 구동하기 위해 단일 프린트 엔진/컨트롤러(PEC)가 이용될 수 있다. 만일 두배의 속도가 요구되면, 여전히 320ppi의 연속톤 해상도로 동작하면서 2개의 PEC가 각각 6개의 세그먼트를 제어할 수 있다. 그러나, 효과적인 속도는 두배로 되었다. 마찬가지로, 연속톤 해상도가 640ppi로 되어야 한다면, 2개의 PEC가 초당 30,000라인으로 프린트헤드를 구동할 수 있다.
또한 동기화는 동시적인 2중 인쇄에 기꺼이 이용될 수 있다. 하나의 PEC는 한 페이지의 한쪽에 12인치(15 세그먼트)를 인쇄하고, 두번째 PEC는 동시에 그 페이지의 다른 쪽을 인쇄한다. 동기신호를 제공하는 단일 마스터 PEC 칩이 있는 한, PEC들의 결합은 구현될 수 있다.
다중 칩들로 단일 프린트헤드를 구동하는 것은 더 넓은 페이지, 더 빠른 인쇄, 더 높은 입력 해상도 또는 이들 세가지의 조합을 달성하는 데에 유용한다.
다중 PEC를 이용하면, 같은 페이지가 다중 PEC에 부여될 수 있다. 그러면, 서로다른 PEC들은 페이지 데이터의 스트립을 처리하여 더 빠른 시간 및/또는 더 높은 해상도로 전체 페이지를 생산한다. 다중 PEC에서 프린트헤드로 데이터를 보내는 간단한 방법은 각 PEC가 주어진 수의 프린트헤드 세그먼트를 맡도록 하는 것이다.
전체 페이지 내의 스트립에 대한 개별 PEC의 프로그래밍은 각 PEC의 하프토너/합성기 내의 마진 유닛(margin unit)에 구성되어 진다. 각 프린트 엔진/컨트롤러 내의 태그 인코더는 한 페이지의 한 스트립을 처리할 수 있고 태그된 페이지가 요구될 때 부분적인 태그를 생성할 수 있다.
여러 PEC들이 결합되어 사용될 때, 15개 이상의 멤젯 세그먼트로 구성된 중복 구성이나 프린트헤드 구성에서와 같이, 그들은 공유된 선의 동기신호를 통해 동기된다. 외부의 마스터/슬레이브 핀에 의해 선택된 오직 하나의 프린트헤드 컨트롤러 칩만이 공유된 선에 동기신호를 발생시킨다. PEC의 내부는 다른 PEC들과 연결되어 한 페이지의 단일 스트립을 인쇄하도록 구성되어 있다. 이것은 부분적인 네트페이지 태그(netpage tag)의 생성과 페이지 설명을 포함한다. 그러나 그것은 각 PEC에 정확하게 여러가지 스트립을 할당하는 외부 페이지 제공기(external page provider)에 달려있다.
도 1은 데이터 흐름과 본 프린트 엔진/컨트롤러에 의해 수행되는 기능을 나타내는 다이어그램,
도 2는 전반적인 프린터 시스템 구조와 관련하여 프린트 엔진/컨트롤러를 보여주는 도면,
도 3은 프린트 엔진/컨트롤러 구조를 나타내는 도면,
도 4는 도 3의 하프토너/합성기 유닛(HCU)에 대한 외부 인터페이스를 나타내는 도면,
도 5는 도 4의 HCU에 대한 내부 회로도를 보여주는 다이어그램,
도 6은 도 5의 도트 융합기 유닛(dot merger unit)에서의 프로세스를 나타내는 블록 다이어그램,
도 7은 도 5의 도트 재구성 유닛(dot reorganization unit)에서의 프로세스를 나타내는 다이어그램,
도 8은 도 5의 라인 로더/포맷 유닛(line loader/format unit:LLFU)에서의 프로세스를 나타내는 다이어그램,
도 9는 도 8의 LLFU에서 컬러 데이터를 생성하기 위한 내부 회로도를 보여주는 다이어그램,
도 10 및 도 11은 도 9에 나타낸 LLFU의 구성요소를 나타내는 도면,
도 12는 프린트헤드 인터페이스에 대한 내부 회로도를 보여주는 다이어그램,
도 13은 프린트헤드 인터페이스에서 사용되는 도트 카운터의 다이어그램이다.
전형적인 12인치 프린트헤드 폭은, 아래에서 설명하는 바와 같이, A4 및 공문서 페이지를 모두 풀 블리드(full-bleed) 인쇄할 수 있도록 하기 위해 하나 또는 그 이상의 프린트 엔진/컨트롤러(PEC)에 의해 제어된다. 컬러 잉크의 6개 채널은 현재의 인쇄 환경에서 예상되는 최대치이고, 이들은:
* 표준 컬러 인쇄를 위한 CMY.
* 검정색 텍스트와 다른 검정색 인쇄를 위한 K.
* 태그를 활용할 수 있는 사양을 위한 IR(적외선 잉크).
* 고속 인쇄를 가능하게 하기 위한 F(고착제)
프린터가 빠르게 인쇄할 수 있기 때문에, 고착제는 다음 페이지가 고속으로 인쇄를 완료하기 전에 잉크가 마르도록 하기 위해 요구된다. 그렇지 않으면, 페이지들이 서로에게 번질 수도 있다. 저속 인쇄 환경에서는 고착제가 요구되지 않는다.
PEC는 프린트헤드와 인터페이스하는 단일 칩에 설치될 수 있다. 그것은 네가지 기본 레벨의 기능을 포함하게 될 것이다.
* IEEE 1394와 같은 직렬 인터페이스를 통해 압축된 페이지를 수신한다.
* 압축된 형태로부터 페이지를 생성하기 위한 프린트 엔진. 프린트 엔진은, 페이지 이미지를 확장하고, 연속톤 층을 디더링하고, 연속톤 층 상에 블랙 층을 혼 합하고, 선택적으로 적외선 태그를 부가하며, 결과 이미지를 프린트헤드로 전송하는 기능을 포함한다.
* 프린트헤드와 스텝퍼 모터를 제어하기 위한 프린트 컨트롤러.
* 2개의 QA 칩과 통신하기 위한 두개의 표준 저속 직렬 포트. 인증 절차에서 강력한 안전성을 보장하기 위해 하나의 포트가 아닌 두개의 포트가 있어야 한다는 것을 유의해야 한다.
도 1에서는 컴퓨터 시스템에서 인쇄된 페이지에 다큐멘트를 전송하기 위한 데이터의 흐름을 보여준다. 다큐멘트는 11에서 수신되어 메모리 버퍼(12)로 로딩되는데, 메모리 버퍼에서는 페이지 레이아웃이 영향을 받고 요구되는 어떠한 오브젝트가 더해질 수 있다. 메모리(12)로부터의 페이지들은 13에서 래스터화(rasterize)되어 프린트 엔진/컨트롤러(10)로 전송되기 전에 14에서 압축된다. 페이지들은 프린트 엔진/컨트롤러(10) 내에서 압축된 페이지 이미지로서 메모리 버퍼(15)로 수신되고, 여기에서 그들은 페이지 확장기(16)로 제공되어 페이지 이미지가 회복된다. 어떠한 필요한 디더가 17에서 어떠한 연속톤 층에 적용될 수 있다. 어떠한 검정 2-레벨 층이 19에서의 어떤 적외선 태그와 함께 18에서 연속톤 층 상에 합성될 수 있다. 합성된 페이지 데이터는 페이지(21)를 생성하기 위해 20에서 인쇄된다.
프린트 엔진/컨트롤러는 압축된 페이지 이미지를 가지고 페이지 확장 및 파이프라인 방식으로의 인쇄를 시작한다. 페이지 확장 및 인쇄는 바람직하게는 파이프라인되는데, 그 이유는 사이즈가 큰 2-레벨 CMYK+IR 페이지 이미지를 메모리에 저장하는 것은 불가능하기 때문이다.
파이프라인의 첫번째 단계는, 병렬적으로, JPEG 압축된 연속톤 CMYK 층(아래 참조)을 확장하고, 그룹 4 팩스 압축된 2-레벨 디더 매트릭스 선택 맵(아래 참조)을 확장하며, 그룹 4 팩스 압축된 2-레벨 블랙 층(아래 참조)을 확장하는 것이다. 두번째 단계는 디더 매트릭스 선택 맵에 의해 선택된 디더 매트릭스를 이용하여 연속톤 CMYK 층을 디더하고, 그 결과인 2-레벨 K 층 상에 2-레벨 블랙 층을 합성하며, 페이지에 IR 층을 더하는 것이다. 또한 고착제 층은 C, M, Y, K 또는 IR 채널 중 어느 것이든 필요하게 되는 곳이면 어디에나 각 도트 위치에서 생성된다. 마지막 단계는 프린트헤드 인터페이스를 경유하여 프린트헤드를 통해 2-레벨 CMYK+IR 데이터를 인쇄하는 것이다(아래 참조).
도 2에서는 프린트 엔진/컨트롤러(10)가 전체 프린터 시스템 구조 내에서 어떻게 결합되어 있는지를 나타내고 있다. 프린터 시스템의 여러가지 구성요소에는 다음이 포함될 것이다.
* 프린트 엔진/컨트롤러(PEC). PEC 칩(10)(또는 칩(10))은 메모리 버퍼(24)에 저장하기 위한 압축된 페이지를 수신하고, 페이지 확장을 수행하며, 블랙 층 합성과 도트 데이터를 프린트헤드(23)로 전송하는 역할을 맡는다. 그것은 또한 QA 칩(25,26)과 통신할 수 있고, 최적 인쇄를 보장하기 위해 프린트헤드 특성을 검색하는 수단을 제공한다. PEC는 본 명세서의 주제이다.
* 메모리 버퍼. 메모리 버퍼(24)는 압축된 페이지 이미지를 저장하고, 주어진 페이지의 인쇄동안의 스크래치(scratch) 용도를 위한 것이다. 메모리 버퍼의 구축과 동작은 해당분야의 기술을 가진 자에게 알려져 있고, 그 사용을 위한 표준 칩과 기술의 범위는 본 발명의 PEC의 사용에 활용될 수 있다.
* 마스터 QA 칩. 마스터 칩(25)은 교환가능한 잉크 카트리지 QA 칩(26)에 대응된다. QA 유닛의 구축과 동작은 해당분야의 기술을 가진 자에게 알려져 있고, 알려진 QA 프로세스의 범위는 본 발명의 PEC의 사용에 활용될 수 있다. 예를 들면, QA 칩은 공동계류중인 다음의 미국 특허 출원에 기술되어 있다.
US 직렬 번호 | 출원인측 참조번호 | 제목 |
추후 통보 | AUTH01 | Validation Protocol and System |
09/112,763 | AUTH02 | Circuit for Protecting Chips Against IDD Fluctuation Attacks |
09/112,737 | AUTH04 | Method for Protecting On-Chip Memory (Flash and RAM) |
09/112,761 | AUTH05 | Method for Making a Chip Tamper-Resistant |
09/113,223 | AUTH06 | A system for authenticating physical objects |
추후 통보 | AUTH07 | Validation Protocol and System |
추후 통보 | AUTH08 | Validation Protocol and System |
09/505,003 | AUTH09 | Consumable Authentication Protocol and System |
09/517,608 | AUTH10 | Consumable Authentication Protocol and System |
09/505,147 | AUTH11 | Consumable Authentication Protocol and System |
09/505,952 | AUTH12 | Unauthorized Modification of Values Stored in Flash Memory |
추후 통보 | AUTH13 | A System for the Manipulation of Secure Data |
09/516,874 | AUTH14 | An Authentication Chip with Protection from Power Supply Attacks |
추후 통보 | AUTH15 | Shielding Manipulations of Secret Data |
QA 칩 통신은 PEC 칩이 물리적 프린트헤드의 구동뿐 아니라 이미지의 확장의 기능을 가지고 있으므로 PEC의 전체 기능성 내에 가장 잘 포함될 것이다. QA 칩 통신을 그곳에 위치시킴으로써, 페이지를 인쇄하기에 충분한 잉크가 있다는 것을 보장할 수 있다. 바람직하게는 프린트헤드 어셈블리에 끼워져 있는 QA는 인증 칩(authentication chip)을 이용하여 실행된다. 그것은 마스터 QA 칩이므로, 인증 키만을 가지고 있고 사용자 데이터는 가지고 있지 않다. 그러나, 그것은 잉크 카트 리지의 QA 칩과 매치되어야 한다. 잉크 카트리지의 QA 칩은 가능한 최상의 인쇄 품질을 유지하기 위해 요구되는 정보를 가지고 있고, 인증 칩을 이용하여 실행된다.
바람직하게는, 64MBit(8MByte) 메모리 버퍼가 압축된 페이지 이미지를 저장하는 데에 이용된다. 한 페이지가 버퍼에 기록될 때, 다른 하나는 독출된다(이중 버퍼링). 아울러, PEC는 페이지의 인쇄 중에 연산된 도트 정보를 버퍼하기 위해 메모리를 이용한다. 페이지(N)의 인쇄 중에 버퍼는 다음을 위해 이용된다.
* 압축된 페이지(N) 독출
* 페이지(N)에 대한 2-레벨 도트 정보 독출 및 기록
* 압축된 페이지(N+1) 기록
바람직하게는, PEC 칩은 다음의 기능을 수행하기 위해 간단한 마이크로-컨트롤러 CPU 코어(35)와 결합할 것이다.
* 프린트 페이지들 사이에 직렬 인터페이스(36)를 통해 QA 칩 인증 프로토콜을 수행한다.
* 인쇄 중에 병렬 인터페이스(91)을 통해 스텝퍼 모터를 구동한다(스텝퍼 모터는 5kHz 프로세스를 요구한다).
* 인쇄 중에 PEC 칩의 여러가지 부분을 동기한다.
* 외부 데이터 요구와 인터페이스하기 위한 수단을 제공한다(프로그래밍 레지스터 등).
* 프린트헤드 세그먼트 저속 데이터 요구와 인터페이스하기 위한 수단을 제공한다(특성화 벡터를 독출하고 펄스 프로파일을 기록하는 등)
* 외부 DRAM에 초상화 및 조경화 태그 구조를 기록하기 위한 수단을 제공한다.
모든 이미지 프로세싱은 전용 하드웨어에 의해 수행되므로, CPU는 픽셀을 처리할 필요는 없다. 결과적으로, CPU는 극히 간단해질 수 있다. 코어로 알려진 매우 여러가지의 CPU가 적합하다: 그것은 요구되는 연산을 수행하고 충분히 빠르게 기능을 제어하기 위해 충분한 프로세싱 능력을 가진 어떠한 프로세서 코어도 될 수 있다. 적합한 코어의 일례로서, 약 1MHz로 동작하는 필립스 8051 마이크로 컨트롤러가 있다. 프로그램 ROM 및 작은 프로그램 스크래치 RAM이 CPU 코어(35)와 결합될 수 있다. CPU는 메모리 맵 I/O를 경유하여 PEC 칩 내에서 다른 유닛과 통신한다. 특정 어드레스 범위는 특정 유닛에 매핑할 수 있고, 각 범위 내에서 그 특정 유닛 내의 특정 레지스터에 매핑할 수 있다. 이것은 직렬(36) 및 병렬(91) 인터페이스를 포함한다. 작은 프로그램 플래쉬 ROM은 PEC 칩 내에 형성될 수 있다. 그 크기는 선택된 CPU에 의존한지만, 8KB 이상이 되면 안된다. 마찬가지로, 작은 스크래치 RAM 영역이 PEC 칩 내에 형성될 수 있다. 프로그램 코드가 이미지를 조작할 필요는 없으므로, 큰 스크래치 영역이 요구되지는 않는다. RAM 사이즈는 선택된 CPU에 의존하지만(예컨대, 스택 메카니즘(stack mechanisms), 서브루틴 호출 규약, 레지스터 사이즈 등), 2KB 이상이 되면 안된다.
상기한 세그먼트 기반 페이지 폭 프린트헤드를 이용한 PEC 칩은 풀 도트 해상도(전형적으로 1600dpi)로 블랙을 재생할 수 있지만, 하프토닝을 이용하여 다소 낮은 해상도로 연속톤 컬러를 재생한다. 그러므로 페이지 기재사항은 블랙 2-레벨 층 및 연속톤 층으로 나뉜다. 블랙 2-레벨 층은 연속톤 층 상에 합성되도록 정의된다. 블랙 2-레벨 층은 각 픽셀에 대해 1-비트 불투명도를 포함하는 비트맵으로 이루어진다. 이 블랙 층 매트(matte)는 프린터의 도트 해상도의 정수 계수인 해상상도를 가진다. 최상으로 지원되는 해상도가 1600dpi 즉 프린터의 풀 도트 해상도이다. 연속톤 층은 각 픽셀에 대해 32-비트 CMYK 컬러를 포함하는 비트맵으로 이루어진다. 여기서 K는 임의적이다. 이 연속톤 이미지는 프린터의 도트 해상도의 정수 계수인 해상도를 가진다. 최상으로 지원되는 해상도는 단일 PEC에서 12인치에 대한 320ppi 즉, 프린터의 도트 해상도의 1/5이다. 더 높은 연속톤 해상도를 위해, 각 PEC가 출력 페이지의 스트립을 생성하는 다중 PEC가 요구된다. 또한, 연속톤 해상도는 전형적으로, RIP에서의 연산을 간소화하기 위해, 블랙 2-레벨 해상도의 정수 계수이다. 그러나 이것은 요구사항은 아니다. 블랙 2-레벨 층과 연속톤 층은 둘다 프린터의 내부 메모리에 효율적으로 저장하기 위해 압축된 형태로 되어 있다.
도 3에서는 프린트 엔진 구조를 보여준다. 프린트 엔진의 페이지 확장 및 인쇄 파이프라인은 고속 직렬 인터페이스(27)(예컨대, 표준 IEEE 1394 인터페이스), 표준 JPEG 디코더(28), 표준 그룹 4 팩스 디코더, 커스텀 하프토너/합성기 유닛(29), 커스텀 태그 인코더(30), 라인 로더/포맷기 유닛(31) 및 프린트헤드(33)로의 커스텀 인터페이스(32)로 이루어진다. 디코더(28,88) 및 인코더(30)는 하프토너/합성기(29)에 버퍼된다. 태그 인코더(30)는 페이지의 용도에 의존한 프로토콜에 따라 적외선 태그 또는 태그들을 페이지에 설치한다. 실질적인 태그의 내용은 본 발명의 주제가 아니다.
프린트 엔진은 이중 버퍼 방식으로 동작한다. 한 페이지는, 이전에 로드된 페이지가 DRAM(34)으로부터 독출되어 프린트 엔진 파이프라인을 통해 전달되는 동안, 고속 직렬 인터페이스(27)로부터 DRAM 인터페이스(89) 및 데이터 버스(90)를 경유하여 DRAM(34)으로 로드된다. 일단 페이지가 인쇄를 끝내면, 그 다음엔 방금 로드된 페이지가 인쇄되는 페이지로 된다. 또 새로운 페이지가 고속 직렬 인터페이스(27)를 통해 로드된다. 첫번 째 단계에서 파이프라인은 어떤 JPEG 압축된 연속톤(CMYK) 층을 확장하고, 두개의 그룹 4 팩스 압축된 2-레벨 데이터 스트림 중 어느 하나를 확장한다. 두개의 스트림은 블랙층(비록 PEC가 실제 컬러를 알지 못하고, 이 2-레벨 층은 출력 잉크 중 어느 하나에 배당될 수 있어도)과 연속톤 디더링을 위한 디더 매트릭스들 사이에서 선택하기 위한 매트(matte)이다. 두번 째 단계에서, 첫번 째 단계와 병행하여, IR 또는 블랙 잉크 중 하나로 추후 렌더링하기 위한 어떤 태그들이 인코딩된다. 마지막으로 세번 째 단계는 연속톤 층을 디더하고 위치 태그들과 2-레벨 스폿 1 층을 결과물인 2-레벨 디더 층 상에 합성한다. 데이터 스트림은 이상적으로 프린트헤드에서 오버랩하는 세그먼트를 가로질러 유연한 변이를 만들어 내기 위해 적용되고, 이상적으로 프린트헤드에서 죽은 노즐들을 보상하기 위해 적용된다. 2-레벨 데이터의 6 채널까지 이 단계에서 생성된다. 6 채널 모두가 프린트헤드에 나타나는 것은 아니라는 것을 유의하라. 예를 들면, 프린트헤드는, K는 CMY 채널로 밀려들어가고 IR은 무시되어, 오직 CMY뿐일 수 있다. 다르게는, 위치 태그는, IR 잉크가 사용할 수 없을 때(또는 테스트 목적으로), K로 인쇄될 수 있다. 결과적인 2-레벨 CMYK-IR 도트 데이터는 한 세트의 라인 버퍼(아래 참 조)를 경유하여 프린트헤드(33)에 인쇄를 위해 버퍼되고 포맷된다. 이들 라인 버퍼의 대부분은 이상적으로 오프칩 DRAM(34)에 저장될 수 있다. 마지막 단계는 프린트헤드 인터페이스(32)를 경유하여 2-레벨 도트 데이터의 6 채널을 인쇄하는 것이다.
압축은 PEC를 채용하는 프린팅 시스템에서 이용된다. 이것은 페이지 저장을 위해 요구되는 메모리를 저감할 뿐 아니라 호스트와 PEC 사이에 요구되는 대역폭(bandwidth)을 저감하기 위한 것이다. 267ppi에서, 연속톤 CMYK 데이터의 문자 페이지는 25MB의 크기를 가진다. JPEG과 같은 손실있는 연속톤 압축 알고리즘(lossy contone compression algorithms)을 이용하면, 연속톤 이미지는 품질의 눈에 띄는 손실없이 10:1에 이르는 비율로 압축되어 2.5MB 크기의 압축된 페이지로 된다. 800dpi에서, 2-레벨 데이터의 문자 페이지는 7MB의 크기를 가진다. 텍스트와 같은 응집적인 데이터는 매우 잘 압축된다. 그룹 4 팩시밀리(아래 참조)와 같은 손실없는 2-레벨 압축 알고리즘을 이용하면, 10-포인트 텍스트가 약 10:1의 비율로 압축되어, 0.8MB 크기의 압축된 페이지가 된다. 일단 한번 디더되면, 한 페이지의 CMYK 연속톤 이미지 데이터는 114MB의 2-레벨 데이터로 이루어진다. 아래에 기술된 2층 압축 페이지 이미지 포맷은 손실있는 JPEG 연속톤 이미지 압축과 손실없는 2-레벨 텍스트 압축의 상대적인 강점을 이용한다. 포맷은 저장 효율에 충분할만큼 간결하고, 인쇄동안 직접적인 실시간 확장이 충분히 가능할만큰 간단하다. 텍스트와 이미지는 일반적으로 오버랩하지 않기 때문에, 통상적인 최악의 경우 페이지 이미지 크기는 2.5MB(즉, 오직 이미지뿐인 때)이고, 반면에 통상적인 최선의 경우 페이지 이미지 크기는 0.8MB(즉, 오직 텍스트뿐인 때)이다. 절대적인 최악의 경우 페이지 이미지 크기는 3.3MB(즉, 이미지 상에 텍스트가 겹쳐진 때)이다. 평균 페이지의 1/4이 이미지를 포함할 때를 가정하면, 평균적인 페이지 이미지 크기는 1.2MB이다.
그룹 3 팩시밀리 압축 알고리즘(ANSI/EIA 538-1988, 'Facsimile Coding Schemes and Coking Control Functions for Group 4 Facsimile Equipment' 1988년 8월)이 손실없이 느리고 잡음많은 전화선을 통한 전송을 위해 2-레벨 데이터를 압축하는 데에 이용될 수 있다. 2-레벨 데이터는 백색 바탕에 스캔된 검은색 텍스트 및 그래픽을 나타내고, 알고리즘은 이 부류의 이미지를 위해 조정된다(그것은 정확하게 예를 들면 하프톤된 2-레벨 이미지를 위해 조정되는 것이 아니다). 1D 그룹 3 알고리즘은 각 스캔라인을 런렝스인코딩(runlength encode)하고, 그 결과인 런렝스를 허프만인코딩(Huffman encode)한다. 0~63 범위에서의 런렝스는 종결 코드(terminating code)와 함께 인코딩된다. 64~2623 범위에서의 런렝스는 보충 코드(make-up code)와 함께 인코딩 되는데, 각 코드는 64의 배수를 나타내고 그 뒤를 종결 코드가 뒤따른다. 2623을 초과하는 런렝스는 다중 보충 코드들과 함께 인코딩되고, 그 뒤를 종결 코드가 뒤따른다. 러프만 데이블은 고정되어 있지만, 블랙과 화이트 구동을 위해 각각 조정된다(1728 이상의 보충 코드는 제외. 이것은 공통이다). 가능하면, 2D 그룹 3 알고리즘은 이전의 스캔라인을 참조하여 스캔라인을 한 세트의 쇼트 에지 델타(short edge deltas)(0,±1,±2,±3)로 인코딩한다. 델타 심볼은 엔트로피인코딩(entropy encode)된다(제로 델타 심볼이 오직 1비트 길이로 되도록 하는 등). 델타인코딩될 수 없는 2D인코딩된 라인 내의 에지들은 런렝스인코 딩되고, 프리픽스(prefix)에 의해 식별된다. 1D인코딩 및 2D인코딩된 라인들은 다르게 표시된다. 1D인코딩된 라인들은 실제 필요하든 그렇지 않든 일정한 간격으로 생성되어 디코더가 최소의 이미지 훼손으로 라인 노이즈로부터 회복할 수 있다는 것을 보장한다. 2D 그룹 3은 6:1에 이르는 압축비율을 달성한다( Urban, S.J., "Review of standards for electronic imaging for facsimile systems", Journal of Electronic Imaging, Vol.1(1), 1992년 1월, 5쪽-21쪽 참조).
그룹 4 팩시밀리 알고리즘은(ANSI/EIA 538-1988, "Facsimile Coding Schemes and Conding Control Functions for Group 4 Facsimile Equipment, 1988년 8월 참조) 에러없는 통신 라인상에 전송하기 위한 2-레벨 데이티를 손실없이 압축한다(즉, 라인이 정말로 에러가 없거나 더 낮은 프로토콜 레벨에서 에러 보정이 이루어진다). 그룹 4 알고리즘은 2D 그룹 3 알고리즘에 기초하고, 전송이 에러없이 이루어질 것으로 생각되기 때문에 필수적인 수정이 가해진다. 1D인코딩된 라인들은 더이상 에러-복구를 목적으로 일정한 간격으로 생성되지 않는다. 그룹 4는 테스트 이미지의 CCITT 세트에 대해 20:1에서 60:1까지의 범위의 압축 비율을 달성한다. 그룹 4 압축 알고리즘의 설계 목표 및 실행은 2-레벨 층을 위한 압축 알고리즘으로서 제한한다. 그러나, 그것의 허프만 테이블은 더 낮은 스캐닝 해상도(100-400dpi)로 조정되고, 2623을 초과하는 런렝스를 서투르게 인코딩한다. 800dpi에서, 최대 런렝스는 현재 6400이다. 그룹 4 디코더 코어가 PEC에서 사용될 수 있더라도, 그것은 400dpi 팩시밀리 어플리케이션에서 통상적으로 볼 수 있는 것을 초과하는 런렝스를 제어할 수는 없고, 그래서 수정이 요구된다. 블랙 층(전형적으로 1600dpi)은 10:1 을 초과하는 전형적인 압축 비율로 G4Fax를 이용하여 손실없이 압축된다. 연속톤 컬러층과 매치되는 디더 매트릭스 선택 층(전형적으로 320dpi)은 50:1을 초과하는 전형적인 압축 비율로 G4Fax를 이용하여 손실없이 압축된다.
그룹 4 팩스(G4Fax) 디코더는 2-레벨 데이터를 압축해제하는 것을 맡는다. 2-레벨 데이터는 단일 스폿 컬러(전형적으로는 텍스트 및 라인 그래픽을 위한 블랙) 및 연속톤 데이터(JPEG 디코더에 의해 압축해제된)의 이 후의 디더링에서 사용하기 위한 디더 매트릭스 선택 비트맵으로 제한된다. G4 Fax 디코더의 입력은 외부 DRAM으로부터 독출된 2-레벨 데이터의 2 면이다. G4 Fax 디코더의 출력은 압축해제된 2-레벨 데이터의 2 면이다. 압축해제된 2-레벨 데이터는 프린팅 파이프라인에서의 다음 단계를 위해 하프토너/합성기 유닛(HCU)으로 전달된다. 두개의 2-레벨 버퍼는 G4 Fax 디코더와 HCU 사이에 2-레벨 데이터를 전송하기 위한 수단을 제공한다. 각 압축해제된 2-레벨 층은 두개의 라인 버퍼에 출력된다. 각 버퍼는 예상되는 최대 해상도로 풀 12인치 라인의 도트를 수용할 수 있다. 두개의 라인 버퍼를 가지는 것은 다른 라인이 G4 Fax 디코더에 의해 기록되고 있는 동안 한 라인이 HCU에 의해 독출될 수 있도록 허용한다. 이것은 단일 2-레벨 라인이 전형적으로 1600dpi보다 작고, 따라서 도트 및 라인이라는 양 차원에서 확장되어야 하기때문에 중요하다. 만일 버퍼링이 풀 라인보다 작다면, G4 Fax 디코더는 동일 라인을 수회 디코딩해야 할 것이다(각 출력 600dpi 도트라인마다 한번).
스폿 컬러(1)는 출력 이미지의 단일 컬러 면에 대해 고해상도 도트 데이터를 허용하도록 설계된다. 연속톤 층이 이미지에 대한 적절한 해상도를 제공하는 한편, 스폿 컬러(1)는 텍스트 및 라인 그래픽(전형적으로 검정)과 같은 어플리케이션에 겨냥된 것이다. 텍스트 및 라인 그래픽으로서 이용될 때, 전형적인 압축 비율은 10:1을 넘는다. 스폿 컬러(1)는 최대 인쇄 품질을 위해 1600dpi에 이르는 가변적인 해상도를 허용한다. 그러므로, 두개의 라인 버퍼 각각은 총 2400bytes(12인치×1600dpi=19,200비트)이다.
디더 매트릭스 선택 맵의 해상도는 연속톤 해상도와 이상적으로 매치되어야 한다. 결과적으로 두개의 라인 버퍼의 각각은 480bytes(3840비트)가 되고, 320dpi로 12인치를 저장할 수 있다. 맵이 연속톤 해상도와 매치될 때, 전형적인 압축비율은 50:1을 넘는다.
다음을 지원하기 위해,
* 800dpi 스폿 컬러(1) 층(전형적으로 검정)
* 320dpi 디더 매트릭스 선택 층
압축해제 대역폭은 두번째 동작마다 1페이지를 위한 9.05MB/sec(페이지 폭이 12인치든 8.5인치든 관계없이), 최대 프린터 속도 동작(초당 30,000라인) 동안 12인치 및 8.5인치 각각에 대한 20MB/sec 및 14.2MB/sec일 것이 요구된다. 압축해제된 데이터가 라인 버퍼로 출력되면, G4 Fax 디코더는 한번에 출력 라인 각각으로부터 한 라인을 바로 압축해제할 수 있다.
G4 Fax 디코더는 DRAM 인터페이스를 경유하여 주메모리로부터 직접적으로 정보를 공급받는다. 압축의 양은 외부 DRAM에 대한 대역폭 요구조건을 결정한다. G4 Fax가 손실이 없기 때문에, 이미지의 복잡성은 데이터의 양에 강한 영향을 주고 따 라서 대역폭에 영향을 준다. 전형적으로 800dpi 블랙 텍스트/그래픽 층은 10:1 압축을 초과한다. 그래서 초당 1페이지를 인쇄하기 위해 요구되는 대역폭은 0.78MB/sec이다. 마찬가지로, 전형적인 320dpi 디더 선택 매트릭스는 50:1 이상으로 압축하고, 결과적으로 0.025MB/sec 대역폭이 요구된다. 디더 선택 매트릭스에 대한 320dpi 및 스폿 컬러(1)를 위한 800dpi의 가장 빠른 인쇄 속도 구성은 각각 1.72MB/sec 및 0.056MB/sec의 대역폭을 요구한다. 2MB/sec의 총 대역폭은 DRAM 대역폭을 위해 충분한 정도 이상이어야 한다.
G4 Fax 디코딩 기능은 G4 Fax 디코더 코어의 수단에 의해 실행된다. 폭넓게 다양한 G4 Fax 디코더 코어가 이용될 수 있다. 그것은 요구되는 연산을 수행할 수 있는 충분한 처리 능력과 충분히 빠른 제어기능을 가진 어떠한 코어도 될 수 있다. 그것은 400dpi 팩시밀리 어플리케이션에서 통상적으로 볼 수 있는 정도를 초과하는 런렝스(runlenth)를 처리할 수 있어야 하고, 그래서 수정이 필요하다.
JPEG 압축 알고리즘(ISO/IEC 19018-1:1994, Information technology - Digital compression and coding of continuous-tone still images: Requirements and guidelines, 1994 참조)은 특정된 품질 레벨로 연속톤 이미지를 손실있게 압축한다. 그것은 5:1 이하의 압축 비율로 미세한 이미지 훼손을 가져오고, 10:1 이하의 압축 비율로 무시할 수 있는 이미지 훼손을 가져온다(Wallace, G.K., "The JPEG Still Picture Compression Standard", Communications of the ACM, Vol.34, No.4, 1991년 4월, 30-44페이지). JPEG은 전형적으로 먼저 이미지를 휘도와 색차를 별개의 컬러 채널로 분리하는 컬러 공간으로 변환한다. 이것은 색차 채널이 색차보다 휘도에 상대적으로 더 민감한 인간의 시각체계때문에 상당한 손실없이 서브-샘플되도록 한다. 이 첫번째 단계 후에, 각 컬러 채널은 개별적으로 압축된다. 이미지는 8×8 픽셀 블록으로 나뉜다. 각 블록은 이산 코사인 변환(discrete cosine transform)(DCT)을 통해 주파수 도메인으로 변환된다. 이 변환은 상대적으로 저주파수 계수에서 이미지 에너지를 집중시키는 효과를 가지고 있는데, 이것은 고주파수 계수가 좀더 그대로 양자화되도록 한다. 이 양자화는 JPEG에서 압축의 주요 소스이다. 인접하는 제로(zero) 계수의 유사를 최대화하기 위해 주파수에 따라 계수를 서열화하고 제로의 흐름을 런렝스-인코딩함으로써 더 압축할 수 있다.
CMYK(또는 CMY) 연속톤 층은 평면의 컬러 JPEG 바이트스트림(bytestream)으로 압축된다. 휘도/색차 구분이 테이블 공유의 목적 또는 색차 서브-샘플링 중 어느 하나를 위해 필요한 것으로 되면, CMYK는 YCrCb로 변환되고, Cr 및 Cb는 적절히 서브-샘플된다. JPEG 바이트스트림은 완전하고 필요한 것을 완비하고 있다. 그것은 양자화 및 허프만 테이블을 포함하여 압축해제를 위해 요구되는 모든 데이터를 가지고 있다.
JPEG 디코더는 연속톤 데이터 층의 온-더-플라이(on-the-fly) 압축해제의 실행을 맡는다. JPEG 디코더로의 입력은 연속톤 데이터의 4 면에 이른다. 이것은 전형적으로 CMY 연속톤 이미지를 나타내는 3 면 또는 CMYK 연속톤 이미지를 나타내는 4 면이 될 것이다. 각 컬러 면은, 비록 전형적으로 모든 컬러 면들이 같은 해상도를 가질 것이지만, 각기 다른 해상도일 수 있다. 연속톤 층은 외부 DRAM으로부터 독출된다. JPEG 디코더의 출력은 압축해제된 연속톤 데이터이고, 면으로 분리된다. 압축해제된 연속톤 이미지는 프린팅 파이프라인에서의 다음 단계를 위해 하프토너/합성기 유닛(HCU)(29)으로 전송된다. 4-면 연속톤 버퍼는 JPEG 디코더 및 HCU(29) 사이에서 연속톤 데이터를 전송하기 위한 수단을 제공한다.
압축해제된 연속톤 데이터의 각 컬러 면은 한 세트의 두개의 라인 버퍼(아래 참조)로 출력된다. 각 라인 버퍼는 3840bytes이고, 따라서 320ppi에서 12인치의 단일 컬러 면의 픽셀을 수용할 수 있다. 라인 버퍼는 다른 라인 버퍼가 JPEG 디코더에 의해 기록되는 동안 하나의 라인 버퍼가 HCU에 의해 독출되는 것을 허용한다. 이것은 단일 연속톤 라인이 전형적으로 1600dpi보다 작고, 따라서 도트 및 라인의 양 차원에서 확장되어야 하기 때문에 중요하다. 만일 버퍼링이 풀 라인보다 작으면, JPEG 디코더는 같은 라인을 여러 번(각 출력 600dpi 도트라인에 대해 한번) 디코딩해야 했을 것이다. 여러 가지 해상도가 지원되더라도, 해상도와 유용한 대역폭 사이에는 트레이드오프(tradeoff)가 있다. 해상도와 컬러의 수가 증가함에 따라, 대역폭도 증가할 것이 요구된다. 덧붙여, PEC 칩에 의해 겨냥되는 세그먼트의 수도 대역폭 및 가능한 해상도에 영향을 준다. 연속톤 이미지가 평면 포맷으로 처리되기 때문에, 각 컬러 면이 다른 해상도로 저장될 수 있다(예를 들면, CMY가 K 면보다 더 높은 해상도일 수 있다)는 것에 유의하라. 최고로 지원되는 연속톤 해상도는 1600ppi(프린터의 풀 도트 해상도에 매치하여)이다. 그러나, 12인치 길이의 320ppi 라인에 대한 충분한 연속톤 픽셀을 유지하기 위해 충분한 출력 라인 버퍼 메모리가 있을 뿐이다. 만일 풀 12인치의 출력이 더 높은 연속톤 해상도로 요구된다면, 비록 프린터에서의 최종 출력이 여전히 2-레벨뿐이겠지만, 다중 PEC 칩이 요구될 것이 다. 320ppi에서 4 컬러를 지원하기 위해, 압축해제 대역폭은 두번째 동작마다 1페이지를 위한 9.05MB/sec(페이지 폭이 12인치든 8.5인치든 관계없이), 최대 프린터 속도 동작(초당 30,000라인) 동안 12인치 및 8.5인치 각각에 대한 20MB/sec 및 14.2MB/sec일 것이 요구된다.
JPEG 디코더는 DRAM 인터페이스를 통해 주메모리로부터 직접 정보를 제공받는다. 압축의 양은 외부 DRAM에 대한 대역폭 요구조건을 결정한다. 압축의 레벨이 증가함에 따라, 대역폭은 감소하지만, 최종 출력 이미지의 품질 또한 감소한다. 단일 컬러 면을 위한 DRAM 대역폭은 압축 인수를 출력 대역폭에 적용함으로써 즉시 산출될 수 있다. 예를 들면, 10:1의 압축 인수를 가지는 320ppi의 단일 컬러 면은 초당 1 페이지를 만들어내기 위해 DRAM에 1MB/sec로 액세스(access)하는 것이 요구된다.
JPEG 기능은 JPEG 코어의 수단에 의해 실행된다. 폭넓게 다양한 JPEG 코어가 이용될 수 있다. 그것은 요구되는 연산을 수행할 수 있는 충분한 처리 능력과 충분히 빠른 제어기능을 가진 어떠한 JPEG 코어도 될 수 있다. 예를 들면, BTG X-Match 코어는 140MBytes/sec에 이르는 압축해제 속도를 가지고 있는데, 이것은 최대 프린터 속도(초당 1600dpi로 30,000 라인)에 대해 400ppi에 이르는, 또 1페이지/초의 프린터 속도에 대해 800ppi에 이르는 연속톤 해상도로 4 컬러 면의 압축해제를 허용한다. 코어는 오직 압축해제를 지원하고, 더욱 일반적인 JPEG 압축/해제 코어에 의해 부과되는 요구조건은 감소할 필요가 있다는 것에 유의하라. 코어의 사이즈는 100,000gates를 넘지않는 것이 좋다. 압축해제된 데이터가 라인 버퍼로 출력되면, JPEG 디코더는 한번에 하나씩 컬러 면 각각에 대해 전체 라인을 즉시 압축해제하고, 그래서 라인 도중에 문맥 교환(context switching) 상에 저장하고 JPEG 디코더의 제어를 간소화한다. 4 문맥이 유지되어야 하고(각 컬러 면에 대해 1 문맥), 적합한 JPEG 디코딩 파라미터뿐 아니라 외부 DRAM에서의 현재 어드레스도 포함한다.
도 4에서, 하프토너/합성기 유닛(HCU)(29)은 연속톤(전형적으로 CMYK) 층을 하프토닝하는 기능을 그것은 2-레벨 버젼에 결합시키고, 적합한 하프토닝된 연속톤 층 상에 스폿1 2-레벨 층을 합성한다. 프린터에 K 잉크가 없다면, HCU(29)는 적절하게 CMY 도트에 K를 매핑시킬 수 있다. 그것은 또한 디더 매트릭스 선택 맵에서의 대응하는 값에 기초하여, 픽셀 대 픽셀을 기초로 2개의 디더 매트릭스 사이에서 선택한다. HCU(29)로의 입력은 (JPEG 디코더 유닛으로부터) 버퍼(37)를 통한 확장된 연속톤 층, 버퍼(38)를 통한 확장된 2-레벨 스폿1 층, 전형적으로 버퍼(39)를 통한 연속톤 층과 같은 해상도의 확장된 디더 매트릭스 선택 비트맵, 및 버퍼(40)를 통한 풀 도트 해상도의 태그 데이터이다. HCU(29)는 외부 DRAM(34)로부터 독출되는 두개의 디더 매트릭스를 이용한다. HCU(29)로부터 라인 로더/포맷 유닛(LLFU)(41)으로의 출력은 6 컬러 면에 이르는 프린터 해상도 2-레벨 이미지 라인 세트이다. 전형적으로, 연속톤 층은 CMYK 또는 CMY이고, 2-레벨 스폿1 층은 K이다.
도 5에서는 HCU를 보다 상세하게 나타내었다. 일단 시작되면, HCU는 엔드오브페이지(end-of-page) 조건을 감지할 때까지 또는 제어 레지스터를 통해 명백하게 정지될 때까지 진행한다. HCU의 첫번째 업무는 버퍼 면(42)에서 수신된 모든 데이터를 스케일 유닛(43)과 같은 각 스케일 유닛에서 수평적으로 및 수직적으로 프린 터 해상도로 스케일하는 것이다.
스케일 유닛은 수평적으로 및 수직적으로 프린터 해상도로 연속톤 또는 2-레벨 데이터를 스케일링 하는 수단을 제공한다. 스케일링은 양 차원에서 데이터 값을 정수배하여 복사함으로써 달성된다. 데이터를 스케일하기 위한 프로세스는 해당 기술분야의 통상의 지식을 가진자에게 잘 알려져 있다.
두개의 제어 비트가 마진 유닛(57)에 의해 스케일 유닛(43)에 제공된다: advance dot 및 advance line. advance dot 비트는 상태기(state machine)으로 하여금 같은 도트 데이터의 다중 사례(페이지 마진 및 프린트헤드에서의 오버랩하는 세그먼트를 위한 도트 데이터의 생성에 유용하다)를 발생하도록 허용한다. advance line 비트는 상태기으로 하여금 도트의 특정 라인이 종료되는 때를 제어하고, 이로써 프린터 마진에 따라 데이터의 절단을 허용하도록 한다. 그것은 또한 스케일 유닛이 특별한 end-of-page 로직을 요구하지 않도록 한다. 스케일 유닛으로의 입력은 풀 라인 버퍼이다. 라인은 라인 복사를 통해 수직적 업-스케일(vertical up-scale)에 영향을 주기위해 scale factor만큼 이용되고, 각 라인 내에서, 각 값은 픽셀 복사를 통해 수평적 업-스케일(horizontal up-scale)에 영향을 주기위해 scale factor만큼 이용된다. 일단 입력 라인이 scale factor만큼 이용되면(advance line 비트는 scale factor 배로 설정된다), 어드레스의 입력 버퍼 선택 비트는 토글(toggle)된다(이중 버퍼링). 스케일 유닛을 위한 로직은 스케일 유닛이 어드레스를 생성하기만 하기 때문에 8비트인 경우와 1비트인 경우 동일하다.
각 연속톤 층이 다른 해상도일 수 있으므로, 독립적으로 스케일된다. 버퍼(45)에서의 2-레벨 스폿1 층 및 버퍼(46)에서의 디더 매트릭스 선택 층도 스케일될 필요가 있다. 버퍼(47)에서의 2-레벨 태그 데이터는 정확한 해상도로 구축되므로 스케일될 필요가 없다. 스케일-업된 디더 매트릭스 선택 비트는 디더 매트릭스 액세서 유닛(48)에 의해 두개의 디더 매트릭스에서 단일 8비트 값을 선택하는 데에 이용된다. 8비트 값은 네개의 비교기(44,49,50,51)로 출력되는데, 비교기는 그것을 단순히 특정의 8비트 연속톤 값과 대비한다. 실질적인 디더 매트릭스의 생성은 프린트헤드의 구조에 의존하고, 이를 생성하기 위한 일반적인 프로세스는 해당 기술분야의 전문가에게 잘 알려져 있다. 연속톤 값이 8비트 디더 매트릭스 값보다 크면, 1이 출력된다. 그렇지 않으면, 0이 출력된다. 이들 비트들은 마진 유닛(57)으로부터의 inPage 비트와 52 및 56에서 논리곱된다(특정의 도트가 페이지의 인쇄가능한 영역 내에 있든 그렇지 않든 간에). HCU에서의 마지막 단계는 합성하는 단계이다. 여섯개의 출력 층 각각에 있어서, 각각이 여섯개의 입력을 가지는 유닛(58)과 같은 단일 도트 융합기 유닛이 있다. 각 도트 융합기 유닛으로부터의 단일 출력 비트는 입력 비트들의 모두 또는 그 중 일부의 조합이다. 이것은 스폿 컬러가 (테스트 목적의 적외선을 포함하여) 어떠한 출력 컬러 면에도 위치하도록 허용하고, 검정은 청록색, 자홍색 및 노랑으로 병합되도록 하고(만일 검정 잉크가 프린트헤드에 없다면), 태그 도트 데이터는 가시면에 위치되도록 한다. 고착제 컬러 면은 또한 즉시 생성될 수 있다. 도트 재건 유닛(dot reorg unit :DRU)(59)은 주어진 컬러 면을 위해 생성된 도트 스트림을 취하여 출력이 세그먼트 순서 및 세그먼트 내에서의 도트 순서로 되도록 32비트 정량으로 조직화한다. 오버랩하는 세 그먼트에 대한 도트가 세그먼트 순서로 생성되지 않는다는 사실로 인해 최소한의 재배열가 요구된다.
두개의 제어 비트들이 마진 유닛(57)에 의해 스케일 유닛으로 제공된다: advance dot 및 advance line. advance dot 비트는 상태기(state machine)으로 하여금 같은 도트 데이터의 다중 사례(페이지 마진 및 프린트헤드에서의 오버랩하는 세그먼트를 위한 도트 데이터의 생성에 유용하다)를 발생하도록 허용한다. advance line 비트는 상태기으로 하여금 도트의 특정 라인이 종료되는 때를 제어하고, 이로써 프린터 마진에 따라 데이터의 절단을 허용하도록 한다. 그것은 또한 스케일 유닛이 특별한 end-of-page 로직을 요구하지 않도록 한다.
비교기 유닛은 간소한 8비트 "보다 큰" 비교기를 포함하고 있다. 그것은 실제 프린트헤드에서 잉크를 출력하기 위해 2-레벨 디더 데이터, 스폿1 컬러 및 태그 데이터를 매핑하는 수단을 제공한다. 각 도트 융합기 유닛은 여섯개의 1비트 입력를 받고, 컬러 면을 위한 출력 도트를 나타내는 단일 비트 출력을 생산한다. 출력비트(60)는 입력 비트의 모두 또는 일부의 조합이다. 이것은 스폿 컬러가 (테스트 목적의 적외선을 포함하여) 어떠한 출력 컬러 면에도 위치하도록 허용하고, 검정은 청록색, 자홍색 및 노랑으로 병합되도록 하고(만일 검정 잉크가 프린트헤드에 없다면), 태그 도트 데이터는 가시면에 위치되도록 한다. 고착제를 위한 출력은 모든 입력 비트를 간단히 조합함으로써 생성될 수 있다. 도트 융합기 유닛은 여섯개의 입력 비트에 대한 마스크로서 이용되는 6비트 ColorMask 레지스터(61)를 포함한다. 각 입력 비트는 대응하는 ColorMask 레지스터 비트와 논리곱(AND)되고, 그 결과인 6비트는 최종 출력 비트를 형성하기 위해 함께 논리합(OR)된다.
도 7에서는 주어진 컬러 면에 대한 도트 스트림을 생성하고 그 출력이 세그먼트의 순서 및 세그먼트 내에서의 도트 순서로 되도록 32비트 정량으로 조직화하는 것을 맡고 있는 도트 재건 유닛(DRU)을 보여준다. 오버랩하는 세그먼트에 대한 도트가 세그먼트 순서로 생성되지 않는다는 사실로 인해 최소한의 재배열가 요구된다.
DRU는 32비트 시프트 레지스터, 일반적인 32비트 레지스터, 일반적인 16비트 레지스터를 포함한다. 5비트 카운터는 현재까지 처리된 비트의 수를 추적한다. 디더 매트릭스 액세스 유닛(DMAU)으로부터의 도트 어드밴스 신호는 DRU에게 어떤 비트가 출력되어야 하는지를 지시하는 데에 이용된다.
도 7에서, 레지스터(A)(62)는 매사이클마다 클록된다. 그것은 32개의 가장 최근에 도트 융합기 유닛(DMU)에 의해 생산된 도트를 가지고 있다. 풀 32비트 값은 간소한 5비트 카운터를 경유하여 DRU 상태기(64)에 의해 생산되 WriteEnable 신호의 수단에 의해 매 32사이클마다 레지스터(B)(63)에 복사된다. 레지스터(B)(63)으로부터의 16 기수 비트(1,3,5,7... 비트)는 동일한 WriteEnable 펄스로 레지스터(C)(65)에 복사된다. 그러면, 32비트 멀티플렉서(66)는 상태기으로부터의 2비트에 기초한 아래의 세가지 출력들 사이에서 선택한다.
* 레지스터(B)로부터의 풀 32비트
* 레지스터(A)의 16 우수 비트(0,2,4,6..비트)와 레지스터(B)의 16 우수 비트로 만들어지는 32비트 값. 레지스터(A)로부터의 16 우수 비트는 비트 0-15를 형 성하고, 레지스터(B)로부터의 16 우수 비트는 비트 16-32를 형성한다.
* 레지스터(B)의 16 기수 비트(1,3,5,7..비트)와 레지스터(C)의 16 비트로 만들어지는 32비트 값. 레지스터(C)의 비트는 비트 0-15를 형성하고, 레지스터(B)의 기수 비트는 비트 16-32를 형성한다.
DRU를 위한 상태기은 테이블 1에서 볼 수 있다. 그것은 상태 0에서 시작하여, 매32비트마다 상태를 바꾼다. 32사이클 동안, 단일 noOverlap 비트는 그 32사이클에 대한 모든 dot advance 비트의 논리곱(AND)를 모은다(noOverlap = 사이클 0에 대한 dot davance 및 noOverlap = noOverlap AND 사이클 1-31에 대한 dot advance).
(테이블 1) DRU를 위한 상태기
상태 | NoOverlap | 출력 | Output Valid | 코멘트 | 다음 상태 |
0 | X | B | 0 | 시작 상태 | 1 |
1 | 1 | B | 1 | 정상적인 오버랩없음 | 1 |
1 | 0 | B | 1 | A가 첫번째 오버랩 가짐 | 2 |
2 | X | 우수 A, 우수 B | 1 | A가 두번째 오버랩 가지고, B는 첫번째 오버랩 가짐 | 3 |
3 | X | C, 기수 B | 1 | C가 첫번째 오버랩 가지고, B는 두번째 오버랩 가짐 | 1 |
도 5에서, 마진 유닛(MU)(57)은 디더 매트릭스 액세스 유닛(DMAU)(48)에서부터의 advance dot 및 advance line 신호를 현재 페이지의 페이지 마진에 기초한 일반적인 제어 신호로 변환하는 역할을 맡는다. 그것은 또한 end-of-page 조건을 생성하는 역할도 맡고 있다. MU는 페이지를 가로질러 도트 및 라인의 카운터를 유지한다. 둘 다 페이지의 시작에서는 0으로 설정된다. 도트 카운터는 MU가 DMAU로부터 dot advance 신호를 수신할 때마다 1씩 늘어난다. MU가 line advnace 신호를 DMAU 로부터 수신할 때, 라인 카운터는 증가하고 도트 카운터는 0으로 리셋된다. 각 사이클에서, 현재의 라인 및 도트 값이 페이지의 마진해 대비되고, 이 마진에 기초하여 적절한 출력 dot advance, line advance 및 within margin 신호가 주어진다. DMAU는 HCU에 대한 실질적인 메모리 요구사항만을 포함하고 있다.
도 8에서는 라인 로더/포맷 유닛(LLFU)을 나타낸다. 그것은 HCU로부터 도트 정보를 수신하고, 주어진 프린트 라인에 대한 도트를 적절한 버퍼로 로딩하며(일부는 칩 상에, 일부는 외부 DRAM(34)에), 그들을 프린트헤드에 요구되는 순서로 포맷한다. 도 9에는 외부 인터페이스의 관점에서 LLFU의 상위 레벨 블록 다이어그램이 나타나 있다. LLFU로의 입력(67)은 여섯개의 32비트 단어 및 DataValid 비트이고, 모두 HCU에 의해 생성된다. 출력(68)은 6 컬러의 최대 15 프린트헤드 세그먼트를 나타내는 90비트의 한 세트이다. 얼마나 많은 컬러가 실제 프린트헤드에서 사용되는지에 따라 모든 출력 비트가 유효하지는 않을 수 있다.
상술한 프린트헤드 상의 분사 노즐의 물리적 배치는, 즉 두개의 오프셋 열의 노즐들, 동일한 컬러의 기수 및 우수 도트들이 두개의 다른 라인을 위한 것임을 의미한다. 우수 도트들은 라인 L을 위한 것이고, 기수 도트들은 라인 L-2를 위한 것이다. 아울러, 하나의 컬러와 다른 하나의 컬러의 도트들 사이에는 많은 라인들이 있다. 동일한 도트 위치에 대한 6 컬러 면은 HCU에 의해 한번에 산출되므로, 도트가 적절한 컬러 노즐하에 위치될 때까지 컬러 면 각각을 위한 도트 데이터를 지연시킬 필요가 있다.
각 버퍼 라인의 크기는 프린트헤드의 폭에 의존한다. 단일 PEC는 최대 15 프 린트헤드 세그먼트를 위한 도트들을 생성하므로, 단일 기수 또는 우수 버퍼 라인은 640 도트의 15 세트, 총 9600비트(1200바이트)이다. 예를 들면, 컬러 6 기수 도트를 위해 요구되는 버퍼는 총합이 거의 45KByte가 된다.
필요한 버퍼의 전체 세트는 제조 기술이 가능할 때 PEC 칩 상에 설치될 수 있다. 그렇지 않으면, 그 위의 컬러 2를 위한 버퍼가 외부 DRAM에 저장될 수 있다. 이것은 심지어 미래에 컬러 면 사이의 거리가 변하더라도 PEC가 유효해 질 수 있게 한다. PEC 상의 컬러 1을 위한 우수 도트를 유지하는 것은 사소한 것이다. 왜냐하면 모든 것은 그 특정 도트 라인에 상대적으로 인쇄되기 때문이다(추가적인 라인 버퍼는 불필요하다). 또한, 컬러 1 기수 도트를 버퍼링하기 위해 요구되는 2 하프-라인은 실질적인 DRAM 대역폭을 절감한다. (칩 상의 및 DRAM 내의) 여러 가지 라인 버퍼들은 페이지가 인쇄되기 전에 클린 에지(clean edge)를 가지도록 모두 0으로 프리-로딩(pre-laoding)될 필요가 있다. 페이지의 끝은 HCU에 의해 자동으로 생성되고, 따라서 그것은 클린 에지를 가지게 될 것이다.
도 10에서는 컬러 N OESplit(도 9의 Oesplit(70) 참조)에 관한 블록 다이어그램 및 도 10 및 11에서도 찾아볼 수 있는 도 9에서의 두개의 버퍼 E 및 F(71,72) 각각에 관한 블록 다이어그램을 나타낸다. 버퍼 EF는 도 3에서의 프린트헤드 인터페이스(PHI)(32)에 데이터를 전송하기 위한 이중 버퍼 메카니즘이다. 따라서, 버퍼 E 및 F는 동일한 구조를 가진다. 한 라인의 도트들을 처리하는 동안, 두개의 버퍼 중 하나는 기록되고, 다른 하나는 독축된다. 두개의 버퍼는 논리적으로 PHI로부터의 라인-싱크 신호(line-sync signal)의 수신에 따라 교환된다. 양 버퍼 E 및 F는, 도 11에서 73으로 표시된 컬러 1 서브-버퍼로 나타난 바와 같이, 컬러 당 1 서브-버퍼로, 6개의 서브-버퍼로 구성된다. 각 서브-버퍼의 크기는 2400byte이고, 이것은 세그먼트 당 1280 도트로 15 세그먼트를 유지하기에 충분하다. 메모리는 한번에 32 비트로 액세스된다. 그래서 (10비트의 어드레스를 요구하는) 각 서브-버퍼에 대해 600 어드레스가 있다. 모든 우수 도트들은 각 컬러의 서브-버퍼에서의 기수 도트들 앞에 배치된다. 만일 (15 세그먼트보다 작게 인쇄하기 위해) 사용하지 않는 공간이 있으면, 그것은 각 컬러의 서브-버퍼의 끝에 배치된다. 각 서브-버퍼로부터 실제 사용되는 메모리의 양은 직접적으로 PEC에 의해 실제 어드레스되는 세그먼트의 수에 관계된다. 15 세그먼트 프린트헤드에 있어서, 사용하지 않는 공간없이 1200byte의 기수 도트가 뒤따르는 1200byte의 우수 도트가 있다. 유익하게 이용되는 서브-버퍼의 수는 프린트헤드에서 사용되는 컬러의 수에 직접적으로 관계된다. 지원되는 컬러의 최대 수는 6이다.
버퍼 E 및 F의 각각에 대한 어드레싱 디코딩 회로(adressing decoding circuitry)는 주어진 사이클에서 단일 32비트 액세스가 모든 6 서브-버퍼에서 (모든 6으로부터의 독출 또는 6 중 어느 하나로의 기록 중 하나) 이루어질 수 있도록 되어 있다. 각 컬러 버퍼로부터 독출된 32비트 중 오직 하나의 비트가 총 6 출력 비트를 위해 선택된다. 프로세스가 도 11에 나타나 있다. 어드레스의 15비트는 32비트를 선택하기 위해 사용되는 어드레스의 10비트에 의해 특정 비트의 독출을 허용하고, 어드레스의 5비트는 그 32비트에서 1비트를 고른다. 모든 컬러 서버-버퍼들이 이 논리를 공유하므로, 단일 15비트 어드레스는 컬러 당 1비트, 총 6비트를 내어놓는다. 각 서브-버퍼(73-78)는 각자의 WriteEnable 라인을 가지고, 단일 32비트 값이 주어진 사이클에서 특정 컬러 버퍼에 기록될 수 있도록 허용한다. 각자의 WriteEnable은 단일 WriteEnable 입력과 ColorSelect의 디코딩된 형태를 논리곱(AND)함으로써 생성된다. 라인(79) 상의 32비트의 DataIn은, 오직 하나의 버퍼만이 실제적으로 데이터를 보유(clock in)하므로, 공유된다.
버퍼 E 및 F로부터 독출하기 위한 어드레스 생성은 용이하다. 각 사이클은 특정의 세그먼트에 대한 컬러 당 1비트를 나타내는 6비트를 패치(fetch)하기 위해 사용되는 비트 어드레스를 생성한다. 현재의 비트 어드레스에 640을 더함으로써, 우리는 다음 세그먼트의 등가 도트로 나아간다. 기수 및 우수 도트들이 버퍼에서 나뉘어져 있으므로 우리는 640(1280이 아님)을 더한다. 우리는 이것을, 우수 도트를 나타내는 데이터를 검색하고 이들 비트들을 PHI로 전송하기 위해, NumSegment 번 행한다. NumSegment=15일 때, 비트의 수는 90(15×6비트)이다. 그런 다음, 이 프로세스는 기수 도트를 위해 반복된다. 이 전체 우수/기수 비트 생성 프로세스는 640번 반복되면서, 각 횟수마다 시작 어드레스를 증가시킨다. 그래서 모든 도트 값이 640×2×NumSegment 사이클에서 프린트헤드에 의해 요구되는 순서로 PHI에 전송된다. NumSegment=15일 때, 사이클의 수는 19,200 사이클이다. 프린트헤드에서 사용되는 실제적인 컬러의 수에 관계없이, 6 비트가 주어진 독출 사이클(각 컬러의 버퍼로부터 1비트)에서 생산된다.
또한, 우리는 도 9에서의 90비트 Transfer 레지스터(90)에 기록을 위한 TWriteEnable 제어신호를 생성한다. LLFU가 PHI에 앞서 시작하므로, 우리는 PHI로 부터의 Advance 펄스에 앞서 첫번째 값을 전송하여야 한다. 우리는 또한 첫번째 Advance 펄스를 위한 준비로 다름 값을 생성하여야 한다. 해결책은 첫번째 값을 Numsegments 사이클 후에 Transfer 레지스터로 전송하고, 그런 다음 나중에 NumSegments 사이클을 스톨(stall)하며, 다음 NumSegments 사이클 그룹을 시작하기 위해 Advance 펄스를 대기하는 것이다. 일단 첫번째 Advance 펄스가 도착하면, LLFU는 PHI에 동기화된다.
단일 도트라인을 위한 독출 프로세스가 아래의 의사코드로 나타나 있다.
DoneFirst = FALSE
WantToXfer = FALSE
For DotInSegment0 = 0 to 1279
If (DotInSegment0:bit0 == 0)
CurrAdr = DotInSegment0 (high bits) (puts in range 0 to 639)
EndIf
XfersRemaining = NumSegments
Do
WantToXfer = (XfersRemaining == 0)
TWriteEnable = (WantToXfer AND NOT DoneFirst) OR PHI:ADVANCE
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)
독출 프로세스가 E 또는 F에서 PHI로 데이터를 전송하는 동안, 기록 프로세스는 다른 버퍼에서 다음 도트라인을 준비하고 있다.
E 또는 F에 기촉되는 데이터는 HCU에 의해 생성되는 컬러 1 데이터 및 (DRAM에서 제공되는) 버퍼 D로부터의 컬러 2-6 데이터이다. 컬러 1 데이터는 HCU의 OutputValid 플래그가 설정될 때마다 EF에 기록되고, 컬러 2-6 데이터는 레지스터(C)에서 다른 시간동안 기록된다.
도 9에서의 버퍼 OE1(81)은 컬러 1을 위한 단일 HCU-생성의 연속적인 32 도트 세트를 유지하기 위해 이용된다. 도트들이 페이지에 연속적인 반면, 기수 및 우수 도트들은 다른 시간에 인쇄된다. 버퍼 AB(82)는 2 도트라인씩 컬러 1을 위한 기수 도트 데이터를 지연하기 위한 이중 버퍼 메카니즘이다. 따라서, 버퍼 A 및 B는 동일한 구조를 가진다. 한 라인의 도트를 처리하는 동안, 두개의 버퍼 중 하나는 독출하고 그런 다음 기록한다. 두개의 버퍼는 전체 도트 라인이 처리된 후 논리적으로 전환된다. 단일 비트 플래그 ABSense는 두개의 버퍼 중 어느 것이 독출되고 기록될지를 결정한다.
HCU는 출력 유효 제어 플래그(output valid control flag)가 설정될 때마다 32비트의 컬러 1 데이터를 제공하고, 이 플래그는 첫번째 플래그가 라인으로 보내진 후 32 사이클마다 설정된다. 32비트는 단일 도트 라인을 위한 32도트의 연속적인 세트를 정의한다(16 우수 도트(비트 0,2,4...) 및 16 기수 도트(비트 1,3,5...). 출력 유효 제어 플래그는 OE1 레지스터(81)를 위한 WriteEnable 제어로서 사용된다. 우리는 매 2 OutputValid 신호마다 HCU 데이터를 처리한다. HCU 컬러 1 데이터의 16 우수 도트들은 32비트의 우수 컬러 1 데이터를 만들기 위해 16 우수 비트의 레지스터 OE1과 조합된다. 마찬가지로, HCU 컬러 1 데이터의 16 기수 도트들은 32비트의 기수 컬러 1 데이터를 만들기 위해 16 기수 비트의 레지스터 OE1과 조합된다. 두개의 그룹 중 첫번째 OutputValid 신호를 수신하자마다, 우리는 버퍼 EF 내의 도 11에서의 컬러 1(73)로 기수 데이터를 전송하기 위해 버퍼 AB를 독출한다. 두개의 그룹 중 두번째 OutputValid 신호를 수신하자마다, 우리는 이전에 우리가 독출한 버퍼 AB에서의 같은 위치로 32비트의 기수 데이터를 기록하고, 버퍼 EF 내에서 컬러 1로 32비트의 우수 데이터를 기록한다.
HCU는 OutputValid 제어 플래그가 설정될 때마다 컬러 면 당 32비트의 데이 터를 제공한다. 이것은 어떤 시작 시점 동안을 제외하고는 32 사이클마다 행해진다. 32비트는 단일 도트 라인에 대한 연속적인 세트의 32도트(16 우수 도트(비트 0,2,4...) 및 16 기수 도트(비트 1,3,5...)를 정의한다.
버퍼 OE1(도 10에서의 83)가 컬러 1을 위한 단일 32비트 값을 저장하기 위해 사용되는 반면, 버퍼 OE2-OE6는 각각 컬러 2-6을 위한 단일 32비트 값을 저장하기 위해 사용된다. 컬러 1을 위한 데이터가 컬러 1 기수 도트를 나타내는 32비트와 컬러 1 우수 도트를 나타내는 32비트로 매 64 사이클마다(두개의 OutputValid 플래그 마다 한번씩) 나뉘어지는 것과 같이, 나머지 컬러 면들도 우수 및 기수 도트들로 나뉘어진다.
그러나, 버퍼 EF로 직접 기록되는 대신에, 도트 데이터는 많은 라인들에 의해 지연되고 버퍼 CD(도 9에서의 84)를 경유하여 DRAM에 기록된다. 주어진 라인을 위한 도트들이 DRAM에 기록되는 동안, 이전의 라인을 위한 도트들은 DRAM으로부터 독출되어 버퍼 EF(71,72)에 기록된다. 이 프로세스는 버퍼 EF에 컬러 1을 기록하는 프로세스와 상호 배치되어 행해져야 한다.
OutputValid 플래그가 라인(도 10에서의 85) 상에서 HCU로부터 수신될 때마다, 컬러 N의 32비트가 버퍼 OEN(83)에 기록된다. 매 두번째 OutputValid 플래그마다, 64비트 값이 컬러 버퍼 N(86)에 기록된다. 이것은 모든 컬러 면(2-6)에 대해 병렬적으로 일어난다. 컬러 버퍼 N(86)은 두개의 완전한 세그먼트를 위한 도트들이 저장될 수 있도록 하기 위해 40세트의 64비트(320바이트)를 포함한다. 이것은 이전 의 세그먼트의 데이터(기수 및 우수 도트 모두)를 위한 완전한 세그먼트 생성 시점(20×64=1280사이클)이 DRAM에 기록될 수 있도록 한다. 기록을 위한 어드레스 생성은 바로 이어진다. 라인(87) 상의 ColorNWriteEnable 신호는 매 두번째 OutputValid 플래그마다 주어진다. 어드레스는 0에서 시작하고, 매 두번째 OutputValid 플래그마다 증가하여 39까지 증가한다. 40까지 진행하지 않고, 어드레스는 0으로 리셋되고, 이로써 이중-버퍼링 기법을 제공한다. 이것은 OutputValid 플래그 동안 기록이 일어나지 않는 한 동작하여, 이전의 세그먼트의 데이터가 단일 세그먼트의 데이터를 생성하는 시점에 맞추어 DRAM에 기록될 수 있게 된다. 그 프로세스가 다음의 의사코드로 나타내어진다.
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)
EndIf
EndWhile
독출을 위한 어드레스 생성은 더욱 신중을 요한다. 왜냐하면, DRAM 액세스(독출 및 기록 모두), 버퍼 EF 액세스 및 이로 인한 컬러 1 생성에 대한 타이밍에 구속되기 때문이다. 아래에서 보다 충실히 설명한다.
버퍼 C, D, E, F 및 컬러 N을 위한 어드레스 생성은 모두 DRAM 액세스의 타이밍에 구속되어 있고, 버퍼 E 및 F에 관한 컬러 1 프로세싱과 충돌해서는 안된다. 기본적은 원리는 컬러 N(기수 또는 우수 도트 중 하나)의 단일 세그먼트를 위한 데이터가 버퍼 CD를 경유하여 DRAM으로부터 버퍼 EF로 전송되는 것이다. 일단 데이터가 DRAM으로부터 독출되어지면, 그들 도트들은 ColorBuffer N에서의 값에 기초하여 교체된다. 이것은 기수 및 우수 도트들에서의 각 컬러를 위해 행해진다. 완전한 세그먼트만큼의 도트(64 사이클의 20세트)들이 축적된 후, 프로세스가 다시 시작한다. 일단 주어진 프린트라인에서의 모든 세그먼트를 위한 데이터가 DRAM으로부터 및 DRAM으로 전송되면, 그 컬러의 DRAM 버퍼에 대한 현재의 어드레스가 컬러의 라인을 위한 특정 데이터가 DRAM으로부터 다시 독출될 때까지 올라가서 적절한 수의 라인이 될 것이다. 이 관계에서, DRAM은 FIFO의 형태로 동작한다. 결과적으로 DRAM으로부터 버퍼 D로 컬러 N(기수든 우수든)이 독출되고, 한편으로 컬러 N(동일한 기수/우수로)을 버퍼 C에 복사한다. 버퍼 C로의 데이터 복사는 OutputValid 플래그가 20 전송 동안 발생하는지에 따라 20 또는 21 사이클을 가진다. 일단 양 태스크(task)가 종료되면(전형적으로 DRAM 액세스가 더 느린 태스크가 될 것이다), 프로세스의 두번째 단계가 시작한다. 버퍼 C의 데이터는 DRAM(방금 독출된 것과 동일한 위치)에 기록되고, 버퍼 D의 데이터가 버퍼 EF에 복사된다(다시, 컬러 1 데이터가 전송되고 있는 중이기 때문에 OutputValid 플래그가 설정되어 있는 동안 버퍼 EF로 전송되는 컬러 N 데이터는 없다). 양 태스크가 종료된 때, 동일한 프로세스가 다른 컬러 N(기수든 우수든)에 대해 일어나고, 그 다음 남은 컬러 각각에 대해 일어난다. 전체 이중 프로세스가 10회 일어난다. 그런 다음, DRAM에서의 현재 라인 각각을 위한 어드레스가 시작할 다음 라인의 프로세싱을 위해 업데이트된다.
대역폭에 있어서, 도트 데이터 버퍼를 위한 DRAM 액세스는 PEC로부터의 모든 DRAM 액세스의 대부분을 소비한다. 각 프린트 라인에 대해, 우리는 컬러 2-6을 위한 전체 도트 라인을 독출하고, 컬러 2-6을 위한 전체 도트 라인을 기록한다. 최대 15 세그먼트에 대해, 이것은 프린트 라인 당 2×5×15×1280비트=192,000비트(24,000바이트)와 같다. 가장 빠른 인쇄 시스템(초당 30,000라인)에 대해, 이것은 687MB/sec와 같다. 두번째 인쇄 당 1페이지에 대해, 요구되는 대역폭은 312MB/sec이다. 대역폭이 너무 높기 때문에, DRAM의 각 컬러에 대한 여러가지 하프라인의 어드레스는 사용되는 메모리 타입에 따라 최적화되 어야 한다. RDRAM 메모리 세스템을 예로 들면, 첫번째 하프라인 버퍼는 1Kbyte 한계까지 각 컬러에 대해 DRAM 액세스 상의 페이지-히트(page-hit)를 최대화하기 위해 정렬된다. 여러가지 세그먼트가 처리됨에 따라, 만일 다음 세그먼트의 시작이 1Kbyte 페이지 내에서 바이트 960에 정렬되려고 했을 때 640비트 액세스가 두 페이지에 걸쳐야 하는 것이 보장될 필요가 있다. 그러므로, 이 경우를 위해 가변적인 DRAMMaxVal이 체크를 위해 이용되고, 만일 그것이 발생하면, 어드레스가 페이지 정렬될 다음 하프라인 버퍼를 위해 반올림된다. 결과적으로 13 세그먼트 당 64바이트가 낭비될 뿐이지만, 단일 페이지 내에서 완전하게 640비트 액세스한다는 장점을 가진다.
어드레스 생성 프로세스는 20×32비트 기록을 수반하는 20×32비트 독출의 10 세트만큼의 NumSegmanets로서 간주되어질 수 있고, 그것은 아래의 의사코드로 나타내어 질 수 있다.
EFStartAdr = 0
Do NumSegments times:
For CurrColor = 0 to MaxHalfColors
DRAMStartAddress = ColorCurrAdr[CurrColor]
While reading 640 bits from DRAMStartAddress into D(>= 20 cycles)
ColorNAdr = 0
While (ColorNAdr != 20)
If (NOT HCU_OutputValid)
Transfer ColorNBuffer[ColorNAdr|CurrColor_bit0] to C[ColorNAdr]
ColorNAdr = ColorNAdr + 1
EndIf
EndWhile
EndWhile - wait until read has finished
While writing 640 bits from C into DRAMStartAddress (>=20 cycles)
ColorNAdr = 0
EFAdr = EFStartAdr
While (ColorNAdr != 20)
If (NOT HCU_OutputValid)
Transfer D[ColorNAdr] to EF[CurrColor|EFAdr]
If ((ColorNAdr == 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 to next 1KByte page
Else
ColorCurrAdr[currColor] = DRAMStartAddress + 640 bits
EndIf
If (Segment == maxSegments)
If (ColorCurrRow[CurrColor] == ColorMaxRow[CurrColor])
ColorCurrRow[currColor] = ColorStartRow[currColor]
ColorCurrAdr[currColor] = ColorStartAdr[currColor]
Else
ColorStartRow[currColor] = ColorCurrRow[currColor] + 1
EndIf
EndIf
EndFor
EndDo
Wait until next Advance signal from PHI
MaxHalfColors 레지스터가 컬러 1을 포함하지 않고 별개로 취급되는 기수 및 우수 컬러에 있어서 컬러의 수보다 하나 적다. 예를 들면, 표준 6 컬러 프린팅 시 스템에 있어서 10개(기수 및 우수로 컬러 2-6)가 있고, 그래서 MaxHalfColors는 9로 설정되어야 한다.
LLFU는 프린트헤드 인터페이스(PHI)(32)를 위한 첫번째 180비트의 데이터를 준비하기 위해 2NumSegments 사이클을 요구한다. 결과적으로, 프린트헤드는 시작되어야 하고, 첫번째 LineSync 펄스는 LLFU가 시작한 후 이 기간의 시간을 발생시켜야 한다. 이것은 초기의 Transfer 값이 유효하게 되고, 다음의 90비트 값이 Transfer 레지스터에 로딩될 준비가 되도록 한다.
프린트헤드 인터페이스(PHI)(32)는 프로세서가 프린트헤드에 인쇄될 도트를 로딩하고 실제의 도트 인쇄 프로세스를 제어할 수단이다. 그것은 LLFU로부터 입력을 받고, 프린트헤드로 데이터를 출력한다. PHI는 여러가지 프린트헤드 길이 및 포맷을 처리할 수 있다. 폭넓은 동작 주문생산(customization)의 측면에서, PHI는 테이블 33에 따라 파라미터화된다.
(테이블 33) 기본 프린팅 파라미터
이름 | 기술(description) | 범위 |
MaxColors | 프린트헤드에 컬러 없음 | 1-6 |
SegmentsPerXfer | 각 전송에 기록되는 세그먼트 없음. 가장 큰 세그먼트 그룹에서의 세그먼트의 수와 같음. | 1-8 |
SegmentGroups | 프린트헤드에 세그먼트 그룹 없음. | 1-2 |
PHI의 내부 구조는 최대 6 컬러, 각 전송 당 8 세그먼트, 최대 6 컬러 및 최대 2 세그먼트 그룹을 허용한다. 이것은 풀 블리드(full bleed)에서 A4/문자를 인쇄할 수 있는 15 세그먼트(8.5인치) 프린터를 위해 충분하다. 다중 PEC는 필요에 따라 더 폭넓은 프린트를 생산하기 위해 함께 연결될 수 있다.
프린트헤드 인터페이스(PHI)는 다음을 포함한다.
* 스텝퍼 모터뿐 아니라 (병렬(side-by-side) 인쇄 및 앞/뒤 인쇄를 허용하는) 다중 PEC 칩을 위한 동기화 신호를 제공하는 LineSyncGen 유닛(LSGU).
* 데이터를 멤젯(Memjet) 프린트헤드로 전송하는 멤젯 인터페이스(MJI).
도 12에서는 프린트헤드 인터페이스(PHI)(32)의 내부 구조가 나타나 있다. PHI에서는 두개의 LSGU(89,90)가 있다. 제1 LSGU(90)는 LineSync0(LS0)를 생산하는데, 이것은 모든 동기된 칩들에서 멤젯 인터페이스(MJI)를 제어하기 위해 사용된다. 제2 LSGU(89)는 페이퍼 구동 스텝퍼 모터를 펄스하기 위해 사용되는 LineSync1(LS1)을 생산한다.
칩(91) 상의 마스터/슬레이브 핀은 마스터/슬레이브 관계를 통해 병렬 인쇄 및 앞/뒤 인쇄 등을 위해 함께 연결될 수 있도록 한다. 마스터/슬레이브 핀이 VDD에 접속된 때, 그 칩은 마스터로 간주되고, LineSyncGen 유닛(90)에 의해 생성된 LineSync 펄스는 두개의 tri-state enables(92)를 통해 모든 칩에 의해 공유되는 두개의 tri-state LineSync 공통라인 LineSync0 상에 활성화된다. 마스터/슬레이브 핀이 GND에 접속된 때, 그 칩은 슬레이브로 간주되고, LineSyncGen 유닛(89,90)에 의해 생성된 LineSync 펄스는 LineSync 라인 상에 활성화되지 않는다. 이런 식으로, 마스터 칩의 LineSync 펄스는 모든 연결된 칩 상의 모든 PHI에 의해 사용된다.
LineSyncGen 유닛(LSGU)(89,90)은 페이지를 인쇄하기 위해 요구되는 동기화 펄스를 생성하는 것을 맡는다. 각 LSGU는 라인 동기화를 화성화하기 위한 외부 LineSync 신호를 생산한다. LGSU 내부의 생성기는 'go'라고 할 때 LineSync 펄스를 생성하고, 'stop'이라고 할 때까지 그만큼의 사이클마다 생성한다. LineSync 펄스는 다음 라인의 시작을 정의한다. LineSync펄스 사이의 사이클의 정확한 수는 CyclesBetweenPulses 레지스터(생성기 당 하나)에 의해 결정된다. 그것은 적어도 한 라인이 인쇄하고 다른 라인이 로딩하기에 충분한 길이를 가져야 하지만, 필요에 따라 더 길어질 수 있다(예를 들면, 페이퍼 이송 회로의 특별한 요구조건을 수용하기 위해). 만일 CyclesBetweenPulses 레지스터가 라인 프린트 시간보다 작은 수로 설정되면, 그 페이지는 각 LineSync 펄스가 특정 라인이 인쇄를 종료하기 전에 도착할 것이기 때문에 적절히 인쇄되지 않을 것이다.
다음의 인터페이스 레지스터는 LSGU에 포함되어 있다.
(테이블 34) LineSyncGen 유닛 레지스터
레지스터 이름 | 기술(description) |
CyclesBetweenPulse | 하나의 LineSync 펄스를 생성하는 것과 그 다음 사이의 대기를 위한 사이클의 수 |
Go | LSGU가 현재 LineSync 펄스를 생성하고 있는지 그렇지 않은지를 제어. 이 레지스터에 1이 기록되면 LineSync 펄스를 생성하고, CyclesBetweenPulses를 CyclesRemaining로 전송하며, 카운트다운을 시작한다. CyclesRemaining가 0이 되면, 다른 LineSync 펄스가 생성되고, CyclesBetweenPulses는 CyclesRemaining로 전송되며, 카운트다운은 다시 시작된다. 이 레지스터에 0이 기록되면, 레지스터는 카운트다운을 멈추고 더이상의 LineSync 펄스는 생성되지 않는다. |
CyclesRemaining | 다음 LineSync 펄스가 생성되기까지 남아있는 사이클의 수를 포함하는 상태 레지스터. |
LineSync 펄스는 LGSU로부터 직접적으로 이용되지는 않는다. LineSync0 퍼스는 tri-state LineSync 라인(97) 상으로 오직 마스터/슬레이브 핀(91)이 마스터로 설정된 때만 활성화된다. 결과적으로, LineSync 펄스는 마스터 PEC에 의해 생성되 는 형태로 이용될 뿐이다(슬레이브 PEC에 의해 생성되는 펄스는 무시된다).
멤젯 인터페이스(MJI)(93)는 멤젯 프린트헤드(94)에 데이터를 전송하고, 멤젯 프린트헤드에 언제 다음 라인의 데이터의 인쇄를 시작할지를 알려준다. 또한 그것은 특정된 세그먼트로부터 피드백을 활성화하기 위해 이용된다. 멤젯 프린트헤드(95) 그 자체는, 도 3에서의 I2C 직렬 인터페이스(36)를 통해 프로그램된 프로파일을 배출하면서, 그 노즐들의 분사 순서를 제어하는 것을 맡는다. MJI는 섹션 18.1에서 기술된 프린트헤드 로딩 순서를 따르는 상태기를 포함하고, 그것은 예열 사이클 및 클리닝 사이클을 위한 기능을 포함할 수 있다. 각 컬러에 대한 도트 카운트는 또한 MJI(아래 참조)에 의해 유지된다.
MJI는 2 데이터 소스의 선택으로부터 프린트헤드로 데이터를 로딩한다.
* 모든 1들. 이것은 모든 노즐들이 차후의 프린트 사이클 동안 분사할 것임을 의미하고, 예열 또는 클리닝 사이클을 위한 프린트헤드의 로딩을 위한 표준 메카니즘이다.
* LLFU의 Transfer 레지스터 내에 있는 90비트 입력으로부터. 이것은 이미지 인쇄의 표준 수단이다. 첫번째 전송에서, 첫번째 48비트는 프린트헤드로 전송되고, 두번째 전송에서 마지막 42비트가 탑(top) 6 비트 0를 가지고 프린트헤드로 전송된다. 일단 모든 90비트가 전송되면, 1비트 'Advance' 제어 펄스가 LLFU로 전송된다.
MJI는 페이지에 대해 얼마나 많은 라인을 인쇄하여야 하는지를 알고 있다. MJI가 'go'로 지시될 때, 그것은 첫번째 라인을 시작하기 전에 (프린트헤드로의 NPSync 펄스를 통해) LineSync 펄스를 기다린다. 일단 라인 로딩/프린팅을 종료하면, 그것은 다음 라인을 시작하기 전에 다음 LineSync 펄스까지 기다린다. MJI는 일단 특정된 수의 라인이 로딩/인쇄되면 멈추고, 더이상의 LineSync 펄스는 무시한다. 그러므로, MJI는 LLFU(31)(도 3 및 4 참조)(96), LineSync0(97)(모든 동기화된 칩 간에 공유된), 및 외부 멤젯 프린트헤드(95)에 직접적으로 연결되어 있다. MJI는 LLFU로부터 90비트의 데이터를 받아들인다. 이 90비트 중에, 오직 세그먼트의 수 및 컬러의 수에 대응하는 비트만이 유효하게 될 것이다. MJI의 상태기는 어느 비트가 유효하고 어느 비트가 유효하지 않은지에 관계없다-그것은 단지 비트를 프린트헤드로 넘겨줄 뿐이다. MJI로부터 나오는 데이터 라인과 제어 신호는 아래에 기술된 바와 같이 칩의 핀아웃(pinouts)에 연결되어 있다.
MJI는 최대 6 컬러를 포함하여 최대 2 세그먼트 그룹에 전송 당 최대 8 세그먼트로 클록된 프린트헤드에 많은 연결을 가진다. 테이블 35는 MJI에 관해 입력 및 출력의 의미를 가지고 연결을 리스트로 나타낸 것이다. 이름은 프린트헤드 상의 핀 연결에 대응한다.
(테이블 35) 멤젯 인터페이스 연결
이름 | #핀 | I/O | 기술 |
D1[0-7] | 8 | O | 세그먼트 0-7의 D1 시프트 레지스터로 출력 |
D2[0-7] | 8 | O | 세그먼트 0-7의 D1 시프트 레지스터로 출력 |
D3[0-7] | 8 | O | 세그먼트 0-7의 D3 시프트 레지스터로 출력 |
D4[0-7] | 8 | O | 세그먼트 0-7의 D4 시프트 레지스터로 출력 |
D5[0-7] | 8 | O | 세그먼트 0-7의 D5 시프트 레지스터로 출력 |
D6[0-7] | 8 | O | 세그먼트 0-7의 D6 시프트 레지스터로 출력 |
SClk[1-2] | 2 | O | SClk[N] 상의 펄스(ShiftRegisterClock)가 D1[0-7], D2[0-7], D3[0-7], D4[0-7], D5[0-7] 및 D6[0-7]로부터 프린트헤드상의 세그먼트 그룹 N으로 현재 값을 로딩한다.. |
Ten | 1 | O | 시프트 레지스터로부터 프린트헤드의 내부 NozzleEnable 비트로 데이터의 병렬 전송. |
CCEn[1-2] | 2 | O | D1[n] 상의 데이터와 논리곱(AND)된 CCEn[N] 상의 펄스가 프린트헤드의 세그먼트 그룹 N의 세그먼트 n을 위한 센스라인을 활성화한다. |
PHSense | 1 | I | 프린트헤드 센스(온도, 전압, 저항 등) |
Reset | 1 | O | 프린트헤드를 리셋 |
총합 | 55 |
MJI는 프린트헤드로부터 분사된 각 컬러의 도트의 수의 카운트를 유지한다. 각 컬러의 도트 카운트는 32비트 값이고, 각각 프로세서 제어 하에 클리어된다. 32비트 길이로, 각 도트 카운트는 최대 178인치×12인치 페이지의 도트 카운트를 수용할 수 있다(비록, 전형적인 사용에서, 도트 카운트는 각 페이지 또는 하프-페이지 후에 독출되고 클리어될 것이지만). 도트 카운트는 언제 잉크 카트리지가 잉크를 다 써버릴지를 미리 알려주기 위해 QA 칩을 업데이트하기 위해 프로세서에 의해 이용된다. 프로세서는 QA 칩으로부터 각 컬러의 카트리지에 있는 잉크의 양을 안다. 드롭의 수를 카운팅하는 것은 잉크 센서에 대한 필요성을 제거하고, 잉크 채널이 말라버리는 것을 방지한다. 업데이트된 드롭 카운트는 각 페이지 후에 QA 칩에 기록된다. 새로운 페이지는 충분한 잉크가 남지 않으면 인쇄되지 않을 것이고, 사용자로 하여금 다시 인쇄해야할 불필요한 절반만 인쇄된 페이지를 가지지 않도록 한다.
도 13에서는 컬러 N에 대한 도트 카운터의 레이아웃을 보여준다. 모든 6 도트 카운터들은 바람직하게는 구조상 동일하다. 도트 카운터는 컬러 N 데이터(98)를 HCU로부터 받아 4 라인 인코더(99)로의 15 라인에 준다. 인코더(99)의 4 라인 출력은 가산기(100) 및 102dptj 32비트 카운트를 출력하는 Color N Dot Count(101)로 간다. 카운터(101)는 라인(103) 상의 비트에 의해 클리어될 수 있다. 카운터(101)의 로딩은 104 상의 비트에 의해 클록된다.
프로세서는 레지스터 세트를 통해 MJI와 통신한다. 레지스터들은 프로세서가 프린트 진행에 관한 피드백을 수신할 뿐 아니라 프린트를 파라미터화할 수 있도록 한다. 다음의 레지스터들은 MJI에 포함되어 있다.
(테이블 36) 멤젯 인터페이스 레지스터
레지스터 이름 | 기술 |
프린트 파라미터 | |
SegmentsPerXfer | 각 전송에 기록할 세그먼트의 수. 이것은 또한 각 전송 간에 기다릴 사이클의 수와 같다(다음 Advance 펄스를 생성하기 전에). 각 전송은 MaxColors×SegmentsPerXfer 유효 비트. |
SegmentGroups | 프린트헤드에서의 세그먼트 그룹의 수. 이것은 단일 도트가 각 프린트헤드의 세그먼트에 기록되기 전에 SegmentsPerXfer 사이클이 경과해야 하는 시간의 수와 같다. MJI는 라인을 위한 모든 데이터를 프린트헤드로 완전하게 전송하기 위해 1280번 이것을 행한다. |
NumLines | 수행할 로딩/프린트 사이클의 수 |
프린트 모니터링 (프로세서의 관점에서 독출만) | |
Status | 멤젯 인터페이스의 상태 레지스터 |
LinesRemaining | 인쇄되어야 할 남은 라인들의 수. Go=1인 동안만 유효. 시작 값은 NumLines이고 0으로 다운 카운트한다. |
TransfersRemaining | 프린트헤드가 현재의 라인에 대해 로딩되는 것으로 간주되기 전에 남은 SegmentGroups 전송 세트의 수. 1280에서 시작하고 0으로 다운 카운트한다. Go=1인 동안만 유효. |
SegGroupsRemaining | 각 세그먼트에 1 도트의 전송의 현재의 세트에서 남아있는 세그먼트 그룹의 수. SegmentGroups에서 시작하고 0으로 다운 카운트한다. Go=1인 동안만 유효. |
SenseSegment | 차후의 피드백 CCEn 펄스 동안 D1 라인 상에 위치할 8비트 값. 8비트 중 오직 하나만 (최대) 8 세그먼트 중 하나에 대응하여 설정되어야 한다. 세그먼트 그룹 중 감지할 것을 결정하는 방법을 위해 SenseSelect 참조. |
SetAllNozzles | 0이 아니면, LoadDots 프로세스가 모두 1인 동안 프린트헤드에 기록되는 48비트 값으로서, 모든 노즐이 차후의 PrintDots 프로세스동안 분사할 것이다. 이것은 예열 및 클리닝 사이클 동안 사용된다. 만일 0이면, 프린트헤드에 기록된 48비트 값은 LLFU로부터 온다. 이것은 일반적인 이미지의 실제 인쇄 동안의 경우이다. |
동작 | |
Reset | 이 레지스터에의 기록은 MJI를 리셋하고, 로딩 또는 인쇄 프로세스를 중지하며, 모든 레지스터에 0으로 로딩한다. MJI 또한 RESET 라인 상의 펄스를 프린트헤드에 연결되도록 한다. |
SenseSelect | 이 레지스터에 어떤 값의 기록은 Status 레지스터의 FeddbackValid 비트를 클리어하고, 남은 동작은 LoadingDots 및 PrintingDots 상태 비트에서의 값에 의존한다. 만일 상태 비트들 중 어느 하나가 설정되며, Feedback 비트는 클리어되고 더이상 아무것도 행해지지 않는다. 만일 양 상태 비트가 비어있으면, 펄스가 동시에 양 CCEn 라인 상에 모든 Dn 비트를 0으로 하여 주어진다. 이것은 존재하는 피드백을 모두 중지시킨다. SenseSelect 레지스터에 기록된 두개의 저차원(low-order) 비트에 따라, SenseSegment 레지스터에 따라 설정된 D1 비트를 가지고 펄스가 CCEn1 또는 CCEn2 상에 주어진다. 일단 센스 라인이 테스트되어 지면, 그 값은 PHSense 레지스터에 보관되고, Status 레지스터의 Feedback 비트가 설정된다. |
Go | 이 비트에 1이 기록되면, LoadDots/PrintDots 사이클을 시작하는데, 이것은 첫번째 LineSync 펄스의 기다리기 시작한다. 모든 NumLines 라인이 인쇄되고, 각 라인은 LineSync 펄스의 수신 후에 로딩/인쇄된다. 각 라인의 로딩은 SegmentGroups 48비트 전송으로 구성되고, 각 라인이 인쇄됨에 따라, LinesRemaining는 감소하고, TransfersRemaining는 SegmentGroups와 함께 재로딩되며, NpSync 펄스가 프린트헤드에 주어딪ㄴ다. 상태 레지스터는 프린트 상태 정보를 포함한다. NumLines를 완료하자마다, 로딩/인쇄 프로세스는 중지하고, Go 비트는 클리어되며, 더이상의 LineSync 펄스는 무시된다. 최종 프린트 사이클 동안, 아무 것도 프린트헤드로 로딩되지 않는다. 이 비트에 0이 기록되면, 프린트 프로세스는 중지하지만, 다른 레지스터를 클리어하지는 않는다. |
ClearCounts | 이 레지스터에의 기록은, 만일 비트 0,1,2,3,4,5 또는 6이 각각 설정되면, Color1Dotcout, Color2Dotcout, Color3Dotcout, Color4Dotcout, Color5Dotcout 및 Color6Dotcout 레지스터를 클리어한다. 결과적으로 0의 기록은 아무런 효과가 없다. |
피드백 | |
PHSense | 세그먼트 SenseSegment로 전송된 마지막 CCEn 펄스로부터 프린트헤드의 센스의 독출만 가능한 피드백. 이것은 Status 레지스터의 FeedbackValid 비트가 설정된 경우에만 유효하다. |
Color1DotCount | 프린트헤드로 전송된 컬러 1 도트의 독출만 가능한 32비트 카운트. |
Color2DotCount | 프린트헤드로 전송된 컬러 2 도트의 독출만 가능한 32비트 카운트. |
Color3DotCount | 프린트헤드로 전송된 컬러 3 도트의 독출만 가능한 32비트 카운트. |
Color4DotCount | 프린트헤드로 전송된 컬러 4 도트의 독출만 가능한 32비트 카운트. |
Color5DotCount | 프린트헤드로 전송된 컬러 5 도트의 독출만 가능한 32비트 카운트. |
Color6DotCount | 프린트헤드로 전송된 컬러 6 도트의 독출만 가능한 32비트 카운트. |
MJI의 상태 레지스터(Status register)는 다음과 같은 비트 해석을 가지는 16비트 레지스터이다.
(테이블 37) MJI 상태 레지스터
이름 | 비트 | 기술 |
LoadingDots | 1 | 만일 설정되면, MJI는 TransfersRemaining에서 전송되어야 할 남은 도트의 수를 가지고 도트들을 현재 로딩하고 있다. 만일 클리어하면, MJI는 현재 도트를 로딩하지 않고 있다. |
PrintingDots | 1 | 만일 설정되면, MJI는 현재 도트를 인쇄하고 있다. 만일 클리어하면, MJI는 현재 도트를 인쇄하고 있지 않다. |
FeedbackValid | 1 | 이 비트는 피드백 값들(Tsense, Vsense, Rsense, 및 Wsense)이 유효한 경우에 설정된다. |
Reserved | 13 |
다음의 의사코드는 단일 라인에 대해 프린트헤드를 로딩하기 위해 요구되는 로직을 보여준다. 로딩은 오직 LineSync 펄스가 도작한 후에만 시작한다는 것에 유의하라. 이것은 라인에 대한 데이터가 LLFU에 의해 준비되어 프린트헤드로의 첫번째 전송을 위해 유효하다는 것을 보장한다.
Wait for LineSync
For TransfersRemaining = 1280 to 0
For I = 0 to SegmentGroups
If (SetAllNozzles)
Set all Dn lines to be 1
Else
If (I = 0)
Place first 48 bits of LLFU's 90 bit Transfer register on 48 Dn lines
Else
Place last 42 bits of LLFU's 90 bit Transfer register on 48 Dn lines
EndIf
Pulse SClk
Wait SegmentsPerXfer cycles
Send ADVANCE signal
EndFor
EndFor
클리닝 및 예열 사이클은 MJI 내의 적절한 레지스터를 설정하고 프린트헤드의 펄스 프로파일 분사를 프로그래밍함으로써 간단하게 달성된다.
* SetAllNozzles=1
* 펄스 프로파일의 분사를 낮은 기간(예열 모드의 경우) 또는 클리닝 모드를 위한 적절한 드롭 분사 기간 중 어느 하나로 설정.
* 노즐이 분사하여야 하는 횟수로 NumLines를 설정.
* Go 비트를 설정한 후, 프린트 사이클이 완료된 때 클리어되기를 기다린다.
또한, LSGU는 올바른 주파수로 LineSync 펄스를 전송하도록 프로그램되어야 한다.
명세서 전반에 걸쳐 어느 하나의 실시예 또는 특정한 특징의 집합으로 본 발명을 한정하지 않고, 본 발명의 바람직한 실시예를 기술하는 것이 목적이다. 해당 기술분야의 기술을 가진 자는 특정 실시예로부터 변경을 가할 수도 있을 것이지만, 본 발명의 권리범위 내에 있다.
Claims (11)
- 잉크 드롭형 프린트헤드를 구동하기 위해 다른 프린트 컨트롤러와 결합하여 구성되는 프린트 컨트롤러로서,압축된 페이지 데이터를 수신하기 위한 인터페이스와;상기 수신된 압축된 페이지 데이터에서 압축된 이미지 면을 디코딩하기 위한 이미지 디코더와;상기 디코딩된 이미지 면의 각 스트립을 합성하기 위한 합성기와;상기 합성된 스트립을 프린트헤드로 출력하기 위한 프린트헤드 인터페이스를 포함하여 구성되고,상기 프린트헤드 인터페이스는,프린트헤드 포맷된 데이터를 출력하는 멀티-세그먼트 프린트헤드와;상기 프린트헤드에서 각자의 스티립들을 동기화하여 프린트 컨트롤러들을 결합하기 위한 동기 신호를 출력하는 동기 신호 발생기를 포함하는 것을 특징으로 하는 프린트 컨트롤러.
- 제 1 항에 있어서,상기 프린트헤드 인터페이스는 그 자신의 동기 신호를 모든 프린트 컨트롤러에 대한 마스터 컨트롤러로서 받아들이거나 다른 프린트헤드 컨트롤러의 동기 신호를 슬레이브로서 받아들이는 것을 특징으로 하는 프린트 컨트롤러.
- 제 2 항에 있어서,상기 프린트헤드 인터페이스는 입력을 포함하고, 그 입력에서 상기 프린트 컨트롤러가 마스터 컨트롤러인지 슬레이브인지를 결정하는 신호가 있는 것을 특징으로 하는 프린트 컨트롤러.
- 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,상기 합성기는 이미지의 스트립을 위한 프린트 데이터를 생성하기 위해 구성된 마진 유닛(margin unit)의 제어하에 입력 이미지 면을 스케일링하는 것을 특징으로 하는 프린트 컨트롤러.
- 제 1 항에 있어서,태그 이미지 면의 각 스트립을 연산하는 태그 인코더를 더 구비하는 것을 특징으로 하는 프린트 컨트롤러.
- 잉크 드롭형 프린트헤드를 구동하기 위해 다른 프린트 컨트롤러와 결합하여 구성되는 프린트 컨트롤러로서,수신된 압축된 페이지 데이터에서 압축된 연속톤 이미지 면을 디코딩하기 위한 연속톤 이미지 디코더와;수신된 압축된 페이지 데이터에서 압축된 2-레벨 이미지 면 및 디더 데이터를 디코딩하기 위한 2-레벨 디코더와;상기 프린트헤드에 제공될 잉크의 종류와 함께 이미지 면의 통합에 영향을 주기 위해 컬러 마스트에 의해 제어되는 도트 융합기 유닛(dot merger unit)을 포함하여 상기 디코딩된 이미지 면들의 각 스트립을 합성하기 위한 합성기와;프린트헤드에 합성된 스트립을 출력하기 위한 프린트헤드 인터페이스를 포함하여 구성되고,상기 프린트헤드 인터페이스는,프린트헤드 포맷된 데이터를 출력하는 멀티-세그먼트 프린트헤드와;상기 프린트헤드에서 각자의 스티립들을 동기화하여 프린트 컨트롤러들을 결합하기 위한 동기 신호를 출력하는 동기 신호 발생기를 포함하는 것을 특징으로 하는 프린트 컨트롤러.
- 제 6 항에 있어서,상기 합성기는 스트립에서 프린트 데이터를 생성하기 위해 합성과정동안 각 이미지 면에 대해 마진 데이터(margin data)를 적용하는 마진 유닛을 포함하는 것을 특징으로 하는 프린트 컨트롤러.
- 다중 프린트 컨트롤러에 의해 구동되는 프린트헤드를 구비한 잉크 드롭형 프린터로서,각 프린트 컨트롤러는,페이지 데이터를 수신하기 위한 인터페이스와;상기 수신된 압축된 페이지 데이터에서 압축된 이미지 면들을 디코딩하기 위한 이미지 디코더와;상기 페이지 데이터의 스트립을 합성하기 위한 합성기와;상기 프린트헤드의 세그먼트에 합성된 스트립을 출력하기 위한 프린트헤드 인터페이스를 포함하여 구성되고,하나의 프린트헤드 인터페이스가 더 빠른 속도, 더 높은 입력 해상도, 더 높은 수의 컬러면, 더 높은 출력 해상도 또는 더 넓은 포맷 중 어느 하나 또는 그 이상의 조건으로 프린트헤드를 구동하기 위해 상기 프린트 컨트롤러를 동기화하기 위한 동기 신호를 생성하는 것을 특징으로 하는 잉크 드롭형 프린터.
- 제 8 항에 있어서,상기 프린트헤드 인터페이스는 상기 프린트헤드 인터페이스는 그 자신의 동기 신호를 모든 프린트 컨트롤러에 대한 마스터 컨트롤러로서 받아들이거나 다른 프린트헤드 컨트롤러의 동기 신호를 슬레이브로서 받아들이는 것을 특징으로 하는 프린트 컨트롤러.
- 제 9 항에 있어서,상기 프린트헤드 인터페이스는 입력을 포함하고, 그 입력에서 상기 프린트 컨트롤러가 마스터 컨트롤로인지 슬레이브인지를 결정하는 신호가 있는 것을 특징으로 하는 프린트 컨트롤러.
- 다중 프린트 컨트롤러에 의해 구동되는 프린트헤드를 구비한 잉크 드롭형 프린터로서, 상기 프린트 컨트롤러는,압축된 페이지 데이터를 수신하기 위한 인터페이스와;상기 수신된 압축된 페이지 데이터에서 연속톤 이미지 면을 디코딩하기 위한 연속톤 이미지 디코더와;상기 수신된 압축된 페이지 데이터에서 2-레벨 이미지 면 및 디더 데이터를 디코딩하기 위한 2-레벨 디코더와;2-레벨 이미지 면을 연속톤 이미지 면 상에 합성하기 위한 것으로서, 이미지의 스트립에 대한 데이터를 생성하기 위해 마진 유닛의 제어하에 이미지 면에서의 페이지 데이터가 스케일링되는 합성기와;프린트헤드에 합성된 스트립을 출력하기 위한 프린트헤드 구동기와;상기 다중 프린트 컨트롤러로부터 병렬로 스트립 형태의 프린트 데이터를 수신하는 프린트헤드와;상기 프린트헤드에서 각 스트립을 동기화하기 위해 프린트 컨트롤러를 연결하기 위한 동기 신호를 출력하는 동기 신호 생성기를 포함하여 이루어지는 것을 특징으로 하는 잉크 드롭형 프린터.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020027017428A KR100714810B1 (ko) | 2002-12-20 | 2000-06-30 | 다중으로 동작하는 프린트 엔진/컨트롤러 및 다중 프린트엔진/컨트롤러에 의해 구동되는 프린트헤드 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020027017428A KR100714810B1 (ko) | 2002-12-20 | 2000-06-30 | 다중으로 동작하는 프린트 엔진/컨트롤러 및 다중 프린트엔진/컨트롤러에 의해 구동되는 프린트헤드 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20030024706A KR20030024706A (ko) | 2003-03-26 |
KR100714810B1 true KR100714810B1 (ko) | 2007-05-04 |
Family
ID=41635397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020027017428A KR100714810B1 (ko) | 2002-12-20 | 2000-06-30 | 다중으로 동작하는 프린트 엔진/컨트롤러 및 다중 프린트엔진/컨트롤러에 의해 구동되는 프린트헤드 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100714810B1 (ko) |
-
2000
- 2000-06-30 KR KR1020027017428A patent/KR100714810B1/ko not_active IP Right Cessation
Non-Patent Citations (1)
Title |
---|
none |
Also Published As
Publication number | Publication date |
---|---|
KR20030024706A (ko) | 2003-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7551324B2 (en) | Print engine controller for driving a printhead | |
US6795215B1 (en) | Print engine/controller and printhead interface chip incorporating the engine/controller | |
US7980648B2 (en) | Print engine controller utilizing on and off chip memory for dot data formatting | |
US20080186517A1 (en) | Printer Controller For Inkjet Print Head | |
US6805419B1 (en) | Print engine/controller with color mask | |
JP4546697B2 (ja) | インクドロッププリンタ | |
KR100714810B1 (ko) | 다중으로 동작하는 프린트 엔진/컨트롤러 및 다중 프린트엔진/컨트롤러에 의해 구동되는 프린트헤드 | |
US7957011B2 (en) | Printer printing composited print image planes | |
US20050225584A1 (en) | Ink drop printer with print engine controller | |
KR100702464B1 (ko) | 프린트 엔진/컨트롤러 및 그것을 내장하는 프린트 헤드인터페이스 칩 | |
KR100702467B1 (ko) | 컬러 마스크를 갖는 프린트 엔진/컨트롤러 | |
AU2004214608B2 (en) | Print engine/controller with half-toner/compositor | |
US20120113445A1 (en) | Method of printing graphic content with position tags |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130410 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20140409 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20160411 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20170413 Year of fee payment: 11 |
|
FPAY | Annual fee payment |
Payment date: 20180413 Year of fee payment: 12 |
|
LAPS | Lapse due to unpaid annual fee |