A frame buffer in or for a raster scan video display

Abstract: A frame buffer is capable of accessing a pixel aligned M by N array of contiguous pixels on the screen from a frame buffer memory constructed of an M by N array of memory chips by driving a common address bus to all the memory chips, and by driving N RAS wires horizontally across the memory chip array and M CAS wires vertically down the memory chip array. :p. The writing of individual pixels in this array is enabled by energising the write enable pins to each memory chip directly. The data wires in the memory organisation are tied together such that M horizontal pixels in a single row can be read or written simultaneously. Additionally, all M and N pixels may be written simultaneously if the data in all vertical columns is the same. :p.The frame buffer includes a selectively energisable plane mask for disabling desired planes of accessed pixels. By sequentially controlling the output enables to the different rows of the addressed M by N array, the frame buffer can provide rapid access to N-1 rows after normally accessing the first one.

Description: This specification forms part of a set of seven specifications, each relating to a different invention, but having a common exemplary embodiment. To save repetitive description, all seven specification cross-refer and are:- EP-A- 0 279 225,(AT9-86-070) entitled "RECONFIGURABLE COUNTERS FOR ADDRESSING IN GRAPHICS DISPLAY SYSTEMS ". EP-A- 0 279 229,(AT9-86-072) entitled "A GRAPHICS DISPLAY SYSTEM ". EP-A- 0 279 231,(AT9-86-073) entitled "A GRAPHICS FUNCTION CONTROLLER FOR A HIGH PERFORMANCE VIDEO DISPLAY SYSTEM ". EP-A- 0 279 226,(KI9-86-029) entitled "HIGH RESOLUTION DISPLAY ADAPTER ". EP-A- 0 279 227,(YO9-86-051) entitled "RASTER DISPLAY VECTOR GENERATOR ". EP-A- 0 279 230,(YO9-86-104) entitled "VIDEO ADAPTER WITH IMPROVED DATA PATHING ". EP-A- 0 279 228,(YO9-86-105) entitled "A FRAME BUFFER IN OR FOR A RASTER SCAN VIDEO DISPLAY ". The present invention relates to frame buffers in or for raster scan video displays. In display adapters for interfacing between a computer and an attached raster scan video display monitor, many functions previously unavailable in stand alone workstations can now be provided and this creates a need for improvements to the memory architecture and controls for the frame buffer of such a video adapter. As the speed and file capacity of workstations and personal computers increases, the demand for high resolution intelligent display adapters also increases. Large graphic applications formerly limited to mainframe computers having dedicated graphic display terminals can use this increased capability to migrate their graphic applications to stand alone systems. The present invention describes functions that can be incorporated into a video display adapter to provide, in stand alone work stations, the graphic functions and performance required by such complex graphic applications. Such increased capability display adapters are especially needed for such small stand alone systems as the IBM PC/AT and the IBM RT-PC which can provide high-performance, moderate-cost adapter functions which cover a very broad spectrum of applications. The memory organisation of the frame buffer is a limiting factor to the update performance of frame buffered raster scan displays. The memory organisation determines how many and which pixels can be accessed in a single memory cycle, and hence limits the number of pixels that can be updated in parallel by the update hardware. High performance displays frequently allow parallel update to the frame buffer effectively resulting in a lower memory cycle time per pixel. The parallel update required is dependent upon the size and shape of the objects being drawn into the frame buffer. Hence, if the only objects being drawn were long horizontal lines, an organisation which allowed the parallel access of sixteen or thirty-two horizontal pixels would be ideal. Similarly, if the only objects displayed were six by eight characters, then a memory organisation that allowed the parallel access of a six by eight array of pixels would be perfect. .An added benefit to frame buffer memory organisations is the ability to access these arrays of pixels at any arbitrary pixel boundary. If the above example of the parallel access of sixteen horizontal pixels limits the location of the left edge to be on a sixteen pixel boundary, then the horizontal line drawer would find its maximum efficiency only if the line started on sixteen pixel boundaries, an unlikely case. Access to sixteen pixels whose left edge can be at any desired pixel boundary is more efficient. In the present description, this type of parallel access will be called "pixel aligned" access. The implementation of memory organisations determines the cost and complexity of frame buffered systems and their associated update hardware. The memory organisation and its implementation hence becomes critical in determining the cost and functionality of frame buffered displays. Because of the nature of memory chips, the complexity of the frame buffer organisation is uniquely determined by the number of memory chips and the number of unique signal wires connected to them. These memory wires consist of the address wires (usually multiplexed into row address and column address signals), data wires and control signals (row address strobes, column address strobes, and the write enables). U. S. Patent US-A- 4,435,792 of A. Bechtolsheim issued March 6, 1984 and entitled "RASTER MEMORY MANIPULATION APPARATUS" provides a frame buffer organisation which allows the access of sixteen pixel aligned horizontal pixels. This is achieved by using sixteen memory chips (64 kilobits each) to realise a 1K by 1K frame buffer. The ability to access a pixel aligned word is achieved by strobing column addresses to different chips depending upon the left boundary of the desired word. The implementation uses one address bus, but sixteen column address strobe wires. The first address is driven and the appropriate chips strobed, followed by the second address and the strobe of the rest of the chips. This implementation requires a longer memory cycle but only eight address signals. An article by Robert F. Sproull, Ivan E. Sutherland, Alistair Thompson, Satish Gupta, and Charles Minter, entitled "THE EIGHT BY EIGHT DISPLAY", ACM Transactions on Graphics, Vol. 2, No. 1, Jan. 1983, pp. 32-56 describes the implementation of the access to an eight by eight array of pixels that could be pixel aligned to optimise the access for different operations. The eight by eight display had eight sets of addresses (eight wires each) which could deliver different addresses to different columns of the eight by eight array of memory chips. The memory organisation used provided separate row addresses by using the same address wires and providing different column strobes, and provided separate column addresses by driving different addresses on different columns. The Eight by Eight Display could read or write all 64 pixels. Hence, an eight bits per pixel frame buffer would use five hundred and twelve (64 x 8) bits of data. Obviously, such a large number of bits can be processed only by an array of processors, or require additional multiplexers, which would reduce the number of bits read from the frame buffer to the size of the data bus. In a single processor system such a large number of I/O and address lines is too large to be acceptable. The present invention describes a frame buffer memory organisation, which has a reduced number of address, data, and control wires, but still allows full pixel aligned addressability to the frame buffer. US-A- 4,434,502 of Arakawa et al entitled "A MEMORY SYSTEM HANDLING A PLURALITY OF BITS AS A UNIT TO BE PROCESSED" describes a pixel aligned memory access, but only for read operations. The present invention, conversely, provides all-point addressability for both read and write operations. In US-A- 4,434,502 the general idea of the memory organisation is based on separating or breaking the memory into a number of smaller blocks (at least four) and providing different address control for each of them. The present invention however, utilises a different approach to address control. The present invention utilises time separation or multiplexing of the addresses for various sections of memory rather than space separation as in US-A- 4,434,502. Therefore, the frame buffer of the present invention may be considered as a single physical block under a common address control. The consequences of this approach are as follows. In US-A- 4,434,502 a number of arithmetic units are required for address incrementing/decrementing which is equal to the number of memory blocks. This of course makes a frame buffer more expensive because of extra hardware, e.g., a larger chip count. With the architecture of the present invention only one external address incrementer and one four-to-one address multiplexer are required. Further, according to the teachings of the US-A- 4,434,502, the number of address busses must be twice the number of blocks in the frame buffer. This prevents the implementation of such an architecture in VLSI because of the large number of inputs and outputs required. In the present invention it is possible to implement an address control fully in VLSI technology, because only one address bus is required. Another thing which may be presumed from the US-A- 4,434,502, but not specifically set forth is that the frame buffer is built from conventional static RAMs. Static RAMs usually have lower density than conventional dynamic RAMs. But they allow separate pairs of addresses to be applied to the memory blocks. If conventional dynamic RAMs (which have on-chip row/column address demultiplexers) rather than static RAMs were used in order to reduce a number of memory chips and the board space required for such a frame buffer, then an additional two-to-one address multiplexer would be required for each memory block. The present invention however, is not concerned with static RAMs because of the impracticability of using them for large frame buffers. Finally, in the US-A- 4,434,502 the concept of reducing the size of the data bus is implemented by an additional logic selection unit, one for each block. In the present invention the number of data bus lines is greatly reduced without any additional hardware, while providing the same write operation performance obtainable as though the size of the data bus were not reduced. In summary, the overall method and apparatus described in US-A- 4,434,502 requires a larger amount of additional control hardware chips, than would probably make up the memory itself. Conversely, the approach of the present invention makes the frame buffer control much less expensive and space consuming while providing the same or even higher performance. US-A- 4,442,503 of D. Schutt et al entitled "DEVICE FOR STORING AND DISPLAYING GRAPHIC INFORMATION" describes a method of increasing the performance of a two dimensional vector (or curve) drawing in a frame buffer with linear organisation. The disclosed frame buffer essentially comprises a conventional architecture, which provides a reasonable performance for storing rasterised images, but is slow for two-dimensional drawing. The solution of this US-A- 4,442,503 is based on the same approach to the frame buffer design as in US-A- 4,434,502 i.e., it requires the frame buffer to be made up from a number of smaller modules. Consequently, the subject of US-A- 4,442,503, is an address transformation device, which converts two-dimensional arrays of addresses, e.g., for vector drawing, into separate addresses for each frame buffer module and distributes the addresses over the address inputs of each storage module. The number of storage modules is essentially equal to the vertical dimension of the vector strobe file. The present invention, on the other hand, provides an organisation and implementation of a two-dimensional frame buffer. Such a buffer can be successfully used for storing rasterised images, as well as for vector drawing without any need for extra address conversion and providing for the separate addressing of a number of memory modules. US-A- 4,475,104 of T. Shen entitled "THREE DIMENSIONAL DISPLAY SYSTEM" describes what it refers to as a Z-buffer algorithm, which facilitates two-dimensional representation and storage of three-dimensional images. It does not however, concern itself with the frame buffer architecture, but rather, only with the methods of interpretation of data stored into the frame buffer. This is quite a different concern than the memory organisation of the present invention. An article entitled "ALL POINTS-ADDRESSABLE RASTER DISPLAY MEMORY" of Dill et al appearing in the IBM Journal of Research and Development, Vol. 28, No.4, July 1984 is pertinent to the present invention in that it describes a two-dimensional frame buffer architecture. The system described in the article does not require separation of the frame buffer into smaller memory modules with separate address busses, like the first two referenced patents discussed previously. Two architectures are described in this paper. However, both differ from the architecture disclosed in the present invention. The first approach requires a separate address incrementer which is inside each memory chip. Unfortunately, such chips are not currently available. Moreover, it is hardly possible that one would trade off chips space for an additional incrementer, when it can be used for additional memory cells. Accordingly, such an approach has more theoretical than practical value. The second approach disclosed in the article does not use special memory chips with an address incrementer therein, but instead, manipulates the memory input/output bits, selecting only the desired bits. This method requires twice the number of memory chips, compared with the frame buffer. The approach utilised in the present invention is to have one address incrementer and to multiplex two-row and two-column addresses in time. Thus, each chip, even without an additional address multiplexer thereon, may get either an incremented or non-incremented row address as well as an incremented or non-incremented column address. Consequently, the present invention, offers an effective way of using conventional memory chips without any additional memory chips required. The number of memory chips required should be only enough to store a full image, e.g., the embodiment of the present invention describes a four by four buffer memory plane built with sixteen 64K by 8 bit memory chips. This number provides a full storage of a 1K by 1K 8-bit image. The approach, described in the paper would require two chips to provide an all-points addressability for a four by four square of pixels, or twice the storage capacity, than is required for basic image storage. The system described in the above article differs further from that of the present invention, in that it does not discuss any reduction of the input/output data length except for what is required for pixel addressability if the second approach described in the paper were to be used. Generally, such a reduction is not sufficient in terms of the interface with the external microprocessor, graphic generator units, etc. Conversely, the system of the present invention is concerned with just this problem. EP-A-0 163 209 is directed to the internal architecture of dynamic memory chips and is concerned with providing a variety of screen formats data path widths. In particular, it provides a way of reducing the number of chips, which must be used when a requirement for a different format takes place, particularly when horizontal resolution is not a number which is divisible by two. This is a separate problem from that of the present invention and the solution of the problem does not influence nor facilitate the implementation of a high performance all-point addressable frame buffer as is the case with the present invention. According to the invention there is provided a frame buffer for a raster scan video display which frame buffer is capable of being accessed at storage locations corresponding to a pixel aligned MxN array of contiguous pixels to be displayed on the screen of the display, the frame buffer comprising: random access memory having an array of separately addressable memory sections, the array of memory sections having N rows and M columns; N row address strobe (RAS) wires, each connected to each section in a corresponding row of the memory section array and M column address strobe (CAS) wires each connected to each section in a corresponding column of the array of memory sections; an address bus common to all the memory sections for identifying for access the storage locations corresponding to the MxN array of contiguous pixels on the screen of the display in the array of memory sections, one location from each section; each section having output and write enable means to permit data to be written in and read from an addressed location, and data wires for transfer of data to or from addressed locations, the data wires of all sections in each column being connected together; and address and drive signal generating means (Fig. 11) adapted to derive from an origin pixel address (PO) supplied to the frame buffer, drive signals for energising said address bus and strobe wires to access the storage locations corresponding to the MxN array of pixels the location of which on the screen is identified by the origin pixel. There follows a description of one form of frame buffer architecture of this kind for use in a video adapter for a raster scan display which provides the capability of accessing a pixel aligned M by N rectangular array of pixels from a random access video memory wherein the memory comprises M by N separately addressable memory sections having a common address bus the video data being organised so that each pixel in the M by N array on the screen is stored in a different section of the memory and addressing means for accessing an M by N array of memory sections from addresses derived from the array origin pixel address (PO) supplied to the system. It is capable of accessing an arbitrarily aligned M by N array of a frame buffer memory by driving a common address bus to all the memory chips, and by driving N RAS wires horizontally across the memory array and M CAS wires vertically down the memory array (4 by 4 in the described embodiment). It also allows the control of writing individual pixels in this array by controlling the write enable pins to each memory chip directly. The data wires in the buffer are tied together such that only M horizontal pixels can be read or written. This leads to fewer data wires for the memory as well as fewer bits to compute. During reads, the output enables control which row is being read. During writes, the above mentioned write enables control which row is being written. The disclosed buffer has a plane mask which may be selectively energised to disable desired planes of the pixels. By sequentially controlling the output enables to different rows, the frame buffer can provide rapid access to 3 rows after normally accessing one. This allows the economy of a small data bus, as well as high speed for sequential udpates. In addition to the described technique for rapidly accessing successive rows of a 4 by 4 square, the buffer organisation can also provide for accessing the neighbouring 4 by 4 squares in page mode. Page mode can only be used if these successive 4 by 4 squares have the same row address. This permits an access that is 2 to 4 times the normal memory access speed. Squares along a row are always on the same row address. The described arrangement will work equally well for other square organisations with a different size (e.g., 8 by 8, 16 by 16) or for other rectangular organisations with different sizes (e.g., 3 by 4, 5 by 4, etc.). These other configurations would of course require as many concurrently accessible memory chips or sections as there are pixels in the accessed rectangular array as will be well understood. Thus, for an 8 by 8 array, 64 sections; or for a 4 by 5 array, 20 sections would be required. Compared to a conventional implementation of such a frame buffer, the present invention utilises a reduced number of I/O and address lines, and considerably less memory assisting hardware. Consequently, such a frame buffer architecture delivers a lower cost display with the performance of significantly more expensive systems. The present invention will be described further by way of example with reference to an embodiment thereof as illustrated in the accompanying drawings in which: FIG. 1 is a high level functional block diagram of the architecture of an overall video adapter in which the present invention has particular utility; FIG. 2 is a diagram showing a 4 by 4 square pixel array on the screen illustrating the addressing of individual pixels and the eight bits of data comprising each pixel; FIG. 3 is a diagram illustrating the effective address drive (strobe) and data lines for the 4 by 4 pixel array on the screen as illustrated in FIG. 2; FIG. 4 is a diagram illustrating a 4 by 4 by eight bit pixel segment of the frame buffer which shows the orientation of the direct mask and plane mask enable signals; FIG. 5.1 shows a mapping in the frame buffer of a typical set of sixteen pixels of the aligned four by four pixel array on the screen as shown in FIG. 5.2; FIG. 5.2 illustrates the location on the screen of a four by four pixel array "aligned" on word boundaries (non-aligned); FIG. 6.1 shows a mapping in the frame buffer of a typical set of sixteen pixels of a non-aligned four by four pixel array on the screen as shown in FIG. 6.2; FIG. 6.2 illustrates the location on the screen of a four by four pixel array not "aligned" on precise word boundaries; FIG. 7 illustrates the appearance on the screen of a four by four pixel array similar to FIG. 6.2 showing a non-aligned word which is used as an example together with FIG. 8-10 to illustrate the generation of the proper row and column address strobes from the address of the reference bit PO; FIG. 8 is a diagram of the set of row and column address strobes illustrating the relative timing required for addressing the four by four non-aligned pixel array illustrated in FIG. 7; FIG. 9 illustrates the distribution of the two column address strobes of FIG. 8 performed by switch matrix SWX (FIG. 11) into the four required column address strobe signal applied directly to the memory chips as required by the example shown in FIG. 7; FIG. 10, similarly to FIG. 9, illustrates the distribution of the two row address strobe signals into the four strobe signals which are applied directly to the memory chips; FIG. 11 is a functional block diagram of the frame buffer addressing and access control circuitry which generates the requisite control signals (addresses and strobes) to access arbitrary squares on the face of the screen; FIG. 12 is a mapping table which defines logical function of the switch SWX in FIG. 11; FIG. 13 is a logic diagram of one possible implementation of the switch SWX of FIG. 12; FIG. 14, similarly to FIG. 7, illustrates a non-aligned four by four pixel array on the screen for the purposes of illustrating the direct mask generation as set forth with respect to FIG. 15; FIG. 15 illustrates diagrammatically the automatic two dimensional rotation of the direct mask under control of the x and y alignment circuits for the particular example of FIG. 14; and FIG. 16 is a high level block diagram illustrating one form of the overall frame buffer architecture of the present invention. Before proceeding with a detailed description of the present Frame Buffer Architecture capable of accessing pixel aligned square words of the screen, a brief overview will be presented of a video adapter in which the present invention has particular utility. It is of course to be understood that the herein described video adapter is intended to be for illustration only and that the present invention could be used advantageously with other video adapter architectures as will be apparent to those skilled in the art. An overall functional block diagram of a video display adapter in which the present invention has particular utility is shown in FIG. 1. The video display adapter is envisioned as a high resolution medium function graphics display adapter which could drive any of a number of currently available display monitor units such as the IBM 5081. In a currently realisable form, it will support such a monitor with a resolution of 1024 by 1024 pixels and provides eight bits per pixel of video data information which provides 256 possible control features which may be distributed between a larger number of colours. The following comprises a brief description of the overall function of the adapter, it being understood that for a more detailed description of such an adapter, reference should be made to EP-A-0 279 226, (KI9-86-029). Since the primary objective of the overall video display adapter is to provide advanced video display functions in a comparatively inexpensive adapter which is in turn adapted to be connected to processors or CPU's having somewhat limited processing capability, those functions which would otherwise be performable in a more sophisticated CPU are provided in the present adapter functions. Further, the functions are implementable via a relatively straightforward and simplified set of instructions. Referring to FIG. 1, the overall adapter consists of the following major components. The digital signal processor 10 is utilised to manage the overall adapter's resources, but it also transforms display coordinates and performs a number of other fairly sophisticated signal processing tasks. The instruction and data storage block 12 is an instruction RAM which can be loaded with additional micro code for the signal processor as will be understood. Block 12 also acts as a data RAM and provides the primary interface between signal processor 10 and the system processor. It also performs the function of being a main store for the signal processor 10. Block 14 labled command FIFO serves as an input buffer for passing sequential commands to the digital signal processor 10 via I/O bus 16 and, as is apparent, connects the video display adapter to the system processor. The pixel processor 18 contains logic that performs a number of display supporting functions such as line drawing and address manipulation which permits finite areas of the display screen to be manipulated (BIT BLT). A number of the novel aspects of the present display adapter are resident in the pixel processor block. Block 20 labled frame buffer comprises the video random access memory which feeds the monitor through appropriate digital analog conversion circuitry. As is apparent, the configuration herein disclosed has a resolution of approximately 1K by 1K pels wherein each pixel represents a discrete element of video data displayed on the monitor which may contain as much information as is storable in the eight planes of the frame buffer which as is, well understood, means that there are eight bits of data per pixel. As will be further understood, these eight bits may be distributed among the red, green and blue of a colour monitor or simply for intensity information in a gray scale black and white monitor. Herein, we are primarily concerned with the architecture of the frame buffer 20, which provides a number of features which permit the operation of the video adapter to be significantly speeded up, as will be apparent from the subsequent description. Proceeding now with the description of the present frame buffer architecture, the following description assumes a frame buffer with a 1K (1024) by 1K resolution by eight (bits of video data per pixel). All design parameters can be easily extended to frame buffers with different resolutions and a different number of bits per pixel. This frame buffer would probably be built using 16 memory chips, each having a capacity of 64K by 8 bits (e.g., 256 by 256 by 8), although it may be assembled by smaller chips (e.g., using two 64K by 4 chips, or eight 64K by 1 chips in place of each 64K by 8 bit chip). Hence, 16 pixels can be accessed in parallel, one pixel from each chip. These 16 pixels may be accessed as a 4 by 4 square as illustrated in the foreground of FIG. 2. In one memory cycle 128 bits of data can be accessed, that corresponds to 16 pixels, numbered from 0 to 15. It should be understood that the array is distributed throughout the frame buffer with one pixel of any array stored on a different chip or section of the buffer. This will be more apparent from the following description. FIG. 3 shows the signals necessary to drive such a frame buffer organisation. It should be understood that each of the pixels in the figure are actually distributed throughout the 16 chips but lie along common rows and columns. An eight bit X and Y address bus is common for all memory chips. Only eight bits are necessary on chips as only 256 rows or columns need to be accessed on any chip and all of the chip address lines are interconnected in rows and columns. The data signals (input/output) are connected in the vertical direction, forming a 32-bit data bus. This allows the access of all sixteen pixels (128 bits) if the data being written along each column is the same (as is the case when clearing, area filling, or drawing vertical lines), but otherwise allows reads and writes of 4 horizontal pixels which can be in any of the four rows. The four RAS signals are driven along rows such that all chips in the same row have the same row address. Similarly all chips in the same column have a common column address. Each word (of 32 bits) can be accessed by supplying four time-multiplexed 8-bit addresses onto the address bus. Two of these are row addresses and the other two are column addresses. In the case of an array of pixels wholly within an area bounded by notional coordinate lines defining physical word boundaries at each Nth row and each Mth column, called a word aligned array, only one of each will be required, as will be explained subsequently. Each chip receives only one row and column address selected by one of the two row address strobes and one of the two column address strobes. Figure 4 illustrates the rest of the control signals (e.g. output and write enables), which control the ability to mask any combination of pixels and planes for the whole array. The "direct" mask controls which pixels in the square are written and is implemented by selectively controlling the write "enable" signals of all 16 chips. The plane mask controls which plane is written, and its implementation depends on the internal logic of the memory chips that are used to build the frame buffer. If, for example, NEC LPD41264 chips are used, the plane mask is provided by supplying the proper data on the data bus during the row address strobe. In case of 64K by 1 chips, plane masking may be done by having 32 separate CAS signals, eight for each column and enabling only the ones where the plane is enabled. Figs. 5.1 and 5.2 show a correspondence between pixel locations on the screen and addresses supplied to the frame buffer for an aligned array. The cross hatched area on the screen of Fig. 5.2 shows 16 pixels, accessed simultaneously. The black painted square in each chip on Figure 5.1 shows a cell or pixel, which would be accessed corresponding to this area. Bold lines on the screen mark word boundaries. When the pixel square is located exactly inside those boundaries, the addresses applied to all 16 memory chips are equal, the array is said to be word aligned. Thus, if the square with coordinates (4,0) of the pixel P0 is being accessed, then for all chips the row address is 0 and column address is 1. FIGS. 6.1 and 6.2 are equivalent to FIGS. 5.1 and 5.2 but illustrate the condition of a non-word aligned array. Thus the array lies across one or more word boundaries. In the example of FIG. 6.2 the array, with the coordinates of pixel P0 being (5,1), lies in two vertical and two horizontal address spaces. This results in the distribution in the frame buffer shown in FIG. 6.1. It will be noted all sixteen pixels still lie within four columns (2,1,1,1) and four rows (1,0,0,0). The addresses received by each chip are different. These addresses are computed by the addressing circuitry is explained subsequently with respect to the example shown in FIG. 7. FIG. 7 illustrates a selection of addresses applied to the memory chips in the situation when a pixel square is not located at the word boundaries (non-aligned). For example, if the coordinates of P0 are (229,247), then pixels P0,P1,P2 should get row address 61 and column address 57, pixel P3 should get addresses 58, 61, etc. Hence, there are four pairs of addresses that must be assigned to the 16 chips. FIG. 8 illustrates the timing of the addresses supplied to the row and column address busses of all 16 chips with respect to the four control signals RASA, RASB, CASA and CASB. FIGS. 9 and 10 illustrate the distribution of four signals above to eight signals RAS 1-4 and CAS 1-4 for an arbitrary array, which in turn are applied directly to the rows and columns of memory chips. Thus CASA, CASB, RASA and RASB can select up to two row and column addresses in each chip. RAS 1-4 and CAS 1-4 are the actual strobe pulses applied to the address lines selected above. RAS 1 is applied to the four chips in row 1 of the array of chips in the buffer, etc., and CAS 1 is applied to the chips in column 1 of the array of chips in the buffer. The switching logic and timing is controlled by the two last bits of the X and Y addresses. So, for the above example, CASA is applied to CAS2, CAS3 and CAS4; CASB is applied to CAS 1; RASA is connected to RAS4 and RASB is connected to RAS1, RAS2 and RAS3. FIG. 11 shows the required hardware which provides access to an arbitrary square array, based on the principle, discussed above. Two 10-bit address registers ADRX and ADRY are loaded with the coordinates of the pixel P0 (in the example ADRX = 229, ADRY = 247). The high order 8 bits of each address are connected to a corresponding incrementer (INCRX and INCRY) and to the four-to-one multiplexer MUX. The outputs of the incrementers are also connected to the MUX. The memory operation begins when a signal "start memory operation" (MOP) is applied to a sequencer SEQ, which in turn, provides signals RASA, RASB, CASA and CASB. The latter signals control the MUX, providing the address sequence, shown at the bottom of FIG. 8 and, in addition, feed the inputs of two functionally equal logical switches SWX and SWY. The switch SWX distributes CASA and CASB to four signals CAS1-4 under control of the two last bits of ADRX register XAD0, XAD1, and the switch SWY distributes RASA and RASB to four signals RAS1-4 under control of the two last bits of ADRY register YAD0, YAD1. FIG. 12 defines the logical function or truth table of the switch SWX, showing the correspondence between its input and output signals as a function of the two last bits of the X address. FIG. 13 shows the possible implementation of the SWX switch according to the logic defined by Table 1. The logical function for switch SWY is not shown as it would be identical to that of the switch SWX, e.g., RAS 1-4, A and B would be substituted for CAS 1-4, A and B. The square array illustrated in FIG. 7 would be defined by an address P0 (229, 247) which as will be appreciated on the screen coordinates of the pixel P0 (the array origin). The high order eight bits of the X address decode to 7, X(9...2) = 7; the low order two bits decode to 1, X(1,0) = 1; the high order eight bits of the Y address decode to 61, Y(9....2) = 61; and the low order two bits decode to 3, Y(1,0) = 3. FIG. 8 indicates the addresses that will be applied to the frame buffer via the MUX of FIG. 12 during the times when CASA, CASB and RASA, RASB are active. FIGS. 9 and 10 illustrate the distribution of the CAS 1-4 and RAS 1-4 strobe signals to the respective rows and columns of chips during address sequences CASA, CASB and RASA, RASB. The particular output configuration is determined by the two logical switches SWX and SWY and is for the example graphically shown in FIG. 7 and described above. As stated previously the logical function defining the outputs of SWX and SWY is shown in FIG. 12. An evaluation of the above array address PO (231, 247) is shown in FIG. 11 by the parenthetical numbers below the MUX, INCRX, INCRY, SWX, and SWY. FIGS. 14 and 15 illustrate the direct mask alignment necessary, according to the location of the pixel square. Two aligners, one for horizontal direction (XAL) and one for vertical direction (YAL) rotate the 16-bit mask under control of the four low order X and Y address bits X(1,0) and Y(1,0). Data alignment is also required, the principle of which is discussed in previously discussed U. S. Patent 4,435,792, "RASTER MEMORY MANIPULATION APPARATUS", by Andreas Bechtolsheim, and need not be described here further. It should be mentioned, however, that for the frame buffer disclosed here, data alignment needs to be done for only one (horizontal) direction and requires four times less hardware. FIG. 15 graphically illustrates the mapping performed by the two aligners XAL and YAL for the particular array shown in FIG. 14. PO (230,247). As will be understood the mask array which selectively controls access to specified pixels in the frame buffer (FB) must be reconfigured from its original form entering the alignment module at the left to the configuration shown going to the FB at the right of the figure which is of course necessitated by the location of the particular pixels in the FB. FIG. 16 shows the overall implementation of the disclosed frame buffer. It is believed to be self explanatory, all blocks which are not essentially conventional in nature having been described. The frame buffer organisation can be further enhanced by allowing rapid successive memory cycles. This is very useful because most successive frame buffer accesses are in the neighbourhood of the previous ones. Update hardware can hence easily utilise the enhancement provided by faster update cycles that are in vicinity of previous cycles. In the case of the disclosed frame buffer organisation, reads and writes of arbitrarily aligned rows of four pixels are possible. Once one row has been accessed, it is trivial to access any of the other three rows in the accessed 4 by 4 square by merely enabling the outputs of that row of chips. The operation of the accessing of the next row is significantly faster than the access of the first row (in current memory technology 50 nanoseconds vs. 300 nanoseconds). A slightly different technique of accessing successive words rapidly is to use page mode access provided by some memory chips. Page mode access is a mode of memory chip access such that memory locations with the same row address can be accessed in a shorter time (typically 1/6th to 1/3rd of the regular memory cycle). Neighbouring 4 by 4 squares are typically located on the same row address, and can be accessed in page mode. The technique of accessing successive words rapidly is also useful in the case of memory organisations using higher density memory chips. When one designs a frame buffer using a higher density memory organisation, a square access of 16 pixels may not be feasible because of the lack of enough input/output pins on the memory chips (i.e., a 1K by 1K frame buffer requires only one 256 by 4 memory chip). In this case, one could organise the memory to access only four horizontal pixels, and use the rapid access of successive words to provide fast update. The plane mask feature as described previously is to effect the selecting or ignoring of certain bit fields in the individual pixels and would be the same (i.e., same bit) for a given access. Accordingly it need be only an 8 bit mask field which may be applied to the output enable lines shown schematically as the "plane mask" in FIG. 4. These lines are connected together in the vertical planes of the respective chips as will be understood.

Claims: A frame buffer (20) for a raster scan video display which frame buffer is capable of being accessed at storage locations corresponding to a pixel aligned MxN array of contiguous pixels to be displayed on the screen of the display, the frame buffer comprising: random access memory having an array of separately addressable memory sections, the array of memory sections having N rows and M columns; N row address strobe (RAS) wires, each connected to each section in a corresponding row of the memory section array and M column address strobe (CAS) wires each connected to each section in a corresponding column of the array of memory sections; an address bus common to all the memory sections for identifying for access the storage locations corresponding to the MxN array of contiguous pixels on the screen of the display in the array of memory sections, one location from each section; each section having output and write enable means to permit data to be written in and read from an addressed location, and data wires for transfer of data to or from addressed locations, the data wires of all sections in each column being connected together; and address and drive signal generating means (Fig. 11) adapted to derive from an origin pixel address (P0) supplied to the frame buffer, drive signals for energising said address bus and strobe wires to access the storage locations corresponding to the MxN array of pixels the location of which on the screen is identified by the origin pixel. A frame buffer as claimed in claim 1 in which the address generating means is adapted to supply the same row and cdlumn address to all of said sections when the accessed storage locations correspond to an array of pixels wholly within an area on the screen bounded by notional coordinate lines defining physical word boundaries at each Nth row and each Mth column. A frame buffer as claimed in claim 2 wherein the address generating means includes means for sequentially supplying with in a memory cycle two consecutive row and column addresses to the memory and means for selectively energising a first set of RAS and CAS wires during a first phase in which the first of said consecutive addresses are applied to the address bus and a second set of RAS and CAS wires during a second phase of the memory access cycle in which the second of the consecutive addresses are applied to the address bus wherein all N rows and M columns of address strobe wires are energised during a given memory access cycle. A frame buffer as claimed in claim 3 in which the means for selectively energising includes logic means (SWX, SWY) energised by the low order bits from the origin pixel address (P0) to determine which row and column address strobe wires should be energised during the first phase of the memory access cycle and which such wires should be accessed during the second phase of the memory access cycle. A frame buffer as claimed in claim 4 wherein the logic means includes means for energising all N row and all M column wires during the first phase of the memory cycle when the origin pixel address lies along one of said physical word boundaries in both the row and column directions. A frame buffer as claimed in claim 3, wherein the means for sequentially supplying addresses to the memory includes a multiplexer (MUX) actuable under the control of the memory clock for supplying a first set of X and Y addresses derived from the high order bits of the origin pixel address (P0) during the first phase of the memory cycle and for supplying the set of X and Y addresses incremented by one during the second phase of the memory cycle. A frame buffer as claimed in claim 3, including means for generating an MxN direct mask for controlling the access to specified pixels of the M by N array during a particular frame buffer cycle which includes, a register for storing the direct masks; first rotation means cooperating with the direct mask register for shifting the mask in the X direction by an amount equal to the offset of the origin pixel address (P0) from a physical word boundary along the row direction and second rotation means cooperating with the direct mask register for shifting the mask in the column direction an amount equal to the offset of the origin pixel address from a physical word boundary in the column direction. A frame buffer as claimed in claim 7 wherein the means for determining the X and Y offset values comprises an address decoder which decodes the low order bits of the X and Y addresses defining the origin pixel address (P0) to determine the pixel offset from the specified physical word boundaries in the row and column directions. A frame buffer as claimed in claim 3 wherein the output enable and data wires for the memory are so arranged that the complete MxN array of accessed memory locations may be read out into predetermined register locations one pixel from each memory section.

Inventors: GUPTA SATISH, LUMELSKY LEON, SEGRE MARC, GUPTA, SATISH, LUMELSKY, LEON, SEGRE, MARC
Applicants: IBM, INTERNATIONAL BUSINESS MACHINES CORPORATION
Application year: 1988
Main classification: G09G1
IPC codes: G09G5, G06F3, G06F12, G06T1