Abstract:
An apparatus and method of synchronizing data systems having different clock frequencies at a particular address. A first device receives first and second parallel data and outputs first serial data at a first particular clock frequency. A second device outputs second parallel data at a second particular clock frequency that is a submultiple at an integer &#34;n&#34; of the first particular clock frequency. The second parallel data is outputted in groups of &#34;n&#34; pieces of data. The address is combined with the integer &#34;n&#34; until the combination passes through a particular numerical value. This produces a first signal representative of the combination passing through the particular numerical value and a second signal representing an offset position less than &#34;n&#34; relative to the first serial data. The first and second signals control second parallel data to initiate the outputting of the second parallel data in accordance with the first signal and to offset the outputted second parallel data in accordance with the second signal. The offset second parallel data may then be merged with the first serial data beginning at the proper address.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to an apparatus and method for synchronizing systems having different clock frequencies. Specifically, the invention relates to a synchronization system for use as part of a cursor control so as to properly present intensity data of a cursor pattern for display in correct synchronization with video data which is normally presented to a high resolution display. 
     2. DESCRIPTION OF THE PRIOR ART 
     High resolution graphic displays typically used as part of a computer system normally include a cursor which can be visually shifted to any portion of the display screen either manually or automatically. The cursor display may take a variety of patterns and a typical cursor is formed as a small arrow. The cursor pattern is provided as an overlay to the normal video data which is presented on the display screen. The location of the cursor should appear at any randomly selectable coordinate position on the display screen and the presentation of the cursor overlay pattern should be synchronized with the normal video data. 
     In the prior art, cursor overlay patterns have been presented directly to the video display as a separate input and not forming part of the normal video input. This type of prior art cursor display is relatively expensive since it requires completely separate hardware including the generation of clock signals in synchronism with the normal video input. This type of prior art system being separate from the generation of the video signals cannot utilize the flexibility and the advantages of new types of video display systems. An alternative way of providing cursor data is to modify the video memory to include the cursor. This degrades the performance of updating the video while there is cursor movement. 
     One new type of video display system incorporates a very flexible color generating system referred to as a RAMDAC™ which is a trademark of the assignee of the present application. This &#34;RAMDAC&#34; may be provided on a single IC chip and incorporates a random access memory and integral digital-to-analog converters to provide a complete color palette for the video display. This allows video input signals to be completely adjusted as to color internally within the &#34;RAMDAC&#34; so as to produce output video color signals of any hue or intensity completely under the control of the user of the device. Internally, the &#34;RAMDAC&#34; operates at a high clock speed such as 100-150 MHz. The output from the &#34;RAMDAC&#34; is provided at this high speed on a video coaxial line so as to be a direct input to the video display. 
     It is, therefore, desirable to produce an overlay signal forming cursor data directly to the &#34;RAMDAC&#34; through an overlay input, with this cursor data in synchronism with the video data. Since the overlay signal forming the cursor data presented to the &#34;RAMDAC&#34; is not at video frequency but is generally at some frequency considerably less than video frequency, such as 1/4 or 1/5 of the video frequency, the problem is to synchronize the cursor signal with the regular video signal. Typically, the data inputted to the &#34;RAMDAC&#34; which may be either the regular video data or the cursor data is provided in digital form as groups or blocks of data in parallel Normally, this parallel data is presented at a lower frequency or clock rate, such as 1/4 or 1/5 of the frequency of the internal clock of the &#34;RAMDAC&#34;. Since blocks of the data are presented in parallel at the lower clock rate, this has the effect, however, of providing the data at a higher serial clock rate since, for example, five pieces of data presented in parallel at 20 or 25 MHz is equivalent to the same five pieces of data transmitted during the same time interval at 100 or 125 MHz in series. 
     The key problem, however, is that the synchronization of the data between different IC chips can only have clock signals at a relatively low frequency such as 20-25 MHz, but it is desirable to have the internal video clock and the output video signals of the RAMDAC operating at a much higher frequency such as 100 or 125 MHz. Using 25 MHz as an example and with a parallel block of five discrete words of data, it would be desirable to have the video clock operate at 125 MHz which represents a division of five between the two clock signals. If the video clock is 100 MHz and with a parallel block of four discrete words of data, this would represent a division of four between the two video signals. It would, therefore, be desirable to provide an apparatus and method that would allow for the synchronization of data between IC chip systems at frequencies that are a selectable submultiple of the higher clock frequency internal to one of the systems. As an example, it would be desirable to select submultiples such as 5 or 4 or actually any submultiple. 
     SUMMARY OF THE INVENTION 
     The present invention will be described with reference to a cursor control system wherein cursor information formed as binary data from a random access static memory (cursor RAM) is shifted to an output buffer in synchronism with an external clock. The external clock is supplied by another device such as a &#34;RAMDAC&#34; which receives the cursor data from the output buffer. The external clock is actually produced from the &#34;RAMDAC&#34; and is at a frequency which is a submultiple of the frequency of a data or pixel clock which is internal to the &#34;RAMDAC&#34;. The invention, however, may be used to synchronize data in general between systems wherein the clock frequency of one system is a selectable submultiple of the clock frequency of the other system. 
     In the description of the present invention, the cursor RAM contains bits which are either 1&#39;s or 0&#39;s that represent the pixel intensity either full &#34;on&#34; or &#34;off&#34; of a cursor overlay pattern. The location of the cursor must appear on the video display at a randomly selectable coordinate or address on the image produced on the video display by the output signals from the &#34;RAMDAC&#34;. The &#34;RAMDAC&#34; includes an overlay input to receive the information to produce the proper cursor display including the information regarding the visual image of the cursor display and with this information occurring at the appropriate time in accordance with the cursor coordinates. These coordinates would be the &#34;x&#34; and &#34;y&#34; address for the cursor. The major problem solved by the present invention is in regard to the presentation of the pixel data representing the cursor to the overlay input of the &#34;RAMDAC&#34; in correct synchronization with the pixel clock which is internal to the &#34;RAMDAC&#34; and is not available directly to the cursor controller. The &#34;y&#34; address is primarily controlled in accordance with the horizontal sync pulse used to initiate the horizontal sweep in the video display so that the &#34;y&#34; address can be controlled directly by counting horizontal sync pulses and without reference to the pixel clock which is internal to the &#34;RAMDAC&#34;. 
     In order to provide for the correct synchronization for the &#34;x&#34; address, an external clock is produced from the &#34;RAMDAC&#34; internal clock, which external clock is a submultiple of the internal clock. The present invention provides a novel method to first select a specific one of the external clock pulses to produce a first signal to control the extraction of the data from the cursor memory. Second, the method of the present invention provides a second signal to control the loading of the data in the correct position in an output buffer which output buffer is then used to supply the information to the overlay input of the &#34;RAMDAC&#34;. The invention thereby provides for the first selection to control the location of the cursor on the video display to occur within a given group of five pixels. The second control is of the data position in the output buffer so as to select one pixel of the five in which the cursor pattern begins. In this way, the proper &#34;x&#34; address is synchronized with the internal clock to the &#34;RAMDAC&#34; to produce the data on the visual display representing the cursor at the proper address. 
     In actuality, the present invention provides for the synchronization of data between systems that are a selectable submultiple of the pixel clock frequency. The particular embodiment of the invention has the capability to select any submultiple such as 5, 4 or even down to 1. The present invention thereby allows great flexibility in providing for the synchronization of data between systems having different clock frequencies. 
     The present, invention includes the use of a down counter or substractor which receives as one input the &#34;x&#34; address which represents the number of RAMDAC internal video clock cycles which must occur before the output information is displayed. The down counter also receives the external clock which is a submultiple of the RAMDAC internal video clock and with the down counter preset to count down or subtract by a integer &#34;n&#34; which is the submultiple ratio between the external and internal clocks. 
     When the down counter or subtractor makes a transition by crossing zero, then an underflow or carry signal is used to provide the first selection as indicated above and with the data from the three least significant bits representing a data position in the output buffer to select which pixel of the submultiple number in which to begin the cursor pattern. These two signals, which are the underflow signal and the signal representing the data from the three least significant bits, may then be used to control the output from a cursor RAM which in turn can thereby control the presentation of the signals from the cursor RAM at the appropriate position for display of the cursor information. 
     A similar but simpler structure may be used to control the &#34;y&#34; position. Specifically, again a down counter can be used to enable the cursor controller to provide for the proper video display, but this can be directly controlled by counting the horizontal sync pulses without the necessity of providing both the first selection and the second control. A first selection is all that is necessary since the horizontal sync count can be used to directly control which line the cursor information is to begin and with this cursor information then enabled for a particular number of lines in accordance with the number of lines in the cursor information. For example, the cursor information may represent a display of 64×64 pixels and with each line in the &#34;y&#34; direction representing a pixel. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     A clearer understanding of the present invention will be had with reference to the following description and drawings wherein: 
     FIG 1. are waveforms illustrating the relationship between the generation of pixel data from an internal video clock and an external clock at a submultiple of the video clock; 
     FIG. 2. specifically illustrates how a cursor controller may provide data at one clock rate to a load shifter which can provide output data at a second clock rate; 
     FIG. 3 illustrates providing the data output at a submultiple clock rate and with the output data at the higher clock rate offset so that the video data is controlled at the proper position; 
     FIG. 4 illustrates in general the use of a down counter to provide for the control of the data in the present invention; 
     FIG. 5 illustrates the offset for different submultiples of the clock rate; 
     FIG. 6 illustrates the use of a shift register in combination with multiplexers to provide for the proper offset; 
     FIG. 7 illustrates in more detail a specific down counter or subtractor used to provide for the proper control signals; 
     FIG. 8 illustrates a cursor controller for providing for the cursor signals at the appropriate &#34;x&#34; position for the cursor; 
     FIG. 9 illustrates a downcounter used to provide for the proper &#34;y&#34; position for the cursor; and 
     FIG. 10 is a block diagram illustrating the cursor controller of the present invention used in association with a &#34;RAMDAC&#34;. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     As shown in FIG. 1, a video clock may operate at a relatively high speed such as 125 MHz and with each rising edge of the video clock producing a new piece of pixel data. This is the type of information at a video level which is used to produce a high resolution video display. Unfortunately, in order to provide signals between logic chips and to provide these signals at relatively low current levels, the frequencies at which these signals may be supplied between logic chips is considerably lower than the video clock. For example, these lower frequencies may be a submultiple &#34;n&#34; of the video clock such as the video clock divided by five. This is also shown in FIG. 1 by the lower wave form wherein each rising edge portion of the lower frequency submultiple clock represents five parallel outputs for the same pixel data as controlled by the video clock. These multiples could be different. For example, the video clock could be 100 MHz and with a division of four also producing a lower frequency clock of 25 MHz. In any event, it is desirable to have a flexible system wherein the video clock and the external clock are related to each other by some multiple arrangement defined by the integer &#34;n&#34;. 
     As shown in FIG. 2 and using the example of a video clock of 125 MHz and a submultiple clock of 25 MHz, basically one logic chip such as a cursor controller 10 may introduce five signals in parallel to parallel load a five bit parallel load shifter. This loading occurs at the clock rate which is the submultiple of the video clock rate. The signals from the parallel load shifter may be shifted out at the video clock rate and may be supplied to a digital-to-analog converter to ultimately be used as input data to a video display such as a CRT. 
     As shown in FIG. 3, one difficulty is that the cursor controller 10 must provide the five outputs in parallel to the parallel shifter 12 but be able to shift them to fall on any pixel boundary. As shown in FIG. 3, the submultiple clock is represented to have five pixels for each rising edge of the submultiple clock. This is shown in waveform 14 which is the same as the lower waveform of FIG. 1. As shown in the block 16 and in the five different lines, the information when presented in serial form may either have no offset or be offset by 1, 2, 3 or 4 pixels. In other words, even though the clock 14 presents five pixels for each clock signal, it is necessary to subdivide the actual pixel information so that the pixel information may be offset so that anyone of the five pixels may be used as the controlling position for the pixel information on the display screen. 
     To compound the problem as described above, the cursor controller 10 may actually support different clock divisions such as clock divisions other that five. The present invention is capable of any integer &#34;n&#34; clock division and can divide the offset for any number of pixels within any clock submultiple rate wherein the submultiple is a integer between 1 and any integer &#34;n&#34; as long as it can provide an integer clock division of the video clock. 
     FIG. 4 describes in general a down counter 20 which may be used to provide for appropriate output control signals. The down counter 20 receives &#34;x&#34; address information which represents the number of video clock cycles before the information is to be displayed in the &#34;x&#34; address position. The external clock is also used as an input to control the integer &#34;n&#34; by which the &#34;x&#34; address is counted down. Assuming, for example, that the external clock is the video clock divided by five, then each clock cycle decrements or subtracts in the counter the division ratio of five. 
     When the counter crosses zero, the down counter 20 produces an underflow or carry signal. This can occur in the following instances for the transfer from time tn to tn +1. 
     
         ______________________________________tn          tn + 1______________________________________0000 →       1011    0 →  -50001 →       1101    1 → -40010 →       1100    2 → -30011 →       1101    3 → -20100 →       1111    4 → -1______________________________________ 
    
     When this carry or underflow signal is produced, then the three least significant digits which are represented by Q 0 , Q 1  and Q 2  in FIG. 4 can be decoded to determine which video pixel boundary to begin the output. These techniques will work for any integer clock division. As a specific example, if the video cursor is to begin at the 28 pixel position in the &#34;x&#34; direction, the binary number 28 is set into the &#34;x&#34; address. If as shown in FIG. 4, the clock is divided by five, then every clock/5 signal (external clock signal) reduces the number in the counter by five. 
     When the counter crosses zero, this produces the underflow or carry signal to indicate that the countdown is complete. The Q 0 , Q 1  and Q 2  signals indicate the remainder in the least significant positions which represents the particular pixel or offset that is necessary for the first pixel of the group of five pixels. The system of the present invention operates at the external clock frequency to control the inputing of groups or blocks of data, and provides for the formating of the cursor control data words within the group or block of data to properly position the first word of the cursor pattern. 
     FIG. 5 illustrates for a number of different submultiples of the video clock how the offset should affect the information in a shift register. Assuming a shift register 22, the offset is shown for a clock divided by five, a clock divided by four or even a clock divided by one. In each time period t 0 , t 1 , t 2 . . . either one, four or five bits may be shifted out from the shift register. The present invention provides for the appropriate offset within the number of bits shifted out for each time t 0 , t 1 , t 2 . . . . In each instance the number of bits shifted out is the same as the division number &#34;n&#34; for the clock so that for a clock divided by five there may be either no offset, one offset, two offsets, three offsets and four offsets as shown in FIG. 5. These are offsets on a pixel by pixel basis so that the information in the shift register may be offset to any one of the pixels in each group. For a division ratio of four, then there may either be no offset, one offset, two offsets or three offsets of the pixels. For a division ratio of one, then there can only be the zero offset which represents the information in the shift register 22. 
     In order to provide for the offsets, then the shift register 22 must be reconfigured. This can be accomplished as shown in FIG. 6. As illustrated in FIG. 6, the shift register 22 must essentially be reconfigured as shown at position 24 where, as an example, the shift register has been offset by four pixel positions. The way in which this is actually accomplished in the present invention is to use a serial shift register, such as shift register 22, but to have the output of the shift register pass through one of a plurality of multiplexers A, B, C, D or E which together form an offset multiplexer 26. One of these multiplexers is activated depending upon the value of the least significant bit Q 0 , Q 1  and Q 2  shown in FIG. 4. 
     For the example shown, each multiplexer may be five pixels long. If the system is in the clock/5 mode, as shown in FIG. 5, then the system uses all of the pixels in the selected one of the multiplexers A to E. If the system is in the clock/4 mode also shown in FIG. 5, then the system uses the first four pixels in the selected one of the multiplexers. By using this multiplexer arrangement 26, the system can clock by any number between 1 and &#34;n&#34; and can select any pixel within each pixel block for the offset. Therefore, the shift register 22 essentially operates as if it has been offset as shown in position 24 in FIG. 6, but the shift register still shifts sequentially. However, upon the occurrence of each clock/5 signal or the appropriate &#34;n&#34; submultiple clock signal, the activated multiplexer selects the proper pixels in the shift register at the proper offset position. This arrangement thereby uses a normal shift register, but converts it to select the proper offset for the pixels in the output signals. 
     FIG. 7 illustrates in more detail the down counter or subtracter of FIG. 4 as this structure would be used to provide for the control of a cursor signal. The down counter 20 subtracts the value &#34;n&#34; in a B register from the value in an register. The A register is preloaded with the &#34;x&#34; address for the cursor in accordance with a horizontal sync preload signal. The actual &#34;x&#34; address cursor data is generated by a graphics controller in an overall computer system in accordance with the position where the cursor should appear on the video display. 
     Each time an external clock, which for example may be the video clock divided by five, is presented to the down counter or subtracter 20, the contents of the register B are subtracted from the contents of the register A. The register B is preset to a count of &#34;n&#34; such as five or four or one according to whether the external clock is a submultiple of five or four or one of the video or pixel clock. This submultiple data value applied to the register B would normally be fixed by the manufacturer of the hardware. As described above with reference to FIG. 4, each time the counter or subtracter 20 crosses zero and thereby makes a transition from a one to a zero, the underflow or carry line becomes true. The three least significant bits now provide data to determine which video or pixel boundary to begin the output. This may be seen with specific reference to FIG. 8. 
     As shown in FIG. 8, a 64×64 bit cursor RAM 30 may store pixel data representing a cursor to be superimposed on other video data. The underflow or carry signal initiates the reading of the RAM 30 data in accordance with a read pulse produced by a read input 32. The particular row to be read is determined by a row address counter 34, the output of which is applied to the RAM 30 through a decoder 36. The underflow or carry signal also causes the row address counter 34 to count up by one so that the next row of RAM data will be read upon the arrival of the next underflow signal. 
     The RAM data is read into the shift register 22 which has been previously described with reference to FIGS. 5 and 6. The shift register also includes as an input the external clock so that the shift register 22 will shift the data for each &#34;n&#34; submultiple for the external clock relative to the video clock. The data is thereby shifted &#34;n&#34; positions along the shift register each time there is an appearance of the external clock signal. Using five as an example, the shift register thereby shifts the information along five positions each time the external clock (clock/5) occurs. 
     In accordance with the present invention, it is not proper to simply dump the output of the shift register 22 into an output latch 36 since this would not provide for the proper cursor data word offset. This is accomplished by using the offset multiplexer 26 which is described with reference to FIG. 6. The multiplexer 26 determines which of one of the &#34;n&#34; possible cursor data word locations will appear in the first block of data in the output latch 36. The multiplexer control information is derived from the three least significant bits of the down counter (or subtracter) which has been described with reference to FIGS. 4 and 7. Specifically, the information from the three least significant bits is supplied to a decoder 38 and the output of the decoder 38 controls the offset multiplexer to determine which one of the &#34;n&#34; bit multiplexers will be used so as to provide for the appropriate offset in the output signal applied to the &#34;RAMDAC&#34;. 
     FIG. 9 illustrates how the &#34;y&#34; address of the cursor information may be controlled. Specifically as shown in FIG. 9, a down counter 40 may be used to control the &#34;y&#34; position of the cursor information. In general, once the &#34;y&#34; position is found, then the down counter 40 produces signals to allow a particular number of lines to be displayed. In FIG. 8 the 64×64 cursor RAM 30 is used so the down counter 40 will provide that, once the &#34;y&#34; position is found, the next 64 lines must be displayed. The &#34;y&#34; address is also controlled by the horizontal sync. This is because the vertical sync occurs one time for each frame, but the horizontal sync signal is provided for each line of each frame. The &#34;y&#34; address is thereby the number of horizontal syncs after each production of a vertical sync to then reflect the initial line position where the cursor is to be displayed. After the vertical sync is produced, then a particular number of horizontal sync signals represent the vertical position for the cursor. 
     The cursor must be able to be located either on the video display or actually off the video display. For example, the &#34;y&#34; address, if it is a positive number, may represent the number of lines down from the top of the video screen. If the &#34;y&#34; address is a negative number, it may indicate the number of lines up from the top of the video screen and thereby off the screen. The proper positioning of the cursor in the &#34;y&#34; direction may be provided by producing an enable signal which is produced when the down counter 40 passes from all zeros to all ones. This represents the down counter equaling the &#34;y&#34; address set into the down counter 40. The &#34;y&#34; enable line then enables the cursor for the next 64 lines for the example shown in FIG. 8. This occurs when the six least significant bits all have zeros, as shown by the address Q0-Q5. 
     Therefore, the down counter 40 operates to provide an enable signal when all of the outputs Q6-Qn pass from zero to one and with the enable signal being terminated for the specific example of 64 lines when the outputs Q 0  -Q 5  all have zeros. The down counter 40 may be incorporated within the cursor controller 10 shown in FIG. 2 and also shown in FIG. 10 so that the cursor information is presented to the &#34;RAMDAC&#34; at the proper &#34;y&#34; position and with the cursor initiated in the &#34;x&#34; direction at the proper position and offset within each group of pixels. 
     The overall system of the present invention is shown in FIG. 10 and the system includes the cursor controller 10 of the present invention used in combination with a &#34;RAMDAC&#34; 50. As shown in FIG. 10, the &#34;RAMDAC&#34; 50 receives groups of parallel input information and provides for the proper output color information at the video frequency, such as 125 MHz. The &#34;RAMDAC&#34; may include a color palette so that the video information may have the color display under the complete control of the operator of the equipment. 
     The internal clock rate for the video information is at the high video frequency, such as 125 MHz, but the clock that can be supplied to the cursor from the &#34;RAMDAC&#34; cannot be at such a high frequency and so the appropriate submultiple &#34;n&#34;, such as divide by four or five, is chosen to produce the external clock input to the cursor controller 10. In the specific example shown, the external clock is the internal clock divided by five and is 25 MHz. The cursor controller 10 receives as input information the cursor address. This information is used to control the &#34;x&#34; and &#34;y&#34; position including an offset for the &#34;x&#34; position as described above. The output signals, such as five parallel signals at a time, are then provided to an overlay input to the &#34;RAMDAC&#34; 50 to produce an overlay of the cursor information superimposed on the normal video information to thereby merge the two groups of information within the &#34;RAMDAC&#34;. Cursor information is provided at the proper offset position on the video display. The clock frequencies of the two systems are in synchronism even though one of the frequencies is a submultiple &#34;n&#34; of the other. The cursor information is controlled to be offset between 0 and &#34;n-1&#34; within this submultiple &#34;n&#34;. 
     Although the invention has been described with reference to a particular embodiment, it is to be appreciated that various adaptations and modifications may be made and the invention is only to be limited by the appended claims.