Abstract:
According to an image memory address assignment system, a frame memory is divided into a plurality of blocks. Upper bits of the address of the frame memory constitute a block address, and lower bits constitute an intrablock address. The block address is supplied to an address converter. The address converter has a conversion pattern ROM. The conversion pattern ROM stores conversion patterns each converting the input write address signal block address to a block address for a completely read block area so as to perform simultaneous read and write access even if the data read direction (order) of the frame memory is different from the data write direction. The address converter supplies the write block address to the frame memory. As a result, the data can be written in the completely read block.

Description:
BACKGROUND OF THE INVENTION 
     The present invention relates to an address assignment system for an image memory (e.g., a frame memory of a page printer) for processing image data in page units. 
     A conventional page printer prints character data in units of one page. When image data is transferred to a conventional page printer, the image data is temporarily stored in a frame memory. When the frame memory stores one-page image data, the one-page image data is supplied to the page printer. 
     A conventional page printer must deal with a large number of image data in page units, and the frame memory must therefore have a large memory capacity. For this reason, in a conventional system, a one-page frame memory is prepared, and an input from the host computer to the frame memory and an output from the frame memory to the page printer are alternately repeated. More specifically, one-page image data is transferred from the host system to the frame memory, and after the transferred data is supplied to the printer, the next one-page image data is transferred from the host system to the frame memory again. This one-page image data is transferred to the printer, and the next one-page image data is supplied from the host system to the frame memory. 
     In such a conventional printing control means, the next one-page image data cannot be written in the frame memory while the current one-page image data is being printed. Therefore, the next one-page image data cannot be written until the current one-page image data is completely printed. As a result, printing time is prolonged and high-speed, high-efficiency printing cannot be performed. 
     As shown in FIG. 1A, if a data write direction (CW) from the host system is always the same as the data output direction (Pout) to the page printer, the next one-page image data can be sequentially written in the data memory area while the current one-page image data is being transferred to the page printer. However, as shown in FIG. 1B, when the write direction (CW) is different from the read direction (Pout), the next one-page image data must be written after the current one-page image data is completely transferred to the page printer. Therefore, the overall printing time is prolonged. 
     In order to solve this problem, a double frame memory configuration has been proposed. Data is written in one frame memory, while the data is being transferred from the other frame memory to the page printer. However, two expensive large-capacity frame memories must be used, greatly increasing the product cost, and leading to an impractical configuration. 
     SUMMARY OF THE INVENTION 
     It is an object of the present invention to provide an address assignment system of an image memory for a page printer for processing image data in units of one page, wherein the next one-page image data can be written in a read end area while the current one-page image data is being transferred to the page printer even when the image data write direction is different from the image data read direction, thereby effectively utilizing the one-page image memory so as to perform high-speed printing with a simple configuration. 
     In order to achieve the above object of the present invention, there is provided an image memory address assignment system comprising: 
     page data storage means divided into a plurality of block areas each of which is accessed such that upper bits of an address signal designate a block address and lower bits thereof designate an intrablock address, the page data storage means being arranged to store at least one-page data; 
     means for generating read address signals so as to read out the one-page data from the page data storage means; 
     means for generating write address signals to write the one-page data, the write address signals being generated in an order different from that of the read address signals; 
     block address converting means, arranged between said page data storage means, said read address signal generating means and said write address signal generating means, for receiving as a block address upper bits of the read and write address signals and generating a block address in accordance with a conversion pattern for converting the block address of the input write address signal to a block address of a completely read block area; 
     write conversion pattern designating means, connected to said block address converting means, for designating a conversion pattern for converting the block address of the write address signal to the block address of the completely read block area; 
     read conversion pattern designating means, connected to the block address converting means, for designating another conversion pattern for converting the block address of the read address signal to another block address; and 
     means for printing the data read out from the page data storage means. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     Other objects and features of the present invention will be apparent from the following description taken in connection with the accompanying drawings, in which: 
     FIGS. 1A and 1B are illustrative representations for explaining conventional printing formats; 
     FIG. 2 is a block diagram showing a page memory address assignment system according to an embodiment of the present invention; 
     FIGS. 3 and 4 are block diagrams showing a frame memory of FIG. 2; 
     FIG. 5 is a block diagram showing an address converter 20 of FIG. 2; 
     FIGS. 6A through 6H are tables showing each page block conversion pattern in a block address conversion ROM 70 of FIG. 5; 
     FIG. 7 is a diagram showing various registers used for frame memory access control in a main RAM of FIG. 2; 
     FIGS. 8A through 8C are flowcharts for explaining the CPU operation for frame memory write area control of the system shown in FIG. 2; 
     FIG. 9 is a diagram showing the state of a possible write area in the system of FIG. 2; 
     FIG. 10 is a table in a main ROM 14 for checking the possible write area in the system of FIG. 2; 
     FIGS. 11 and 12 are respectively flowcharts for explaining image data transfer operations at the CPU and DMA controller in the system of FIG. 2; 
     FIG. 13 is a block diagram showing an address converter according to another embodiment of the present invention; and 
     FIGS. 14 and 15 are tables showing output data values in the conversion ROM of FIG. 13. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     An address assignment system according to an embodiment will be described with reference to the accompanying drawings. FIG. 2 is a block diagram showing a hardware configuration when a pattern data write control system is applied to a page printer control system. 
     A central processing unit (CPU) 10 controls the printer control system as a whole. A CPU bus (CPU-BUS) 11 controls data transfer between the CPU 10 and the respective units connected to the bus 11. A DMA bus (DMA-CONBUS) 12 is used for data transfer using a direct memory access (DMA) unit 19. A main random-access-memory (RAM) (M·RAM) 13 is connected to the CPU 10 through the bus 11 and stores various types of data. A main read only memory (ROM) (M·ROM) 14 is connected to the CPU 10 through the bus 11 and stores control programs shown in flowcharts of FIGS. 8A through 8C, 11 and 12. An interface (I/F) 15 is connected to the CPU 10 through the bus 11 and controls transfer of printing data and printing control data between the CPU 10 and a host computer (HOST). 
     A frame memory (F·RAM) 16 has a 1-Mbyte memory capacity and stores one-page image data. The memory 16 is segmented into k×i blocks each having a predetermined unit memory capacity (to be described in detail later). A frame memory bus (F·BUS) 17 has a 2-byte data width, and image data are transferred to/from the memory 16 through the bus 17. A page printer 18 prints the data read out from the memory 16 in page units. A DMA controller (DMAC) 19 accesses the memory 16 when data is transferred to the printer 18. An address converter (A·CON) 20 receives a read address (DMA address) from the controller 19 and a write address (CPU address) from the CPU 10, and transforms these addresses into units of division blocks of the memory 16. The converter 20 will be described in detail later. 
     A data latch (DI·L) 21 latches one-character code or image data of interest through the interface 15. A character generator (CG·ROM) 22 generates a character pattern corresponding to the character code latched by the latch 21. 
     A pattern extracting/combining circuit 23 extracts or combines the dot pattern data generated from the generator 22 or the image data latched by the latch 21. 
     An input/output controller (IO·CONT) 26 exchanges various control signals such as an initial set end signal (I·END) with the CPU 10 and the controller 19, and controls pattern conversion and pattern development into the memory 16. 
     A pattern conversion circuit 30 performs conversion operations (e.g., 4/3 times elongation conversion, 90° conversion, 180° conversion, 2y (double longitudinal length) conversion) of a dot pattern supplied from the circuit 23. 
     A pattern conversion control circuit 40 controls the timing and the addresses for the circuit 30 when the circuit 30 performs conversion operations such as 4/3 elongation conversion, 90° conversion, 180° conversion and 2y (double longitudinal length) conversion. 
     A conversion parameter storage circuit 50 stores conversion parameters supplied to the circuit 40 which can control conversion operations such as 4/3 elongation conversion, 90° conversion, 180° conversion and 2y conversion. 
     The image memory address assignment system of this embodiment will be described in detail with reference to FIGS. 3 through FIG. 12. FIG. 3 shows the detailed block configuration of the frame memory 16, and FIG. 4 shows a one-block format. The memory 16 has a total dot memory pattern area of X·Y=2304×3584 dots, and each block (Bi-j) has an area of X·Y=256×512 dots, so that the memory 16 is divided into X·Y=9×7 blocks. 
     FIG. 5 shows the detailed arrangement of the address converter 20. A block address conversion ROM 70 stores 8-page (page 0 through page 7) block conversion patterns. A one-page block conversion pattern is shown in FIGS. 6A through 6H in detail. A Y write address register (Y·WR) 71 and a write page designation register (WP·R) 73 store addresses for write image data in the memory 16. 
     A Y read address register (Y·RR) 72 and a read page designation register (RP·R) 74 store the addresses for reading out the image data from the memory 16. A flip-flop (F/F) 75 is set in response to a read start signal (RS) which represents frame memory read access and which is supplied from the controller 19. The flip-flop 75 is reset in response to a read end signal (RE) representing an end of one-line data transfer to the printer 18. A page address selector (P·SEL) 76 selects an output from the register 74 when the flip-flop 75 is set. However, when the flip-flop 75 is reset, the selector 76 selects the output from the register 73. A 3-bit page designation address (P0 through P2) generated from the selector (P·SEL) 76, a 3-bit Y block designation address (Y9 through Y11) for designating a block along the Y direction, and a 4-bit X block designation address (X4 through X7) for designating a block along the X direction are used to read-access the ROM 70. The read or write block address is updated in accordance with the read or write mode of the memory 16. 
     FIGS. 7 through 12 are views for explaining write area control and data read/write of the memory 16. Referring to FIG. 7, registers XWD and YWD show possible write areas of the memory 16. A print flag PF is set at logic 37 1&#34; during printing. Registers XWS and YWS indicate a current write start position of the memory 16. A register RY indicates a read position (Y dot position) of the memory 16. Registers WP and RP indicate the write and read pages, respectively. A signal X indicates a printing format in which a character string direction is parallel to the printing direction. A signal Y indicates a printing format in which the character string direction is perpendicular to the printing direction. Reference symbol X2 denotes an X address counter in the controller 19. 
     The memory 16 has 9×7 blocks each with 256×512 dots. When the order of read addresses for reading out the data of the memory 16 is different from that of write addresses in a given relationship under the control of the CPU 10, the converter 20 supplies the corresponding read and write addresses in corresponding orders to the memory 16. The given relationship indicates that the data read direction in the memory 16 is given by an arrow Pout and the data write direction is given by an arrow CW, or that the read direction is given by the arrow CW and the write direction is given by the arrow Pout. It is essential that the data read direction be different from the data write direction. When pattern data is written in the memory 16 in units of one character, a possible write area is determined. When a data read end area from which data is transferred to the printer 18 exceeds a given area, the next page data is written in the possible write area. Write area control and read/write access of the memory 16 are shown in FIGS. 7 through 12 in detail. FIGS. 8A through 8C show the CPU operation for write area control. The CPU 10 uses the working registers (XWD, YWD, PF, XWS, YWS, RY, WP, RP, X/Y, etc.) of the ROM 14 and a table shown in FIG. 10 to identify the possible write area (a hatched area in FIG. 9). 
     As shown in FIG. 8A, the CPU 10 checks in step A1 whether a direction (i.e., an order) of data read from the memory 16 is the same (X) as that of data write therein or perpendicular (Y) thereto (FIGS. 1A and 1B). If the order of the data read from memory 16 is determined to be X (the same as shown in FIG. 1A), the CPU 10 clears (&#34;0&#34;) the register RY representing the read position of the memory 16 in step A2. In step A3, the CPU 10 clears (&#34;0&#34;) the register WP representing the write page and the register RP representing the read page. In step A6, the CPU 10 clears the flag PF. The CPU 10 then checks in step A7 whether or not the write data is stored in the RAM 13. On the other hand, when the CPU 10 determines that the read direction is perpendicular to the direction (Y) of the write data, as shown in FIG. 1B, the CPU 10 sets an initial value (2303 dots which represent a maximum area) in the registers XWD and YWD representing the possible write area in step A4. In step A5, the register WP is set at logic &#34;0&#34;, and the register RP is set at logic &#34;0&#34;. Thereafter, the operations in steps A6 and A7 are performed. When the CPU 10 determines in step 7 that the data is stored in the RAM 13, its write position is set in the registers XWS and YWS in step A8. The CPU 10 checks in step A9 whether the direction of data read from the memory 16 is the same (X) as that of data write therein or perpendicular (Y) thereto. When the CPU 10 determines that the read direction is the same (X) as the write direction, the value of the register YWS is compared with that of the register RY in step A10 so as to check whether or not the write position exceeds the read position. If NO in step A10, the write data stored in the RAM 13 is transferred to the pattern conversion mechanism. The converted pattern data is written in the memory 16. More specifically, the data stored in the RAM 13 is latched by the latch 21, the conversion mode information is stored in the circuit 50, and the I·END signal is supplied to the controller 26 which manages the subsequent control. The controller 26 converts the one-character data stored in the latch 21 in accordance with the conversion mode information stored in the circuit 50. In this manner, the controller 26 controls the writing of the one-character pattern data in the memory 16. When the CPU 10 determines in step A9 that the write direction is perpendicular (Y) to the read direction, the value of the register XWS is compared with that of the register XWD. The CPU 10 compares the value of the register YWS with that of the register YWD in step A12. Furthermore, the CPU 10 compares the value of the register XWS with the value (XWD-256) (the number of dots of one block along the X direction; 16 words) in step A13. In this manner, the CPU 10 checks whether or not the write position falls within the possible write area. If YES in steps A11 and A12 or A13, the data is written in the memory 16 in step A14. If NO, the control returns to step A11 and the CPU 10 waits until the write operation is enabled. 
     When a one-character pattern is written, the write address is updated in accordance with the designated format in step A15. The CPU 10 checks in step A16 whether or not one-character data is written in the memory 16. The CPU 10 checks in step A17 whether or not the content of the flag PF represents in-printing (i.e., PF=&#34;1&#34;). If NO in step A17, the flag PF is set at logic &#34;1&#34; in step A18. In step A19, the content of the register RY is cleared (&#34;0&#34;). The content of the register RY is set in the register (Y·PR) 72 in step A20. The CPU 10 checks in step A21 whether the read direction of data from the memory 16 is the same (X) as that of the data write therein or perpendicular (Y) thereto. When the CPU 10 determines that the write direction is the same (X) as the read direction, the controller 19 is initialized in step A29, and DMA processing is started. However, when the CPU 10 determines that the write direction is perpendicular (Y) to the read direction, the content of the register WP is incremented by one in step A22. The CPU 10 then checks in step A23 whether or not the updated content of the register WP has reached the 8th page. If YES in step A23, the content of the register WP is reset to &#34;0&#34;(page 0) in step A24. The content of the register RP is incremented by one in step A25. The CPU 10 then checks in step A26 whether or not the content of the register RP has reached the 8th page. If YES in step A26, the content of the register RP is reset to &#34;0&#34;(page 0) in step A27. The content of the register WP is set in the register (WP·R) 73 and the content of the register RP is set in the register (RP·R) 74 in step A28. The controller 19 is initialized in step A29. The operation for transferring the image data (dot pattern data) from the memory 16 to the printer 18 will be described in detail with reference to FIGS. 11 and 12. The CPU 10 performs the printing data transfer operation of FIG. 11 until one-line (144 words) data is printed at the printer 18. When the CPU 10 receives a print end interrupt signal from the printer 18 upon completion of one-line printing, the content of the register RY representing the read position of the memory 16 is incremented by one in step B1. The CPU 10 then checks in step B2 whether or not the updated content of the register RY has reached a one-page line number (3584 dots as shown in FIG. 3). If NO in step B2, the content of the register RY is set in the register (Y·RR) 72 in step B3. The CPU 10 checks the designated direction (X/Y direction) of data written in the memory 16 in step B4. When the CPU 10 determines that the write direction is perpendicular (Y) to the read direction, the area data corresponding to the value of the register RY is set in the registers XWD and YWD representing the possible write area (FIG. 10) in step B5. In step B6, the DMA controller 19 is initialized (FIG. 12). In step B7, the CPU 10 checks the logic state of the flag RF and waits until the flag RF is reset to logic &#34;0&#34;. However, if YES in step B2, the flag RF is set to logic &#34;0&#34;in step B8. The CPU 10 checks the write direction (X/Y direction) in step B9. When the CPU 10 determines that the write direction is the same (X) as the read direction, the content of the register RY is reset to &#34;0&#34;in step B10. However, when the CPU 10 determines that the write direction is perpendicular (Y) to the read direction, the maximum possible write area is set in the registers XWD and YWD in step B11. The DMA controller 19 is initialized by the CPU 10 every time one-line printing is completed. As a result, one-line data transfer shown in FIG. 12 is executed. Upon reception of a DMAC instruction from the CPU 10, transfer operation is started. In step C1, the flag RF is set at logic &#34;1&#34;. In step C2, the read start signal (RS) is supplied to the address converter 20. In step C3, the data is transferred from the memory 16 to the buffer of the printer 18. In step C4, the content of the counter X2 is incremented by one. The DMA controller 19 checks in step C5 whether or not the updated count of the counter X2 has reached a one-line data transfer word (144 words). If YES (i.e., X2=144) in step C5, the read end signal (RE) is generated by the DMA controller 19 in step C6. The flag RF is reset (&#34;0&#34;) in step C7. In step C8, the DMA controller 19 supplies a print start designation signal to the printer 18. The printer 18 prints out the data every time one-line image data (dot pattern data) is received by the line buffer therein. 
     The next page image data can be written in the read area while the current one-page image data is transferred from the memory 16 to the printer 18. Although the frame memory has only a one-page memory capacity, the frame memory can be effectively utilized to perform high-speed printing without idle time at low cost. 
     FIG. 13 shows an address converter according to another embodiment of the present invention. Although the page address conversion mechanism of the first embodiment comprises one address conversion ROM 70, the page address conversion mechanism of this embodiment comprises an X page address conversion ROM 80X, a Y page address conversion ROM 80Y and an adder 87 so as to reduce the ROM capacity. The input/output patterns of the ROM 80X are illustrated in FIG. 14, and input/output patterns of the ROM 80Y are illustrated in FIG. 15. Components 81 through 86 of FIG. 13 correspond to the address converter 20 of FIG. 5. Reference numeral 81 denotes a Y write address register (Y·WR); 82, a Y read address register (Y·RR); 83, a write page designation register (WP·P); 84, a read page designation register (RP·R); 85, a flip-flop; and 86, a page address selector (P·SEL). In this embodiment, the values of the respective patterns shown in FIGS. 6A through 6H are shown in the X·ROM and Y·ROM tables of FIGS. 14 and 15. A value for x=1 and y=1 of conversion pattern 1 is &#34;0C&#34;. In the embodiment shown in FIGS. 13 through 15, the value &#34;0C&#34; is combined in the following manner. In the X·ROM table of FIG. 14, a value for P0-2 and X4-7 is &#34;07&#34;. In the Y·ROM table of FIG. 15, a value for P0-2 and Y9-11 is &#34;05&#34;. The values &#34;07&#34; and &#34;05&#34; are added by the adder 87 of FIG. 13, and the sum is given as &#34;0C&#34;.