EP0668557B1 - Data reorganization circuit and method - Google Patents

Data reorganization circuit and method Download PDF

Info

Publication number
EP0668557B1
EP0668557B1 EP95410010A EP95410010A EP0668557B1 EP 0668557 B1 EP0668557 B1 EP 0668557B1 EP 95410010 A EP95410010 A EP 95410010A EP 95410010 A EP95410010 A EP 95410010A EP 0668557 B1 EP0668557 B1 EP 0668557B1
Authority
EP
European Patent Office
Prior art keywords
data
register
read
memory
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
EP95410010A
Other languages
German (de)
French (fr)
Other versions
EP0668557A1 (en
Inventor
Alain Artieri
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics SA
Original Assignee
STMicroelectronics SA
SGS Thomson Microelectronics SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics SA, SGS Thomson Microelectronics SA filed Critical STMicroelectronics SA
Publication of EP0668557A1 publication Critical patent/EP0668557A1/en
Application granted granted Critical
Publication of EP0668557B1 publication Critical patent/EP0668557B1/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • G06F7/785Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using a RAM

Definitions

  • the present invention relates to circuits allowing to provide data in a second predetermined order arriving at the circuit in a predetermined first order.
  • Such circuits generally use a memory to dual access, i.e. a memory in which you can write using an input bus and a first address bus and in which we can read, practically simultaneously with writes, using an output bus and a second bus addresses.
  • An object of the present invention is to provide a dual access memory reorganization circuit, which authorizes the reading of the memory at the precise moment when at less data that can be read is present in the memory.
  • the invention allows, according to the data entry and exit orders, read data in memory before it is filled.
  • a reorganization process data including the steps of writing data in a dual access memory in a predetermined first order and read the data into memory in a second predetermined order.
  • a register is incremented by an increment whose optimal value equals 1 plus the difference between the entry rank of the data and the output rank of this data, and zero if the difference is negative, the actual value of this increment being such that the sum of the increments used until writing of the current data is less than or equal to the sum optimal values of these increments.
  • Reading data is allowed only if the content of the register is not zero and the register is decremented on each reading.
  • the method comprises the step of prohibiting the writing of data between the time when writing a data packet ends and the instant when the reading of this data packet ends.
  • the present invention also relates to a circuit for data reorganization, including dual access memory coupled to a system to write data in a first predetermined order using a first bus and to read these data in a second predetermined order using a second bus.
  • a register is connected to the circuit to authorize memory reads only if the contents of the register is not zero. Means are provided to decrement the content of the register each time a data item is read from memory.
  • a address decoder on the first bus provides a increment whose optimal value is equal to 1 plus the difference between the input rank of the current data presented on the first bus and the output rank of this data, and zero if the difference is negative, the actual value of this increment being such that the sum of the increments used until writing of the current data is less than or equal to the sum optimal values of these increments.
  • a summator adds the increment in the content of the register with each writing.
  • the circuit includes a write counter incremented at each writing of a data and reset to zero at the end of each reading of a data packet, and means to inhibit writes as long as the write counter is at its maximum value.
  • data to be reorganized are written in a dual-access memory 10 by a write bus DW.
  • the write addresses of this data are selected by a bus WA write addresses.
  • Data written to memory 10 are read on a DR read bus at selected addresses by an RA read address bus.
  • Each writing in memory 10 is validated by a write clock W, and each reading is validated by a reading clock R.
  • the write addresses WA and the RA read addresses are supplied by a circuit command 12 which determines the reorganization of the data.
  • the write addresses WA are incremented by unit as we write the data and the RA read addresses vary in any fixed manner for determine the reading (or output) order of the data that are written to memory 10.
  • the memory 10 is for example intended to contain a data packet and addresses of writing WA and reading RA evolve according to sequences of period equal to the number of data in a packet.
  • the problem which the invention aims to solve is the synchronization of the transmission of RA read addresses on the emission of write addresses WA so as to read a given as soon as his exit turn has arrived.
  • the invention provides a register 14 which contains the number N of data available for reading in the memory 10, i.e. the number of data that can be read in the correct order. This number N is updated each time writing data into memory 10 by adding to the number N an increment X.
  • register 14 is validated by the write signal W and the input of the register 14 receives, via an adder 16, the sum of the output of the register and of the value X (WA) supplied by a decoder 18.
  • the decoder 18 associates an X value with each write address WA.
  • Each increment X is equal to 1 plus the difference between the input rank of the data currently written and the rank output of this same data. If this difference is negative, the increment X is zero.
  • the values of the increments X as defined above are optimal values X opt .
  • the sum of the increments used up to the data currently written is less than or equal to the sum of the corresponding optimal increments.
  • the total sum of the X increments used for a data packet is equal to the number of data in the packet.
  • register 14 The content of register 14 is decremented by one to each reading in memory 10. For this, we supply by example the read signal R at a decrementing input of the register 14.
  • Register 14 can be a down counter receiving the read signal R on a decrementing input, the signal W on a load validation input, and the output of the adder 16 on a loading input.
  • the control circuit 12 receives the content of the register 14 to determine the activation of control signals RDYW and RDYR.
  • the RDYW signal is used to indicate to a circuit of writing, not shown, that the reorganization circuit is ready or not to receive data. If the RDYW signal is activated, the write circuit successively activates the signal writing W as it presents the data on the DW bus.
  • the write addresses WA are incremented by the control circuit 12 at the rate of the write signal W.
  • the RDYR signal is used to indicate to a read circuit, not shown, that the reorganization circuit is ready or not to provide data.
  • the reading circuit successively activates the reading line R as it reads the data on the bus DR.
  • the command 12 changes the RA read address to provide the data read in the correct order.
  • the succession of addresses RA reading is predefined according to the order in which we want to read the data in memory 10. These addresses are for example stored in a memory addressed by a counter which is incremented by the read signal R.
  • the RDYR signal is active when the number N contained in register 14 is not zero. So the RDYR signal is by example provided by an OR gate receiving all the bits of the register 14.
  • the RDYW signal is active as soon as a data packet has was extracted from memory 10.
  • a 12-1 write counter that counts the number of data written to memory 10.
  • the RDYW signal is for example supplied by an RS flip-flop, not shown, set to 0 when the number of data written NW is equal to the number of data of a packet, and set to 1 if the number N of data available in memory 10 is zero and the number of data written NW is equal to the number of data in a packet.
  • Activation of the RDYW signal sets the number of data written NW to 0.
  • FIG. 2 represents a timing diagram illustrating the operation of the circuit of FIG. 1 using an example of reorganization of packet of eight data 1 to 8.
  • the data are to be written according to the succession: 1, 2, 3, 4, 5, 6, 7, 8 and the data must leave memory 10 according to the succession: 2, 1, 4, 3, 5, 8, 6, 7.
  • the output ranks of words 1 to 8 are respectively: 2, 1, 4, 3, 5, 7, 8, 6.
  • the X values associated with each written data are 0, 2, 0, 2, 1, 0, 0, 3.
  • the memory 10 is empty, the number N is zero and the signal RDYW is activated. The write signal W is then successively activated to write the eight data in the memory 10.
  • the number N is zero until we write the data 2, i.e. data of input rank 2 and rank output 1.
  • the number N is then incremented by 2 and the signal RDYR is activated, which causes successive activations of the read signal R to read data from memory 10 by example, at the frequency of the write signal.
  • We first read the data 2 the number N goes to 1, then data 1, the number N goes to 0, causing the RDYR signal to be deactivated.
  • the number N is incremented by 3 when writing the data 8, the last data in the package.
  • the RDYW signal is deactivated and the RDYR signal is activated.
  • the latency time of the reorganization circuit according to the invention that is to say the offset between the end of writing a package and the end of reading it is three read cycles, which corresponds to the maximum value increment X.
  • a reorganization circuit according to the invention can be provided for carrying out several reorganizations that we choose thanks to a FCT bus (figure 1) which determines the decoding function of decoder 18 and the function for generating reading addresses RA of the control circuit 12.
  • a reorganization circuit according to the invention is particularly useful for filtering in coding or decoding of picture blocks according to MPEG standards.
  • the data is processed by this so-called macroblocks corresponding to blocks image size of 16x16 pixels.
  • Figure 3 illustrates an example format, noted 4: 2: 0, of an MPEG macroblock.
  • This macroblock includes a luminance block formed of four blocks Y0 to Y3 of 8x8 pixels and a chrominance block formed of two blocks U and V of 8x8 pixels.
  • Another possible format is the format noted 4: 2: 2 where the chrominance block includes two 8x16 pixel blocks.
  • a macroblock of the format 4: 2: 0 consists of a packet of 384 pixels of 8 bits.
  • FIG. 4 schematically represents part of MPEG decoder circuit performing macroblock filtering.
  • a commonly decoded macroblock MBc is supplied to a circuit inverse discrete cosine transform (DCT) 20.
  • DCT inverse discrete cosine transform
  • circuit DCT 20 is summed by a adder 22 at the output of a filter 24, called a half-pixel filter, to obtain a reconstructed macroblock MBr.
  • the filter 24 receives MBp macroblocks, called predictive macroblocks, from of a previously reconstructed image. Arrival order pixels at filter 24 is different from the output order of pixels of the DCT circuit. Therefore, it is necessary to provide for the output of the filter 24 a reorganization circuit 26 which is advantageously a reorganization circuit according to the invention.
  • the write signal W and the signal RDYW are exchanged between the circuit 26 and the filter 24.
  • the read signal R and the signal RDYR are exchanged between circuit 26 and DCT circuit 20.
  • the data provided by filter 16 and by the DCT circuits are on 16 bits, each corresponding to a pair pixels.
  • the DCT circuit provides macroblocks under interlaced or progressive form regardless of whether the predictor macroblocks provided to filter 24 can also be supplied in interlaced or progressive form. So, we have four possible reorganization possibilities which are selected by the FCT bus.
  • FIGS. 5A to 5D are intended to illustrate examples of each of these reorganizations. They represent tables of the X increments associated with each pair of pixels of a macroblock written in the memory 10 of the reorganization circuit. These figures are considered to be an integral part of this description.
  • FIG. 5A illustrates a reorganization of macroblocks in the case where the macroblocks are supplied by the filter 24 under progressive form and supplied to adder 22 also under progressive form.
  • the pairs of pixels supplied by the filter 24 arrive, for example, by columns of 16 pairs of pixels by scanning from top to bottom and from left to right, first the blocks of luminanoe Y then the chrominance blocks U and V. More precisely, the luminance blocks Y arrive by alternating a column of block Y0 and a column of block Y2 then, once the blocks Y0 and Y2 arrived, alternating a column from block Y1 and a column from block Y3.
  • the chrominance blocks U and V arrive by alternating a pair of pixels U and a pair of pixels V.
  • the pairs of pixels are written in the circuit of reorganization in their order of arrival.
  • Pixel pairs are read back, for example, by columns of 8 pairs of pixels from top to bottom and from left to right, so as to supply completely successively blocks Y0, Y1, Y2, Y3, U and V, which is partially illustrated by arrows.
  • FIG. 5B represents a reorganization of macroblocks in the case where the macroblocks are supplied in the form progressive by the filter 24 while the adder 22 receives in interlaced form. Pixel pairs are written in the reorganization circuit 26 in the same way as above.
  • the pairs of pixels are read in columns of so as to provide the pairs of pixels of odd lines of successive blocks Y0, Y2, Y1, Y3, then the pairs of pixels of even lines of successive blocks Y0, Y2, Y1, Y3.
  • Blocks of chrominance are replayed in the same way as in the case of the Figure 5A.
  • Figure 5C illustrates a reorganization in the case where the filter 24 provides macroblocks in interleaved form and where they are supplied to the adder 22 in progressive form.
  • the pairs of pixels supplied by the filter 24 arrive in columns of 8 pairs of pixels by scanning from top to bottom and from left to right the odd luminanoe blocks (Y0 (1) to Y3 (1)), the even luminance blocks (Y0 (2) to Y3 (2)), the odd chrominance blocks (U (1) and V (1)), and finally the blocks chrominance pairs U (2) and V (2).
  • An odd block, affected by (1) contains only the pairs of pixels of odd lines of the corresponding complete block and an even block, assigned with (2), does not contains only the pairs of pixels of even rows of the block complete matching.
  • Each of the odd and even blocks (of luminance and chrominance) happens in the same way as the corresponding complete block in Figure 5A, except that each odd or even block contains only 4 pairs of pixels in its columns.
  • Pixel pairs are re-read to provide by columns of 8 pairs of pixels successively the blocks complete Y0, Y1, Y2, Y3, U and V.
  • the reading order is partially represented by surrounded numbers. For example, for reconstitute the first column of the YO block, we read the first to fourth pairs of pixels alternately in blocks Y0 (1) and Y0 (2). The blocks U and V are reconstructed so similar.
  • the latency of the reorganization circuit in this case is 58 read cycles.
  • Figure 5D illustrates a reorganization in the case where the filter 24 provides macroblocks in interlaced form which must be supplied to adder 22 in interleaved form.
  • the blocks are written in the reorganization circuit according to what has been described in relation to FIG. 5C and are replayed in the same order. In fact, the reorganization circuit is not useful in this case. All X increments are at 1 and the latency is one read cycle.
  • a classic solution to avoid this drawback would consist in using a buffer memory preceding the circuit reorganization, the capacity of which corresponds to the number of data written during the latency of the reorganization circuit.
  • MPEG processing is particularly suitable for the use of two reorganization circuits according to the invention connected in parallel to process the pixels to be written in continuous flow.
  • the first reorganizes the blocks of luminance Y0 to Y3, and the second the chrominance blocks U and V, which is easy to predict because the luminance and chrominance correspond to well differentiated packets (the chrominance pixels are not mixed with the luminance pixels, both in and out).
  • the memory used then corresponds to a macroblock and there is no need to increase this memory by adding a buffer memory.
  • FIG. 6 represents a particularly embodiment advantage of dual access memory to use in a reorganization circuit according to the invention adapted to a MPEG image processing.
  • This memory includes 12 memories 16-word first-in / first-out (FIFO) buffer 16 bits each.
  • the DW write bus is connected to all inputs of these FIFO memories and the read bus DR is connected to all the outputs of these FIFO memories.
  • the address bus writing WA includes, for example, 12 lines selecting each of the FIFO memories in write mode
  • the address bus of RA reading includes, for example, 12 lines selecting each of the FIFO memories in read mode.
  • Each of the FIFO memories is intended to contain the pairs of pixels of even rank or pairs of pixels of rank odd of each 8x8 pixel block of a macroblock.
  • the pixel pairs can be provided in the correct order in each of the four cases previously described using a particularly simple addressing and a structure of inexpensive dual access memory.

Description

La présente invention concerne les circuits permettant de fournir dans un deuxième ordre prédéterminé des données arrivant au circuit dans un premier ordre prédéterminé.The present invention relates to circuits allowing to provide data in a second predetermined order arriving at the circuit in a predetermined first order.

De tels circuits utilisent généralement une mémoire à double accès, c'est-à-dire une mémoire dans laquelle on peut écrire à l'aide d'un bus d'entrée et un premier bus d'adresses et dans laquelle on peut lire, pratiquement simultanément aux écritures, à l'aide d'un bus de sortie et d'un deuxième bus d'adresses.Such circuits generally use a memory to dual access, i.e. a memory in which you can write using an input bus and a first address bus and in which we can read, practically simultaneously with writes, using an output bus and a second bus addresses.

Dans des circuits de réorganisation de données classiques, on commence par remplir la mémoire selon un premier ordre avant de comnencer à la vider dans un deuxième ordre. En effet, puisque les ordres d'entrée et de sortie des données sont généralement distincts et quelconques, on ne sait pas, au moment où l'on veut lire une donnée, si cette dernière a effectivement été écrite. Ainsi, un inconvénient d'un tel circuit est qu'il présente un retard de réponse, ou temps de latence, égal au nombre de cycles d'écriture qu'il faut pour remplir la mémoire. In classic data reorganization circuits, we start by filling the memory according to a first order before starting to empty it in a second order. In effect, since the data entry and exit orders are generally distinct and arbitrary, we do not know, at the time where we want to read a data, if the latter has effectively been written. So, a disadvantage of such a circuit is that it has a response delay, or latency, equal to number of write cycles it takes to fill memory.

Un objet de la présente invention est de prévoir un circuit de réorganisation de données à mémoire à double accès, qui autorise la lecture de la mémoire à l'instant précis où au moins une donnée qui peut être lue est présente dans la mémoire.An object of the present invention is to provide a dual access memory reorganization circuit, which authorizes the reading of the memory at the precise moment when at less data that can be read is present in the memory.

En atteignant cet objet, l'invention permet, selon les ordres d'entrée et de sortie des données, de lire des données dans la mémoire avant que celle-ci soit remplie.By achieving this object, the invention allows, according to the data entry and exit orders, read data in memory before it is filled.

Cet objet est atteint grâce à un procédé de réorganisation de données, comprenant les étapes d'écrire les données dans une mémoire à double accès dans un premier ordre prédéterminé et de lire les données dans la mémoire dans un deuxième ordre prédéterminé. A chaque écriture d'une donnée courante, un registre est incrémenté d'un incrément dont la valeur optimale est égale à 1 plus la différence entre le rang d'entrée de la donnée et le rang de sortie de cette donnée, et nulle si la différence est négative, la valeur effective de cet incrément étant telle que la somme des incréments utilisés jusqu'à l'écriture de la donnée courante est inférieure ou égale à la somme des valeurs optimales de ces incréments. La lecture des données est autorisée seulement si le contenu du registre est non nul et le registre est décrémenté à chaque lecture.This object is achieved thanks to a reorganization process data, including the steps of writing data in a dual access memory in a predetermined first order and read the data into memory in a second predetermined order. Each time a current data is written, a register is incremented by an increment whose optimal value equals 1 plus the difference between the entry rank of the data and the output rank of this data, and zero if the difference is negative, the actual value of this increment being such that the sum of the increments used until writing of the current data is less than or equal to the sum optimal values of these increments. Reading data is allowed only if the content of the register is not zero and the register is decremented on each reading.

Selon un mode de réalisation de la présente invention, le procédé comprend l'étape d'interdire l'écriture des données entre l'instant où l'écriture d'un paquet de données se termine et l'instant où la lecture de ce paquet de données se termine.According to an embodiment of the present invention, the method comprises the step of prohibiting the writing of data between the time when writing a data packet ends and the instant when the reading of this data packet ends.

La présente invention vise également un circuit de réorganisation de données, comprenant une mémoire à double accès couplée à un système pour écrire des données dans un premier ordre prédéterminé à l'aide d'un premier bus et pour lire ces données dans un deuxième ordre prédéterminé à l'aide d'un deuxième bus. Un registre est connecté au circuit pour autoriser les lectures de la mémoire seulement si le contenu du registre est non nul. Des moyens sont prévus pour décrémenter le contenu du registre à chaque lecture d'une donnée dans la mémoire. Un décodeur des adresses présentes sur le premier bus fournit un incrément dont la valeur optimale est égale à 1 plus la différence entre le rang d'entrée de la donnée courante présentée sur le premier bus et le rang de sortie de cette donnée, et nulle si la différence est négative, la valeur effective de cet incrément étant telle que la somme des incréments utilisés jusqu'à l'écriture de la donnée courante est inférieure ou égale à la somme des valeurs optimales de ces incréments. Un sommateur ajoute l'incrément au contenu du registre à chaque écriture.The present invention also relates to a circuit for data reorganization, including dual access memory coupled to a system to write data in a first predetermined order using a first bus and to read these data in a second predetermined order using a second bus. A register is connected to the circuit to authorize memory reads only if the contents of the register is not zero. Means are provided to decrement the content of the register each time a data item is read from memory. A address decoder on the first bus provides a increment whose optimal value is equal to 1 plus the difference between the input rank of the current data presented on the first bus and the output rank of this data, and zero if the difference is negative, the actual value of this increment being such that the sum of the increments used until writing of the current data is less than or equal to the sum optimal values of these increments. A summator adds the increment in the content of the register with each writing.

Selon un mode de réalisation de la présente invention, le circuit comprend un compteur d'écriture incrémenté à chaque écriture d'une donnée et remis à zéro à la fin de chaque lecture d'un paquet de données, et des moyens pour inhiber les écritures tant que le compteur d'écriture est à sa valeur maximale.According to an embodiment of the present invention, the circuit includes a write counter incremented at each writing of a data and reset to zero at the end of each reading of a data packet, and means to inhibit writes as long as the write counter is at its maximum value.

Ces objets, caractéristiques et avantages ainsi que d'autres de la présente invention seront exposés dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif à l'aide des figures jointes parmi lesquelles :

  • la figure 1 représente un mode de réalisation schématique d'un dispositif de réorganisation de données selon la présente invention ;
  • la figure 2 représente un chronogramme permettant d'illustrer le fonctionnement du circuit de la figure 1 ;
  • la figure 3 représente un macrobloc d'une image numérique constituant des données pouvant être traitées par un circuit de réorganisation selon l'invention ;
  • la figure 4 représente une insertion d'un circuit de réorganisation selon l'invention dans une chaíne de traitement de données d'image comprimées selon une norme MPEG ;
  • les figures 5A à 5D servent à illustrer quatre types de réorganisation effectués par un circuit selon l'invention dans le cadre d'un traitement de macroblocs d'image comprimés selon une norme MPEG ; et
  • la figure 6 représente un mode de réalisation de mémoire à double accès particulièrement avantageux dans le domaine du décodage MPEG.
  • These objects, characteristics and advantages as well as others of the present invention will be explained in the following description of particular embodiments given without limitation by means of the attached figures, among which:
  • Figure 1 shows a schematic embodiment of a data reorganization device according to the present invention;
  • 2 shows a timing diagram to illustrate the operation of the circuit of Figure 1;
  • FIG. 3 represents a macroblock of a digital image constituting data which can be processed by a reorganization circuit according to the invention;
  • Figure 4 shows an insertion of a reorganization circuit according to the invention in a processing chain of compressed image data according to an MPEG standard;
  • FIGS. 5A to 5D serve to illustrate four types of reorganization carried out by a circuit according to the invention within the framework of a processing of image macroblocks compressed according to an MPEG standard; and
  • FIG. 6 represents an embodiment of dual access memory which is particularly advantageous in the field of MPEG decoding.
  • A la figure 1, des données à réorganiser sont écrites dans une mémoire à double accès 10 par un bus d'écriture DW. Les adresses d'écriture de ces données sont sélectionnées par un bus d'adresses d'écriture WA. Les données écrites dans la mémoire 10 sont relues sur un bus de lecture DR à des adresses sélectionnées par un bus d'adresses de lecture RA. Chaque écriture dans la mémoire 10 est validée par une horloge d'écriture W, et chaque lecture est validée par une horloge de lecture R.In FIG. 1, data to be reorganized are written in a dual-access memory 10 by a write bus DW. The write addresses of this data are selected by a bus WA write addresses. Data written to memory 10 are read on a DR read bus at selected addresses by an RA read address bus. Each writing in memory 10 is validated by a write clock W, and each reading is validated by a reading clock R.

    Dans l'exemple de la figure 1, les adresses d'écriture WA et les adresses de lecture RA sont fournies par un circuit de commande 12 qui détermine la réorganisation des données. Par exemple, les adresses d'écriture WA sont incrémentées d'une unité au fur et à mesure que l'on écrit les données et les adresses de lecture RA varient de manière fixée quelconque pour déterminer l'ordre de lecture (ou de sortie) des données qui sont écrites dans la mémoire 10.In the example in Figure 1, the write addresses WA and the RA read addresses are supplied by a circuit command 12 which determines the reorganization of the data. Through example, the write addresses WA are incremented by unit as we write the data and the RA read addresses vary in any fixed manner for determine the reading (or output) order of the data that are written to memory 10.

    Généralement, les données sont réorganisées par paquets de longueur constante. La mémoire 10 est par exemple prévue pour contenir un paquet de données et les adresses d'écriture WA et de lecture RA évoluent selon des suites de période égale au nombre de données d'un paquet.Generally, the data is reorganized by packets of constant length. The memory 10 is for example intended to contain a data packet and addresses of writing WA and reading RA evolve according to sequences of period equal to the number of data in a packet.

    Le problème que vise à résoudre l'invention est la synchronisation de l'émission des adresses de lecture RA sur l'émission des adresses d'écriture WA de manière à lire une donnée dès que son tour de sortie est arrivé.The problem which the invention aims to solve is the synchronization of the transmission of RA read addresses on the emission of write addresses WA so as to read a given as soon as his exit turn has arrived.

    Pour cela, l'invention prévoit un registre 14 qui contient le nombre N de données disponibles à la lecture dans la mémoire 10, c'est-à-dire le nombre de données qui peuvent être lues dans le bon ordre. Ce nombre N est mis à jour à chaque écriture d'une donnée dans la mémoire 10 en ajoutant au nombre N un incrément X. Pour cela, par exemple, le registre 14 est validé par le signal d'écriture W et l'entrée du registre 14 reçoit, par l'intermédiaire d'un additionneur 16, la somme de la sortie du registre et de la valeur X(WA) fournie par un décodeur 18. Le décodeur 18 associe une valeur X à chaque adresse d'écriture WA. Chaque incrément X est égal à 1 plus la différence entre le rang d'entrée de la donnée couramment écrite et le rang de sortie de cette même donnée. Si cette différence est négative, l'incrément X est nul.For this, the invention provides a register 14 which contains the number N of data available for reading in the memory 10, i.e. the number of data that can be read in the correct order. This number N is updated each time writing data into memory 10 by adding to the number N an increment X. For this, for example, register 14 is validated by the write signal W and the input of the register 14 receives, via an adder 16, the sum of the output of the register and of the value X (WA) supplied by a decoder 18. The decoder 18 associates an X value with each write address WA. Each increment X is equal to 1 plus the difference between the input rank of the data currently written and the rank output of this same data. If this difference is negative, the increment X is zero.

    Les valeurs des incréments X tels que définis ci-dessus sont des valeurs optimales Xopt. Pour que le circuit fonctionne, il suffit que la somme des incréments utilisés jusqu'à la donnée couramment écrite soit inférieure ou égale à la somme des incréments optimaux correspondants. En tout cas, la somme totale des incréments X utilisés pour un paquet de données est égale au nombre de données du paquet.The values of the increments X as defined above are optimal values X opt . For the circuit to function, it suffices that the sum of the increments used up to the data currently written is less than or equal to the sum of the corresponding optimal increments. In any case, the total sum of the X increments used for a data packet is equal to the number of data in the packet.

    Le contenu du registre 14 est décrémenté d'une unité à chaque lecture dans la mémoire 10. Pour cela, on fournit par exemple le signal de lecture R à une entrée de décrémentation du registre 14. Le registre 14 peut être un décompteur recevant le signal de lecture R sur une entrée de décrémentation, le signal W sur une entrée de validation de chargement, et la sortie de l'additionneur 16 sur une entrée de chargement.The content of register 14 is decremented by one to each reading in memory 10. For this, we supply by example the read signal R at a decrementing input of the register 14. Register 14 can be a down counter receiving the read signal R on a decrementing input, the signal W on a load validation input, and the output of the adder 16 on a loading input.

    Le circuit de commande 12 reçoit le contenu du registre 14 pour déterminer l'activation de signaux de contrôle RDYW et RDYR. Le signal RDYW sert à indiquer à un circuit d'écriture, non représenté, que le circuit de réorganisation est prêt ou non à recevoir des données. Si le signal RDYW est activé, le circuit d'écriture active successivement le signal d'écriture W au fur et à mesure qu'il présente les données sur le bus DW. Les adresses d'écriture WA sont incrémentées par le circuit de commande 12 au rythme du signal d'écriture W.The control circuit 12 receives the content of the register 14 to determine the activation of control signals RDYW and RDYR. The RDYW signal is used to indicate to a circuit of writing, not shown, that the reorganization circuit is ready or not to receive data. If the RDYW signal is activated, the write circuit successively activates the signal writing W as it presents the data on the DW bus. The write addresses WA are incremented by the control circuit 12 at the rate of the write signal W.

    Le signal RDYR sert à indiquer à un circuit de lecture, non représenté, que le circuit de réorganisation est prêt ou non à fournir des données. Lorsque le signal RDYR est actif, le circuit de lecture active successivement la ligne de lecture R au fur et à mesure qu'il lit les données présentes sur le bus DR. A chaque activation du signal de lecture R, le circuit de commande 12 modifie l'adresse de lecture RA de manière à fournir les données lues dans le bon ordre. La succession des adresses de lecture RA est prédéfinie en fonction de l'ordre dans lequel on veut lire les données dans la mémoire 10. Ces adresses sont par exemple stockées dans une mémoire adressée par un compteur qui est incrémenté par le signal de lecture R.The RDYR signal is used to indicate to a read circuit, not shown, that the reorganization circuit is ready or not to provide data. When the RDYR signal is active, the reading circuit successively activates the reading line R as it reads the data on the bus DR. Each time the read signal R is activated, the command 12 changes the RA read address to provide the data read in the correct order. The succession of addresses RA reading is predefined according to the order in which we want to read the data in memory 10. These addresses are for example stored in a memory addressed by a counter which is incremented by the read signal R.

    Le signal RDYR est actif lorsque le nombre N contenu dans le registre 14 est non nul. Ainsi, le signal RDYR est par exemple fourni par une porte OU recevant tous les bits du registre 14.The RDYR signal is active when the number N contained in register 14 is not zero. So the RDYR signal is by example provided by an OR gate receiving all the bits of the register 14.

    Le signal RDYW est actif dès qu'un paquet de données a été extrait de la mémoire 10. Pour générer ce signal RDYW, on utilise, par exemple, un compteur d'écriture 12-1 qui compte le nombre de données écrites dans la mémoire 10. Le signal RDYW est par exemple fourni par une bascule RS, non représentée, mise à 0 lorsque le nombre de données écrites NW est égal au nombre de données d'un paquet, et mise à 1 si le nombre N de données disponibles dans la mémoire 10 est nul et le nombre de données écrites NW est égal au nombre de données d'un paquet. L'activation du signal RDYW met à 0 le nombre de données écrites NW.The RDYW signal is active as soon as a data packet has was extracted from memory 10. To generate this RDYW signal, we uses, for example, a 12-1 write counter that counts the number of data written to memory 10. The RDYW signal is for example supplied by an RS flip-flop, not shown, set to 0 when the number of data written NW is equal to the number of data of a packet, and set to 1 if the number N of data available in memory 10 is zero and the number of data written NW is equal to the number of data in a packet. Activation of the RDYW signal sets the number of data written NW to 0.

    La figure 2 représente un chronogramme illustrant le fonctionnement du circuit de la figure 1 à l'aide d'un exemple de réorganisation de paquet de huit données 1 à 8. Dans cet exemple, les données sont à écrire selon la succession :
       1, 2, 3, 4, 5, 6, 7, 8
    et les données doivent sortir de la mémoire 10 selon la succession :
       2, 1, 4, 3, 5, 8, 6, 7.
    Ainsi, les rangs de sortie des mots 1 à 8 sont respectivement :
       2, 1, 4, 3, 5, 7, 8, 6.
    FIG. 2 represents a timing diagram illustrating the operation of the circuit of FIG. 1 using an example of reorganization of packet of eight data 1 to 8. In this example, the data are to be written according to the succession:
    1, 2, 3, 4, 5, 6, 7, 8
    and the data must leave memory 10 according to the succession:
    2, 1, 4, 3, 5, 8, 6, 7.
    Thus, the output ranks of words 1 to 8 are respectively:
    2, 1, 4, 3, 5, 7, 8, 6.

    Les valeurs X associées à chaque donnée écrite sont
       0, 2, 0, 2, 1, 0, 0, 3.
    The X values associated with each written data are
    0, 2, 0, 2, 1, 0, 0, 3.

    A un instant t0, la mémoire 10 est vide, le nombre N est nul et le signal RDYW est activé. Le signal d'écriture W est alors successivement activé pour écrire les huit données dans la mémoire 10.At an instant t 0 , the memory 10 is empty, the number N is zero and the signal RDYW is activated. The write signal W is then successively activated to write the eight data in the memory 10.

    Le nombre N est nul jusqu'au moment où on écrit la donnée 2, c'est-à-dire la donnée de rang d'entrée 2 et de rang de sortie 1. Le nombre N est alors incrémenté de 2 et le signal RDYR est activé, ce qui provoque des activations successives du signal de lecture R pour lire les données dans la mémoire 10 par exemple, à la fréquence du signal d'écriture. On lit d'abord la donnée 2, le nombre N passe à 1, puis la donnée 1, le nombre N passe à 0 en provoquant la désactivation du signal RDYR.The number N is zero until we write the data 2, i.e. data of input rank 2 and rank output 1. The number N is then incremented by 2 and the signal RDYR is activated, which causes successive activations of the read signal R to read data from memory 10 by example, at the frequency of the write signal. We first read the data 2, the number N goes to 1, then data 1, the number N goes to 0, causing the RDYR signal to be deactivated.

    Lorsque la donnée 4 est écrite dans la mémoire 10, le nombre N est incrémenté de 2, cette incrémentation se produisant dans l'exemple de la figure 2 lorsque le nombre N est devenu nul après la lecture de la donnée 1. Le signal RDYR est de nouveau activé et la lecture des données reprend.When data 4 is written in memory 10, the number N is incremented by 2, this increment occurring in the example of figure 2 when the number N has become zero after reading data 1. RDYR signal is again activated and data reading resumes.

    On lit la donnée 4, le nombre N passe à 1, puis on lit la donnée 3. Entre temps, on a écrit la donnée 5 et le nombre N a été incrémenté de 1. Au moment de la lecture de la donnée 3, le nombre N passe à 1, on lit la donnée 5, le nombre N passe à 0 en désactivant le signal RDYR.We read data 4, the number N goes to 1, then we read data 3. In the meantime, we wrote data 5 and the number N has been incremented by 1. At the time of reading data 3, the number N goes to 1, we read the data 5, the number N goes to 0 by deactivating the RDYR signal.

    Le nombre N est incrémenté de 3 à l'écriture de la donnée 8, la dernière donnée du paquet. Le signal RDYW est désactivé et le signal RDYR est activé. On lit successivement les données 8, 6 et 7, le nombre N passant à 2, puis à 1 et enfin à 0.The number N is incremented by 3 when writing the data 8, the last data in the package. The RDYW signal is deactivated and the RDYR signal is activated. We read successively data 8, 6 and 7, the number N going to 2, then to 1 and finally at 0.

    Lorsqu'on a lu la donnée 7, la mémoire 10 est vide. Le signal RDYW est de nouveau activé, ce qui permet l'écriture d'un nouveau paquet de huit données.When data 7 has been read, memory 10 is empty. The RDYW signal is activated again, which allows the writing of a new packet of eight data.

    On observe que le temps de latence du circuit de réorganisation selon l'invention, c'est-à-dire le décalage entre la fin de l'écriture d'un paquet et la fin de sa lecture est de trois cycles de lecture, ce qui correspond à la valeur maximale de l'incrément X. We observe that the latency time of the reorganization circuit according to the invention, that is to say the offset between the end of writing a package and the end of reading it is three read cycles, which corresponds to the maximum value increment X.

    Bien entendu, un circuit de réorganisation selon l'invention peut être prévu pour effectuer plusieurs réorganisations que l'on choisit grâce à un bus FCT (figure 1) qui détermine la fonction de décodage du décodeur 18 et la fonction de génération d'adresses de lecture RA du circuit de commande 12.Of course, a reorganization circuit according to the invention can be provided for carrying out several reorganizations that we choose thanks to a FCT bus (figure 1) which determines the decoding function of decoder 18 and the function for generating reading addresses RA of the control circuit 12.

    Un circuit de réorganisation selon l'invention est particulièrement utile pour effectuer le filtrage dans un codage ou décodage de blocs d'image selon les normes MPEG. Dans de tels circuits de codage ou décodage, les données sont traitées par ce que l'on appelle des macroblocs correspondant à des blocs d'image de 16x16 pixels.A reorganization circuit according to the invention is particularly useful for filtering in coding or decoding of picture blocks according to MPEG standards. In such coding or decoding circuits, the data is processed by this so-called macroblocks corresponding to blocks image size of 16x16 pixels.

    La figure 3 illustre un exemple de format, noté 4:2:0, d'un macrobloc MPEG. Ce macrobloc comprend un bloc de luminance formé de quatre blocs Y0 à Y3 de 8x8 pixels et un bloc de chrominance formé de deux blocs U et V de 8x8 pixels. Un autre format possible est le format noté 4:2:2 où le bloc de chrominance comprend deux blocs de 8x16 pixels. Un macrobloc du format 4:2:0 est constitué d'un paquet de 384 pixels de 8 bits.Figure 3 illustrates an example format, noted 4: 2: 0, of an MPEG macroblock. This macroblock includes a luminance block formed of four blocks Y0 to Y3 of 8x8 pixels and a chrominance block formed of two blocks U and V of 8x8 pixels. Another possible format is the format noted 4: 2: 2 where the chrominance block includes two 8x16 pixel blocks. A macroblock of the format 4: 2: 0 consists of a packet of 384 pixels of 8 bits.

    La figure 4 représente schématiquement une partie de circuit de décodeur MPEG effectuant le filtrage des macroblocs. Un macrobloc couramment décodé MBc est fourni à un circuit de transformée cosinus discrète (DCT) inverse 20.Figure 4 schematically represents part of MPEG decoder circuit performing macroblock filtering. A commonly decoded macroblock MBc is supplied to a circuit inverse discrete cosine transform (DCT) 20.

    La sortie du circuit DCT 20 est sommée par un additionneur 22 à la sortie d'un filtre 24, dit filtre demi-pixel, pour obtenir un macrobloc reconstruit MBr. Le filtre 24 reçoit des macroblocs MBp, dits macroblocs prédicteurs, provenant d'une image précédemment reconstruite. L'ordre d'arrivée des pixels au filtre 24 est différent de l'ordre de sortie des pixels du circuit DCT. Par conséquent, il faut prévoir à la sortie du filtre 24 un circuit de réorganisation 26 qui est avantageusement un circuit de réorganisation selon l'invention. Le signal d'écriture W et le signal RDYW sont échangés entre le circuit 26 et le filtre 24. Le signal de lecture R et le signal RDYR sont échangés entre le circuit 26 et le circuit DCT 20. The output of circuit DCT 20 is summed by a adder 22 at the output of a filter 24, called a half-pixel filter, to obtain a reconstructed macroblock MBr. The filter 24 receives MBp macroblocks, called predictive macroblocks, from of a previously reconstructed image. Arrival order pixels at filter 24 is different from the output order of pixels of the DCT circuit. Therefore, it is necessary to provide for the output of the filter 24 a reorganization circuit 26 which is advantageously a reorganization circuit according to the invention. The write signal W and the signal RDYW are exchanged between the circuit 26 and the filter 24. The read signal R and the signal RDYR are exchanged between circuit 26 and DCT circuit 20.

    Les données fournies par le filtre 16 et par le circuit DCT sont sur 16 bits, correspondant chacune à une paire de pixels.The data provided by filter 16 and by the DCT circuits are on 16 bits, each corresponding to a pair pixels.

    En outre, le circuit DCT fournit des macroblocs sous forme entrelacée ou progressive indépendamment du fait que les macroblocs prédicteurs fournis au filtre 24 peuvent également être fournis sous forme entrelacée ou progressive. Ainsi, on a quatre possibilités de réorganisation possibles qui sont sélectionnées par le bus FCT.In addition, the DCT circuit provides macroblocks under interlaced or progressive form regardless of whether the predictor macroblocks provided to filter 24 can also be supplied in interlaced or progressive form. So, we have four possible reorganization possibilities which are selected by the FCT bus.

    Les figures 5A à 5D sont destinées à illustrer des exemples de chacune de ces réorganisations. Elles représentent des tableaux des incréments X associés à chaque paire de pixels d'un macrobloc écrite dans la mémoire 10 du circuit de réorganisation. On considère que ces figures font partie intégrante de la présente description.FIGS. 5A to 5D are intended to illustrate examples of each of these reorganizations. They represent tables of the X increments associated with each pair of pixels of a macroblock written in the memory 10 of the reorganization circuit. These figures are considered to be an integral part of this description.

    La figure 5A illustre une réorganisation de macroblocs dans le cas où les macroblocs sont fournis par le filtre 24 sous forme progressive et fournis à l'additionneur 22 également sous forme progressive.FIG. 5A illustrates a reorganization of macroblocks in the case where the macroblocks are supplied by the filter 24 under progressive form and supplied to adder 22 also under progressive form.

    Les paires de pixels fournis par le filtre 24 arrivent, par exemple, par colonnes de 16 paires de pixels en balayant de haut en bas et de gauche à droite, d'abord les blocs de luminanoe Y puis les blocs de chrominance U et V. Plus précisément, les blocs de luminance Y arrivent en alternant une colonne du bloc Y0 et une colonne du bloc Y2 puis, une fois que les blocs Y0 et Y2 sont arrivés, en alternant une colonne du bloc Y1 et une colonne du bloc Y3. Les blocs de chrominance U et V arrivent en alternant une paire de pixels U et une paire de pixels V. Les paires de pixels sont écrites dans le circuit de réorganisation dans leur ordre d'arrivée.The pairs of pixels supplied by the filter 24 arrive, for example, by columns of 16 pairs of pixels by scanning from top to bottom and from left to right, first the blocks of luminanoe Y then the chrominance blocks U and V. More precisely, the luminance blocks Y arrive by alternating a column of block Y0 and a column of block Y2 then, once the blocks Y0 and Y2 arrived, alternating a column from block Y1 and a column from block Y3. The chrominance blocks U and V arrive by alternating a pair of pixels U and a pair of pixels V. The pairs of pixels are written in the circuit of reorganization in their order of arrival.

    Les paires de pixels sont relues, par exemple, par colonnes de 8 paires de pixels de haut en bas et de gauche à droite, de manière à fournir de façon complète successivement les blocs Y0, Y1, Y2, Y3, U et V, ce qui est illustré partiellement par des flèches. Pixel pairs are read back, for example, by columns of 8 pairs of pixels from top to bottom and from left to right, so as to supply completely successively blocks Y0, Y1, Y2, Y3, U and V, which is partially illustrated by arrows.

    On constate dans le tableau de la figure 5A que la plus grande valeur de X est 57, ce qui veut dire que la latence du circuit de réorganisation est, dans ce cas, de 57 cycles de lecture sur 192 paires de pixels écrites.It can be seen in the table of FIG. 5A that the greatest value of X is 57, which means that the latency of the reorganization circuit is, in this case, 57 cycles of read on 192 pairs of written pixels.

    La figure 5B représente une réorganisation de macroblocs dans le cas où les macroblocs sont fournis sous forme progressive par le filtre 24 alors que l'additionneur 22 les reçoit sous forme entrelacée. Les paires de pixels sont écrites dans le circuit de réorganisation 26 de la même manière que ci-dessus.FIG. 5B represents a reorganization of macroblocks in the case where the macroblocks are supplied in the form progressive by the filter 24 while the adder 22 receives in interlaced form. Pixel pairs are written in the reorganization circuit 26 in the same way as above.

    Les paires de pixels sont relues par colonnes de manière à fournir les paires de pixels de lignes impaires des blocs successifs Y0, Y2, Y1, Y3, puis les paires de pixels de lignes paires des blocs successifs Y0, Y2, Y1, Y3. Les blocs de chrominance sont relus de la même manière que dans le cas de la figure 5A.The pairs of pixels are read in columns of so as to provide the pairs of pixels of odd lines of successive blocks Y0, Y2, Y1, Y3, then the pairs of pixels of even lines of successive blocks Y0, Y2, Y1, Y3. Blocks of chrominance are replayed in the same way as in the case of the Figure 5A.

    On remarque que la latence dans ce cas est de 64 cycles de lecture.Note that the latency in this case is 64 reading cycles.

    La figure 5C illustre une réorganisation dans le cas où le filtre 24 fournit des macroblocs sous forme entrelacée et où ils sont fournis à l'additionneur 22 sous forme progressive.Figure 5C illustrates a reorganization in the case where the filter 24 provides macroblocks in interleaved form and where they are supplied to the adder 22 in progressive form.

    Les paires de pixels fournis par le filtre 24 arrivent par colonnes de 8 paires de pixels en balayant de haut en bas et de gauche à droite les blocs de luminanoe impairs (Y0(1) à Y3(1)), les blocs de luminance pairs (Y0(2) à Y3(2)), les blocs de chrominance impairs (U(1) et V(1)), et enfin les blocs de chrominance pairs U(2) et V(2). Un bloc impair, affecté de (1), ne contient que les paires de pixels de lignes impaires du bloc complet correspondant et un bloc pair, affecté de (2), ne contient que les paires de pixels de lignes paires du bloc complet correspondant. Chacun des blocs impairs et pairs (de luminance et de chrominance) arrive de la même manière que le bloc complet correspondant dans la figure 5A, sauf que chaque bloc impair ou pair ne contient que 4 paires de pixels dans ses colonnes. The pairs of pixels supplied by the filter 24 arrive in columns of 8 pairs of pixels by scanning from top to bottom and from left to right the odd luminanoe blocks (Y0 (1) to Y3 (1)), the even luminance blocks (Y0 (2) to Y3 (2)), the odd chrominance blocks (U (1) and V (1)), and finally the blocks chrominance pairs U (2) and V (2). An odd block, affected by (1), contains only the pairs of pixels of odd lines of the corresponding complete block and an even block, assigned with (2), does not contains only the pairs of pixels of even rows of the block complete matching. Each of the odd and even blocks (of luminance and chrominance) happens in the same way as the corresponding complete block in Figure 5A, except that each odd or even block contains only 4 pairs of pixels in its columns.

    Les paires de pixels sont relues de manière à fournir par colonnes de 8 paires de pixels successivement les blocs complets Y0, Y1, Y2, Y3, U et V. L'ordre de lecture est partiellement représenté par des nombres entourés. Par exemple, pour reconstituer la première colonne du bloc YO, on lit les première à quatrième paires de pixels de façon alternée dans les blocs Y0(1) et Y0(2). Les blocs U et V sont reconstitués de manière similaire.Pixel pairs are re-read to provide by columns of 8 pairs of pixels successively the blocks complete Y0, Y1, Y2, Y3, U and V. The reading order is partially represented by surrounded numbers. For example, for reconstitute the first column of the YO block, we read the first to fourth pairs of pixels alternately in blocks Y0 (1) and Y0 (2). The blocks U and V are reconstructed so similar.

    On remarque que la latence du circuit de réorganisation dans ce cas est de 58 cycles de lecture.Note that the latency of the reorganization circuit in this case is 58 read cycles.

    La figure 5D illustre une réorganisation dans le cas où le filtre 24 fournit des macroblocs sous forme entrelacée qui doivent être fournis à l'additionneur 22 sous forme entrelacée.Figure 5D illustrates a reorganization in the case where the filter 24 provides macroblocks in interlaced form which must be supplied to adder 22 in interleaved form.

    Les blocs sont écrits dans le circuit de réorganisation selon ce qui a été décrit en relation avec la figure 5C et sont relus dans le même ordre. En fait, le circuit de réorganisation n'est pas utile dans ce cas. Tous les incréments X sont à 1 et le temps de latence est d'un cycle de lecture.The blocks are written in the reorganization circuit according to what has been described in relation to FIG. 5C and are replayed in the same order. In fact, the reorganization circuit is not useful in this case. All X increments are at 1 and the latency is one read cycle.

    Dans cette application à un circuit de traitement MPEG, comme pour le cas général, le circuit de réorganisation interdit de commencer l'écriture d'un nouveau paquet de données (nouveau macrobloc) tant que le paquet précédent n'a pas été lu. Ainsi, les données ne peuvent pas être fournies en flot continu au circuit de réorganisation.In this application to a processing circuit MPEG, as for the general case, the reorganization circuit forbidden to start writing a new data packet (new macroblock) until the previous package has been read. Thus, data cannot be provided in stream continuous in the reorganization circuit.

    Une solution classique pour éviter cet inconvénient consisterait à utiliser une mémoire tampon précédant le circuit de réorganisation, dont la capacité correspond au nombre de données écrites pendant la latence du circuit de réorganisation.A classic solution to avoid this drawback would consist in using a buffer memory preceding the circuit reorganization, the capacity of which corresponds to the number of data written during the latency of the reorganization circuit.

    Le traitement MPEG se prête particulièrement bien à l'utilisation de deux circuits de réorganisation selon l'invention connectés en parallèle pour traiter les pixels à écrire en flot continu. Par exemple, le premier réorganise les blocs de luminance Y0 à Y3, et le deuxième les blocs de chrominance U et V, ce qui est facile à prévoir car les blocs de luminance et de chrominance correspondent à des paquets bien différenciés (les pixels de chrominance ne sont pas mélangés aux pixels de luminance, aussi bien en entrée qu'en sortie). La mémoire utilisée correspond alors à un macrobloc et il est inutile d'augmenter cette mémoire par l'adjonction d'une mémoire tampon.MPEG processing is particularly suitable for the use of two reorganization circuits according to the invention connected in parallel to process the pixels to be written in continuous flow. For example, the first reorganizes the blocks of luminance Y0 to Y3, and the second the chrominance blocks U and V, which is easy to predict because the luminance and chrominance correspond to well differentiated packets (the chrominance pixels are not mixed with the luminance pixels, both in and out). The memory used then corresponds to a macroblock and there is no need to increase this memory by adding a buffer memory.

    La figure 6 représente un mode de réalisation particulièrement avantageux d'une mémoire à double accès à utiliser dans un circuit de réorganisation selon l'invention adapté à un traitement d'images MPEG. Cette mémoire comprend 12 mémoires tampon, du type premier-entré/premier-sorti (FIFO), de 16 mots de 16 bits chacun. Le bus d'écriture DW est relié à toutes les entrées de ces mémoires FIFO et le bus de lecture DR est relié à toutes les sorties de ces mémoires FIFO. Le bus d'adresses d'écriture WA comprend, par exemple, 12 lignes sélectionnant chacune des mémoires FIFO en écriture, et le bus d'adresses de lecture RA comprend, par exemple, 12 lignes sélectionnant chacune des mémoires FIFO en lecture.FIG. 6 represents a particularly embodiment advantage of dual access memory to use in a reorganization circuit according to the invention adapted to a MPEG image processing. This memory includes 12 memories 16-word first-in / first-out (FIFO) buffer 16 bits each. The DW write bus is connected to all inputs of these FIFO memories and the read bus DR is connected to all the outputs of these FIFO memories. The address bus writing WA includes, for example, 12 lines selecting each of the FIFO memories in write mode, and the address bus of RA reading includes, for example, 12 lines selecting each of the FIFO memories in read mode.

    Chacune des mémoires FIFO est destinée à contenir les paires de pixels de rang pair ou les paires de pixels de rang impair de chaque bloc de 8x8 pixels d'un macrobloc. De cette manière, les paires de pixels peuvent être fournis dans le bon ordre dans chacun des quatre cas précédemment décrits en utilisant un adressage particulièrement simple et une structure de mémoire à double accès peu coûteuse.Each of the FIFO memories is intended to contain the pairs of pixels of even rank or pairs of pixels of rank odd of each 8x8 pixel block of a macroblock. Of this way, the pixel pairs can be provided in the correct order in each of the four cases previously described using a particularly simple addressing and a structure of inexpensive dual access memory.

    Claims (4)

    1. A data reorganization process, including the following steps:
      writing words in a dual-port memory (10) in a first predetermined order;
      reading-out the words from the memory in a second predetermined order;
      characterized in that it comprises the following steps:
      each time a current word is written, incrementing a register (14) by an increment (X) whose optimum value is equal to 1 plus the difference between the input rank of the word and the output rank of this word, said increment being zero if the difference is negative, the effective value of said increment being such that the sum of the increments that are used until the current word is written is lower than, or equal to, the sum of the optimum values of these used increments;
      authorizing reading of the words only if the content of the register is non-zero; and
      decrementing the register at each read.
    2. The reorganization process of claim 1, characterized in that it includes the step of inhibiting the writing of words between the time when the writing of a packet of words is ended and the time when the reading of this packet is ended.
    3. A data reorganization circuit, including a dual-port memory (10) coupled to a system to write words in a first predetermined order with a first bus (DR, WA) and to read said words in a second predetermined order with a second bus (DR, RA), characterized in that it comprises:
      a register (14) connected to the reorganization circuit to authorize the reading of the memory only if the content of the register is non-zero;
      circuitry (R) for decrementing the content of the register each time a word is read in the memory;
      a decoder (18) for decoding addresses present on the first bus to provide an increment (X) whose optimum value is equal to 1 plus the difference between the input rank of the current word provided on the first bus and the output rank of this word, and whose value is zero if the difference is negative, the effective value of this increment being such that the sum of the increments used until the writing of the current word is lower than, or equal to, the sum of the optimal values of these used increments; and
      an adder (16) for adding the increment to the content of the register at each write.
    4. The reorganization circuit of claim 3, characterized in that it includes a write counter (12-1) that is incremented each time a word is written, and reset at the end of each reading of a packet of words, and circuitry for inhibiting writing as long as the write counter is at a maximum value.
    EP95410010A 1994-02-16 1995-02-15 Data reorganization circuit and method Expired - Lifetime EP0668557B1 (en)

    Applications Claiming Priority (2)

    Application Number Priority Date Filing Date Title
    FR9402071 1994-02-16
    FR9402071A FR2716276B1 (en) 1994-02-16 1994-02-16 Data reorganization circuit.

    Publications (2)

    Publication Number Publication Date
    EP0668557A1 EP0668557A1 (en) 1995-08-23
    EP0668557B1 true EP0668557B1 (en) 2000-07-05

    Family

    ID=9460361

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    EP95410010A Expired - Lifetime EP0668557B1 (en) 1994-02-16 1995-02-15 Data reorganization circuit and method

    Country Status (5)

    Country Link
    US (1) US5717899A (en)
    EP (1) EP0668557B1 (en)
    JP (1) JP2833509B2 (en)
    DE (1) DE69517718T2 (en)
    FR (1) FR2716276B1 (en)

    Families Citing this family (4)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US5781664A (en) * 1995-09-11 1998-07-14 National Semiconductor Corporation Highly efficient method and structure for motion compensation in a video decompression system
    US5938763A (en) * 1997-08-06 1999-08-17 Zenith Electronics Corporation System for transposing data from column order to row order
    US6385670B1 (en) * 1998-06-01 2002-05-07 Advanced Micro Devices, Inc. Data compression or decompressions during DMA transfer between a source and a destination by independently controlling the incrementing of a source and a destination address registers
    US6891845B2 (en) * 2001-06-29 2005-05-10 Intel Corporation Method and apparatus for adapting to a clock rate transition in a communications network using idles

    Family Cites Families (25)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US4516201A (en) * 1979-10-09 1985-05-07 Burroughs Corporation Multiplexed data communications using a queue in a controller
    US4393444A (en) * 1980-11-06 1983-07-12 Rca Corporation Memory addressing circuit for converting sequential input data to interleaved output data sequence using multiple memories
    US4608633A (en) * 1983-04-01 1986-08-26 Honeywell Information Systems Inc. Method for decreasing execution time of numeric instructions
    US4563702A (en) * 1983-05-27 1986-01-07 M/A-Com Linkabit, Inc. Video signal scrambling and descrambling systems
    JPS61245256A (en) * 1985-04-23 1986-10-31 Mitsubishi Electric Corp Information storing system
    US4803654A (en) * 1985-06-20 1989-02-07 General Datacomm Industries, Inc. Circular first-in, first out buffer system for generating input and output addresses for read/write memory independently
    US4807044A (en) * 1985-12-27 1989-02-21 Canon Kabushiki Kaisha Image processing apparatus
    DE3620932A1 (en) * 1986-06-23 1988-01-07 Siemens Ag ARRANGEMENT FOR PROCESSING IMAGE DATA
    US4847812A (en) * 1986-09-18 1989-07-11 Advanced Micro Devices FIFO memory device including circuit for generating flag signals
    US4995005A (en) * 1986-09-18 1991-02-19 Advanced Micro Devices, Inc. Memory device which can function as two separate memories or a single memory
    US5293586A (en) * 1988-09-30 1994-03-08 Hitachi, Ltd. Data processing system for development of outline fonts
    JP2855633B2 (en) * 1989-02-03 1999-02-10 ミノルタ株式会社 Fault diagnosis device for dual port memory in multiprocessor system
    US5206684A (en) * 1989-03-14 1993-04-27 Minolta Camera Kabushiki Kaisha Recording apparatus including a memory into which information is written in a particular order and from which memory information is read in the reverse order
    US5117486A (en) * 1989-04-21 1992-05-26 International Business Machines Corp. Buffer for packetizing block of data with different sizes and rates received from first processor before transferring to second processor
    US5283763A (en) * 1989-09-21 1994-02-01 Ncr Corporation Memory control system and method
    US5206834A (en) * 1989-10-14 1993-04-27 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device performing last in-first out operation and the method for controlling the same
    JPH03224197A (en) * 1990-01-30 1991-10-03 Toshiba Corp Multiport ram and information processor
    US5177704A (en) * 1990-02-26 1993-01-05 Eastman Kodak Company Matrix transpose memory device
    US5042007A (en) * 1990-02-26 1991-08-20 Eastman Kodak Company Apparatus for transposing digital data
    US5440706A (en) * 1990-07-20 1995-08-08 Matsushita Electric Industrial Co., Ltd. Data shuffling apparatus possessing reduced memory
    JPH04147493A (en) * 1990-10-09 1992-05-20 Mitsubishi Electric Corp Semiconductor memory
    JPH04188243A (en) * 1990-11-21 1992-07-06 Nippon Steel Corp Storage device
    US5293540A (en) * 1991-07-29 1994-03-08 Nview Corporation Method and apparatus for merging independently generated internal video with external video
    GB2268657B (en) * 1992-07-03 1995-11-08 Sony Broadcast & Communication Video memory
    US5455907A (en) * 1993-09-10 1995-10-03 Compaq Computer Corp. Buffering digitizer data in a first-in first-out memory

    Also Published As

    Publication number Publication date
    FR2716276B1 (en) 1996-05-03
    DE69517718D1 (en) 2000-08-10
    JP2833509B2 (en) 1998-12-09
    DE69517718T2 (en) 2001-02-01
    FR2716276A1 (en) 1995-08-18
    EP0668557A1 (en) 1995-08-23
    US5717899A (en) 1998-02-10
    JPH07320479A (en) 1995-12-08

    Similar Documents

    Publication Publication Date Title
    EP0626653B1 (en) Image processing system
    EP0618722B1 (en) Method and device for decoding compressed images
    EP0626642B1 (en) Multitasking processor architecture
    FR2544898A1 (en) VIDEO DISPLAY DEVICE ON SCREEN DISPLAY SCREEN OF LINE FRAME BY LINE AND POINT BY POINT
    FR2650902A1 (en) COMPUTER WITH INTEGRATED CIRCUIT VIDEO PILOT BY MEMORY LIVING
    EP0141721A2 (en) Receiving device in a transmission system for asynchronous video information
    EP0668557B1 (en) Data reorganization circuit and method
    EP0793391B1 (en) Memory area addressing in an MPEG decoder
    FR2618282A1 (en) METHODS AND APPARATUS FOR STORING DIGITAL VIDEO SIGNALS.
    EP0732857A1 (en) MPEG decoder with reduced memory capacity
    EP0716395B1 (en) A method for decoding compressed images
    FR2780186A1 (en) METHOD AND DEVICE FOR DECODING AN IMAGE, COMPRESSED IN PARTICULAR ACCORDING TO MPEG STANDARDS, IN PARTICULAR A BIDIRECTIONAL IMAGE
    EP0677934A2 (en) Method for pattern recognition in serial transmission
    EP0651579A1 (en) High resolution image processing system
    EP0632388B1 (en) Processor system particularly for image processing comprising a variable size memory bus
    EP0674444B1 (en) Filter for matrix of pixels
    EP0431699B1 (en) Method and arrangement for moving picture decoding
    FR2614165A1 (en) ANAMORPHOSIS DEVICE AND SYSTEM PROVIDED WITH SUCH A DEVICE
    EP0259902A1 (en) Coding device with differential pulse code modulation, associated decoding device and transmission system comprising at least such a coding or decoding device
    JPS5843671A (en) Frame transfer type image pickup element
    JP3094346B2 (en) Image memory device
    FR2761499A1 (en) Coder and decoder for animated images, with cache memory
    FR2548502A1 (en) Terminal generating graphics video signals, with directly addressable topographic memory
    FR2664999A1 (en) DATA OUTPUT INPUT DEVICE FOR DISPLAYING INFORMATION AND METHOD IMPLEMENTED BY SUCH A DEVICE.
    FR2780185A1 (en) METHOD AND DEVICE FOR PROCESSING IMAGES, IN PARTICULAR ACCORDING TO MPEG STANDARDS

    Legal Events

    Date Code Title Description
    PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

    Free format text: ORIGINAL CODE: 0009012

    AK Designated contracting states

    Kind code of ref document: A1

    Designated state(s): DE FR GB IT

    17P Request for examination filed

    Effective date: 19960201

    RAP3 Party data changed (applicant data changed or rights of an application transferred)

    Owner name: STMICROELECTRONICS S.A.

    GRAG Despatch of communication of intention to grant

    Free format text: ORIGINAL CODE: EPIDOS AGRA

    RTI1 Title (correction)

    Free format text: DATA REORGANIZATION CIRCUIT AND METHOD

    17Q First examination report despatched

    Effective date: 19990906

    GRAG Despatch of communication of intention to grant

    Free format text: ORIGINAL CODE: EPIDOS AGRA

    GRAH Despatch of communication of intention to grant a patent

    Free format text: ORIGINAL CODE: EPIDOS IGRA

    GRAH Despatch of communication of intention to grant a patent

    Free format text: ORIGINAL CODE: EPIDOS IGRA

    GRAA (expected) grant

    Free format text: ORIGINAL CODE: 0009210

    AK Designated contracting states

    Kind code of ref document: B1

    Designated state(s): DE FR GB IT

    GBT Gb: translation of ep patent filed (gb section 77(6)(a)/1977)

    Effective date: 20000706

    REF Corresponds to:

    Ref document number: 69517718

    Country of ref document: DE

    Date of ref document: 20000810

    ITF It: translation for a ep patent filed

    Owner name: SOCIETA' ITALIANA BREVETTI S.P.A.

    PLBE No opposition filed within time limit

    Free format text: ORIGINAL CODE: 0009261

    STAA Information on the status of an ep patent application or granted ep patent

    Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT

    26N No opposition filed
    REG Reference to a national code

    Ref country code: GB

    Ref legal event code: IF02

    PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

    Ref country code: DE

    Payment date: 20040226

    Year of fee payment: 10

    PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

    Ref country code: IT

    Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

    Effective date: 20050215

    PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

    Ref country code: DE

    Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

    Effective date: 20050901

    PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

    Ref country code: GB

    Payment date: 20060816

    Year of fee payment: 12

    PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

    Ref country code: FR

    Payment date: 20060830

    Year of fee payment: 12

    GBPC Gb: european patent ceased through non-payment of renewal fee

    Effective date: 20070215

    REG Reference to a national code

    Ref country code: FR

    Ref legal event code: ST

    Effective date: 20071030

    PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

    Ref country code: GB

    Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

    Effective date: 20070215

    Ref country code: FR

    Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

    Effective date: 20070228