Abstract:
A video register interface for a video processor in which each frame register has a first storage element which is written by a microprocessor interface independently from a second storage element which outputs control data to video processing circuitry. Since reading and writing are done independently to different storage elements, the contents of the register can be changed without adverse effects on a displayed image. The register interface is used in a CMOS video processor which in turn is used in a microprocessor based multimedia computing system.

Description:
This application is a continuation of application Ser. No. 08/332,686 filed Nov. 1, 1994. 
    
    
     BACKGROUND 
     1. Field of the Invention 
     This invention is related to video processing for multimedia computer applications. More specifically, this invention is related to the management of updates to shift registers in register-based, integrated circuit video processors of the type used in multimedia workstations. 
     2. Definition of the Problem 
     The proliferation of microprocessor-based, multimedia computer systems and multimedia applications has created the need for improved integrated circuits for processing video. These integrated circuits must be capable of managing video data in real time. Many of the challenges related to managing video in real time are related to handling multiple, changing video images without producing visual artifacts or abrupt changes in the images as displayed. Such visual effects would be displeasing to users and thus undesirable. 
     There are numerous manufacturers of video processors for use in multimedia systems. Many aspects of the video processors sold by the assignee of the present invention are described in U.S. patent application Ser. No. 153,004, filed Nov. 12, 1993, assigned to the assignee of the present application, which is incorporated herein by reference. 
     One of the problems encountered in video processor design has to do with the management of registers. Data representing the manner in which images to be displayed (control data) is stored in a set of registers. Data representing the images themselves (image data) is stored in a video memory. The control data is derived from user input (for example, a user specifying the size and location of the video window with a mouse), or from input provided by a workstation program (for example, the resolution of the workstation monitor). Since computer displays display video as a series of still frames or images, each one scanned onto the display screen a line at a time, the image data in the video memory must be constantly updated, once for each frame. Similarly, the control data needs to be updated once per frame at a maximum, and should always be updated at a time when the workstation display is between images. 
     Modern video processors can display multiple video windows on a computer display simultaneously, by alternating the still frames displayed between video presentations. In most cases, a maximum of two video windows are supported. Each window is updated at half the rate that the overall display is updated, which is still fast enough that a user perceives the video in each window as full-motion. If the display is capable of updating itself fast enough; however, more video windows can be displayed simultaneously. 
     In the case where two video windows are displayed, the control data for each is stored in a register. One window&#39;s control data is said to be associated with the &#34;odd&#34; field image and is said to be stored in the &#34;odd&#34; register, and the other window&#39;s control data is said to be associated with the &#34;even&#34; field image and is said to be stored in the &#34;even&#34; register. In the current art, a register set consists of a single set of memory elements for storing control data associated with a single video image. If a register is updated while the video image is being scanned onto the display screen, the image viewed in the window associated with that register may be distorted or perturbed in such a way as to be displeasing to the user. Therefore, the timing of the updating of the registers must be carefully controlled so that one register is updated while a frame associated with the other register is being displayed. The timing of these register updates can not reasonably be accomplished by the microprocessor in the workstation because the microprocessor does not keep track of the presentation of images on the display. What is needed is a hardware-based frame register switching method that completely prevents the contents of a register from being updated while its associated image is being displayed, regardless of the time at which the contents of the register are written or read by the microprocessor. 
     SUMMARY 
     The present invention solves the problems discussed above by providing a programmable frame register interface for a video processor in which each register includes two storage elements arranged in a first-in-first-out (FIFO) configuration rather than a single storage element. Only the first storage element of each register is directly accessible by the microprocessor interface. In turn, only the second element of each register may output data to the video processing circuitry. When necessary, and on a programmable basis, the second storage element in the FIFO register is updated with the value in the first element. The registers output data to the video processing circuitry through a selector which is controlled synchronously with the image data. In the typical odd-even arrangement previously discussed there are two registers and two video windows can be displayed simultaneously; however, more registers can be used and controlled to output data to the same selector if more video windows are to be displayed simultaneously. 
     The video register interface of the present invention includes at least two buffering means or video registers in the preferred embodiment. Each one has first and second storage elements and each first storage element receives data from a microprocessor interface and transfers that data to the second storage element. Each storage element contains enough memory elements or cells to store data for controlling the presentation of a video frame. The video register interface also includes logic means for controlling the transfer timing of data from the first storage element to the second storage element of each buffering means. The video register interface further includes means for selectively outputting the data stored in each second storage element to video processing circuitry while allowing data in the first storage element to be overwritten. In the preferred embodiment the selectively outputting means is a selector. 
     In the preferred embodiment, the video register interface is part of a video processor integrated circuit further including microprocessor interface circuitry for connection to a microprocessor bus; video processing circuitry which further includes a digitizer interface and a codec interface; a video memory interface circuit for connection to a video memory; and an image processor. 
     A video processor integrated circuit utilizing the present invention is most typically used on an adapter card which is included in a computer system. The adapter card includes a video memory; means for connection to a video display; and means for connection to a computer system bus. The computer system also includes a main processor and a storage means such as a disk drive. 
     The present invention alleviates the need for complicated programming or circuitry to control the reads and writes of independent registers containing only single memory elements, because the reading and writing of the registers no longer have to be locked together to alternate so that a read and write is not attempted at the same time with the same register. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a video register interface according to the present invention. 
     FIG. 2 is a block diagram of a video processor integrated circuit in which the video register interface of FIG. 1 finds use. 
     FIG. 3 is a logic diagram showing the detailed design of the video register interface of the present invention. 
     FIG. 4 is a diagram of a computer system that shows a typical operating environment for the video processor integrated circuit of FIG. 2. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     FIG. 1 shows a block diagram of the video frame register interface 201 of the current invention and how it is connected to other circuitry in a typical environment. The microprocessor interface 107 serves as the source of control data for the registers. The microprocessor interface reads digital data which originates from user specifications and workstation system configuration. The register interface of FIG. 1 has two frame registers, and each frame register is made up of a two-storage element FIFO buffer. One frame register is made up of storage elements 101 and 102 and the other frame register is made up of storage elements 103 and 104. Each storage element actually comprises enough memory elements to hold the data required to control an entire frame of image data. The selector 105 is controlled through a programming interface. Notice that only the first storage element of each register may receive data from the microprocessor interface, and only the second storage element of each register may output data to the selector 105. This arrangement allows new control values to be written by the microprocessor at any time without disturbing the control values associated with the current image being displayed. The output of the selector drives video processing circuitry 106. This video processing circuitry includes an image processor and other circuitry to be described below. 
     FIG. 2 shows a block diagram of a video processor chip 200 in which the register interface 201 of FIG. 1 is used. The microprocessor interface 207 is connected to the microprocessor through a microprocessor bus, and to the frame register interface of FIG. 1, 201. The frame register interface outputs control data from one register or the other such that control values for the even field are in effect when the even image is being processed and control values for the odd field are in effect when the odd image is being processed. 
     The video processor integrated circuit chip 200 includes digitizer and codec interfaces 204 and 205, an image processor 202 and a video memory interface 203. The digitizer interface provides a standard interface for a digitizer integrated circuit 211 commonly used to convert live video signals, for example a camera signal, to digital format. The codec interface provides an input port for a codec integrated circuit 212 commonly used to decompress a previously compressed video signal such as a video signal from a CD-ROM. Note that in FIG. 2, the signal path for image data is shown with a heavy line. The signal path for control data is shown with a light line and passes through the frame register interface 201 of the present invention. The video processor integrated circuit chip provides video image data to the video memory 208 through a video memory bus. The video image data stored within the video memory 208 is later read out of video memory and sent to a display 210 through a digital to analog converter 209. 
     The image processor 202 includes circuitry typically required for various video processing operations. Examples are circuitry for input cropping, YUV to RGB conversion, scaling, output cropping and dithering. Although the image processor 202, is a significant feature of the overall video processor integrated circuit chip, it is not important to the present invention and so it will not be discussed in further detail. 
     FIG. 3 shows a detailed schematic logic diagram of the preferred embodiment of the register interface of FIG. 1. In this embodiment, the register interface has two buffering means or registers. Each has two memory elements, which in this case are latches. Each has a first memory element 301 and a second memory element 302. One buffering means is for control information for the even image and the other is for control information for the odd image as indicated. A selector 303 controls which buffering means is outputting data to the video processing circuitry. A &#34;select current image&#34; line 305 controls the selector 303. 
     Block 304 of FIG. 3 is the logic means for controlling among other things, the timing of the transfer of data from first storage elements 301 to second storage elements 302. The logic means 304 prevents an update to a second storage element from occurring while the control data in the register for that element is controlling the currently displayed image. The logic means can be set to various transfer modes under program control. The mode control for the logic means has two lines, and each line may be a logic zero or a logic one. Also, the vertical synchronization signal for the video processor (VSYNC) is input to the logic means 304. With this arrangement, it is possible to cause the second storage means, latches 302 to be updated in various different ways under program control. In the preferred embodiment, when the mode control bits are set to 00, data is transferred from a latch 301 to a latch 302 immediately. When the mode control is set to 01, data is transferred at the next VSYNC if a commit bit is asserted. When the mode control bits are set to 10, data is transferred at the next VSYNC. In this embodiment, the mode control bit combination 11 is not used. These combinations are shown in the logic table. The COMMIT bit shown in FIG. 3 is asserted or not asserted by software control to ensure that a transfer is not done at vertical sync while the software driver is writing to the first storage element latches. 
     The logic means 304 of FIG. 3 also controls the selector 303 via the select line 305. In the preferred embodiment, the logic means 304 simply causes the selector to switch between even and odd on vertical sync; however, other control schemes are possible. It is also possible to have a more elaborate means than a simple selector for selecting which buffering means supplies data to the video processing circuitry. Such elaborate means for selecting may include logic circuitry which receives additional information from the logic means 304. 
     FIG. 4 shows a specific implementation of the present invention, on a CMOS video processor integrated circuit chip within a microprocessor based computer system 480. System 480 includes display 482, disk storage means 485, and keyboard 483. Chassis 481 encloses various computer hardware (not shown) typical of microprocessor-based computing systems. Within chassis 481, the central processing unit (&#34;processor&#34;) 488 is coupled via bus 486 to one or more peripheral adapters which comprise one or more adapter cards 487. An adapter card 487 includes the video processor chip 400, a circuit block diagram of which is shown in FIG. 2. The adapter also has means for connection to a video display which is connected to a cable 484 to send video to the video display 482. While this is one implementation of the invention, it will be readily understood to one of skill in the video processor art that the present invention has many possible implementations.