專(zhuān)利名稱(chēng):Dma傳送設(shè)備、數(shù)據(jù)傳送控制方法和數(shù)據(jù)傳送控制程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種直4妻存儲(chǔ)器存取(direct memory access, DMA )傳送設(shè)備、使用該DMA傳送設(shè)備的數(shù)據(jù)傳送控制方法以 及使用該DMA傳送設(shè)備的數(shù)據(jù)傳送控制程序,所述DMA傳送設(shè) 備配置成將存儲(chǔ)在存儲(chǔ)器中的用于數(shù)據(jù)傳送的至少一個(gè)傳送設(shè) 置值依次讀取到寄存器中,并且基于所讀取的傳送設(shè)置值,來(lái) 進(jìn)行DMA傳送處理。
背景技術(shù):
在將基于特定數(shù)據(jù)格式所描述的輸入數(shù)據(jù)轉(zhuǎn)換成另 一數(shù)據(jù) 格式的處理期間,傳統(tǒng)方法使用諸如DMA控制器的數(shù)據(jù)傳送硬件。
當(dāng)基于所接收到的已編碼或已加密的數(shù)據(jù)而獲得的解碼數(shù) 據(jù)用于諸如打印處理或顯示處理的特定處理時(shí),^^用這樣的數(shù) 據(jù)傳送硬件。
特別地,傳統(tǒng)打印設(shè)備打印出基于所接收到的已編碼和已 壓縮的圖像數(shù)據(jù)而獲得的解碼后的圖像數(shù)據(jù)。在使用對(duì)包括行 序光柵數(shù)據(jù)的打印數(shù)據(jù)進(jìn)行處理的噴墨式打印機(jī)(以下簡(jiǎn)單稱(chēng) 為"打印機(jī)")的情況下,主計(jì)算機(jī)依次發(fā)送已針對(duì)各行進(jìn)行編 碼和壓縮的數(shù)據(jù)。
如在日本特開(kāi)07-21117中所討論的,傳統(tǒng)數(shù)據(jù)傳送硬件, 特別是傳統(tǒng)DMA傳送硬件,將適當(dāng)存儲(chǔ)在存儲(chǔ)器中的用于多個(gè) 傳送操作的傳送設(shè)置值(以下稱(chēng)為"描述符,,)依次載入寄存器 上,以進(jìn)行數(shù)據(jù)傳送。這樣的DMA傳送模式被稱(chēng)為"陣列鏈?zhǔn)?傳送模式(array chain transfer mode ),,或"連接P牟歹'J鏈?zhǔn)絺魉?br>
模式(link array chain transfer mode ),,。
在很多情況下,來(lái)自主計(jì)算機(jī)的打印數(shù)據(jù)在解碼處理后可 能逐行具有不同的數(shù)據(jù)長(zhǎng)度。特別是,在諸如緊縮位編碼 (PackBits Encoding )或種子行編碼(Seed Row Encoding )的 行程長(zhǎng)度編碼(Run Length Encoding, RLE)的情況下,解碼 后的數(shù)據(jù)長(zhǎng)度只可能在進(jìn)行解碼處理之后才能獲知。
在傳統(tǒng)處理中,統(tǒng)一各行長(zhǎng)度的一種方法是將紙張(要讀 取的文件的紙張)的寬度設(shè)置作為解碼數(shù)據(jù)緩沖長(zhǎng)度。然而, 在這點(diǎn)上,在圖像處理期間,不關(guān)于沒(méi)有圖像的紙張的部分對(duì) 存儲(chǔ)器進(jìn)行存取更有用。并且,將紙張寬度的數(shù)據(jù)長(zhǎng)度固定設(shè) 置作為解碼數(shù)據(jù)緩沖長(zhǎng)度增加了存儲(chǔ)器的存取量,這在處理效 率上沒(méi)有益處。
在這點(diǎn)上,另 一種傳統(tǒng)方法預(yù)測(cè)必要的最小解碼數(shù)據(jù)緩沖 長(zhǎng)度,并針對(duì)一個(gè)帶來(lái)設(shè)置描述符,以進(jìn)行解碼。如果所預(yù)測(cè) 的必要的最小解碼數(shù)據(jù)緩沖長(zhǎng)度與實(shí)際解碼數(shù)據(jù)長(zhǎng)度不同,特 別是,如果實(shí)際解碼數(shù)據(jù)長(zhǎng)度大于該解碼數(shù)據(jù)緩沖長(zhǎng)度,則以 等于該解碼數(shù)據(jù)緩沖長(zhǎng)度的長(zhǎng)度對(duì)解碼數(shù)據(jù)進(jìn)行分割或截?cái)唷?在這種情況下,CPU重新生成具有延長(zhǎng)的解碼數(shù)據(jù)緩沖長(zhǎng)度的 合適的描述符,然后,解碼器再次進(jìn)行解碼。
在這點(diǎn)上,日本特開(kāi)06-103181討i侖了這樣的方法當(dāng)諸如 傳送失敗的失敗發(fā)生時(shí),發(fā)送單元將異常中止通知信號(hào)通知給 DMA控制器。在該方法中,DMA控制器在接收到該通知之后自 動(dòng)繼續(xù)數(shù)據(jù)傳送。
同時(shí),對(duì)于DMA控制器或解碼器來(lái)說(shuō),減少電路中門(mén)的數(shù) 量以及其制造成本,存在一些限制。例如,可設(shè)置為傳送字節(jié) 長(zhǎng)度的最小值受限。
在必須處理小于最小值的數(shù)據(jù)的情況下,CPU執(zhí)行必要的 處理。例如,當(dāng)CPU必須對(duì)種子行編碼的第N行數(shù)據(jù)進(jìn)行解碼 時(shí),僅在第(N-1 )行數(shù)據(jù)已經(jīng)被完全解碼之后,CPU才可以 解碼第N行數(shù)據(jù)。
在這種情況下,CPU執(zhí)行包括用于直到第(N-l)行數(shù)據(jù) 的解碼處理的設(shè)置的描述符一次,對(duì)第N行數(shù)據(jù)進(jìn)行解碼,并 且向第(N+l)行以及后續(xù)的數(shù)據(jù)提供新的描述符。
然而,在如上所述再次進(jìn)行解碼處理的情況下,雖然可以 將硬件的設(shè)置存儲(chǔ)在存儲(chǔ)器中作為描述符,但是必須生成用于 要利用CPU解碼的數(shù)據(jù)的設(shè)置,并且管理存儲(chǔ)器上的所生成的 設(shè)置。即,在這種情況下,必須生成單獨(dú)的設(shè)置數(shù)據(jù),并且管 理所生成的與要利用DMA控制器或解碼器進(jìn)行的解碼處理有 關(guān)以及與要利用C P U進(jìn)行的解碼處理有關(guān)的設(shè)置數(shù)據(jù)。
而且,如果利用CPU解碼的數(shù)據(jù)可以利用硬件來(lái)處理,則 必須生成新的描述符。如上所述,在傳統(tǒng)方法中,由于關(guān)于在 DMA控制器或解碼器上可以設(shè)置為傳送字節(jié)長(zhǎng)度的最小值的 限制,CPU必須進(jìn)行復(fù)雜的處理。
發(fā)明內(nèi)容
本發(fā)明涉及這樣的控制程序即使當(dāng)DMA傳送設(shè)備(DMA 控制器)不能進(jìn)行DMA傳送時(shí),也使得能夠馬上預(yù)先設(shè)置描述 符(傳送設(shè)置值)。而且,本發(fā)明涉及用于減小重處理帶來(lái)的負(fù) 荷的方法,該方法在軟件處理(利用CPU的數(shù)據(jù)傳送)和硬件 處理(DMA傳送)中使用共享的描述符(存儲(chǔ)在存儲(chǔ)器中的用 于數(shù)據(jù)傳送的設(shè)置值)。而且,本發(fā)明涉及這樣的方法,該方法 用于在使用DMA傳送設(shè)備的情況下,使用利用控制程序來(lái)預(yù)先 生成的描述符,以相互適當(dāng)合作的方式有效地進(jìn)行利用DMA傳 送設(shè)備的解碼處理和利用CPU的解碼處理。
根據(jù)本發(fā)明的一個(gè)方面, 一種DMA傳送設(shè)備,配置成將存 儲(chǔ)在存儲(chǔ)器中的用于數(shù)據(jù)傳送的至少一個(gè)傳送設(shè)置值依次讀取 到寄存器中,并且基于所讀取的所述傳送設(shè)置值,來(lái)進(jìn)行DMA 傳送處理,所述DMA傳送設(shè)備包括接收單元,配置成接收用 于指定不進(jìn)行DMA傳送的不操作指定即NOP指定,作為所述傳 送設(shè)置值;以及生成單元,配置成如果已經(jīng)利用讀取到所述寄 存器的所述傳送設(shè)置值來(lái)進(jìn)行所述NOP指定,則生成NOP中斷 信號(hào),以結(jié)束傳送處理,而不進(jìn)行所述DMA傳送。
根據(jù)本發(fā)明的另一個(gè)方面, 一種數(shù)據(jù)傳送控制方法,用于 使用直接存儲(chǔ)器存取即DMA傳送設(shè)備來(lái)利用中央處理單元即 CPU進(jìn)行數(shù)據(jù)傳送,所述DMA傳送設(shè)備配置成將存儲(chǔ)在存儲(chǔ)器 中的用于數(shù)據(jù)傳送的至少一個(gè)傳送設(shè)置值依次讀取到寄存器 中,并且基于所讀取的所述傳送設(shè)置值,來(lái)進(jìn)行DMA傳送處理, 所述DMA傳送設(shè)備包括接收單元,配置成接收用于指定不進(jìn) 行DMA傳送的不操作指定即NOP指定,作為所述傳送設(shè)置值; 以及生成單元,配置成如果已經(jīng)利用讀取到所述寄存器的所述 傳送設(shè)置值來(lái)進(jìn)行所述NOP指定,則生成NOP中斷信號(hào),以結(jié) 束傳送處理,而不進(jìn)行所述DMA傳送,所述數(shù)據(jù)傳送控制方法 包括利用由所述CPU進(jìn)行的處理來(lái)進(jìn)行與所述DMA傳送設(shè)備 的傳送功能相同的傳送;檢測(cè)所述NOP中斷信號(hào);以及如果已 經(jīng)檢測(cè)到所述N O P中斷信號(hào),則基于讀取到所述D M A傳送設(shè)備 中的所述寄存器中的所述傳送設(shè)置值,利用由所述CPU進(jìn)行的 處理來(lái)進(jìn)行數(shù)據(jù)傳送,并且此后,重新開(kāi)始所述DMA傳送設(shè)備 中的所述DMA傳送。例如,可以將計(jì)算機(jī)可執(zhí)行指令存儲(chǔ)在包 括CPU的設(shè)備可讀取的介質(zhì)上;當(dāng)通過(guò)該設(shè)備執(zhí)行該指令時(shí), 該指令使該設(shè)備執(zhí)行該數(shù)據(jù)傳送控制方法。
根據(jù)本發(fā)明的另一個(gè)方面, 一種數(shù)據(jù)傳送控制系統(tǒng),包括
直接存儲(chǔ)器存取即DMA傳送設(shè)備,配置成將存儲(chǔ)在存儲(chǔ)器中的
用于數(shù)據(jù)傳送的至少一個(gè)傳送設(shè)置值依次讀取到寄存器中,并
且基于所讀取的所述傳送設(shè)置值,來(lái)進(jìn)行DMA傳送處理,所述 DMA傳送設(shè)備包括接收單元,配置成接收用于指定不進(jìn)行 DMA傳送的不操作指定即NOP指定,作為所述傳送設(shè)置值;以 及生成單元,配置成如果已經(jīng)利用讀取到所述寄存器的所述傳 送設(shè)置值來(lái)進(jìn)行所述NOP指定,則生成NOP中斷信號(hào),以結(jié)束 傳送處理,而不進(jìn)行所述DMA傳送;以及中央處理單元即CPU, 其中,所述數(shù)據(jù)傳送控制系統(tǒng)使用所述DMA傳送設(shè)備來(lái)利用所 述CPU進(jìn)行數(shù)據(jù)傳送;所述CPU被編程為具有CPU數(shù)據(jù)傳送 單元,配置成利用由所述CPU進(jìn)行的處理來(lái)進(jìn)行與所述DMA 傳送設(shè)備的傳送功能相同的傳送;中斷檢測(cè)單元,配置成檢測(cè) 所述NOP中斷信號(hào);以及傳送單元,配置成如果所述中斷檢測(cè) 單元已經(jīng)檢測(cè)到所述NOP中斷信號(hào),則基于讀取到所述DMA 傳送設(shè)備中的所述寄存器中的所述傳送設(shè)置值,利用由所述 CPU進(jìn)行的處理來(lái)進(jìn)行數(shù)據(jù)傳送,并且此后,重新開(kāi)始所述 DMA傳送設(shè)備中的所述DMA傳送。
通過(guò)下面參考附圖對(duì)示例性實(shí)施例的詳細(xì)描述,本發(fā)明的 其他特征和方面將變得顯而易見(jiàn)。
包括在說(shuō)明書(shū)中并且構(gòu)成說(shuō)明書(shū)的 一部分的附圖示出本發(fā) 明的示例性實(shí)施例、特征和方面,并且與說(shuō)明書(shū)一起,用來(lái)說(shuō) 明本發(fā)明的原理。
圖l示出根據(jù)本發(fā)明的示例性實(shí)施例的打印機(jī)的硬件配置 的例子。
圖2示出根據(jù)本發(fā)明的示例性實(shí)施例的、圖l中的解碼器的 內(nèi)部配置的例子。
圖3示出根據(jù)本發(fā)明的示例性實(shí)施例的、圖2中的寄存器塊 (REG )的內(nèi)部寄存器的配置的例子。
圖4示出根據(jù)本發(fā)明的示例性實(shí)施例的、圖1中的解碼器所 讀取的描述符的配置的例子。
圖5A示出打印機(jī)的軟件配置的例子。
圖5B示出利用打印機(jī)處理的編碼數(shù)據(jù)的配置的例子。
圖5C示出利用打印機(jī)解碼的數(shù)據(jù)的配置的例子。
圖6是示出根據(jù)本發(fā)明的示例性實(shí)施例的連接陣列鏈?zhǔn)絺?送的處理的例子的流程圖。
圖7是示出根據(jù)本發(fā)明的示例性實(shí)施例的針對(duì) 一 個(gè)帶的數(shù) 據(jù)傳送處理(無(wú)重處理)的例子的流程圖。
圖8A是示出根據(jù)本發(fā)明的示例性實(shí)施例的針對(duì)帶的數(shù)據(jù) 傳送處理(無(wú)重處理)的例子的流程圖。
圖8B是示出根據(jù)本發(fā)明的另 一 個(gè)示例性實(shí)施例的針對(duì)帶 的數(shù)據(jù)傳送處理(無(wú)重處理)的例子的流程圖。
圖8C是示出根據(jù)本發(fā)明的另 一 個(gè)示例性實(shí)施例的針對(duì)帶 的數(shù)據(jù)傳送處理(無(wú)重處理)的例子的流程圖。
具體實(shí)施例方式
現(xiàn)在,在此將參考附圖來(lái)詳細(xì)描述本發(fā)明的各種示例性實(shí) 施例、特征和方面。應(yīng)當(dāng)注意,除非特別聲明,在這些實(shí)施例 中闡述的各個(gè)部件的相對(duì)布置、數(shù)字表達(dá)式和數(shù)字值并不打算 限制本發(fā)明的范圍。
如在此所使用的,解碼或解碼處理也可以指對(duì)壓縮數(shù)據(jù)的 解壓縮。因此,可以 f艮據(jù)本發(fā)明來(lái)對(duì)已編碼和已壓縮的數(shù)據(jù)進(jìn) 行解碼,以生成與已編碼和已壓縮的數(shù)據(jù)相對(duì)應(yīng)的解碼后和解
壓縮后的數(shù)據(jù)。裝置中的數(shù)據(jù)可以可選地描述成裝置上的數(shù)據(jù), 例如,存儲(chǔ)在寄存器中的數(shù)據(jù)或存儲(chǔ)在寄存器上的數(shù)據(jù),在意 思上沒(méi)有變化。雖然描述是針對(duì)噴墨式打印機(jī)進(jìn)行的,但是根 據(jù)本發(fā)明可以可選地使用其他裝置類(lèi)型。 第一示例性實(shí)施例
現(xiàn)在,以下將說(shuō)明本發(fā)明的第一示例性實(shí)施例。圖l示出根 據(jù)本發(fā)明的示例性實(shí)施例的噴墨式打印機(jī)(以下簡(jiǎn)單稱(chēng)為"打 印機(jī)")的硬件配置的例子。
參照?qǐng)Dl,中央處理單元(CPU) IOO包括微處理器元件。
只讀存儲(chǔ)器(ROM) 102是存儲(chǔ)用于CPU IOO的控制程序的 非易失性存儲(chǔ)器。隨機(jī)存取存儲(chǔ)器(RAM) 101是易失性存儲(chǔ) 器。當(dāng)打印機(jī)接通電源并啟動(dòng)時(shí),ROM 102上的控制程序被載 入到RAM IOI上,然后,CPU IOO基于載入到RAM 101上的控 制程序,來(lái)控制打印機(jī)。通用串行總線(USB )接口 (I/F) 105 是利用線纜互相連接的打印機(jī)和主計(jì)算機(jī)之間的I/F。
解碼器104是具有對(duì)已編碼和已壓縮的數(shù)據(jù)進(jìn)行解碼,并且 對(duì)解碼數(shù)據(jù)進(jìn)行DMA傳送的功能的解碼電路。
CPU 100、 RAM 101、 ROM 102、解碼器104以及USB I/F 105 通過(guò)系統(tǒng)總線103相互通信。
圖2示出根據(jù)本示例性實(shí)施例的解碼器10 4的功能塊的例子。
參照?qǐng)D2, DMA控制器(DMAC) 200可以以單傳送模式和 連接陣列鏈?zhǔn)絺魉湍J絻煞N模式來(lái)對(duì)數(shù)據(jù)進(jìn)行DMA傳送。 寄存器塊(REG) 201可以對(duì)解碼器104進(jìn)行操作設(shè)置。 解碼處理塊(DEC ) 204對(duì)已進(jìn)行緊縮位編碼和已壓縮的數(shù) 據(jù)或已進(jìn)行種子行編碼和已壓縮的數(shù)據(jù)進(jìn)行解碼。DEC 204基 于REG 201上的設(shè)置的內(nèi)容來(lái)進(jìn)行解碼處理。
解碼器104還包括接收緩沖器(BUFI) 203和發(fā)送緩沖器 (BUFO ) 202。
DMAC 200才艮據(jù)REG 201上的設(shè)置,通過(guò)系統(tǒng)總線103將 RAM IOI上的數(shù)據(jù)傳送到BUFI 203。 DEC 204將解碼數(shù)據(jù)存儲(chǔ) 在BUFO 202中。然后,DMAC 200根據(jù)REG 201上的設(shè)置,通 過(guò)系統(tǒng)總線103將BUFO 202中的數(shù)據(jù)傳送到RAM 101。
REG 201包括圖3中所示出的寄存器。每個(gè)寄存器包括32位 數(shù)據(jù)。參照?qǐng)D3,開(kāi)始寄存器300是用于響應(yīng)于由CPU IOO進(jìn)行 的值的寫(xiě)入而開(kāi)始DMA傳送的寄存器??梢曰谒鶎?xiě)入的值來(lái) 選擇單傳送模式或連接陣列鏈?zhǔn)絺魉湍J阶鳛镈MA傳送模式。
中斷狀態(tài)寄存器301是描述DMAC 200已經(jīng)發(fā)出請(qǐng)求的中 斷的寄存器。CPU IOO可以從中斷狀態(tài)寄存器301讀取值以識(shí)別 解碼器104上的中斷狀態(tài),并且可以通過(guò)在中斷狀態(tài)寄存器301 上寫(xiě)入值來(lái)取消中斷。在本示例性實(shí)施例中,使用位31到29。 位3 1分配給DMA傳送結(jié)束中斷,位30分配給不操作(No Operation, NOP)結(jié)束中斷,位29分配給解碼數(shù)據(jù)緩沖長(zhǎng)度超 出中斷。
DMA傳送結(jié)束中斷包括單傳送模式下的DMA傳送結(jié)束中 斷,以及連接陣列鏈?zhǔn)絺魉湍J较箩槍?duì)所有鏈的DMA傳送結(jié)束 中斷。在由描述符控制寄存器312進(jìn)行NOP指定的DMA傳送開(kāi) 始之前發(fā)出NOP結(jié)束中斷。當(dāng)解碼數(shù)據(jù)長(zhǎng)度超過(guò)預(yù)定解碼數(shù)據(jù) 緩沖長(zhǎng)度時(shí),發(fā)出解碼數(shù)據(jù)緩沖長(zhǎng)度超出中斷。
中斷屏蔽寄存器302與中斷狀態(tài)寄存器301 —起使用。利用 中斷屏蔽寄存器302和中斷狀態(tài)寄存器301, CPU IOO可以單獨(dú) 地并個(gè)別地屏蔽以上中斷中的每一個(gè)。
最大解碼長(zhǎng)度寄存器303描述并存儲(chǔ)關(guān)于由DEC 204進(jìn)行 解碼的數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度的值的最大值。當(dāng)CPU IOO將該值寫(xiě)入
開(kāi)始寄存器300,并且DMA傳送由此開(kāi)始時(shí),該值被清空。
后續(xù)描述符地址寄存器304是用于設(shè)置在連接陣列鏈?zhǔn)絺?送模式期間后續(xù)要讀取的描述符的開(kāi)始地址的寄存器。在連接 陣列鏈?zhǔn)絺魉湍J狡陂g,基于描述符的內(nèi)容來(lái)將各描述符以分 布但鏈接在一起的方式布置在存儲(chǔ)器上。每當(dāng)DMA傳送結(jié)束, 讀取基于寄存器內(nèi)容所指向的后續(xù)描述符。在開(kāi)始連接陣列鏈 式傳送之前,CPU 100將值寫(xiě)入后續(xù)描述符地址寄存器304中。 在連接陣列鏈?zhǔn)絺魉湍J狡陂g,CPU IOO寫(xiě)入存儲(chǔ)在由DMAC 200讀取的描述符中的值。
源地址0寄存器305是用于設(shè)置傳送源的地址(已編碼和已 壓縮的數(shù)據(jù)的開(kāi)始地址)的寄存器。源地址1寄存器306是用于 設(shè)置傳送源的地址(根據(jù)種子行解碼方法進(jìn)行解碼的種子行編 碼數(shù)據(jù)的開(kāi)始地址(在緊縮位解碼中不使用))的寄存器。
目的地地址寄存器307是用于設(shè)置傳送目的地的地址的寄 存器??梢酝ㄟ^(guò)源地址0寄存器305、源地址1寄存器306和目的 地地址寄存器307,來(lái)指定DMA傳送的范圍和傳送目的地。
長(zhǎng)度0寄存器308是用于設(shè)置要解碼的已編碼和已壓縮的數(shù) 據(jù)的長(zhǎng)度的寄存器。在緊縮位解碼的情況下,可以為長(zhǎng)度O寄存 器308設(shè)置4個(gè)字節(jié)或更大的值。在種子行解碼的情況下,可以 為長(zhǎng)度0寄存器308設(shè)置0個(gè)字節(jié)、4個(gè)字節(jié)或更大的值。長(zhǎng)度l 寄存器309是用于在種子行解碼的情況下指定種子行編碼數(shù)據(jù) 的長(zhǎng)度的寄存器。
長(zhǎng)度2寄存器310是用于指定解碼數(shù)據(jù)緩沖長(zhǎng)度的寄存器。 如果作為解碼處理的結(jié)果,解碼數(shù)據(jù)長(zhǎng)度超過(guò)在長(zhǎng)度2寄存器 310中設(shè)置的值,則暫停解碼處理,并將值"1"設(shè)置到中斷狀 態(tài)寄存器301的位29。
如果中斷還未被中斷屏蔽寄存器302屏蔽,則DMAC 200發(fā)
出解碼數(shù)據(jù)緩沖長(zhǎng)度超出中斷,并結(jié)束該DMA傳送。另 一方面,
如果中斷已經(jīng)被中斷屏蔽寄存器302屏蔽,并且如果DMAC 200 處于連接陣列鏈?zhǔn)絺魉湍J剑瑒tDMAC 200繼續(xù)下一個(gè)鏈的處 理。而且,如果作為解碼結(jié)果,解碼數(shù)據(jù)長(zhǎng)度值小于在長(zhǎng)度2 寄存器310中設(shè)置的值,則DMAC 200取消不足的部分。
操作寄存器311是用于指定解碼方法的寄存器。CPU IOO可 以根據(jù)CPU 100寫(xiě)入操作寄存器311上的值,來(lái)指定解碼方法 (緊縮位解碼或種子行解碼)。
描述符控制寄存器312是用于指定描述符的控制的寄存器。 根據(jù)CPU IOO的設(shè)計(jì),CPU IOO不能將設(shè)置值寫(xiě)入描述符控制寄
置描述符控制寄存器312的內(nèi)容。當(dāng)為位31設(shè)置描述當(dāng)前傳送是 最后傳送的值"1"時(shí),DMAC 200在根據(jù)所讀取的描述符中的 設(shè)置進(jìn)行DMA傳送之后,結(jié)束該連接陣列鏈?zhǔn)絺魉汀?br>
當(dāng)中斷狀態(tài)寄存器301的位31的值改變成值"1"時(shí),如果 中斷還未被中斷屏蔽寄存器302屏蔽,則DMAC 200生成DMA 傳送結(jié)束中斷。
當(dāng)中斷狀態(tài)寄存器301的位30設(shè)置成描述當(dāng)前傳送是NOP 指定傳送的值"1"時(shí),DMAC 200結(jié)束該連接陣列鏈?zhǔn)絺魉停?而不根據(jù)所讀取的描述符中的設(shè)置來(lái)進(jìn)行DMA傳送。然后,將 為中斷狀態(tài)寄存器301的位30設(shè)置的值改變成值"1",如果中斷 還未被中斷屏蔽寄存器302屏蔽,則DMAC 200生成NOP結(jié)束中
圖4示出根據(jù)示例性實(shí)施例的、在連接陣列鏈?zhǔn)絺魉椭惺褂?的描述符的配置的例子。參照?qǐng)D4,后續(xù)描述符地址400是與后 續(xù)描述符地址寄存器304相對(duì)應(yīng)的設(shè)置值。源地址O 401是與源 地址0寄存器305相對(duì)應(yīng)的設(shè)置值。源地址l 402是與源地址1寄
存器306相對(duì)應(yīng)的設(shè)置值。目的地地址403是與目的地地址寄存 器307相對(duì)應(yīng)的設(shè)置值。
長(zhǎng)度O 404是與長(zhǎng)度0寄存器308相對(duì)應(yīng)的設(shè)置值。長(zhǎng)度1 405 是與長(zhǎng)度1寄存器309相對(duì)應(yīng)的設(shè)置值。長(zhǎng)度2 406是與長(zhǎng)度2寄 存器310相對(duì)應(yīng)的設(shè)置值。操作407是與操作寄存器311相對(duì)應(yīng)的 設(shè)置值。描述符控制408是與描述符控制寄存器312相對(duì)應(yīng)的設(shè) 置值。
當(dāng)CPU 100通過(guò)開(kāi)始寄存器300發(fā)出關(guān)于連接陣列鏈?zhǔn)絺?送的指令時(shí),DMAC 200讀取地址為在后續(xù)描述符地址寄存器 304中所描述的地址的描述符,然后,將所讀取的描述符中的值 寫(xiě)入相應(yīng)寄存器上。然后,根據(jù)所設(shè)置的寄存器值來(lái)進(jìn)行DMA傳送。
在此,描述符控制408的位30實(shí)現(xiàn)NOP指定單元。另外, CPU數(shù)據(jù)傳送單元存在于RAM IOI上,作為控制程序。CPU 100 可以讀取并執(zhí)行RAM IOI上的控制程序。中斷檢測(cè)單元被實(shí)現(xiàn) 為設(shè)置在CPU IOO上的中斷向量。
將參照?qǐng)D5A至圖5C來(lái)描述本示例性實(shí)施例的配置。
圖5 A簡(jiǎn)要示出可以與本示例性實(shí)施例 一 起使用的打印機(jī) 的軟件配置的例子,但是應(yīng)當(dāng)注意,可以可選地使用其他軟件 配置。參照?qǐng)D5A,在解碼處理500中,打印一幾的軟件依次對(duì)存 儲(chǔ)在接收緩沖器502中的已編碼和已壓縮的數(shù)據(jù)進(jìn)行解碼,并且 以幾行(也稱(chēng)為"帶,,)為單位將解碼數(shù)據(jù)布置在內(nèi)部緩沖器503 上。在圖像處理501中,軟件對(duì)存儲(chǔ)在內(nèi)部緩沖器503中的數(shù)據(jù) 進(jìn)行特定圖像處理,然后,將圖像處理后的數(shù)據(jù)存儲(chǔ)在輸出緩 沖器5 0 4中。將輸出緩沖器5 0 4上的數(shù)據(jù)轉(zhuǎn)換成記錄頭的驅(qū)動(dòng)信 號(hào),從而,CPU IOO上的軟件打印該數(shù)據(jù)的圖像。
圖5B示出存儲(chǔ)在接收緩沖器502中的已編碼和已壓縮的數(shù)
據(jù)5 11的例子。該已編碼和已壓縮的數(shù)據(jù)包括描述該已編碼和已 壓縮的數(shù)據(jù)的類(lèi)型的打印控制命令。將該數(shù)據(jù)按照行序布置為,
例如,紅色(R)的第一行,綠色(G)的第一行,藍(lán)色(B) 的第 一 行。已編碼和已壓縮的數(shù)據(jù)的類(lèi)型包括緊縮位編碼數(shù)據(jù) 和種子行編碼數(shù)據(jù)。圖5C示出存儲(chǔ)在內(nèi)部緩沖器503中的解碼 數(shù)據(jù)的例子。該數(shù)據(jù)分別針對(duì)各種顏色R、 G、 B以帶521、 522、 523為單位存儲(chǔ)在內(nèi)部緩沖器503中。
現(xiàn)在,以下將描述本示例性實(shí)施例的操作。
圖6是示出由根據(jù)本發(fā)明示例性實(shí)施例的包括DMAC 200 的解碼器104進(jìn)行的連接陣列鏈?zhǔn)絺魉筒僮鞯睦印1臼纠詫?shí) 施例利用描述符來(lái)指定NOP,然后,生成NOP結(jié)束中斷,從而 可以通過(guò)CPU IOO來(lái)開(kāi)始解碼處理。
參照?qǐng)D6,在步驟S600中,CPU IOO利用開(kāi)始寄存器300來(lái) 指示開(kāi)始連接陣列鏈?zhǔn)絺魉汀?br>
在步驟S601中,DMAC 200基于在后續(xù)描述符地址寄存器 304中所描述的、存儲(chǔ)在RAM IOI中的地址,來(lái)讀取一個(gè)描述符, 然后,將所讀取的描述符傳送到REG 201。 REG201將該描述符 中的設(shè)置值寫(xiě)入圖3中的各個(gè)相關(guān)聯(lián)的寄存器中。
在步驟S602中,DMAC 200讀取描述符控制寄存器312中的 值,并且判斷描述符控制寄存器312的位30是否設(shè)置為值"1"。 如果在步驟S602中判斷為描述符控制寄存器312的位30設(shè)置為 值"l,,,即,指定NOP (步驟S602中的"是"),則處理進(jìn)入步 驟S607。在步驟S607中,DMAC 200結(jié)束該連接陣列鏈?zhǔn)絺魉停?并且將值"1" (NOP結(jié)束中斷)寫(xiě)入中斷狀態(tài)寄存器301的位30 中。如果中斷屏蔽寄存器302的位30設(shè)置為值"0",則DMAC 200 向CPU IOO發(fā)出中斷信號(hào),然后,處理進(jìn)入步驟S611。在步驟 S611中,處理結(jié)束。
另 一方面,如果在步驟S602中判斷為描述符控制寄存器312的位30設(shè)置為值"0"(步驟S602中的"否"),則處理進(jìn)入 步驟S603。在步驟S603中,DMAC 200與DEC 204、 BUFI 203 和BUFO 202合作,來(lái)進(jìn)行數(shù)據(jù)傳送。在此,DMAC 200對(duì)已經(jīng) 進(jìn)行內(nèi)部解碼的數(shù)據(jù)的長(zhǎng)度進(jìn)行計(jì)數(shù),如果計(jì)數(shù)得到的數(shù)據(jù)長(zhǎng) 度達(dá)到由長(zhǎng)度2寄存器310指定的解碼數(shù)據(jù)緩沖長(zhǎng)度,則即使當(dāng) 數(shù)據(jù)傳送當(dāng)前正在進(jìn)行中時(shí),DMAC 200也暫停該數(shù)據(jù)傳送。 然后,處理進(jìn)入步驟S604。
在步驟S604中,DMAC 200將在步驟S603中計(jì)數(shù)得到的解碼數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度與最大解碼長(zhǎng)度寄存器303上的值進(jìn)行比較, 以判斷解碼數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度是否大于在最大解碼長(zhǎng)度寄存器3 0 3上設(shè)置的數(shù)據(jù)長(zhǎng)度。如果在步驟S 6 04中判斷為解碼數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度大于最大解碼長(zhǎng)度寄存器303上的數(shù)據(jù)長(zhǎng)度(步驟S604中的"是"),則處理進(jìn)入步驟S608。在步驟S608中,DMAC200在最大解碼長(zhǎng)度寄存器303中寫(xiě)入解碼數(shù)據(jù)的長(zhǎng)度,然后,處理進(jìn)入步驟S605。另一方面,如果在步驟S604中判斷為解碼數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度等于或小于最大解碼長(zhǎng)度寄存器303上的數(shù)據(jù)長(zhǎng)度(步驟S604中的"否"),則處理進(jìn)入步驟S605,而不經(jīng)過(guò)步驟S608。
在步驟S605中,DMAC 200將在步驟S603中計(jì)數(shù)得到的解 碼數(shù)據(jù)的長(zhǎng)度與長(zhǎng)度2寄存器310中的值進(jìn)行比較,以判斷解碼 數(shù)據(jù)長(zhǎng)度是否等于長(zhǎng)度2寄存器310中的值。
如果在步驟S605中判斷為解碼數(shù)據(jù)長(zhǎng)度至少等于長(zhǎng)度2寄 存器310中的值(步驟S605中的"是"),則DMAC 200判斷為解 碼數(shù)據(jù)長(zhǎng)度超過(guò)解碼數(shù)據(jù)緩沖長(zhǎng)度,然后,處理進(jìn)入步驟S609。 在步驟S609中,DMAC 200結(jié)束該連接陣列鏈?zhǔn)絺魉?,并且?值"1"(解碼數(shù)據(jù)緩沖長(zhǎng)度超出中斷)寫(xiě)入中斷狀態(tài)寄存器301的位29中。如果在此中斷屏蔽寄存器302的位29已經(jīng)設(shè)置為值 "0",則DMAC 200向CPU IOO發(fā)出中斷信號(hào)。然后,處理進(jìn)入 步驟S611,以結(jié)束該處理。但是,如果在步驟S605中判斷為解 碼數(shù)據(jù)長(zhǎng)度小于長(zhǎng)度2寄存器3 IO中的值(步驟S605中的"否"), 則處理進(jìn)入步驟S606。
在步驟S606中,DMAC 200判斷在步驟S602中讀取的描述 符控制寄存器312的位31是否已經(jīng)設(shè)置為值"1"。如果在步驟 S602中讀取的描述符控制寄存器312的位31已經(jīng)設(shè)置為值"1" (步驟S606中的"是"),則DMAC 200判斷為該連接陣列鏈?zhǔn)?傳送已經(jīng)完成,處理進(jìn)入步驟S610。在步驟S610中,DMAC 200 結(jié)束該連接陣列鏈?zhǔn)絺魉?,并且將?1" ( DMA傳送結(jié)束中斷) 寫(xiě)入中斷狀態(tài)寄存器301的位31中。如果中斷屏蔽寄存器302的 位31已經(jīng)設(shè)置為值"0",則DMAC 200向CPU IOO發(fā)出中斷信號(hào)。 然后,處理進(jìn)入步-驟S611,以結(jié)束該處理。
另 一 方面,如果在步驟S606中判斷為描述符控制寄存器 312的位31已經(jīng)設(shè)置為值"0"(步驟S606中的"否"),則處理 返回步驟S601,以繼續(xù)該處理。
現(xiàn)在,以下將描述根據(jù)示例性實(shí)施例的、在對(duì)存儲(chǔ)在接收 緩沖器502 (圖5A)中的數(shù)據(jù)進(jìn)行解碼并將解碼數(shù)據(jù)存儲(chǔ)在內(nèi) 部緩沖器503中的處理期間所進(jìn)行的數(shù)據(jù)傳送控制方法。CPU 100進(jìn)行解碼處理500,同時(shí)將64行作為一個(gè)段(下文中簡(jiǎn)稱(chēng)為 "帶,,)進(jìn)行處理。
圖7是示出CPU IOO控制包括DMAC 200的解碼器104,對(duì)存 儲(chǔ)在接收緩沖器5 0 2中的圖像數(shù)據(jù)進(jìn)行解碼,并且將解碼數(shù)據(jù)傳 送到內(nèi)部緩沖器503的控制處理的例子的流程圖。
在示例性實(shí)施例中,在存儲(chǔ)器空間上的合適位置提供可以 為一個(gè)帶設(shè)置的描述符。而且,將各描述符的后續(xù)描述符地址
400預(yù)先設(shè)置為某個(gè)值,以使可以從第一個(gè)描述符開(kāi)始引用這些
描述符。因此,DMAC 200可以通過(guò)簡(jiǎn)單地讀耳又特定描述符, 來(lái)識(shí)別后續(xù)要讀取的描述符地址。
而且,由于打印所需的解碼數(shù)據(jù)的長(zhǎng)度等于打印紙張的可 打印區(qū)域的最大寬度,因此將各描述符的長(zhǎng)度2 406設(shè)置為等于 最大可打印寬度(紙張寬度)的字節(jié)數(shù),作為解碼數(shù)據(jù)緩沖長(zhǎng) 度。如果作為解碼處理的結(jié)果,解碼數(shù)據(jù)長(zhǎng)度等于或大于長(zhǎng)度2 406中的設(shè)置值,則解碼器104發(fā)出超出解碼數(shù)據(jù)緩沖長(zhǎng)度的通 知。然而,在此,不需要通過(guò)改變長(zhǎng)度2 406的設(shè)置值來(lái)再次進(jìn) 行解碼處理。因此,DMAC 200既不屏蔽DMA傳送結(jié)束中斷, 也不屏蔽NOP結(jié)束中斷,而是僅利用中斷屏蔽寄存器302來(lái)屏蔽 解碼數(shù)據(jù)緩沖長(zhǎng)度超出中斷。
參照?qǐng)D7,在步驟S700中,CPU IOO開(kāi)始針對(duì)帶的處理。
在步驟S701中,CPU IOO存儲(chǔ)第一個(gè)描述符的地址,作為 寫(xiě)入描述符地址和執(zhí)行描述符地址。
在步驟S702中,生成描述符。更具體地,CPU IOO開(kāi)始對(duì) 一行進(jìn)行處理。CPU IOO還解釋打印控制命令,并且識(shí)別與該 行有關(guān)的數(shù)據(jù)長(zhǎng)度和解碼方法。而且,CPU IOO在存在于寫(xiě)入 描述符地址的描述符中設(shè)置用于將解碼數(shù)據(jù)傳送到內(nèi)部緩沖器 503的設(shè)置。
在步驟S703中,CPU IOO判斷是否可以進(jìn)行DMA傳送。在 此,如果在緊縮位編碼的情況下數(shù)據(jù)長(zhǎng)度等于或小于4個(gè)字節(jié), 則CPU IOO判斷為不能進(jìn)行DMA傳送。此外,如果在種子行編 碼的情況下數(shù)據(jù)長(zhǎng)度為2、 3或4個(gè)字節(jié),則CPU100判斷為不能 進(jìn)行DMA傳送。然而,可以根據(jù)能夠設(shè)置為DMAC 200和解碼 器104的傳送字節(jié)長(zhǎng)度的預(yù)定最小值,來(lái)改變這些字節(jié)長(zhǎng)度值。 這可以應(yīng)用于下述的本發(fā)明的其他實(shí)施例。
如果在步驟S703中判斷為不能進(jìn)行DMA傳送(步驟S703 中的"否,,),則處理進(jìn)入步驟S705。在步驟S705中,CPU 100 將值"1"設(shè)置到描述符控制408的位30,以指定NOP,然后, 處理進(jìn)入步驟S704。另一方面,如果在步驟S703中判斷為可以 進(jìn)行DMA傳送,則CPU IOO將值"0"設(shè)置到描述符控制408的 位30,不指定NOP,然后,處理進(jìn)入步驟S704。
在步驟S704中,CPU IOO判斷當(dāng)前處理的行是不是當(dāng)前帶 的最后行。如果在步驟S704中判斷為當(dāng)前處理的行是當(dāng)前帶的 最后行(步驟S704中的"是,,),則處理進(jìn)入步驟S707。在步驟 S707中,CPU IOO將值"1"設(shè)置到描述符控制408的位31,指 定結(jié)束該連接陣列鏈?zhǔn)絺魉停缓?,處理進(jìn)入步驟S708。
另一方面,如果在步驟S704中判斷為當(dāng)前處理的行不是當(dāng) 前帶的最后行(步驟S704中的"否,,),則處理進(jìn)入步驟S706。 在步驟S706中,CPU 100將后續(xù)描述符地址400的值存儲(chǔ)在寫(xiě)入 描述符地址中,并將值"0"設(shè)置到描述符控制408的位31。然 后,處理返回步驟S702。
在步驟S708中,CPU IOO將執(zhí)行描述符地址寫(xiě)入后續(xù)描述 符地址寄存器304中。在步驟S709中,CPU IOO利用開(kāi)始寄存器 300來(lái)指示開(kāi)始連接陣列鏈?zhǔn)絺魉汀?br>
在步驟S710中,CPU IOO等待,直到解碼器104的中斷發(fā)生。 在該時(shí)間段內(nèi),CPU IOO可以(與其他處理或線程)并行地進(jìn)
行所需要的其他處理。
當(dāng)解碼器104的中斷發(fā)生時(shí)(步驟S710中的"是"),在步 驟S711中,CPU IOO從中斷狀態(tài)寄存器301中讀取值,判斷該中 斷的因素。如果中斷因素是DMA傳送結(jié)束中斷(步驟S711中的 "否,,),則CPU 100清空中斷狀態(tài)寄存器301中的值,然后,處 理進(jìn)入步驟S713。在步驟S713中,數(shù)據(jù)解碼處理結(jié)束。
另一方面,如果中斷因素是NOP結(jié)束中斷(步驟S711中的"是"),則處理進(jìn)入步驟S712。在步驟S712中,CPU IOO讀取 REG201的各寄存器的值,(從而獲得REG201中的設(shè)置,)根據(jù) 該設(shè)置利用由CPU IOO進(jìn)行的處理來(lái)對(duì)數(shù)據(jù)進(jìn)行解碼,然后, 將解碼數(shù)據(jù)存儲(chǔ)在內(nèi)部緩沖器503中。然后,CPU100清空中斷 狀態(tài)寄存器301中的值,處理返回步驟S709。
在此,REG 201包括在NOP結(jié)束中斷發(fā)生時(shí)刻設(shè)置的值。 因此,DMAC 200通過(guò)基于后續(xù)描述符地址寄存器304中的地址 讀取描述符,來(lái)從下一行繼續(xù)DMA傳送。
在數(shù)據(jù)包括R、 G、 B三種顏色的情況下,諸如圖5B或圖5C 中所示的情況,DMAC 200以諸如"R:第一行,G:第一行, B:第一行,R:第二行,G:第二行,B:第二行,……"的 方式和順序,以可以表示為"行數(shù)x顏色數(shù)(3)"的次數(shù)重復(fù) 步驟S702至步驟S704。
利用上述硬件配置和控制方法,通過(guò)以帶為單位進(jìn)行數(shù)據(jù) 傳送,本示例性實(shí)施例可以在對(duì) 一 個(gè)帶進(jìn)行處理期間容易地生 成控制程序,而無(wú)需分割描述符。即,利用上述本示例性實(shí)施 例,不需要針對(duì)要利用DMA控制器或解碼器進(jìn)行的解碼處理或 者要利用CPU進(jìn)行的解碼處理,來(lái)單獨(dú)地生成或管理設(shè)置數(shù)據(jù)。 而且,根據(jù)本示例性實(shí)施例,可以通過(guò)NOP中斷以相互合作的 方式來(lái)平滑地執(zhí)行要利用DMA控制器或解碼器進(jìn)行的解碼處 理以及要利用CPU進(jìn)行的解碼處理。
第二示例性實(shí)施例
將描述本發(fā)明的第二示例性實(shí)施例,其中,DMA傳送控制 使用硬件配置與圖1中的硬件配置相同或可選地相似的打印機(jī)。
在圖7所示的例子中,將等于最大可打印長(zhǎng)度(紙張寬度) 的字節(jié)數(shù)設(shè)置到各行的長(zhǎng)度2 406,使得不需要再次進(jìn)行解碼處
理。然而,如果原始文檔僅部分具有圖像,則可能僅相應(yīng)部分
存在已編碼和已壓縮的數(shù)據(jù)。因此,即使在長(zhǎng)度2 406 (解碼數(shù) 據(jù)緩沖長(zhǎng)度)中指定了等于最大可打印寬度的字節(jié)數(shù),實(shí)際解 碼數(shù)據(jù)長(zhǎng)度也較小。因此,解碼器104可能需要以額外的次數(shù)存 取RAMIOI,以完成直至長(zhǎng)度2 406的長(zhǎng)度的處理。本示例性實(shí) 施例意圖解決該問(wèn)題。
在本示例性實(shí)施例中,DMAC 200按照?qǐng)D8A至圖8C所示的 順序,將數(shù)據(jù)從接收緩沖器502傳送到內(nèi)部緩沖器503。圖8A至 圖8C的各流程圖在以相同的字母示出的步驟處延續(xù)。
在本示例性實(shí)施例中,如以上所述提供足夠設(shè)置一個(gè)帶的 適當(dāng)數(shù)量的描述符。而且,將各描述符的后續(xù)描述符地址預(yù)先 設(shè)置為某個(gè)值,以使可以從第一個(gè)描述符開(kāi)始引用這些描述符。 中斷屏蔽寄存器302既不屏蔽DMA傳送結(jié)束中斷、NOP結(jié)束中 斷,也不屏蔽解碼數(shù)據(jù)緩沖長(zhǎng)度超出中斷。
參照?qǐng)D8A,在步驟S800中,CPU IOO開(kāi)始對(duì)一個(gè)帶進(jìn)行處理。
在步驟S801中,CPU IOO判斷第一行是否可以進(jìn)行DMA傳 送。在此,CPU IOO解釋打印控制命令,以識(shí)別該行的數(shù)據(jù)長(zhǎng) 度和解碼方法。在此,如果在緊縮位編碼的情況下數(shù)據(jù)長(zhǎng)度等
于或小于4個(gè)字節(jié),貝'JCPU IOO判斷為不能進(jìn)行DMA傳送。另外, 如果在種子行編碼的情況下數(shù)據(jù)長(zhǎng)度是2、 3或4個(gè)字節(jié),則CPU IOO判斷為不能進(jìn)行DMA傳送。
如果在步驟S801中判斷為第 一行可以進(jìn)行DMA傳送(步驟 S801中的"是,,),則處理進(jìn)入步驟S802。在步驟S802中,CPU IOO在REG 201上進(jìn)行用于對(duì)第一行進(jìn)行解碼的所需要的設(shè)置, 并以單傳送模式利用解碼器104來(lái)進(jìn)行DMA傳送。在此,CPU IOO在中斷狀態(tài)寄存器301中設(shè)置等于最大可打印長(zhǎng)度(紙張寬
度)的字節(jié)數(shù)。
在步驟S803中,CPU100等待,直到DMA傳送結(jié)束中斷發(fā) 生。如果在步驟S803中^^測(cè)到DMA傳送結(jié)束中斷,則處理進(jìn)入 步驟S804。在步驟S804中,CPU 1 OO讀取最大解碼長(zhǎng)度寄存器 303的值,并且存儲(chǔ)所讀取的值作為解碼緩沖設(shè)置長(zhǎng)度,然后, 處理進(jìn)入圖8B中的步驟S807。
另 一方面,如果在步驟S801中判斷為第一行不能進(jìn)行DMA 傳送(步驟S801中的"否"),則處理進(jìn)入步驟S805。在步驟S805 中,CPU IOO對(duì)數(shù)據(jù)進(jìn)行解碼,并且對(duì)解碼數(shù)據(jù)長(zhǎng)度進(jìn)行計(jì)數(shù)。
在步驟S806中,CPU IOO存儲(chǔ)計(jì)數(shù)得到的解碼數(shù)據(jù)長(zhǎng)度作 為解碼緩沖設(shè)置長(zhǎng)度,然后,處理進(jìn)入圖8B中的步驟S807。
在步驟S807中,如圖8B所示,CPU IOO存儲(chǔ)第一個(gè)描述符 的地址,作為寫(xiě)入描述符地址和執(zhí)行描述符地址。
在步驟S808中,生成描述符。更具體地,CPU IOO從第一 行開(kāi)始針對(duì)一行的處理。在此,CPU IOO解釋打印控制命令, 以識(shí)別該行的數(shù)據(jù)長(zhǎng)度和解碼方法。而且,CPU IOO將用于將 解碼數(shù)據(jù)傳送到內(nèi)部緩沖器503的設(shè)置設(shè)置到存在于寫(xiě)入描述 符地址的描述符。
在步驟S809中,CPU IOO判斷是否可以進(jìn)行DMA傳送。在 此,如果在緊縮位編碼的情況下數(shù)據(jù)長(zhǎng)度等于或小于4個(gè)字節(jié), 則CPU IOO判斷為不能進(jìn)行DMA傳送。另外,如果在種子行編 碼的情況下數(shù)據(jù)長(zhǎng)度是2、 3或4個(gè)字節(jié),則CPU100判斷為不能 進(jìn)行DMA傳送。
如果在步驟S809中判斷為不能進(jìn)行DMA傳送(步驟S809 中的"否"),則處理進(jìn)入步驟S811。在步驟S811中,CPU 100 將值"1"設(shè)置到描述符控制408的位30,以指定NOP。另一方 面,如果在步驟S809中判斷為可以進(jìn)行DMA傳送(步驟S809 中的"是"),則CPU IOO將值"0"設(shè)置到描述符控制408的位 30,不指定NOP。然后,處理進(jìn)入步驟S810。
在步驟S810中,CPU IOO判斷當(dāng)前處理的行是不是當(dāng)前帶 的最后行。如果在步驟S810中判斷為當(dāng)前處理的行是當(dāng)前帶的 最后行(步驟S810中的"是"),則處理進(jìn)入步驟S813。在步驟 S813中,CPU IOO將值"1"設(shè)置到描述符控制408的位31,指 定結(jié)束該連接陣列鏈?zhǔn)絺魉?,然后,處理進(jìn)入步驟S814。
另一方面,如果在步驟S810中判斷為當(dāng)前處理的行不是當(dāng) 前帶的最后行(步驟S810中的"否"),則處理進(jìn)入步驟S812。 在步驟S812中,CPU 100將后續(xù)描述符地址400的值存儲(chǔ)在寫(xiě)入 描述符地址中,并將值"0"設(shè)置到描述符控制408的位31。然 后,處理返回步驟S808。
在步驟S814中,CPU IOO將執(zhí)行描述符地址寫(xiě)入后續(xù)描述 符地址寄存器304中。
在步驟S815中,CPU IOO利用開(kāi)始寄存器300來(lái)指示開(kāi)始連 接陣列鏈?zhǔn)絺魉汀?br>
在步驟S816中,CPU IOO等待,直到解碼器104的中斷發(fā)生。 當(dāng)解碼器104的中斷發(fā)生時(shí)(步驟S816中的"是"),在步驟S817 中,CPU IOO讀取中斷狀態(tài)寄存器301的值,判斷該中斷的因素。
如果中斷因素是NOP結(jié)束中斷(步驟S817中的"是"),則 處理進(jìn)入步驟S818。在步驟S818中,CPU IOO讀取REG 201的各 寄存器中的值,(從而獲得REG 201中的設(shè)置,)根據(jù)該設(shè)置利 用由CPU IOO進(jìn)行的處理來(lái)對(duì)數(shù)據(jù)進(jìn)行解碼,然后,將解碼數(shù) 據(jù)存儲(chǔ)在內(nèi)部緩沖器503中。然后,CPU IOO清空中斷狀態(tài)寄存 器301的值,返回步驟S815。
在此,REG 201包括NOP結(jié)束中斷發(fā)生時(shí)刻設(shè)置的值。因 此,DMAC 200通過(guò)基于后續(xù)描述符地址寄存器304中的地址讀
取描述符,來(lái)/人下一行繼續(xù)DMA傳送。
另 一方面,如果在步驟S817中判斷為中斷因素不是NOP結(jié) 束中斷(步驟S817中的"否"),則處理進(jìn)入步驟S819。在步驟 S819中,CPU 100判斷解碼數(shù)據(jù)緩沖長(zhǎng)度超出中斷或DMA傳送 結(jié)束中斷的哪一個(gè)是中斷因素。如果在步驟S819中判斷為中斷 因素是DMA傳送結(jié)束中斷(步驟S819中的"否"),則CPU 100 清空中斷狀態(tài)寄存器301的值。然后,處理進(jìn)入步驟S820,以 結(jié)束該處理。
如果在步驟S819中判斷為中斷因素是解碼數(shù)據(jù)緩沖長(zhǎng)度 超出中斷(步驟S819中的"是"),則CPU IOO清空中斷狀態(tài)寄 存器301的值。然后,處理進(jìn)入圖8C中所示的步驟S821。
在圖8C中的步驟S821中,CPU IOO將執(zhí)行描述符地址設(shè)置 到寫(xiě)入描述符地址。
在步驟S822中,CPU IOO將等于可打印寬度(紙張寬度) 的字節(jié)數(shù)設(shè)置到存在于寫(xiě)入描述符地址的描述符的長(zhǎng)度2 406。
在步驟S823中,CPU 100讀取該描述符的描述符控制408, 判斷是否已經(jīng)進(jìn)行用于連接陣列鏈?zhǔn)絺魉徒Y(jié)束的指定。如果在 步驟S823中判斷為已經(jīng)進(jìn)行用于連接陣列鏈?zhǔn)絺魉徒Y(jié)束的指 定(步驟S823中的"是"),則處理返回圖8B中的步驟S814。另 一方面,如果在步驟S823中判斷為還未進(jìn)行用于連接陣列鏈?zhǔn)?傳送結(jié)束的指定(步驟S823中的"否"),則處理進(jìn)入步驟S824。 在步驟S824中,CPU 100存儲(chǔ)后續(xù)描述符地址400的值作為寫(xiě)入 描述符地址,然后,處理返回步驟S822。
按照上述順序,CPU IOO通過(guò)設(shè)置所需的最小解碼數(shù)據(jù)緩 沖長(zhǎng)度來(lái)生成用于一個(gè)帶的描述符,并且進(jìn)行解碼和傳送處理。 在此,可以通過(guò)對(duì)第一行進(jìn)行一次解壓縮,來(lái)預(yù)測(cè)所需的最小 解碼數(shù)據(jù)緩沖長(zhǎng)度。如果作為第一行的解碼結(jié)果,并且如果存在可以以大于所預(yù)觀'J的解碼數(shù)據(jù)緩沖長(zhǎng)度的長(zhǎng)度來(lái)進(jìn)行解碼的 已編碼和已壓縮的數(shù)據(jù),則CPU 100在將解碼數(shù)據(jù)緩沖長(zhǎng)度改 變?yōu)榈扔谧畲罂纱蛴挾?紙張寬度)的字節(jié)數(shù)之后,再次進(jìn) 行解碼處理。
根據(jù)本示例性實(shí)施例,利用上述處理,如果在一個(gè)帶內(nèi)各
行的原始數(shù)據(jù)的長(zhǎng)度相互匹配,則可以減少存耳又RAM IOI的次 數(shù),從而可以才是高打印機(jī)的處理效率。本示例性實(shí)施例在可以 利用大尺寸紙張來(lái)進(jìn)行打印的大規(guī)格打印機(jī)中尤其有用。另夕卜, 根據(jù)本示例性實(shí)施例,將傳送設(shè)置值,包括利用CPU進(jìn)行處理 的值,作為描述符進(jìn)行管理。因此,在需要進(jìn)行數(shù)據(jù)的重處理 的情況下,本示例性實(shí)施例可以有效地進(jìn)行用于重處理的設(shè)置。
當(dāng)DMA傳送設(shè)備已經(jīng)接收到包括指定不進(jìn)行DMA傳送的 NOP指定的傳送設(shè)置值時(shí),以及當(dāng)已經(jīng)進(jìn)行NOP指定時(shí),根據(jù) 本示例性實(shí)施例的DMA傳送i殳備可以通過(guò)生成NOP中斷信號(hào) 來(lái)結(jié)束傳送處理,而不進(jìn)行DMA傳送。因此,如果已經(jīng)檢測(cè)到 數(shù)據(jù)傳送量超出D M A傳送長(zhǎng)度的最小值限制,本示例性實(shí)施例 可以預(yù)先指定包括NOP指定的傳送設(shè)置值,并且還可以基于 NOP中斷信號(hào)來(lái)利用CPU進(jìn)行傳送處理。
而且,在DMA傳送的情況下,根據(jù)本示例性實(shí)施例的DMA 傳送設(shè)備可以包括對(duì)已編碼和已壓縮的數(shù)據(jù)進(jìn)行解碼并將其傳 送到傳送目的地的解碼功能。另外,在例如需要對(duì)圖像數(shù)據(jù)進(jìn) 行解碼的DMA傳送的情況下,如果不能滿足DMA傳送長(zhǎng)度的最 小值的限制從而不能使用解碼功能,則本示例性實(shí)施例的DMA 傳送設(shè)備可以利用上述NOP指定。
另外,按照使用根據(jù)本示例性實(shí)施例的DMA傳送設(shè)備利用 CPU來(lái)傳送數(shù)據(jù)的數(shù)據(jù)傳送控制方法以及其數(shù)據(jù)傳送控制程 序,如果例如檢測(cè)到數(shù)據(jù)傳送量超出D M A傳送長(zhǎng)度的最小值的
限制,則可以-使用NOP指定。而且,在這種情況下,本示例性
實(shí)施例可以使用DMA傳送設(shè)備中的寄存器值,利用CPU來(lái)進(jìn)行 與利用DMA傳送設(shè)備進(jìn)行的數(shù)據(jù)傳送類(lèi)似的數(shù)據(jù)傳送。因此, 本示例性實(shí)施例可以以相互合作的方式根據(jù)處理狀態(tài)以高處理 效率,來(lái)平滑地進(jìn)行利用DMA傳送設(shè)備的數(shù)據(jù)傳送和利用CPU 的數(shù)據(jù)傳送。
即,根據(jù)本示例性實(shí)施例,可以使用傳送設(shè)置值(描述符) 來(lái)將NOP指定給DMA傳送設(shè)備。因此,即使當(dāng)DMA傳送設(shè)備不 能進(jìn)行DMA傳送時(shí),本示例性實(shí)施例也可以馬上預(yù)先提供傳送 設(shè)置值。因此,本示例性實(shí)施例可以描述用于控制整個(gè)數(shù)據(jù)傳 送操作的CPU的控制程序。另外,本發(fā)明可以通過(guò)在軟件處理 (利用CPU的數(shù)據(jù)傳送)和硬件處理(DMA傳送)中使用共享 的描述符(存儲(chǔ)在存儲(chǔ)器中的用于數(shù)據(jù)傳送的設(shè)置值),來(lái)減小 重處理帶來(lái)的負(fù)荷。而且,本發(fā)明設(shè)計(jì)這樣的方法使用利用 控制程序預(yù)先生成的描述符,以相互適當(dāng)合作的方式,使得在 使用DMA傳送設(shè)備進(jìn)行解碼的情況下,能夠進(jìn)行由DMA傳送設(shè) 備進(jìn)行的高效解碼處理操作以及由CPU進(jìn)行的解碼處理操作。
本發(fā)明不僅可以通過(guò)在打印設(shè)備中對(duì)已編碼和已壓縮的圖 像數(shù)據(jù)進(jìn)行解碼的DMA傳送設(shè)備來(lái)實(shí)現(xiàn),而且可以通過(guò)諸如計(jì) 算機(jī)、掃描儀、通信設(shè)備和數(shù)字電視的進(jìn)行數(shù)據(jù)傳送的各種類(lèi) 型的數(shù)據(jù)處理設(shè)備來(lái)實(shí)現(xiàn)。而且,根據(jù)本示例性實(shí)施例可以處 理的數(shù)據(jù)不限于圖像數(shù)據(jù)。即,如果解碼器(圖2中的DEC 204 ) 的處理內(nèi)容改變,則本發(fā)明可以對(duì)基于特定目的而加密的數(shù)據(jù) 進(jìn)行解碼處理。可以將用于實(shí)現(xiàn)本發(fā)明的CPU的控制程序預(yù)先 存儲(chǔ)在ROM(ROM 102)中,或者從其他存儲(chǔ)介質(zhì)(磁-光盤(pán) (MO)、致密盤(pán)只讀存儲(chǔ)器(CD-ROM)、 DVD只讀存儲(chǔ)器 (DVD-ROM)或各種類(lèi)型的存儲(chǔ)卡)加載該控制程序,或者
通過(guò)網(wǎng)絡(luò)在目標(biāo)系統(tǒng)上安裝或更新該控制程序。
雖然參考示例性實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但是應(yīng)當(dāng)理
解,本發(fā)明并不限于所公開(kāi)的示例性實(shí)施例。所附權(quán)利要求的
范圍符合最寬的解釋?zhuān)园械男薷?、等同結(jié)構(gòu)和功能。
權(quán)利要求
1.一種直接存儲(chǔ)器存取即DMA傳送設(shè)備,配置成將存儲(chǔ)在存儲(chǔ)器中的用于數(shù)據(jù)傳送的至少一個(gè)傳送設(shè)置值依次讀取到寄存器中,并且基于所讀取的所述傳送設(shè)置值,來(lái)進(jìn)行DMA傳送處理,所述DMA傳送設(shè)備包括接收單元,配置成接收用于指定不進(jìn)行DMA傳送的不操作指定即NOP指定,作為所述傳送設(shè)置值;以及生成單元,配置成如果已經(jīng)利用讀取到所述寄存器的所述傳送設(shè)置值來(lái)進(jìn)行所述NOP指定,則生成NOP中斷信號(hào),以結(jié)束傳送處理,而不進(jìn)行所述DMA傳送。
2. 根據(jù)權(quán)利要求1所述的DMA傳送設(shè)備,其特征在于,還 包括解碼單元,具有在所述DMA傳送期間對(duì)已編碼和已壓縮 的數(shù)據(jù)進(jìn)行解碼,并且將解碼數(shù)據(jù)傳送到傳送目的地的解碼功A匕犯。
3. —種數(shù)據(jù)傳送控制方法,用于使用直接存儲(chǔ)器存取即 DMA傳送設(shè)備來(lái)利用中央處理單元即CPU進(jìn)行數(shù)據(jù)傳送,所述 DMA傳送設(shè)備配置成將存儲(chǔ)在存儲(chǔ)器中的用于數(shù)據(jù)傳送的至 少一個(gè)傳送設(shè)置值依次讀取到寄存器中,并且基于所讀取的所 述傳送設(shè)置值,來(lái)進(jìn)行DMA傳送處理,所述DMA傳送設(shè)備包括 接收單元,配置成接收用于指定不進(jìn)行DMA傳送的不操作指定 即NOP指定,作為所述傳送設(shè)置值;以及生成單元,配置成如 果已經(jīng)利用讀取到所述寄存器的所述傳送設(shè)置值來(lái)進(jìn)行所述 NOP指定,則生成NOP中斷信號(hào),以結(jié)束傳送處理,而不進(jìn)行 所述DMA傳送,所述數(shù)據(jù)傳送控制方法包括利用由所述CPU進(jìn)行的處理來(lái)進(jìn)行與所述DMA傳送設(shè)備 的傳送功能相同的傳送;檢測(cè)所述NOP中斷信號(hào);以及如果已經(jīng)檢測(cè)到所述NOP中斷信號(hào),則基于讀取到所述DMA傳送設(shè)備中的所述寄存器中的所述傳送設(shè)置值,利用由所 述CPU進(jìn)行的處理來(lái)進(jìn)行數(shù)據(jù)傳送,并且此后,重新開(kāi)始所述 DMA傳送設(shè)備中的所述DMA傳送。
4. 根據(jù)權(quán)利要求3所述的數(shù)據(jù)傳送控制方法,其特征在于, 還包括如果進(jìn)行的數(shù)據(jù)傳送的傳送長(zhǎng)度等于或小于閾值,則 利用所述傳送設(shè)置值來(lái)進(jìn)行所述NOP指定,如果進(jìn)行的數(shù)據(jù)傳 送的傳送長(zhǎng)度大于所述閾值,則不進(jìn)行所述N O P指定。
5. 根據(jù)權(quán)利要求3所述的數(shù)據(jù)傳送控制方法,其特征在于, 還包括在所述DMA傳送期間,對(duì)已編碼和已壓縮的數(shù)據(jù)進(jìn)行 解碼,并且將解碼數(shù)據(jù)傳送到傳送目的地。
6. —種計(jì)算機(jī)可執(zhí)行指令,存儲(chǔ)在設(shè)備可讀取的介質(zhì)上,當(dāng)由所述設(shè)備執(zhí)行時(shí),所述計(jì)算機(jī)可執(zhí)行指令使所述設(shè)備執(zhí)行 根據(jù)權(quán)利要求3所述的數(shù)據(jù)傳送控制方法。
7. —種數(shù)據(jù)傳送控制系統(tǒng),包括直接存儲(chǔ)器存取即DMA傳送設(shè)備,配置成將存儲(chǔ)在存儲(chǔ)器 中的用于數(shù)據(jù)傳送的至少一個(gè)傳送設(shè)置值依次讀取到寄存器 中,并且基于所讀取的所述傳送設(shè)置值,來(lái)進(jìn)行DMA傳送處理, 所述DMA傳送i殳備包括接收單元,配置成接收用于指定不進(jìn)行DMA傳送的不 操作指定即NOP指定,作為所述傳送設(shè)置值;以及生成單元,配置成如果已經(jīng)利用讀取到所述寄存器的 所述傳送設(shè)置值來(lái)進(jìn)行所述NOP指定,則生成NOP中斷信號(hào), 以結(jié)束傳送處理,而不進(jìn)行所述DMA傳送;以及中央處理單元即CPU,其中,所述數(shù)據(jù)傳送控制系統(tǒng)使用所述DMA傳送設(shè)備來(lái)利 用所述CPU進(jìn)行數(shù)據(jù)傳送; 所述CPU被編程為具有CPU數(shù)據(jù)傳送單元,配置成利用由所述CPU進(jìn)行的處 理來(lái)進(jìn)行與所述DMA傳送設(shè)備的傳送功能相同的傳送;中斷檢測(cè)單元,配置成一全測(cè)所述NOP中斷信號(hào);以及 傳送單元,配置成如果所述中斷4企測(cè)單元已經(jīng)檢測(cè)到 所述NOP中斷信號(hào),則基于讀取到所述DMA傳送設(shè)備中的所述 寄存器中的所述傳送設(shè)置值,利用由所述CPU進(jìn)行的處理來(lái)進(jìn) 行數(shù)據(jù)傳送,并且此后,重新開(kāi)始所述DMA傳送設(shè)備中的所述 DMA傳送。
8. 根據(jù)權(quán)利要求7的數(shù)據(jù)傳送控制系統(tǒng),其特征在于,如 果進(jìn)行的數(shù)據(jù)傳送的傳送長(zhǎng)度等于或小于閾值,則所述CPU利 用所述傳送設(shè)置值來(lái)進(jìn)行所述NOP指定,如果進(jìn)行的數(shù)據(jù)傳送 的傳送長(zhǎng)度大于所述閾值,則所述CPU不進(jìn)行所述NOP指定。
9. 根據(jù)權(quán)利要求8的數(shù)據(jù)傳送控制系統(tǒng),其特征在于,所的數(shù)據(jù)進(jìn)行解碼,并且將解碼數(shù)據(jù)傳送到傳送目的地的解碼功能。
全文摘要
本發(fā)明提供一種DMA傳送設(shè)備、數(shù)據(jù)傳送控制方法和數(shù)據(jù)傳送控制程序。該DMA傳送設(shè)備配置成將存儲(chǔ)在存儲(chǔ)器中的用于數(shù)據(jù)傳送的至少一個(gè)傳送設(shè)置值依次讀取到寄存器中,并且基于所讀取的所述傳送設(shè)置值,來(lái)進(jìn)行DMA傳送處理,并且包括接收單元,配置成接收用于指定不進(jìn)行DMA傳送的不操作(NOP)指定,作為傳送設(shè)置值;以及生成單元,配置成如果已經(jīng)利用讀取到寄存器的傳送設(shè)置值來(lái)進(jìn)行NOP指定,則生成NOP中斷信號(hào),以結(jié)束傳送處理,而不進(jìn)行DMA傳送。
文檔編號(hào)G06F13/20GK101196861SQ20071019901
公開(kāi)日2008年6月11日 申請(qǐng)日期2007年12月7日 優(yōu)先權(quán)日2006年12月7日
發(fā)明者巖田彈 申請(qǐng)人:佳能株式會(huì)社