WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Stored-program controller for equalizing conditional branch delays    
United States Patent4881194   
Link to this pagehttp://www.wikipatents.com/4881194.html
Inventor(s)Sprague; David L. (Hopewell, NJ); Harney; Kevin (Brooklyn, NY); Simon; Allen H. (Belle Mead, NJ); Taylor, Jr.; Herbert H. (Hopewell Township, Mercer County, NJ)
AbstractA video signal processor includes a stored-program controller which concurrently reads two instruction values from a program memory during each instruction cycle. The next instruction used by the video signal processor is selected from between these two values. If the current instruction indicates a conditional branch operation, the value of one of a plurality of conditions internal to the video signal processor determines which of these two instructions is selected. Otherwise, a value provided by the current instruction itself determines which of the two instructions is selected. This configuration of the stored program controller implements a conditional branch facility in which there is no delay in fetching an instruction for either value of the selected condition.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 4881194
Stored-program controller for equalizing conditional branch delays - US Patent 4881194 Drawing
Stored-program controller for equalizing conditional branch delays
Inventor     Sprague; David L. (Hopewell, NJ); Harney; Kevin (Brooklyn, NY); Simon; Allen H. (Belle Mead, NJ); Taylor, Jr.; Herbert H. (Hopewell Township, Mercer County, NJ)
Owner/Assignee     Intel Corporation (Santa Clara, CA)
Patent assignment
All assignments
Publication Date     November 14, 1989
Application Number     07/121,820
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     November 16, 1987
US Classification     712/233
Int'l Classification     G06F 009/00
Examiner     Zache; Raulfe B.
Assistant Examiner    
Attorney/Law Firm     Silverman; Carl L. Murray; William H. , Linguiti; Frank M. ,
Address
Parent Case    
Priority Data    
USPTO Field of Search     364/200 364/300 364/900
Patent Tags     stored-program controller equalizing conditional branch delays
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
4689823
Wojcik
382/276
Aug,1987

[0 after 0 votes]
4467415
Ogawa
712/247
Aug,1984

[0 after 0 votes]
4396906
Weaver
341/65
Aug,1983

[0 after 0 votes]
4342078
Tredennick
712/211
Jul,1982

[0 after 0 votes]
4145736
Yamada
712/212
Mar,1979

[0 after 0 votes]
4125861
Mounts
375/240.12
Nov,1978

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A data processing system comprising:

processing means responsive to control signals for processing data, including means for indicating values representative of a plurality of conditions;

a stored-program controller, coupled to said processing means including:

memory means for holding a plurality of instructions, wherein ones of instructions indicate conditional branch operations;

instruction decoding means for holding instructions provided by said memory means and providing said control signals for said processing means and control signals for said stored-program controller;

memory accessing means, responsive to control signals provided by said instruction decoding means for concurrently reading first and second instructions from said memory means; and

next instructions selection means responsive to control signals provided by said instruction decoding means and, when the instruction held in said instruction decoding means indicates a conditional branch operation, to said means for indicating the values of said plurality of conditions, for loading a selected one of said first and second instructions into said instruction decoding means.

2. The data processing system forth in claim 1 wherein each of the instructions held in said memory means that indicates a conditional branch operation includes a condition selection value which indicates one of said plurality of conditions; and

said instruction selection means includes means responsive to the condition, indicated by the condition selection value of the instruction held in said instruction decoding means for loading said preselected one of said first and second instructions into said instruction decoding means.

3. The data processing system set forth in claim 1 wherein:

each of the instructions held in said memory means includes an N-bit next address value, where N is a positive integer;

said memory means includes 2.sup.N-1 addressable cells, each cell having sufficient capacity to hold two instructions;

said memory accessing means includes means responsive to N-1 bits of the next address value of the instruction held in said instruction decoding means for addressing one of the cells of said memory means to read the two instructions held thereby as said first and second instructions; and

said next instruction selection means include means responsive to a predetermined bit of the N-bit address value of the instruction held in said instruction decoding means, having first or second predetermined values for loading said first or second instruction, respectively, into said instruction decoding means.

4. The data processing system set forth in claim 3 wherein:

each of the instructions held in said memory means that indicates a condition selection value which indicates one of said plurality of conditions; and

said instruction selection means further includes means responsive to the condition selection value of the instruction held in said instruction decoding means for loading said selected one of said first and second instructions into said instruction decoding means.

5. Stored-program controller apparatus, comprising:

memory means having addressable locations, each of said addressable locations holding a pair of instruction words;

two-word instruction register means coupled to said memory means and responsive, during a read cycle of said memory means, for storing two of said instruction words from a given one of said addressable locations;

switch means;

one-word instruction register means coupled via said switch means said two-word instruction register means for storing one of said two instruction words selected by said switch means; and

control means having a first input terminal coupled to an output terminal of said one-word instruction register means, said control mean having a further input terminal coupled to receive a condition signal supplied thereto and having an output signal coupled to control said switch means as a function of said condition signal and said output of said one-work instruction register means.

6. Stored-program controller apparatus comprising:

memory means having addressable locations for holding two instruction words at each of said locations;

means for providing a condition signal;

means responsive to a selected address to concurrently provide two instruction words held in an addressable location of said memory means corresponding to said selected address;

means for selecting one of said two instruction words and for generating a selected address, said means for selecting being responsive to a last most selected instruction and to said condition signal;

utilization means responsive to an instruction selected by said means for selecting one of said two instructions.
 Description Submit all comments and votes
 


The present invention relates to a stored-program controller having a conditional branch facility designed to operate at high speed and, thus, suitable for use in a real-time video signal processor.

In recent years, there has been considerable progress in the field of video signal compression. Several methods have been developed for reducing the redundancy in digitally encoded video signals to facilitate their transmission or storage. Three methods are of particular interest in this application, hereinafter referred to as absolute encoding, relative encoding and differential pulse code modulation (DPCM) encoding. These video compression techniques are described below.

An absolute encoded image is developed by partitioning an image into a plurality of contiguous segments and then assigning a fill value to each segment. This fill value may be a fixed luminance and/or chrominance value or it may be a value that varies from pixel to pixel as a function of the location of the pixel within the segment. When an absolute encoded image is decoded and displayed, the result is a mosaic composed of the reconstructed segments.

The absolute encoding technique produces a plurality of data records, each one describing a different segment of the original image. Each of these records includes several fields, where each field includes one or more binary words. An exemplary record from an absolute encoded image is shown in FIG. 1A. This record includes two one-byte fields, X POS, and Y POS, which indicate the respective horizontal and vertical position of the pixel in the upper left corner of a segment. The record further includes a one-byte field W and a one-byte field H which indicate the number of pixels in the respective horizontal and vertical directions that define the segment. The last three fields in the absolute code record A, B and C, determine how the segment is filled. These values are the coefficients of a bilinear equation (1) which describes how the value, PV, of a particular pixel is determined.

PV=AX+BY+C (1)

In the equation (1), C is a one-byte value representing, for example, the luminance level in the upper left corner of the segment. A and B are each two-byte values representing amounts by which the luminance value changes between successive pixels in the horizontal and vertical directions, respectively. X and Y are values which indicate the position of the pixel within the segment relative to the upper left corner of the segment. This example of an absolute code record assumes separate groups of records for each of the luminance and/or color information signal components of the video signal, and assumes that all of the segments are rectangular. A more general example of an absolute encoding system may be found in an article by M. Kocher and R. Leonardi entitled "Adaptive Region Growing Technique Using Polynomial Functions For Image Approximation", Signal Processing (Netherlands) Vol. 11, No. 1, July 1986, pp. 47-60, which is hereby incorporated by reference.

The second video signal compression method set forth above, relative encoding, involves partitioning the image into contiguous segments which are defined in terms of corresponding segments from the previous image of a multi-image sequence. This encoding method is appropriate for a set of video fields that represent full motion video. An image encoded using this method is represented by a plurality of data records. An exemplary record is shown in FIG. 1B. The fields X POS, Y POS, W and H are the same as in the absolute record. The two one-byte fields .DELTA.X and .DELTA.Y indicate the pixel displacement in the horizontal and vertical directions, respectively, of the segment in the current video field relative to its corresponding segment in the previous video field. These displacement values may be in units of a fraction of the distance between adjacent pixels in the display image.

The fields A, B and C in the relative code record are similar to the corresponding fields in the absolute code record. These values are used as the coefficients of the bilinear equation (1) to develop values which are added to the pixel values in the segment.

The record format for relative coded images also assumes that the segments are rectangular and that only one of the luminance and color information components of an image is described by a given record. A general description of the complexities of relative encoding is presented in an article by S. Brofferio and F. Rocca entitled "Interframe Redundancy Reduction of Video Signal Generated by Translating Objects", IEEE Transactions on Communications, April 1977 pp. 448-455, which is hereby incorporated by reference.

The third encoding method listed above, DPCM, in general describes each pixel in an image as the sum of a predicted pixel value and a differential pixel value. This method is applied to segments in an image which are not easily described by absolute or relative code records. An example of a DPCM record is shown in FIG. 1C. The fields X POS, Y POS, W and H for this record are the same as for the absolute code record and relative code record set forth above. The remainder of the DPCM code record is a series of N bytes where N is the product of the values held in the W and H field. The first of these N bytes, DP.sub.0 is a differential value which, when added to a fixed predicted value of, for example, 128, produces the pixel in the upper left corner of the segment. The next byte, DP.sub.1, is a difference value, which, when added to the sum 128+DP.sub.0, produces the next successive pixel value on the top line of the segment. Similarly, the value DP.sub.2 is a difference value which, when added to the accumulated sum of 128, DP.sub.0 and DP.sub.1 produces the third pixel value on the top line of the segment. The successive values in the DCPM code record each describe a pixel value as the accumulation of the preceding values in the record. An example of a video signal compression system which uses the DPCM encoding technique may be found in U.S. Pat. 4,125,861 entitled "Video Signal Encoding", which is hereby incorporated by reference.

If the DPCM data were stored or transmitted as shown in FIG. 1C, there would be little or no advantage to using the DPCM encoding technique since each of the values that describes a pixel occupies one data byte, the same as a non-encoded pixel value. However, as set forth in the referenced patent 4,125,861, the frequency of occurrence of encoded bytes having relatively small values is much larger than the frequency of occurrence of encoded bytes having relatively large values. This unequal distribution of the encoded bytes is used in the referenced patent to further compress the video data stream by encoding the smaller-valued samples in a smaller number of bits than are used for the larger-valued samples. Variable length statistical encoders which perform this type of compression are known in the art. An algorithm for generating a code of this type, a Huffman Code, is described in a section of a book by N. Abramson entitled "Information Theory and Coding", McGraw Hill, 1963 pp. 77-85, which is hereby incorporated by reference.

Each of the encoding methods described above work well on some types of video information and poorly on others. The absolute encoding technique is best for still images or for the first video field of a motion sequence, when the image to be encoded includes relatively large areas of uniform or linearly varying luminance or color information. The relative coding technique is best for the second and subsequent video fields of a motion sequence. The DPCM encoding technique is best for images containing areas of finely detailed information.

Due to the different types of video information that are efficiently represented by these codes, it may be desirable to combine two or more of the codes to represent a single video image. For example, the combination of absolute encoding and DPCM encoding would produce a compact representation of an image that includes both low and high levels of detail. For motion sequences, it may also be desirable to represent portions of the image using the relative encoding techniques. As shown in FIGS. 1A, 1B and 1C, these three encoding methods can be tailored to produce compatible record formats.

Once so encoded, however, it would be desirable for the image to be decoded rapidly so that the reproduced images may be displayed with natural detail and motion.

The circuitry used to decode an encoded image of this type would desirably include various processing elements which are conditioned to act in concert under the control of a stored-program controller. One type of stored-program controller which may be used is a microcode sequencer such as is found in many current microprocessor integrated circuits. A general discussion of microcode sequencer design may be found in a textbook by H. W. Gschwind, entitled Design of Digital Computers, An Introduction, Springer-Verlang, 1967, pp. 379-387, which is hereby incorporated by reference. As set forth in this discussion, the implementation of a conditional branch operation is an important consideration in designing a microcode sequencer.

A conditional branch operation effects a change in the sequence of microcode instructions provided by the microcode sequencer in response to the occurrence of a particular condition in processing circuitry external to the microcode sequencer. Such a condition may be, for example, that the value held in a specified register is zero. If, when the conditional branch operation is invoked, the specified condition is met, one sequence of microcode instructions is provided by the microcode sequencer. If the condition is not met, another independent sequence of instructions is provided.

In a video signal processor which processes encoded data, such as that described above, to produce a real-time full motion display, the speed of the decoding processor is an important consideration. The implementation of the conditional branch operation may significantly affect the performance of the decoding processor. Each of the conditional branch operations described in the above-referenced textbook, for example, may require as much as one extra instruction cycle when the first instruction in one of the alternate sequences of instructions is not the next instruction scheduled to be provided. In this instance, the additional instruction cycle may be needed to set up a new address value for the random access memory which holds the microcode instructions and to read the target instruction.

It would be desirable to provide a stored-program controller which did not have a significant time penalty for either outcome of a conditional branch operation.

SUMMARY OF THE INVENTION

The present invention is embodied in a stored-program controller of a data processing system. The stored-program controller includes an addressable memory for holding a plurality of instruction values and an instruction decoder which, responsive to instruction values provided by said memory, controls processing circuitry in the data processing system. In response to an address value provided by the instruction decoding circuitry, two instruction values are read from the memory by circuitry internal to the stored-program controller. When the instruction held in the instruction decoding circuitry invokes a conditional branch operation, the value of a condition in processing circuitry external to the stored-program controller determines which of the two instructions read from the memory is the next instruction applied to the decoding circuitry.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1A, 1B and 1C, referred to above, are diagrams showing the data formats of records produced by three data compression methods.

FIG. 2 is a block diagram of video signal processing circuitry which includes an embodiment of the present invention.

FIG. 3A is a block diagram showing circuitry, embodying the present invention, suitable for use as the microcode RAM and sequencing circuitry of the video signal processing circuitry shown in FIG. 2.

FIG. 3B is a timing diagram showing signal amplitudes as a function of time for several signals that are useful in explaining the operation of the circuitry shown in FIG. 3A.

FIG. 3C is a diagram showing the data format of a microcode control word for the microcode RAM and sequencer used in the circuitry shown in FIG. 2.

FIG. 4A is a block diagram of the arithmetic and logic unit used with the embodiment of the invention shown in FIG. 2.

FIG. 4B is a partial block diagram of the arithmetic and logic circuitry shown in FIG. 4A.

FIG. 5 is a block diagram of the data path circuitry used in the embodiment of the invention shown in FIG. 2.

FIG. 6 is a block diagram of the data RAM circuitry used with the embodiment of the invention shown in FIG. 2.

FIGS. 7A, 7B, 7C, 7D and 7E are timing diagrams that are useful for explaining the operation of the data RAM circuitry shown in FIG. 6.

FIG. 8A is a block diagram of the pixel interpolator used with the embodiment of the invention shown in FIG. 2.

FIG. 8B is a block diagram of the multiplier used in the pixel interpolator shown in FIG. 8A.

FIGS. 9A, 9B, 9C, 9D, 9E and 9F are diagrams that are useful to explain the operation of the pixel interpolator shown in FIG. 8.

FIG. 10A is a block diagram of a statistical decoder suitable for use in the video signal processing circuitry shown in FIG. 2.

FIG. 10B is a timing diagram that is useful for understanding the operation of the circuitry shown in FIG. 10A.

FIG. 11A is a block diagram of input FIFO circuitry suitable for use in the video signal processing circuitry shown in FIG. 2.

FIG. 11B is a timing diagram that is useful for understanding the operation of the circuitry shown in FIG. 11A.

FIG. 12A is a block diagram of output FIFO circuitry suitable for use in the video signal processing circuitry shown in FIG. 2.

FIG. 12B is a timing diagram that is useful for understanding the operation of the circuitry shown in FIG. 12A.

FIGS. 13A and 13B are a block diagram of the VRAM control unit used with the embodiment of the invention shown in FIG. 2.

FIG. 13C is a timing diagram that is useful for understanding the operation of the circuitry shown in FIG. 13A.

FIG. 14 is a memory map diagram showing how the compressed data is stored in the video random access memory of FIG. 2.

FIGS. 15 through 23 are control flow diagrams and other diagrams useful for explaining the operation of the circuitry shown in FIGS. 2-13.

DETAILED DESCRIPTION

In the drawings, broad arrows represent busses for conveying multiple-bit parallel digital signals and line arrows represent connections for conveying analog signals or single bit digital signals. Depending on the processing speed of the devices, compensating delays may be required in certain of the signal paths. One skilled in the art of digital signal processing circuit design would know where such delays would be needed in a particular system.

FIG. 2 is a block diagram showing the video signal processing circuitry 210 and associated peripheral circuitry. In the present embodiment of the invention, the circuitry 210 is implemented as a single integrated circuit. The video signal processing system is described below briefly, with reference to FIG. 2 only, and then in greater detail with reference to FIGS. 2-13. A third section of this application refers to FIGS. 14-23 and describes how the various components of the system operate in parallel to convert compressed video data in formats such as those shown in FIGS. 1A, 1B and 1C into pixel values.

In FIG. 2, a source of compressed video signal 212 provides video signal data which has been compressed using one or more of the video signal compression techniques set forth above and which includes data that has been statistically encoded. In this embodiment of the invention, the data provided by the source 212 is applied to a video random access memory (VRAM) 216 under control of a VRAM control unit 238 that is internal to the video signal processor 210. The source 212 used in this embodiment of the invention is a compact disk read only memory (CD ROM). It continually provides the compressed data to the VRAM 216 in blocks of, for example, 32 bits each. The VRAM control unit 238 coordinates data access requests to the VRAM 216 from the source 212 and the circuitry 210 to ensure that all of the data provided by source 212 is written into the VRAM 216.

The VRAM 216 used in this embodiment of the invention is composed of 128 of the .mu.PD41264 64K by 4-bit dual port random access memory integrated circuits manufactured by NEC Electronics Inc. The memory integrated circuits are arranged in a matrix having 16 rows and eight columns. In this configuration, the VRAM 216 provides 4 megabytes (MB) of storage, arranged as 1,048,576 words of 32 bits each.

A display processor 218 accesses the VRAM 216 via a serial output port to develop the active video portion of a displayed video signal. The video signal processing circuitry 210 and source of compressed video signals 212 access the data cells of the VRAM 216 via the standard input-output bus. All access to the VRAM 216 by the video signal processor 210 and display processor 218 is controlled by the VRAM control unit 238 of the circuitry 210.

Data held in the VRAM 216 is provided to the processing circuitry 210 by the statistical decoder 230 and by the input first-in-first-out (FIFO) circuits 232 and 234. Data is provided by the circuitry 210 to the VRAM 216 via the output FIFO circuitry 236. The data values provided by the statistical decoder 230 and the input FIFO's 232 and 234 are applied to data path circuitry 242, an arithmetic and logic unit (ALU) 244 and a data RAM 228 via a bidirectional data bus B BUS. The bus B BUS is also used to provide address values to the VRAM control unit 238. A second bidirectional bus, A BUS, is included in the circuitry 210 to provide an alternate means for passing data values among the data path circuitry 242, ALU 244 and data RAM 228, and to provide data to, and accept data from a pixel interpolator 246. In addition to the coupling set forth above, the data bus A BUS is connected to a microcode RAM and sequencer 226 and may be coupled to a microprocessor 224.

In general terms, the circuitry shown in FIG. 2 operates as follows. Compressed video signals, provided by the source 212, are written into the VRAM 216. These compressed video signals are accessed via the statistical decoder 230 and the input FIFO's 232 and 234 under control of the sequencing circuitry 226. The values provided by the decoder 230 and the FIFO's 232 and 234 are applied to the data path 242, ALU 244 and pixel interpolator 246, also under control of the sequencing circuitry 226, to expand the compressed video signals and generate pixel values that describe the encoded image. The generated pixel values are written into the VRAM 216 via the output FIFO 236 as a matrix having, for example, 240 rows and 256 columns. These correspond to 240 lines of a video signal where each line has 256 pixel values. This matrix is hereinafter referred to as a bit-map. The bit-map is read from the VRAM 216 by the display processor 218 to reproduce an image. The display processor 218 used with this embodiment of the invention converts the pixel values in the bit-map into a video signal and adds the required horizontal and vertical synchronization signals to enable the image to be reproduced on a raster scan display device. To coordinate transfers of data from the VRAM 216 to the display processor 218, a horizontal line synchronizing signal, HS, and a vertical field synchronizing signal, VS, are provided to the processors 210 and 218 by respective signal sources 220 and 222. In a preferred embodiment of the invention, these signals may be generated by the display processor 218.

In the present embodiment of the invention, a source of clock signal 225 provides a 25 MHz clock signal, CLK, to the microcode RAM and sequencer circuitry 226. The circuitry 226 generates signals CK and CK', each having a frequency of 12.5 MHz, a signal CK.sub.A, having substantially the same frequency and phase as the signal CK, and a signal CK.sub.B which is substantially antiphasal to the signal CK. The clock signals CLK, CK.sub.A and CK.sub.B are applied to the data RAM 228. The signals CK.sub.A and CK.sub.B are applied to the data path 242, the ALU 244 and the pixel interpolator 246. The signal CK is applied to the statistical decoder 230, the input FIFO's 232 and 234, and to the output FIFO 236. The signal CK' is applied to the VRAM control unit 238.

To simplify the explanation of the circuitry shown in FIG. 2, it is assumed that the source of compressed video signals provides only encoded luminance signals and, thus, that the circuitry 210 builds only one bit-map, the luminance bit-map. In a practical system, additional bit-maps for color information signals, for example the I and Q color-difference signals, would be generated as well.

As set forth above, the central control element in the video signal processing circuitry 210 is the microcode RAM and sequencer circuitry 226. FIG. 3A is block diagram showing circuitry suitable for use as the microcode RAM and sequencer 226. The microcode RAM 310 is a conventional random access memory arranged as 128 words, each of which has 96 bits. In normal operation, the microcode RAM 310 provides a 96-bit word, addressed by the seven MSB's of an address value held in an address register 322, to the input port of a register 312. The register 312 is conditioned by a signal LD provided by control circuitry 308 to load the value applied to its input port. Each of the 96-bit values provided by the microcode RAM 310 contains two 48-bit microcode control words or instructions. One of these instructions, in the 48 MSB positions of the register 312, is applied to one input port of a multiplexer 314 and the other instruction, in the 48 LSB positions of the register 312, is applied to a second input port of the multiplexer 314. The multiplexer 314 is conditioned by a single-bit signal provided by a flip-flop 318 to pass one of the 48-bit instructions to the input port of the instruction register 316. The instruction register 316 loads the microcode control word applied to its input port in response to a signal LI provided by the control circuitry 308.

The individual bits of the instruction register 316 are connected, via a bus MCW, to control input terminals of each of the components of the video signal processing circuitry 210. As the microcode control words provided by the microcode RAM 310 sequence through the instruction register 316, the individual components of the circuitry 210 are conditioned to perform operations which, in concert, convert the compressed video data into bit-map pixel data. The function of each bit of the microcode control word is described below in reference to FIG. 3C.

The clock signals CK and CK' used by the video signal processor 210 are generated by circuitry included in the microcode RAM and sequencer 226. The 25 MHz clock signal CLK provided by the source 225 is applied to frequency dividing circuitry 304 which divides the frequency of the signal CLK by two to produce the 12.5 MHz clock signal CK'. The signal CLK is further applied to one input terminal of an AND gate 306, the other input terminal of which is coupled to an inverter 302 to receive an inverted version of a signal HALT, provided by the microprocessor 224. The output signal of the AND gate 306 is applied to frequency dividing circuitry 307 which divides its frequency by two to produce the 12.5 MHz clock signal CK. When the signal HALT has a logic zero value, the signal CK is a 12.5 MHz square-wave oscillatory signal. When the signal HALT changes to a logic one, however, the state of the signal CK is frozen at logic-one or logic-zero, its state when the change in the signal HALT occurred.

As set forth below, the eight LSB's of the microcode control word define the NEXT ADDRESS field. In any microcode control word, this field contains the address, in the microcode RAM 310, of the next microcode control word to be loaded into the instruction register 316. The value held in the NEXT ADDRESS field is applied to the address register 322 via a multiplexer 320. The LSB of the NEXT ADDRESS value is applied to the input terminal D of the flip-flop 318. The address register 322 and the flip-flop 318 are conditioned, by the signal CK, to load the values applied to their respective input ports.

A signal CD, provided by the data path circuitry 242, as set forth below, is coupled to the reset input terminal, R, of the flip-flop 318. The value of the signal CD is controlled by the condition code select (COND CODE SEL) field (described below) of the microcode control word. This signal is used in the microcode RAM and sequencing circuitry 226 to conditionally change the sequence of microcode control words applied to the instruction register 316. The signal CD represents a condition that occurred earlier in the signal processing, for example, that the output value of the ALU 244 is zero. When the selected condition is true the output signal, Q, provided by the flip-flop 318 becomes a logic-zero. This value conditions the multiplexer 314 to pass the value held in the 48 LSB positions of the register 312 to the instruction register 316.

To understand how this circuitry may be used to conditionally change the control flow of the microcode RAM and sequencer circuitry 226, in other words to perform a conditional branch operation, assume that a microcode control word A has a non-zero value in its COND CODE SEL field and a value of 81 in its NEXT ADDRESS field. When this microcode control word is loaded into the instruction register 316, the eight-bit value in the NEXT ADDRESS field is applied to the address register 322 and the microcode control words at addresses 80 and 81 in the microcode RAM 310 are loaded into the register 312. If the value of the condition signal, CD, is logic-zero, the microcode control word occupying the 48 MSB positions (address 81) of the register 312 is the next to be used. Otherwise, the microcode control word occupying the 48 LSB positions (address 80) of the register 213 is next. Each of these instructions has a distinct NEXT ADDRESS field and, so, each defines a different sequence of microcode control words, that is to say, a different functioning of the video signal processor 210. Since the microcode RAM 310 provides the next instruction for both possible values of the condition code, no time is lost in fetching the next microcode control word once the value of the condition is determined.

The microcode RAM and sequencer circuitry 226 is able to load microcode control words, supplied via the bus A BUS, into the microcode RAM 310. Three 16-bit values, each representing one-third of a microcode control word, are successively applied to three registers 324. The first 16-bit value is stored into the register MRO, the second, into the register MR1 and the third, into the register MR2. Next, an address value, which may also be provided by the VRAM 216 via the input FIFO 232 and data RAM 228, is applied to the address register 322. The LSB of this address value, the signal DXC, conditions a demultiplexer 326 to apply the 48-bit value provided by the three registers MR0, MR1 and MR2 either to the 48 MSB positions or to 48LSB positions of the I/O bus for the microcode RAM 310. At the same time, a write enable signal, WE, is pulsed to condition the RAM 310 to store the 48-bit value into the addressed memory cell.

The microcode control words written into the microcode RAM 310 by these operations are provided from the VRAM 216 via, for example, the input FIFO 232 and data RAM circuitry 228. This ability to load microcode instructions from the VRAM 216 allows the source of compressed video 212 to provide both compressed data and the instructions needed to decompress it to the video signal processor 210. Initially, a bootstrap program may be loaded into the microcode RAM 310 by the microprocessor 224 which may take control of the processor 210 as set forth below. Responsive to the instructions in this bootstrap program, the microcode RAM and sequencer circuitry 226 loads the instructions from the VRAM 216 which enable the processor 210 to decode the compressed video data.

FIG. 3B is a timing diagram which illustrates the operation of the microcode RAM and sequencing circuitry 226 when a microcode control word, MC, is stored into the microcode RAM 310. In the timing diagram, the symbols T.sub.0 through T.sub.5 represent six microcode instruction cycles. Each instruction cycle begins and ends on a positive-going transition of the signal CK.sub.A.

During the instruction cycle T.sub.0, the microcode control word held in the instruction register 316 has a value (e.g. 8) in its A DST field indicating that the 16-bit value conveyed by the bus A BUS is to be stored into the register MRO. In this instruction cycle, the value MCO, the 16 LSB's of the microcode control word MC, is gated onto the bus A BUS by, for example, the data RAM circuitry 228. During the instruction cycle T.sub.0, the register MRO is conditioned by the value of the signal A DST to store the 16-bit value MCO provided by the bus A BUS. The store operation occurs coincident with the negative-going transition of the signal CK.sub.A, at the midpoint of the instruction cycle T.sub.0. At substantially the same time that the value MCO is stored into the register MRO, the value in the NEXT ADDRESS field of the microcode control word in the instruction register 316 is stored into the address register 322 and the LSB of this address value is stored into the flip-flop 318. The value stored in the address register 322 conditions the microcode RAM 310 to apply a 96-bit value, which includes the next instruction, to the register 312. This 96-bit value is loaded into the register 312 coincident with the negative-going transition of the signal LD which occurs slightly after the midpoint of the instruction cycle T.sub.0. Responsive to the single-bit value held in the flip-flop 318, the addressed 48-bit microcode control word is applied to the input port of the instruction register 316. This microcode control word is loaded into the instruction register 316 coincident with the negative-going edge of the signal LI, occurring at the end of the instruction cycle T.sub.0. During the instruction cycle T.sub.1, the newly loaded microcode control word conditions the register MR1 to load a value MC1, representing the middle 16-bits of the microcode control word MC. In the same manner, a microcode control word loaded into the instruction register 316 at the end of the instruction cycle T.sub.1, conditions the register MR2 to load the 16 MSB's of the microcode control word MC during the instruction cycle T.sub.2.

The microcode control word loaded into the instruction register 316 at the end of the instruction cycle T.sub.2 controls the transfer of the microcode control word MC from the registers 324 to the microcode RAM 310. The address used to store the microcode control word MC is provided via the bus A BUS. At the start of the instruction cycle T.sub.3, the A DST field of the microcode control word in the instruction register 316 has a value of 11, indicating that the 16-bit value provided by the bus A BUS is to be loaded into the address register 322. Responsive to this value in the A DST field, the control circuitry 308 applies a logic-one value, as the signal MXC to the multiplexer 320 for approximately one cycle of the signal CK. This signal conditions the multiplexer 320 to apply the 8 LSB's of the value provided by the bus A BUS to the input port of the address register 322. This address value is loaded into the register 322 coincident with the first negative-going transition of the signal CK in the instruction cycle T.sub.3. The LSB of the value held in the address register 322, the signal DXC, is applied to a control input terminal of a demultiplexer 326. The demultiplexer 326 is conditioned by the signal DXC having values of logic-one or logic-zero to gate the 48-bit value provided by the registers 324 onto the respective 48 MSB positions or 48 LSB positions of the I/O bus.

The signal DXC is also used to generate a separate write enable signal, via AND gates 311 and 313, for each half of the microcode RAM 310. As set forth above, the microcode RAM 310 is configured as 128 words where each word has 96 bits. This memory is divided into two halves. The left half contains the 48 MSB's of the 128 words and the right half contains the 48 LSB's of the 128 words. The signal DXC is combined, in the AND gate 313, with the write enable signal WE, provided by the control circuitry 308 to generate the write enable signal for the left half of the microcode RAM 310. The signal DXC is inverted and then logically ANDed with the signal WE by the gate 311 to produce the write enable signal for the right half of the microcode RAM 310.

In the present example, the signal DXC has a value of logic one for approximately one period of the signal CK at the start of the instruction cycle T.sub.3. Consequently, the microcode control word MC is written into the 48 MSB positions of the cell in the microcode RAM 310 that has the address value represented by the seven MSB's value held in the address register 322. The microcode control word is written into the microcode RAM 310 coincident with the signal WE shown in FIG. 3B.

Since the instruction cycle T.sub.3 performs a memory write operation, the next microcode control word is not loaded into the instruction register 316 during the first period of the signal CK. This operation occurs during the second period of the signal CK in the instruction cycle T.sub.3. Coincident with the second positive-going transition of the signal CK during the instruction cycle T.sub.3, the value of the signal MXC is changed to logic zero, and an instruction fetch operation proceeds as set forth in reference to the instruction cycle T.sub.0. The microcode RAM and sequencing circuitry 226 operates in the manner described in reference to the instruction interval T.sub.0 for the instruction cycles T.sub.4 and T.sub.5.

In the example set forth in FIG. 3B, the signals LD and LI are inhibited during the first half of the instruction cycle T.sub.3 to prevent erroneous microcode control words from being loaded into the registers 312 and 316. In addition, the signals CK.sub.A and CK.sub.B are frozen by the control circuitry 308 during the second half of the instruction cycle T.sub.3 to put the video signal processing circuitry in a paused state. This is done to maintain synchronous operation among the ALU 244, data RAM 228 and pixel interpolator 246. Since the clock signals CK.sub.A and CK.sub.B are disabled during the second half of the instruction cycle T.sub.3, the internal states of the ALU 244, data RAM 228 and pixel interpolator 246 do not change in this time period.

In the present embodiment of the invention, a data read operation and a data write operation for the microcode RAM 310 occur during separate periods of the signal CK. Alternatively, the microcode RAM and sequencing circuitry 226 may be designed to perform both operations in a single period of the signal CK.

The control circuitry 308 is also responsive to a signal PAUSE provided by the pause logic 240 to freeze the clock signals CK.sub.A and CK.sub.B. In addition, the control circuitry 308 is responsive to a signal, HALT, provided by the microprocessor 224 to inhibit the signal CK, effectively freezing the internal state of the entire video signal processor 210 except for the VRAM control unit 238.

Using the signal HALT, the microprocessor 224 may effectively assume the control functions of the video signal processor 210. The signal HALT is applied to the instruction register 316 to condition that register to accept data from the bus MCW, provided by the microprocessor 224 via the