text: a method and apparatus for auto screen centering and expansion of vga display modes on larger size of lcd display device is described . in the following description , for purposes of explanation , numerous specific details are set forth in order to provide a thorough understanding of the invention . it will be apparent , however , to one skilled in the art that the invention can be practiced without these specific details . in other instances , structures and devices are shown in block diagram form in order to avoid obscuring the invention . reference in the specification to “ one embodiment ” or “ an embodiment ” means that a particular feature , structure , or characteristic described in connection with the embodiment is included in at least one embodiment of the invention . the appearances of the phrase “ in one embodiment ” in various places in the specification are not necessarily all referring to the same embodiment , nor are embodiments mutually exclusive . turning to fig2 one embodiment of an apparatus for automatically centering and expanding an image to be displayed on a liquid crystal display is illustrated . lut 210 , or lookup table 210 consists of bits 7 through 2 of seven different registers , those registers being crt 90 , crt 92 , crt 94 , crt 96 , crt 98 , crt 9 a and crt default . each of these registers is coupled to compare logic or comparison block cmp 240 . also coupled to compare logic 240 is a six bit line leading from a register crt 12 . this six - bit line leads from bits 7 through 2 of register crt 12 . within compare logic 240 the value of crt 12 in bits 7 through 2 is compared with the value of each of the registers in lookup table 210 . if a match to any of the registers is found then that match results in a certain control signal being selected in select control block 250 . if no match is found then the default control signal is selected in select control 250 . it will be appreciated that select control 250 is coupled to or may be integrated with compare logic 240 . dda ( differential digital analyzer ) table 220 consists of two tables of registers . the first portion of the table includes bits 1 through 0 of registers crt 90 , crt 92 , crt 94 , crt 96 , crt 98 , crt 9 a and crt default . the second portion of the table consists of registers crt 91 , crt 93 , crt 95 , crt 97 , crt 99 , crt 9 b and crt default register 2 . each entry of each of these two portions of the table is coupled to mux 260 , a multiplexer circuit or multiplexing unit . the control signal from select control 250 is routed to multiplexer 260 . that select control signal causes multiplexer 260 to route one of the values from dda table 220 through to vertical expansion dda engine 280 . similarly , vertical centering table 230 consists of seven registers crt a 0 , crt a 1 , crt a 2 , crt a 3 , crt a 4 , crt a 5 and crt default register a . each of the registers in vertical centering table 230 is coupled to multiplexing circuit 270 or mux 270 . also coupled to mux 270 is a signal from select control 250 . the signal from select control 250 coupled to mux 270 causes mux 270 to route the value of one of the seven registers of vertical centering table 230 through the output of mux 270 to vertical centering control logic 290 . each of the values in each of the registers in lookup table 210 , dda table 220 and vertical centering table 230 is programmable . as a result a six bit value may be programmed in each register in lookup table 210 . then the six bit value may be programmed in the crt 12 , a register which is used to hold the current information about what display mode is being utilized . compare logic 240 then compares that information or that value with each of the values in lookup table 210 . each of those values preferably corresponds to one mode of operating a graphics system . likewise , each of the values in dda table 220 preferably is the 10 bit value which should be routed to dda expansion 280 to properly vertically expand the pixels in the current operating mode or current display mode that the program is using . furthermore each of the values of the vertical centering table 230 preferably corresponds to the number of pixels by which an image should be shifted down from the top of the screen and that value is then routed to vertical centering control logic 290 . in one embodiment the vertical centering table 230 contains six bit register values . each register may be multiplied by 4 to find the number of pixels by which an image should be shifted down the screen from the top of the liquid crystal display . thus , if the value in register crt 12 matches the value in register crt 90 for bits 7 through 2 of both registers , then the value of bits 1 through 0 of crt 90 and the value of register crt 91 is concatenated to form a 10 bit value which is routed to the vertical expansion dda engine 280 . likewise the value of crt a 0 is routed to vertical centering control logic 290 . a similar correspondence may be found between crt 92 and the rest of crt 92 and crt 93 and crt a 1 . a similar correspondence may be found throughout the tables illustrated in fig2 . the value in the register crt 12 is preferably adjusted by a software program which is part of the bios or built in operating system of the graphics system which incorporates the invention . this value is changed in response to monitoring by the program of the graphics bios of data flowing to the graphics subsystem for display on a monitor ( lcd or crt for example ) or other graphics display devices . when it is apparent that that data has changed resolution or changed display modes , the value of crt 12 is adjusted to reflect this so that the graphics processing system may properly process the information being fed to it by the underlying computer system . likewise it will be appreciated that the values in the crt default registers crt default , crt default register 2 and crt default a will be used by the graphics processing system when none of the values in the other six registers of lookup table 210 are matched by the value in register crt 12 . this may occur for example if the bios has been altered or corrupted or if the graphics subsystem incorporating the invention is designed such that the value in crt 12 is modifiable by something other than the graphics bios . if the value in crt 12 is modifiable by , for instance , the operating system or an underlying program running on the computer system then the value in crt 12 may not be wholly predictable . additionally , the values in lookup table 210 , dda table 220 and vertical centering table 230 are all preferably programmable such that the operating system or the bios may initialize those values for a set of default graphics modes and their corresponding parameters in the dda table 220 and vertical centering table 230 . those values may later be modified if it becomes apparent that a different graphics mode or display mode from those that are currently programmed within the three tables is necessary for proper operation of the system . it will be appreciated that the blocks of fig2 may be implemented in a variety of ways . for example , a multiplexing unit ( or selector ) may be any circuitry which may be used to select one value from a variety of values based on a control input . a value provider may be a multiplexing unit or other circuitry which provides a value at an output , preferably determined by one or more inputs , such as control and data inputs . likewise , a comparison block may be any circuitry which may be used to compare a first value to a second value or a set of values . furthermore , a select control block may be any circuitry which may use the results of comparisons performed by a comparison block to generate a control signal , such as a signal suitable for use by a multiplexing unit as a control input . additionally , the tables may be composed of sets of memory locations , which may be registers or other memory and may be organized in a variety of different ways . turning to fig3 a horizontal centering system is illustrated . the horizontal centering system includes a horizontal centering table 310 consisting of seven registers . those registers are crt b 0 , crt b 1 , crt b 2 , crt b 3 , crt b 4 , crt b 5 and crt default b . each of the registers of the horizontal centering table is coupled to a mux 320 or multiplexing circuitry 320 . also coupled to mux 320 is a signal from select control such as select control 250 of fig2 . once a graphics display mode or display mode is decoded from the value in crt 12 , a control signal from select control 250 may be sent to mux 320 causing one of the entries of horizontal centering table 310 to be routed to horizontal centering control logic 330 . it will be appreciated that an expansion to what is illustrated in fig3 may be made such that a horizontal dda expansion engine may also be incorporated with a corresponding value which would come from a table of dda values . these values would also correspond to each of the graphics modes encoded by the values in lookup table 210 and these values would be routed through a multiplexer or similar circuitry to a horizontal dda expansion engine . turning to fig4 a , the expansion and centering of a 640 × 480 resolution image for display on a 1024 × 768 resolution lcd display is illustrated . image 410 is expanded to fit on screen 420 . the expanded size of the image is 960 × 720 pixels which represent an expansion of one and one - half times . this expansion is carried out by a dda expansion engine . to center the image , the image is offset from either the top or the bottom of the screen for vertical centering . here offset from the bottom of the screen is illustrated but it will be appreciated that offset from the top of the screen may be just as easily accomplished . the value y would be the value programmed into one of the registers in vertical centering table 230 . similarly a 10 bit dda value would be programmed into one of the registers in dda table 220 to cause the expansion to the 960 × 720 image illustrated on lcd 420 . to properly center the image the value y in this instance would be 6 . this may be calculated as 6 × 4 = 24 and 24 × 2 = 48 . 48 is the difference between the height of the image ( 720 ) and the height of the display ( 768 ) in pixels . the value of x which would be contained in horizontal centering table 310 in this example would be 8 . this value would be calculated by 8 & gt ; 4 = 32 and 32 × 2 = 64 . 64 is the difference between the width of the expanded image 960 and the width of the display 420 which is 1024 when measured in pixels . it will be appreciated that the values in the registers are the number of pixels divided by four as no shift of an odd number or a number otherwise not divisible by four is deemed necessary . likewise it will be appreciated that such registers may be implemented such that any number may be encoded in the register and the register will not be multiplied by 4 or if it is deemed appropriate , the register may be multiplied by another scale factor such as 8 , 2 or any other scale factor . turning to fig4 b , enlargement and screen centering of the 640 × 350 image is illustrated . again the image is enlarged by a factor of 1 . 5 to an image 960 × 525 in size measured in pixels . the image 430 is of size 640 × 350 . it is to be displayed on liquid crystal display 440 which is of size 1024 × 768 . as mentioned the image is expanded to a size 960 × 525 . it will be appreciated that the difference between 525 and 768 is 243 pixels which is not a number neatly divisible by 4 . depending on the preferences of the programmer , the number 244 or the number 240 may be used for purposes of determining the offset . if the number 240 is used then the value of y , the value actually encoded in the register for the vertical centering is 30 which results in an offset of 120 . if this offset is from the top of the screen then the image will be found one or two pixels above where the image would be if it was exactly centered . if this offset is from the bottom of the screen likewise the image will be one or two pixels below where it would be if it were exactly centered . if the value 244 is used then it must be rounded up to 248 . this results in a value of 31 encoded in the register . the value 30 was derived from the fact that centering the image means that the difference between the height of the image and the height of the screen must be divided by 2 resulting in a value of 120 . that value is then divided by 4 resulting in a value of 30 and that is the value stored in the register . likewise the value 31 is calculated by dividing the number 248 by 2 to center the image and then dividing the resulting number 124 by 4 to result in 31 . it will be appreciated that the value for x is unchanged because the width of the image 430 is no different from the width 410 . turning to fig4 c , two other illustrations of a display of a 640 × 480 image are illustrated . the 640 × 480 image , image 410 , in one instance is displayed as a 640 × 480 image unexpanded in the upper left of hand corner of a 1024 × 768 pixel display 450 . in the other instance it is illustrated as an expanded 960 × 720 image still displayed in the upper left hand corner of the 1024 × 768 pixel display 460 . it will be appreciated that either display may be more awkward for the user as a large black space in the lower right portion including the lower portion and the right hand portion of the monitor will be evident . furthermore if the image is not expanded then it may appear small on a liquid crystal display which is often smaller than the corresponding cathode ray tube display . turning to fig5 a graphics subsystem which may incorporate the invention is illustrated . graphics bios 510 is the built in operating system of the graphics subsystem . it contains routines which may be used by graphics processor 520 and it may also be designed to effectively run an operating system on graphics processor 520 such that this operating system may monitor the data flowing to graphics processor 520 . graphics processor 520 receives and sends out graphics data 540 and video and graphics data 530 . video and graphics data 530 is sent and received by frame buffer 550 . graphics processor 520 also sends video data stream 560 which typically goes to the display system 580 , such as a liquid crystal display or cathode ray tube display . graphics data 540 , in one embodiment , is the graphics data supplied from an underlying computer system attached to the graphics subsystem . it is this data which is monitored by the operating system running on graphics processor 520 to determine what resolution or what display mode is being utilized . video and graphics data 530 is , in some circumstances , the actual data sent to the display . that data is translated from graphics data 540 by graphics processor 520 . as a result video and graphics data 530 may or may not resemble graphics data 540 even though it effectively encodes the same image . it will be appreciated that in one embodiment of the invention the components illustrated in fig2 and 3 are incorporated within graphics processor 520 as registers and other logic within the processor that are subject to the control of routines from graphics bios 510 running on graphics processor 520 . turning to fig6 a system utilizing the invention is illustrated . processor 610 is coupled to control hub 630 . control hub 630 is also coupled to graphics subsystem 620 , to memory 640 and to system bus 660 . control hub 630 may be an agp or pci controller for example . system bus 660 is coupled to peripherals 650 . graphics subsystem 620 is also coupled to monitor 670 . graphics subsystem 620 may receive instructions and data from control hub 630 . it may also request data from memory 640 through control hub 630 and likewise request interrupts to processor 610 through control hub 630 and request information or data from peripherals 650 through control hub 630 and system bus 660 . processor 610 may control memory 640 , system bus 660 and peripherals 650 in graphics subsystem 620 and monitor 670 through control hub 630 . in one embodiment graphics subsystem 620 incorporates all of the components illustrated in fig5 such as the graphics bios 510 , graphics processor 520 and frame buffer 550 . in that embodiment graphics data 540 is transmitted and received along the coupling between graphics subsystem 620 and control hub 630 . video data 560 is transmitted and received along the coupling between graphics subsystem 620 and monitor 670 . turning to fig7 a method of operating an autoexpansion and autocentering system is illustrated . initially a lookup table is initialized at initialize block 710 . this lookup table may in one embodiment be the lookup table 210 illustrated in fig2 . likewise the values of the other tables in fig2 and fig3 would be initialized at preferably about the same time . at block 720 the screen is set to default settings causing the screen to automatically display at whatever resolution is considered the default by the system . this may be set by either a bios such as bios 510 of fig5 or an operating system of an attached computer system . at block 730 the use of the graphics system or the screen is monitored to determine what resolution of data is being sent to the graphics system . at block 740 an attempt to detect a change in such usage or a change in the display mode of the display device is made . if no change is detected the process flows to block 730 . if a change is detected the process flows to block 750 . at block 750 , a determination of the new resolution is made based on what the data indicates the new resolution or mode is or on instructions from the underlying computer system to switch to a new display mode . the value thus determined is written into the crt 12 register in one embodiment . at block 760 , the lookup table and compare logic determine whether any of the values in the lookup table match the new value in crt 12 . if a match is found , the corresponding dda value and vertical centering values are routed to the dda expansion engine and vertical centering logic . if no match is found , the default values are routed to the dda expansion engine and vertical centering logic . the new values thus routed cause the screen to adjust to displaying the data in the new mode . the process then flows back to monitor block 730 . in the foregoing detailed description , the method and apparatus of the invention has been described with reference to specific exemplary embodiments thereof . it will , however , be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the present invention . the present specification and figures are accordingly to be regarded as illustrative rather than restrictive .