ITTO970486A1 - Perfezionamenti ai circuiti per la stima del movimento in codificatori di sequenze video numerizzate. - Google Patents

Perfezionamenti ai circuiti per la stima del movimento in codificatori di sequenze video numerizzate. Download PDF

Info

Publication number
ITTO970486A1
ITTO970486A1 IT97TO000486A ITTO970486A ITTO970486A1 IT TO970486 A1 ITTO970486 A1 IT TO970486A1 IT 97TO000486 A IT97TO000486 A IT 97TO000486A IT TO970486 A ITTO970486 A IT TO970486A IT TO970486 A1 ITTO970486 A1 IT TO970486A1
Authority
IT
Italy
Prior art keywords
vector
pixels
vectors
registers
memory
Prior art date
Application number
IT97TO000486A
Other languages
English (en)
Inventor
Fabio Bellifemine
Gianmarco Bollano
Stephanie Dogimont
Marco Gandini
Pierangelo Garino
Martin Gumm
Marco Mattavelli
Frederich Mombers
Didier Nicoulaz
Alessandro Torielli
Original Assignee
Cselt Centro Studi Lab Telecom
Ecole Polytech
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 Cselt Centro Studi Lab Telecom, Ecole Polytech filed Critical Cselt Centro Studi Lab Telecom
Publication of ITTO970486A0 publication Critical patent/ITTO970486A0/it
Priority to IT97TO000486 priority Critical patent/IT1293924B1/it
Priority to JP54011398A priority patent/JP3159713B2/ja
Priority to PCT/EP1998/001433 priority patent/WO1998042137A1/en
Priority to US09/180,781 priority patent/US6122320A/en
Priority to DE69803266T priority patent/DE69803266T2/de
Priority to ES98913710T priority patent/ES2169507T3/es
Priority to AT98913710T priority patent/ATE209423T1/de
Priority to CA002255900A priority patent/CA2255900C/en
Priority to EP98913710A priority patent/EP0919099B1/en
Priority to AU68310/98A priority patent/AU711190B2/en
Publication of ITTO970486A1 publication Critical patent/ITTO970486A1/it
Application granted granted Critical
Publication of IT1293924B1 publication Critical patent/IT1293924B1/it

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Color Television Systems (AREA)
  • Television Systems (AREA)

Description

“PERFEZIONAMENTI Al CIRCUITI PER LA STIMA DEL MOVIME CODIFICATORI DI SEQUENZE VIDEO NUMERIZZATE"
La presente invenzione si riferisce all'elaborazione di segnali video nu ed in particolare riguarda un circuito per la stima del movimento nella compressione di sequenze video numerizzate. Nel seguito si farà riferimento esempio non (imitativo a sequenze organizzate secondo ia normativa inte ISO/IEC 13818-2 (nota anche come ISO/MPEG2), ma l'invenzione può ap qualunque codificatore che utilizza tecniche di predizione temporale con movimento (a livello di blocco di elementi d'immagine) per la riduzione delta ri temporale.
La stima del movimento consìste nella ricerca, in una o più im riferimento, del macroblocco dì luminanza (16x16 pixel) corrispondent macroblocco nell’immagine corrente in corso di codifica e nella generazione più vettori che rappresentano lo spostamento del macroblocco nell’immagin rispetto alla posizione dello stesso nell’immagin
vettori possono anche indicare uno spostamento nullo. Le informazioni cos possono inoltre essere utilizzate come parametro per valutare una funzione d codifica, per consentire di applicare la strategia di predizione (compresa la rin predizione, cioè l’effettuazione di una codifica intra-immagine) che rapp migliore compromesso tra la qualità della codifica e la quantità di inform trasmettere.
Tenendo conto di ciò, specialmente nel caso di codificatori per ap professionali (ad es. per trasmissioni TV numeriche) è stato proposto che la movimento venga svolta in tre passi successivi: il primo passo è l'applicaz algoritmo di ricerca più o meno preciso per determinare il vettore canefidato candidati) per ciascun tipo di predizione possibile per una data st macroblocco; il secondo passo è un raffinamento dei vettori calcolati precedente e il terzo passo è la selezione della modalità di predizione l’effettivo vettore (gli effettivi vettori) di movimento da inserire nella sequenza La nostra parallela domanda di brevetto Italiana N. TO 97A000209 circuito integrato progettato per effettuare la determinazione dell’insieme candidati oppure il raffinamento dei vettori, possibilmente in unione alla selez predizione. Il circuito comprende unità di elaborazione programmata® per l’algoritmo di ricerca con cui calcolare o raffinare i vettori di movimento can eseguire le operazioni necessarie per selezionare la strategia di predizione.
La presente invenzione mira a fornire un'unità dì elaborazione (unità altamente flessibile, basata su un approccio misto hardwa re-software, in svolgere in maniera efficace le funzioni di cui sopra.
Le caratteristiche dell’invenzione sono megli d fi it ll ri di L’invenzione verrà ore illustrate in dettaglio con riferimento ai disegni a cui:
- la fig. 1 è uno schema a blocchi di un circuito di stima del movimento che ut un’unità operativa secondo l'invenzione;
- la fig. 2 è uno schema a blocchi di un’unità operativa;
- le figure 3, 4 sono schemi a blocchi di alcuni circuiti delle unità operative; - la fig. 5 è uno schema a blocchi dell’unità di controllo per il circuito di fig. 1 ; - le figure da 6 a 8 sono diagrammi del funzionamento dell’unità di controllo.
Facendo riferimento alla fig. 1 , viene mostrata l’architettura di un circuito come quello illustrato nel brevetto menzionato in precedenza.
Al circuito sono associate due connessioni di ingresso o bus 6, 7 connessione di uscita o bus 8 per i dati video (il bus 6 convoglia ì dati dell corrente e il bus 7 i dati dell’immagine di riferimento nel caso di raffinam vettori), una connessione di ingresso o bus 9 e una connessione di uscita o b le informazioni necessarie per l’elaborazione (d’ora in poi chiamate par elaboratone) e i risultati dell’elaborazione (vettori e costi od errori assodati “costo “ ed “errore“ essendo utilizzati con lo stesso significato nel corso d descrizione), una connessione bidirezionale o bus 11 per la connessione memoria esterna (non rappresentata), che memorizza i dati dell’immagin immagini di riferimento e i risultati dell’elaborazione, e una connessione bidire bus 12 che porta segnali di informazione e di controllo provenienti da un c esterno (non rappresentato) o diretti ad esso. I bus 6 - 8 per ì dati video e i per i parametri di elaborazione e i risultati dell’elaborazione verranno ne chiamati rispettivamente bus delle immagini e bus dell i f i i
che, a seconda del caso, eseguono l'algoritmo di ricerca per calcolare i movimento candidati o raffinare i vettori candidati calcolati da un circuito ana eseguono le operazioni necessarie per la selezione della strategia di predizio realizzazione illustrata, vengono utilizzati due moduli M1 , M2, ciò che rappre compromesso ragionevole tra le prestazioni da una parte e l’area del circuito di produzione dall'altra. I moduli M1 e M2 sono basati su di un approcc hardware-software, in cui si utilizza un hardware dedicato per il calcolo dei vettori a partire dalle informazioni dei pixel, ed un processore RISC (reduced in set computer = calcolatore con insieme di istruzioni ridotto), che controlla (* dedicato, è programmato per calcolare i vettori di movimento candidati. contengono memorie interne per memorizzare la finestra di ricerca (che pu essere posizionata asimmetricamente rispetto al macroblocco corren macroblocco corrente. I due moduli sono utilizzati per elaborare in modo conc indipendente due macroblocchi diversi, cosicché il circuito di stima del m costituisce una struttura MIMD (Multiple Instruction, Multiple Data = istruzioni dati multipli), nel senso che ogni modulo può comportarsi in maniera diversa ( multiple) su pixel differenti (dati multipli).
Nella realizzazione preferita dell’invenzione, per quanto concerne la s movimento vera e propria, i moduli eseguono un particolare algoritmo ge principali passi dei quale sono riassunti qui di seguito:
- Inizializzazione: viene generato un primo insieme di N vettori o cro (popolazione iniziale); l'insieme comprende: un gruppo di vettori (p. es. 9) c vettori associati ad altrettanti macroblocchi circostanti il macroblocco nell’immagine precedentemente ricevuta e rappre
cioè il macroblocco che è stato codificato appena prima di quello corrente macroblocchi appartengono alla stessa riga, o il primo macroblocco d precedente, all’inizio di una nuova riga), che rappresenta la correlazone sp gruppo di vettori ulteriori ottenuti aggiungendo vettori casuali ad ognuno d menzionati precedentemente. La popolazione iniziale può anche compre ulteriore vettore (vettore guida), rappresentativo anch’esso delle co esistenti nell'immagine o tra immagini, che serve a facilitare il reperim macroblocco migliore;
- Valutazione: ciascun vettore viene valutato utilizzando lo scarto medio come funzione di costo;
- Selezione: i vettori sono ordinati e un sottoinsieme (p. es. i migliori 9 memorizzato nel modulo per essere utilizzato per calcolare ulteriori gene vettori (iterazione);
- Iterazione: è svolta ad esempio in tre passi; ad ogni passo, i vettori del sott ottenuti alla fine del passo precedente sono combinati p. es. calcola semisomma vettoriale e si ottiene un gruppo di vettori figli (p. es. popolazione nella generazione corrente è completata con un altro gruppo ottenuto aggiungendo un vettore casuale ad ogni vettore figlio; i vettori valutati come prima;
- Conclusione: i migliori vettori per ogni tipo dì predizione ed i costi associati memorizzati nella memoria esterna, insieme con il miglior vettore candida predizione riguardante l’intero macroblocco (da utilizzare nell'elaboraz macroblocco successivo).
Per il raffinamento dei vettori, i moduli M1, M
esaustiva de! mac g
grande di un macroblocco (p. es. 20x20 pixel) estratta da una cosiddetta “zo un insieme di pixel normalmente più piccolo della finestra di ricerca usate ra del movimento), pesando ogni vettore candidato con un peso associato alla q bit richiesti per la trasmissione del vettore stesso.
La struttura dei moduli M1, M2 verrà illustrata con dettagli mag riferimento alla fig. 2.
I moduli M1 e M2 sono connessi a due bus interni 15, 16.
II bus 15 serve per lo scambio di informazioni con un controllore est rappresentato) tramite il bus 12 e per lo scambio di informazioni tra i moduli altre unità nel circuito. Lo scambio di informazioni con il controllore esterno ò un’interfaccia convenzionale IC che permette ai controllore di accedere al c iniziallzzare i registri di configurazione e caricare i programmi necessari ro avvio, per scrivere i parametri di elaborazione richiesti durante la norma nonché per scopi di monitoraggio.
il bus 16 connette il circuito ai bus delle immagini e delle Informazioni 6 bus di memoria 11 e convoglia i dati letti dalla memoria esterna o che devo scritti nella memoria esterna. I) bus 16 è interfacciata con i bus delle infor delle immagini attraverso un gestore dei bus delle informazioni IB e alte tampone B1 - B3 per la memorizzazione temporanea dei dati video provenie delle immagini o che devono essere inoltrati agli stessi e per la conve parallelismo dei dati tra il formato utilizzato sui bus delle immagini (per esemp sul bus 16 (per esempio, 16 bit). Per chiarezza di descrizione, si suppo trasferimento dei dati sul bus 16 venga controllato da un segnale di orologio Nei caso in cui il circuito appartenga ad una config
avviene attraverso una linea dedicata 100, il gestore dei bus delle informaz anch’esso connesso a detta linea. Una descrizione dettagliata della struttur funzioni del gestore del bus delle informazioni IB è inclusa nella domanda d TO 97A000209 menzionata in precedenza.
Il trasferimento dei dati sul bus 16 è controllato da un’unità di microprogrammata GC (controllore globale o interno), in cooperazr un’interfaccia di memoria IS. L'unità di controllo GC, che è anche sensibile a che arrivano al circuito tramite il bus delle informazioni 9 e sono inoltrati a GC connessione o bus 19, deve sostanzialmente:
- controllare il flusso globale delle operazioni nel circuito;
- generare e distribuire la sincronizzazione generale ai blocchi del circuito; • sincronizzare l'attività interna del circuito con la sincronizzazione esterna; - avviare tutti i trasferimenti di dati (nel seguito chiamati transazioni) sui bus 1 • avviare le operazioni dei moduli.
La struttura di GC sarà illustrata con maggiori dettagli con riferimento alta L'interfaccia IS controlla attraverso una struttura hardware l'effettivo acc memoria esterna, una volta che il controllore ha identificato l’unità intere trasferimento, generando tutti i segnali di controllo e di indirizzamento neces esempio, IS può sostanzialmente operare come descritto nella domanda di Italiana TO 96A000123 depositata il 26 Febbraio 1996.
Il circuito comprende inoltre una memoria interna MP e un’unità dì prova La memoria MP, a cui i moduli MI, M2 accedono attraverso U bus 1 normale memoria ad accesso casuale che memorizza una matrice di pesi util raffinamento dei vettori o che potrebbe anche essere
da u
L'unità di prova TE è una cosiddetta interfaccia JTAG (Joint Test Action gruppo di azione di prova congiunto) conforme allo standard IEEE1149.1. prova TE è connessa attraverso il bus 13 ad un normale controllore delle p rappresentato) da cui riceve le informazioni necessarie per controllare prestazioni di prova automatica incorporate nel circuito e a cui invia i risu prove. Per effettuare le prove, TE ha accesso attraverso i bus 15, 16 a tutte connesse a detti bus e ha accesso diretto ai moduli M1, M2 attraverso un attraverso un bus 18, alle memorie tampone B1...B3, alla memoria MP e alle delle unità 1B, GC per il controllo delle funzioni di prova automatica di tali me ricezione delle informazioni di stato e dei risultati delle prove. Una d dettagliata della struttura e delle funzioni dell’unità di prova TE non è necess comprensione della presente invenzione.
Facendo ora riferimento alla fig. 2, il modulo Mi (i = 1, 2) c essenzialmente:
- un’unità di generazione dei vettori GV, che deve calcolare i vettori di mov base alia funzione del circuito e all'algoritmo scelto e controllare le altre modulo;
- una prima e una seconda memoria MM, MF, che memorizzano rispettiv macroblocco corrente e la finestra di ricerca estratta dall'Immagine di riferim l’immagine di riferimento che il macroblocco corrente vengono letti dalla esterna; a questo proposito, vogliamo ricordare che l'immagine di riferim caso di un’immagine di tipo quadro, sarà l’immagine I o P precedente (I = sottoposta a codifica intra-immagine, P = immagine codificata con pr mentre nel caso di un’immagine di tipo semiqu
- un’unità di generazione degli indirizzi GIN, che deve generare gli indirizzi d di scrittura per MF e MM sfruttando i vettori forniti da GV e segnali di contr tramite il bus 16;
- un elaboratore di pixel o macchina di confronto CE, che deve svolgere le o aritmetiche sui pixel necessarie per determinare i costi associati ai vettori o modalità di predizione, in base alla funzione che il circuito deve svolge associato ad un controllore CCE che riceve da GV le informazioni circa operazione che CE deve svolgere in una certa fase dell’operazione e i movimento i quali, secondo la normativa MPEG2, comprendono anche inf operative;
- un'unità di ordinamento e classificazione SU la quale, durante l’elaborazion ad un macroblocco, riceve i vettori e gli errori corrispondenti da CE, e deve vettori in ordine di costo e mantenere a disposizione i vettori migliori (c associati agli errori minori, per esempio i nove vettori migliori) Indipende dal tipo di errore, e classificare le coppie vettore/errore in base ai tipo di pre memorizzare il vettore migliore per ciascun tipo di predizione, da utilizz vettore candidato per quel tipo di predizione; SU deve inoltre rendere dis coppie memorizzate vettore/errore alla memoria esterna o ad altre unità d per l'impiego nell’elaborazione del macroblocco successivo nel caso di movimento (le nove coppie vettore/errore migliori), oppure per il raffin vettori candidati per ciascun tipo di predizione) e ricevere dalla memoria da altre unità del circuito le coppie vettore/errore calcolate precedentem renderle disponibili a GV; la struttura di SU sarà meglio illustrata con riferim fig- 4
n genera e g g
- un banco dì registri locali RL per la memorizzazione di informazioni di fomite dal controllore GC (fig. 1) p. es. attraverso il bus 15, necessarie pe sincronizzare le operazioni del modulo, e di informazioni che devono es disponibili all’esterno, come lo stato del modulo;
- un’unità UTM di prova delle memorie, che serve a provare le memorie una memoria interna in GV, in cooperazione con l’unità di prova TE (fig. 1) Il modulo comprende un bus interno 20 a cui sono direttamente connes CE, CCE, SU, GVC, RL, UTM e che, attraverso un'interfaccia IBU, pe connessione di dette unità o al bus 15 o all’unità di generazione dei vettori GV è connessa a IBU attraverso un bus 30. IBU permette inoltre la connessione di generazióne dei vettori GV al bus 15 attraverso la stessa interfaccia. P comprenderà, oltre alle unità appropriate che svolgono le necessarie conv formato, una rete di commutazione che stabilisce la connessione richi particolare fase dell’operazione. L’instaurazione della connessione opport affidata a GV, nel caso di operazioni controllate da GV (generalmente, scritt di registri all’interno del modulo) oppure all’interfaccia del controllore esterno quando un’unità del modulo deve avere accesso al bus 15.
La memoria MM serve ovviamente a memorizzare i 16x16 pixel del ma corrente. Essa comprende due unità operanti a ping-pong, aventi cias capacità di memoria di 128 parole da 16 bit (cioè 128 coppie di pixel). Ogni o di scrittura interessa due pixel alla volta e ogni operazione di lettura interes alla volta. I pixel letti da MM vengono presentati su un bus 21. Per perm funzionamento corretto con la geometria della matrice implicata da organizzazione, la memoria MM viene preferibilm
attraverso un bus 22.
La memoria MF è atta a memorizzare, per la stima del movimento vera e una finestra di ricerca che, nella realizzazione dell'invenzione qui descritta a esempio non limitativo, ha la dimensione di 96x64 pixel (6x4 macroblocchi), me il raffinamento dei vettori memorizza una zona che ha dimensioni corrispond esempio a 4 macroblocchi. La memoria MF è composta da sei unità di m ciascuna avente una capacità di memoria di 16x64 pixel organizzati p. es. in 12 di 64 bit ciascuna (cioè ciascuna parola comprende I dati di 8 pixel). Ciascu vantaggiosamente comprende due elementi, ciascuno destinato a memorizz parole di 32 bit dato che, come noto all'esperto dei ramo, l'area complessiva d elementi è minore di quella occupata da un singolo elemento con la cap memoria complessiva richiesta dall’unità stessa. I segnali di indirizzamen controllo per MF vengono fomiti da GIN attraverso la connessione 27.
Le sei unità in MF sono organizzate in maniera differente a secon appartengano ad un circuito che svolge l’effettiva stima del movimento oppur circuito che opera il raffinamento dei vettori. Nella stima del movimento, è l'intera capacità della memoria MF per memorizzare la finestra di ricerca e si individualmente alle sei unità sia in scrittura che in lettura. Per quanto rigu scrittura, viene sfruttato il fatto che le finestre di ricerca per macroblocchi a differiscono di una striscia verticale di 4 macroblocchi della larghezza di 1 macr cosicché ad ogni ciclo di macroblocco soltanto questa striscia deve essere s MF. Per quanto riguarda la lettura, l’algoritmo genetico utilizzato nella realiz preferita richiede il confronto del macroblocco corrente con macroblocchi di rife che vengono scelti sostanzialmente a caso e perciò d
p
essere memorizzata soltanto la zona, le sei unità formano due banchi di me operano a ping-pong. In questo caso, tuttavia, le zone da utilizzare nell'elabo macroblocchi adiacenti possono avere una qualunque posizione relativa e ogni nuovo ciclo di macroblocco tutti i dati delia zona devono essere caric Ciascuna zona è in realtà composta da due parti, ognuna associata ad im semiquadri dell'immagine di riferimento (per l’immagine di tipo quadro) opp dei semiquadri di riferimento. Date le dimensioni della zona, anche nel raffina vettori ciascuna operazione di scrittura in MF aggiorna una delle unità. avverrà secondo le modalità richieste da una ricerca esaustiva nell’area interessata.
Le singole unità in MF ricevono i dati attraverso un bus di ingresso 23 32 bit) il quale è connesso al bus 16 attraverso un convertitore CPD del parall dati da 16 a 32 bit. I dati letti da MF vengono presentati su un bus di uscita bit (cioè vengono letti 24 pixel alla volta). Questo assicura che ad ogni ciclo d vengano effettivamente letti 17 pixel adiacenti (un'intera riga di un macrobloc ulteriore pixel necessario per l’interpolazione a semi-pixel e la predizione “dua I 17 pixel letti simultaneamente verranno chiamati “gruppo”. Il bus di uscita porta ad un cosiddetto “barre! shrfter” BS il quale sceglie, in base a opportuni controllo fomiti dall’unità di controllo CCE attraverso la connessione 25, adiacenti di interesse all'intemo della stringa di 24 pixel letta da MF e prese scelti su un bus 26 che porta a CE. Il blocco CCE ottiene i segnali di utilizzando i bit meno significativi dei vettori di movimento fomiti da GV e infor configurazione provenienti dal controllore globale GC (fig. 1). Circuiti che s compiti di BS sono ben noti nel settore.
g g
MF cooperando con l’interfaccia della memoria esterna IS, come indic connessione di GIN al bus 16. La scrittura in MF durante l’effettiva stima del m deve tenere conto del fatto che i sei elementi vengono aggiornati ciclicame detto in precedenza, cosicché avviene uno spostamento ciclico del’ori finestra di ricerca. In fase di lettura, GIN calcola gli indirizzi per MF partendo delle componenti x e y di un vettore fornito da GV. GIN può comandare simultanea di entrambe le memorie, oppure la lettura di una sola di esse, in particolare operazione svolta. Si suppone che le informazioni che rigu modalità di operazione siano fomite da CCE, attraverso la connessione 25.
L’unità di generazione dei vettori GV si basa su un’architettura elabora in pipeline in grado di eseguire un’istruzione ad ogni ciclo di orologio. I programma memorizzato, GV può implementare qualunque algoritmo des determinazione dei vettori, di raffinamento dei vettori, di selezione della pred prova Per quanto riguarda la determinazione e il raffinamento dei vettori e la della predizione, l’unità GV deve essere in grado di elaborare due tipi di d (che richiedono un'elaborazione separata delle due componenti a ciascuna e errori (che richiedono l’elaborazione dell'intero dato). A questo sc comprende un banco di registri (p. es. 16), ciascuno dei quali à dedicato ad u ad un vettore; l'organizzazione dei registri è tale che un singolo indirizzo lo associato ad un vettore e ad un errore, anche se il registro fisicamente con sezioni che memorizzano rispettivamente gli errori e i vettori. La selezione di o di un vettore per l’elaborazione è ottenuta tramite un’opportuna cod istruzioni.
GV utilizza cinque gruppi di istruzioni:
g ;
istruzioni di prova;
istruzioni di diramazione e di salto;
istruzioni di accesso esterno;
istruzioni di sincronizzazione.
L’insieme di istruzioni verrà caricato in GV in fase di inizializzazione, attravers e l'interfaccia IBU. Attraverso i registri locali RL l’unità di generazione dei riceve appropriati segnali di controllo dal controllore globale GC; a questo p deve notare che il controllore globale potrebbe causare l’esecuzione di par del programma in momenti differenti del ciclo operativo. Le istruzioni a permettono di effettuare operazioni di addizione, sottrazione, combinazio confronto e spostamento; queste ultime servono per eseguire divisioni e mol Nel caso delle operazioni sugli errori, è anche possibile determinare valori minimi. Le moltiplicazioni necessarie per la selezione della predizione so senza la necessità di avere in GV un effetivo moltiplicatore. Riguardo alle is sincronizzazione, esse comprendono un’istruzione di “attesa” per la sincroniz GV con le altre unità nel modulo.
L’architettura di GV è sostanzialmente quella standard di tali unità e no una descrizione dettagliata. Tuttavia, per una migliore comprensione, ess schematicamente illustrata in fig. 3, dove:
- RAM indica la memoria di istruzioni convenzionale, scritta atraverso i bu dal controllore esterno, e dotata di funzioni di prova automatica incorporate • CU indica il complesso delle unità di controllo (contatore di programma, di RAM, unità di diramazione...}, indirizzate attraverso il bus 30;
- DEC comprende il decodificatore di istruzioni
indirizzi esterni (su una connessione 302 che confluisce nel bus 30);
- GPR è il banco di registri, organizzato come descritto in precedenza e ave ingresso dati connesso al bus 30 o all’uscita di un’unità aritmetico-logica ALU uscite dati; le due uscite dati sono separate, dal punto di vista operativ riguardo ai vettori;
- MUX comprende i multiplexer che selezionano i differenti tipi di ingressi p come pure le unità di pipeline e di avanzamento; MUX può ricevere i d decodificatore (dati immediati), dai registri locali (connessione 300) e dall esterne (connessione 301 che si dirama dal bus 30), e inoltrare i dati all esterne (sempre attraverso la connessione 301);
- l’unità aritmetico-logica ALU, che svolge due operazioni indipendenti su componenti del vettore, oppure una singola operazione su un errore.
L'elaboratore di pixel CE è atto calcolare l’errore (scarto) medio assoluto macroblocco corrente e un macroblocco di riferimento, confrontando pixel omo gruppi di pixel elaborati contemporaneamente e forniti da BS e MM attrav connessioni 26, 21. Nel caso in cui il circuito svolga la selezione della predizio deve calcolare anche il costo associato alla codifica intra-immagine. Il dell’errore viene effettuato su un intero macroblocco (errore a 16 linee) e sulle s metà (errore a 8 linee), cosicché vengono generati tre errori per ciascun macrob tre errori permettono di valutare i costi per tutti i tipi di predizione ammess standard MPEG2 ("quadro”, “semiquadro", “dual prime" per immagini di tipo q “semiquadro”, “16x8”, “dual prime” per immagini di tipo semiquadro), come chiaro agli esperti del ramo. Gli errori vengono forniti all'unità di classificazio attraverso la connessione 28, insieme con il rispettivo
base dellerrore richiede un ciclo di orologio (a 54 ) p g macroblocco. Il circuito è in grado di calcolare gli errori per pixel interi, precisione a semi-pixel, effettuando l'interpolazione tra pixel adiacenti in (interpolazione orizzontale) e/o in righe consecutive (interpolazione v diagonale) e a questo scopo è necessario un ulteriore ciclo di orologio. L essere calcolato con o senza rimozione della componente continua dai pixe Anche il valore della componente continua è calcolato da CE. La rimoz componente continua è richiesta per ottenere una buona prestazione della t bidimensionale richiesta dallo standard. Il tipo di operazione che deve essere in CE è indicato dai segnali di controllo forniti attraverso la connessione 25 da CE perciò deve calcolare:
a) tre valori di errore che hanno l’espressione generale
dove Psw(i,j) è l’i-esimo pixel (eventualmente sottoposto ad interpolazio esima riga nel macroblocco (o parte di macroblocco) di riferimento consid finestra di ricerca; PMC(i,j) è l’i-esimo pixel nella j-esima riga de) m corrente; N vale 16 o 8 a seconda che l'errore riguardi un intero macrob metà di un macroblocco; DCSW, DCMC sono le componenti continue del m di riferimento e rispettivamente del macroblocco corrente (relative macroblocco o a metà di esso), date dall’espressione generale:
dove P è il pixel del macroblocco corrente o di riferimento, secondo i casi. b) durante la selezione della predizione, il costo int
Ovviamente DC è diverso da 0 solo se è necessaria la rimoz componente continua.
CE consiste essenzialmente di un’unità aritmetica in pipellne, dove gli pipeline possono essere abilitati in maniera differente in base al particolare c CE deve effettuare in un certo istante; sulla base della fase deir operazi modalità dell’operazione e della funzione del. circuito, CE effettua le operazioni:
1) interpolazione (se richiesta) sui pixel di un gruppo o di gruppi cons macroblocco di riferimento, operando pixel per pixel; più in dettaglio, indi A(k) il k-esimo pixel (k = 0...15) nel gruppo corrente e con B(k corrispondente nel gruppo precedente, viene calcolato uno dei seguenti p
L'addendo “+1 nelle espressioni di Q2 e Q3 rappresenta un arrotonda valore del pixel, richiesto dalla normativa; il termine Q2’(k) nell'espression pixel Q2(k) relativo alla precedente riga interessata dall’interpolazione. 2a) nel caso di calcolo dell’errore con rimozione della componente continu della componente continua per una riga del macroblocco corrente e di riferimento, pixel per pixel; accumulo delle co
2b) calcolo dell’errore per una riga, accumulo su 16 o 8 righe e calcolo della risultati accumulati.
Inoltre, nel caso della selezione della predizione, vengono effettuate !e operazioni:
3) costo intra-immagine per una riga del macroblocco corrente con rimoz componente continua; accumulo dei costi delle 16 righe e calcolo de a risultati accumulati;
4) valutazione del costo per una codifica con trasformata coseno-discreta a semiquadro, nel caso che un'immagine debba essere sottoposta a cod immagine.
Date le relazioni matematiche di cui sopra, l’esperto del ramo non problema nel progettare un’unità aritmetica in grado di svolgere le operazioni Il generatore di vettori casuali GVC si basa sull’utilizzo di registri a sc con retroazione lineare ed è organizzato in modo da fornire una distribuzion Gaussiana di numeri casuali per ciascuna delle componenti di un ve distribuzione desiderata è ottenuta effettuando l'inversione e la moltiplicazion insieme di base di numeri casuali. La varianza in entrambe le direz distribuzione può essere regolata dall’unità dì generazione dei vettori G controllore esterno. GVC fornisce a GV un vettore quando riceve una richiest di GV; la richiesta dà inizio alla generazione di un nuovo vettore. Il prog generatore di questo tipo non è un problema per gli esperti del ramo, una vo particolare distribuzione richiesta.
L'unità di prova delle memorie UTM è un’unità destinata a coopera funzioni di prova automatica incorporate nelle mem
inviare risultati delle prove e informazioni di stato a TE, e dall’altra parte è c MF, MM attraverso una connessione o bus 31 tramite il quale indirizza un elemento di memoria interessato dalla prova, invia dati di prova all’elemento e i risultati delle prove, e al bus 20 per l’accesso a RAM (fig. 3) in GV.
La fig. 4 mostra uno schema funzionale dell’unità di ordinamento e clas SU. A SU devono avere accesso, in fasi di operazione diverse: la memoria es deve caricare in SU le coppie vettore/errore per l’inizializzazione di GV e ri SU le migliori coppie vettore/errore al termine dell’elaborazione di un ma l’unità di generazione dei vettori GV, che deve leggere le coppie vettore/err dalla memoria esterna; l'elaboratore di pixel CE, che deve scrivere vettore/errore da ordinare e classificare. SU è suddivisa dal punto di vista fun due parti, la prima destinata a svolgere l’ordinamento dei vettori in base dell’errore (tenendo conto a questo scopo di un solo errore specifico, p. es 16 linee) durante la stima del movimento e la seconda destinata a l’associazione delle coppie vettore/errore con il tipo di errore (e quindi di pred il raffinamento del vettore e la selezione della predizione e per memorizzare coppia vettore/errore per ciascun tipo di predizione.
La prima parte comprende un banco di registri SR (p. es. nove nella rea dell'algoritmo genetico eseguito nel modulo data come esempio) e una ordinamento SL che effettua i confronti necessari per l'ordinamento. Il regist essere scritto da CE (connessione 28), letto da GV (attraverso il bus 20) e s dalla memoria esterna (connessione 32 verso IB16). Durante l’elaborazione, coppia vettore/errore ricevuta viene memorizzata nell’opportuno registro del b volta il costo è inferiore a quello del peggior vettore
come schematizzato dalla connessione 140. Il blocco WR1 schematizza convenzionale che controlla la scrittura o la lettura nell'opportuno registro da memoria esterna o di GV, CE e SL, a seconda del caso. Il blocco WR1 è con una logica di controllo CSU, la quale riceve le necessarie informazioni sulle operative p. es. da CCE (connessione 25) e controlla inoltre le operazioni dell ordinamento SL.
La seconda parte di SU comprende anch’essa un banco di registri CR dei quali è associato ad un tipo di errore e memorizza il miglior vettore per t una logica di classificazione CL che effettua i confronti necessari per ind miglior vettore e per indirizzare l’opportuno registro. Per esempio, sono nec registri per la predizione di tipo semiquadro di un’immagine semiquadro b semiquadro di riferimento della stessa parità o rispettivamente di parità op quattro registri sono associati invece alle predizioni su otto linee, dove p considerata la metà superiore o inferiore del macroblocco. Analogamente riceve le coppie di errore/vettore attraverso la connessione 28, può essere s dalla memoria esterna attraverso la connessione 32 e può essere lett attraverso il bus 20; inoltre esso scambia, attraverso la connessione 141, vettore/errore con la logica di classificazione CL II blocco WR2 ha gli stessi WR1 ed ò controllato in maniera analoga da CSU, che a sua volta controlla a Verrà ora riassunto il funzionamento del modulo.
Considerando la stima del movimento per un dato macroblocco a reg quando un’immagine di riferimento è già disponibile), il macroblocco cor relativa finestra di riferimento (più in particolare, (a parte che differisce dal memorizzata per il macroblocco precedente) veng
l’inizializzazione della popolazione di vettori vengono lette dalla memoria trasferite a GV atraverso i registri SR (fig. 4) dell’unità SU. GV inizia quindi a la popolazione di vettori utilizzando anche i vettori casuali forniti da GV illustrato in precedenza. Durante ciascun passo di iterazione dell’algoritmo vettori vengono fomiti in sequenza al controllore CCE della macchina di con per impostarla correttamente, e al generatore di indirizzi GIN per la lettura d macroblocchi identificati da detti vetori. CE esegue i calcoli degli errori e, al ciascun passo di iterazione, i migliori vetori (per esempio 9, cioè quanti s memorizzati nei registri di ordinamento SR) vengono conservati nel generazione dei vetori per essere utilizzati nella costruzione della ge successiva secondo l’algoritmo genetico. Il calcolo dell’errore viene ripetuto p di ogni nuova generazione. Quando tutte le generazioni sono state considerazione, i nove vettori che presentano i migliori errori a 16 linee memorizzati nei registri SR dell’unità SU, mentre il miglior vetore per ciasc errore viene memorizzato nei registri CR. Il miglior vettore in SR viene pure alla memoria esterna per essere utilizzato nella fase di inizializzazione all’immagine successiva ed è mantenuto disponibile per essere utilizzato da macroblocco successivo. Anche ì vetori in CR vengono trasferiti alla memoria da dove verranno leti nell’ordine richiesto per l’uscita sul bus 10 (fig. 1). in ef moduli elaborano contemporaneamente due macroblocchi appartenenti ad u colonna nell'immagine, mentre i vettori devono essere inviati in uscita sul maniera sequenziale, riga per riga. Si noti inoltre che, nel caso di u appartenente ad una struttura multi-componente come quella illustrata ne domanda di brevetto parallela No. TO 97A000209,
vettori calcolati nel componenti intermedi vengono trasferiti alle unità di appropriate.
Quando il circuito è utilizzato per il raffinamento dei vettori, viene caric una zona, invece di una più ampia finestra di ricerca come richiesto per fa movimento. L’unità di generazione dei vettori GV e l’unità di correzione degli utilizzano i vettori candidati (identificati e classificati da CR e CL) che recuperati dalla memoria esterna. Il raffinamento dei vettori richiede la pe vettori candidati con i pesi memorizzati nella memoria MP (fig. 1.) che perv GV attraverso il bus 15 e l’interfaccia IBU. GV genererà i vettori come richies ricerca esaustiva all'interno della finestra di ricerca nella zona e, per ciasc vettore, CE calcolerà gli errori a 16 e a 8 linee come prima, aggiornando C necessario. Al termine dell’elaborazione, le coppie vettore/errore posson direttamente trasferite sul bus 10, attraverso IB16, il bus 16 e IB (fig. 1) Infine, per la selezione della predizione, il modulo utilizza l'insieme candidati conservati al termine del raffinamento dei vettori e i relativi errori, pe le operazioni richieste dal particolare programma memorizzato in GV e per in se la migliore modalità di predizione per l'immagine è una predizione all’indietro o bidirezionale; inoltre, calcola il costo IPC della codifica intra-i come discusso in precedenza, e lo confronta con l’errore MAE associato all modalità di predizione identificata. La codifica intra-immagine verrà gen scelta allorché MAE supera IPC di un valore superiore ad un dato valore dì ulteriore passo nella selezione della predizione è la scelta della maniera in venire calcolata la trasformata bidimensionale. A questo riguardo, si deve rico la trasformata può essere calcolata a quadro o a se
(a scelta è legata al tipo di predizione scelto.
Facendo ora riferimento alla fig. 5, il controllore globale GC co essenzialmente: un sequenziatore di microistruzioni SEQ controllato da un co programma CPR, il quale controlla in maniera sequenziale l’esecuzio microistruzioni; due insiemi di registri RG1, RG2; un gruppo di contatori CNT logica di uscita LUS ed un'unità di controllo UCC.
Il sequenziatore di microistruzioni SEQ memorizza un insieme di istruzio durante una fase di inizializzazione del circuito dal controllore esterno attrave 15. Le istruzioni riguardano essenzialmente il trasferimento di pixel o di vetto 16 oppure il trasferimento di parametri operativi in e tra registri interni del c globale. Le istruzioni contengono un codice di operazione che definisce l'o che GC deve avviare, cosi come informazioni di sincronizzazione che defi tempo assegnato all'esecuzione dell'istruzione stessa. Le istruzioni vengon attraverso una connessione 40 alla logica di controllo UCC la quale le decod attiverà quindi l’operazione opportuna. Le informazioni di sincronizzazione utilizzate dalla logica di controllo UCC per fare in modo che il contatore di pr CPR faccia avanzare il sequenziatore SEQ alla fine dell'istruzione. Le istru riguardano il trasferimento di parametri in o tra registri interni contengon informazioni da cui la logica di controllo UCC può estrarre gli indirizzi di scri lettura per i registri.
Il primo insieme di registri RG1 comprende registri di configurazione, i q assegnati a parametri validi in permanenza e sono inizializzati dal controllor attraverso il bus 15, oltre a registri che memorizzano informazioni die v cadenza di macroblocco e a registri che memori
g
pervenire da IB (fig. 1), attraverso la connessione 19, oppure dal controllore dall’unità di generazione dei vettori GV (fig.2) attraverso il bus 15. Dato che la esterna memorizza generalmente più immagini, i registri per le informazioni ch a cadenza d’immagine contengono più elementi, ciascuno associato ad immagini. Il contenuto dei registri di configurazione e di quelli asseg informazioni che variano a cadenza d’immagine può essere utilizzato tra impostare i contatori in CNT e per influenzare le operazioni della logica d'usc viene trasferito a CNT e LUS attraverso una connessione 41. Uno dei configurazione è inoltre atto a ricevere dal controllore esterno una segnala indica che l’inizializzazione è terminata (e quindi il controllore è pronto ad op trasferirla all’unità di controllo UCC come segnale di attivazione (connession altro registro può ricevere da TE (fig. 1), attraverso il bus 18, una segnalazion che imposta il controllore in modalità di prova. I parametri che variano a ca macroblocco vengono tipicamente utilizzati da LUS per costruire parametri d vengono inviati a LUS attraverso una connessione 43.
Il secondo insieme di registri RG2 comprende i registri interni del contr possono essere interessati dal trasferimento di parametri menzionato in pre Questi registri vengono indirizzati da UCC attraverso la connessione 44, a informazioni contenute nelle istruzioni provenienti da SEQ. Ad alcuni d possono anche avere accesso altre unità del circuito attraverso il bus 1 informazioni fornite da queste altre unità o destinate ad esse, men informazioni di stato relative all’attivazione dell’unità di generazione dei vetto 2), che vengono fomite ai registri locali HL attraverso la connessione 49, e che devono essere inviati alla rete logica di uscita
Le linee 45, 46 schematizzano le connessioni che trasportano detti parametri I contatori CNT devono: controllare, in modo programmabile dai configurazione in RG1, l’attivazione delle operazioni di elaborazione e di emi dati; generare i segnali dì sincronismo d'immagine, di macroblocco e di pixe nel complesso dall’uscita SYN) per sincronizzare l’attività delle varie unità d attivare le varie unità nel circuito negli istanti opportuni, di nuovo programmabile dai registri di configurazione In RG1. Per svolgere i loro contatori CNT si agganciano a segnali di sincronismo d’immagine associati arrivo sul bus delle immagini 6 (fig. 1) (oppure ai parametri in arrivo sul Informazioni 9) e ricevono gli appropriati segnali di orologio CK (p. es. a 18 o nella realizzazione preferita dell’invenzione). Uno dei contatori deve calcolar dedicato all'esecuzione delle singole microistruzioni e emettere i segnati scaduto verso UCC (connessione 48) in modo che essa possa far avanzare il di programma CPR.
La rete logica di uscita LUS comprende sostanzialmente un banco di m che servono a costruire, a partire da valori forniti dal contatore e/o da inf memorizzate nei registri in RG1, RG2, alcuni parametri che regolano il corrett alla memoria esterna per il trasferimento di pixel sul bus 16. 1 parametri vengo inviati all'interfaccia della memoria esterna IS (fig. 2) attraverso II bus 16. I più importanti indicano: l'immagine memorizzata nella memoria esterna ed in dall'operazione di trasferimento; la posizione dei macroblocco corrente immagine; la posizione della regione, che è rappresentata da un vettore in posizione di una parte d’immagine (p. es. la finestra dì ricerca o una zona) in da una operazione di trasferimento di dati; la dimens
p g
trasferimento dei dati riguarda un macroblocco. Detti parametri vengo qualunque sia l’operazione di trasferimento di pixel che deve essere effettu lettura o scrittura di un macroblocco nella memoria esterna, lettura di una ricerca o di una zona), ma possono essere costruiti in modo differente in ba operazione e/o a particolare esigenze di elaborazione. In particolare, LUS pu i parametri a partire da dati prestabiliti (che possono essere i valori presenti 47 dei contatori, nel caso della posizione del macroblocco, i valori fomiti RG1 attraverso la connessione 43 per la posizione della regione e valori dimensione della regione, valori fomiti dai registri per l'immagine) oppure valori fomiti dai registri RG2 attraverso la connessione 46. La scelta delle dati appropriate è comandata da informazioni riguardanti il tipo di (OPCODE) fomite dalla logica di controllo UCC attraverso I fili 50 e da segna registri in RG1, RG2 attraverso le connessioni 41, 45. Questi causeranno in selezione da parte di LUS dei valori particolari memorizzati nei registri RG2.
La logica di controllo UCC comprende essenzialmente una rete decodifica, la quale decodifica le istruzioni generate da SEQ, e una logica s (macchina a stati) che deve avviare l’attività generale del controllore GC, ai della segnalazione di avvio menzionata in precedenza e a controllare l'evo microprogramma memorizzato nel sequenzìatore. UCC riceve inoltre gli segnali di sincronismo SYN dai contatori e, durante l’esecuzione di un emette sui fili 16B del bus 16 un segnale (ADRVAL) che indica alle unità c bus 16 che deve essere svolta un’operazione identificata dall'informazione presentata sui fili 16A. Si noti che l'informazione OPCODE deve essere inv tramite i fili 50 in anticipo rispetto a quella presen
p
operativo contenuto nell’istruzione, oppure un codice indicante che non dev eseguita alcuna operazione o ancora un codice che indica che si deve “rige memoria esterna. Questi ultimi codici sono generati dalla logica sequenziale codice “nessuna operazione” è generato da UCC quando non è abilitata una p operazione indicata nell'istruzione: l’abilitazione delle singole transazioni internamente da UCC tenendo conto della situazione generale del circuito (d nella logica sequenziale) e dei valori forniti dai contatori CNT. 1) codice “rige della memoria esterna” verrà normalmente generato in situazioni in cui non p abilitato alcun trasferimento di dati, indipendentemente dal contenuto dell' per esempio, la rigenerazione può avvenire in corrispondenza di un’istruz richiede l'emissione della cosiddetta “cancellazione di striscia”.
I contatori CNT, il sequenziatore SEQ e la logica di controllo UCC son connessi al bus 18 attraverso il quale TE (fig. 1) controlla le funzioni automatica e riceve informazioni sullo stato delle prove e risultati delle prove.
Per una migliore comprensione del funzionamento generale del contr può fare riferimento alle flg. 6, 7 e 8 le quali illustrano l’evoluzione dell’elabor la sequenza delle transazioni durante un periodo d’immagine (fig. 6) e du periodo di macroblocco, rispettivamente per la stima del movimento raffinamento dei vettori (figure 7 e 8). Queste figure sono una versione sem delle figure 7-9 della domanda di brevetto TO 97A000209 menzionata in pre e in esse, tra le varie operazioni che non richiedono l’intervento dei mod mostrato solamente il caricamento delle immagini di ingresso, mentre n mostrate (e transazioni relative ad una struttura multi-componente. Le figu riferiscono ad un macroblocco elaborato ad un istant
indica la memoria esterna. Ciascuna operazione è attivata dai segnali AD OPCODE, in presenza dei rispettivi segnali di abilitazione generati in UCC.
La fig. 6 mostra che, durante i periodi attivi del segnale di sincro immagine, un’immagine di ingresso in arrivo tramite il bus 6 viene caric memoria esterna e che, dopo un tempo di latenza Ld, che generalmente è dì di macroblocchi per la stima del movimento e di 1 tempo di macrobloc raffinamento dei vettori, inizia l’elaborazione dei dati e vengono trasferiti alle MF, MM (fig. 2) dei moduli la finestra di ricerca e il macroblocco Contemporaneamente all'inizio dell’elaborazione dei pixel, i moduli M1, M2 cominciano a leggere dalla memoria esterna i vettori di inizializzazione, per l’algoritmo genetico e inviare le migliori coppie vettore/errore alla memoria es termine dell’elaborazione, i vettori memorizzati nella memoria esterna trasferiti al bus di uscita delle informazioni in sincronismo con i pixel e con i p di elaborazione.
Nelle figure 7 e 8 si vede che l’elaborazione può non co immediatamente all'inizio del periodo di macroblocco, per permettere lacquisi risultati dell’elaborazione ottenuti nel periodo di macroblocco precedente. Qu volta iniziata, l’elaborazione occupa la restante parte del periodo di macro l’intero periodo di macroblocco successivo nel caso della stima del movimento nel caso del raffinamento dei vettori, occupa l’intero periodo di mac successivo e una frazione iniziale di ancora un altro periodo di macroblocco, a in totale l’elaborazione è leggermente più breve di due periodi di macroblocco.
Per la stima del movimento, la sequenza delle transazioni è la seguente: precedente da uno dei moduli M1, M2 (fig. 1) alla memoria esterna (transaz - trasferimento dei vettori di inizializzazione dalla memoria esterna al (transazione 1)
- trasferimento di quattro macroblocchi verticali della finestra di ricerca dala esterna alla memoria MF (fig. 2) del modulo (transazione 2);
- trasferimento dei pixel di luminanza e crominanza di un macroblocco dalla esterna alla memoria tampone di uscita B3 (fig. 3) (transazione 5); l’elab effettiva comincia all’inizio di questa transazione;
- trasferimento del macroblocco corrente (solo pixel di luminanza) dalla esterna alla memoria MM del modulo (transazione 3);
- trasferimento di un macroblocco (pixel di luminanza e crominanza) dada tampone di ingresso B1 (fig. 1) alla memoria esterna (transazione 4);
- trasferimento delle coppie vettore/errore dalla memoria esterna al gestore delle informazioni (transazione 6); la fine di questa operazione coincide co del periodo dedicato al trasferimento dei vettori dal bus di ingress informazioni ai circuito e dal circuito al bus di uscita delle informazioni.
Naturalmente, durante periodi come il tempo di latenza, vengono eseg alcune delle operazioni viste sopra e quindi non vengono generati i rispettivi s abilitazione; in queste condizioni GC emetterà il codice "nessuna operazione”.
Per il raffinamento dei vettori (fig. 8), il trasferimento dei para elaborazione dal bus di ingresso delle informazioni al circuito o dal circuito a uscita delle informazioni potrebbe richiedere sostanzialmente l’intero te macroblocco. La sequenza delle operazioni è la seguente:
p g immagini 6 alla memoria esterna e trasferimento del macroblocco corre pixel di luminanza) dalla memoria esterna alla memoria MM del (transazione 1); durante questa operazione, termina l'elaborazione macroblocco Iniziata due periodi di macroblocco prima;
• trasferimento di un gruppo di vettori candidati dal gestore del bus delle info al modulo (transazione 8);
- trasferimento dei pixel di luminanza dell'immagine di riferimento dal bus (fi delle immagini 7 alla memoria esterna (transazione 2); contemporan all'inizio dell’operazione, comincia l'elaborazione;
- trasferimento dei pixel di luminanza e di crominanza del macroblocco dalla esterna al bus di uscita delle immagini 8 (transazione 3);
- trasferimento di un primo semiquadro della zona dalla memoria est memoria MF del modulo (transazione 4);
• trasferimento di un secondo semiquadro della zona dalla memoria est memoria MF del modulo (transazione 5).
Ogni trasferimento di parametri in o tra registri interni del controllor necessario ad una transazione è compreso nella rispettiva transazione.
E’ evidente che la descrizione che precede è data solo a titolo di ese limitativo e che sono possibili varianti e modifiche senza uscire dal campo (fi p della presente invenzione.

Claims (15)

1. Circuito per la stima del movimento per codificatori di sequen numerizzate, il quale riceve blocchi di pixel di un'immagine corrente e ge ognuno di detti blocchi di pixel (nel seguito chiamato “blocco corrente”), u vettori che rappresentano lo spostamento di detto blocco rispetto ad un blocc corrispondente (nel seguito chiamato "blocco di riferimento") in una finestra appartenente a un’immagine di riferimento, il circuito comprendendo: - almeno una coppia di unità operative (M1, M2) che sono prog indipendentemente e sono atte a elaborare in modo concorrente dati nell’immagine corrente e nella finestra di ricerca secondo una te elaborazione a istruzioni multiple e a dati multipli, per eseguire una delle funzioni: - determinazione di un insieme di vettori di movimento candidati per ciasc corrente, ogni vettore nell’insieme identificando un blocco di riferim meglio riproduce il blocco corrente secondo una data modalità di prediz un errore di stima associato ad ogni vettore candidato; - raffinamento dei vettori, per migliorare la concordanza tra detto macro riferimento e detto macroblocco corrente; eventualmente in aggiunta ad una selezione di una modalità di predizion molteplicità di possibili modalità di predizione, per determinazione se nella dell'immagine corrente si deve utilizzare una modalità di predizione, e quale - un primo bus interno (15), al quale sono connesse dette unità operative (M che è destinato a trasferire al circuito informazioni di programm inizializzazione oppure parametri di elaborazione provenienti da un c esterno, a portare informazioni di monitoraggio - un secondo bus interno (16), al quale sono connesse dette unità operative ( e che è destinato a trasportare dati video e parametri di elaborazione, inclus della stima, che devono essere scritti in una memoria esterna oppure che s da detta memoria esterna; - un controllore interno (GC), connesso a detti primo e secondo bus interno che deve: identificare e abilitare le unità del circuito interessate da un trasf di dati su detto secondo bus (16); assegnare a unità diverse parti diverse di di elaborazione; generare e distribuire la sincronizzazione generale alle u circuito; controllare il flusso globale delle operazioni nel circuito; sincr l’attività interna del circuito con una sincronizzazione esterna; e avviare le op delle unità operative (M1 ,M2); caratterizzato dal fatto che ciascuna unità operativa (M1 , M2) comprende: - un’unità di generazione dei vettori (GV) che deve generare i vettori di mo che rappresentano lo spostamento di un blocco corrente di pixel rispett molteplicità di blocchi di riferimento che sono provati nella finestra (fi eseguendo istruzioni caricate nell'unità (GV) durante una fase di inizializza relative ad un algoritmo prestabilito per la determinazione o il raffinamento d candidati od ancora per la selezione della predizione; - una prima e una seconda unità di memoria interna (MM, MF) connesse secondo bus (16) e destinate a memorizzare rispettivamente detto blocco di pixel e i pixel della rispettiva finestra di ricerca, fomiti da detta memoria es - un’unità di generazione degli indirizzi (GIN), che deve generare gli indirizzi e di scrittura per dette prima e seconda unità di memoria interna (MM, MF) da vettori forniti dall'unità di generazione dei vettori pixel del blocco corrente e di un blocco di riferimento e da detta unità di gen dei vettori (GV) i vettori e informazioni riguardanti il tipo di operazi l'elaboratore di pixel (CE) deve svolgere, l’elaboratore di pixel eseguendo pixel operazioni aritmetiche richieste per determinare detto errore d confrontando gruppi di pixel nel blocco corrente con gruppi omologhi di pi certo numero di blocchi di riferimento identificati nella finestra dì ricerca d generati da detta unità di generazione dei vettori (GV), oppure per selez modalità di predizione appropriata, l'elaboratore di pixel calcolando detto stima rispetto ad un intero blocco oppure rispetto a parti differenti dei blocch - un’unità di ordinamento (SU), che à connessa a detto elaboratore di pixel (C da cui riceve i vettori di movimento e i relativi errori, insieme ad informaz modalità operative, e comprende mezzi (CR, CL) per dividere i vettori in b modalità di predizione, per individuare il vettore associato al più basso e ciascuna modalità di predizione e per memorizzare tale vettore come candidato per quella modalità di predizione insieme con il rispettivo erro mezzi di divisione, individuazione e memorizzazione (CR) essendo acce detta memoria esterna e da altre unità del circuito per la scrittura d vettore/errore calcolate durante l’elaborazione di blocchi correnti precedent lettura delle coppie vettore/errore conservate alla fine dell’elaborazione re blocco corrente, e da detta unità di generazione dei vettori per la lettura d vettore/errore scritte dalla memoria esterna; * un terzo bus interno (20) a cui sono connessi detta unità di generazio indirizzi (GIN), detto elaboratore dì pixel (CE, CCE) e detta unità di ordi (SU), detto terzo bus (20) essendo associato a i (IBU) t b terzo bus (20) e detta unità di generazione dei vettori (GV), oppure tra de bus interno (15) e detta unità di generazione dei vettori (GV).
2. Circuito secondo la rivendicazione 1, caratterizzato dal fatto che o operativa (M1, M2) comprende inoltre un generatore (GVC) di vettori casuali, c a detto terzo bus intemo (20) per fornire all’unità di generazione dei vettori (G casuali da utilizzarsi nella costruzione di una popolazione di vettori neces l’esecuzione di un algoritmo genetico per la determinazione dei vettori candida
3. Circuito secondo la rivendicazione 1 o 2, caratterizzato da! fatto c generatore di vettori casuali (GVC) è un generatore di numeri casuali distribuzione pseudo-Gaussiana, ed è atto a generare una distribuzione con sia per una componente orizzontale sia per una verticale di ciascun vettore.
4. Circuito secondo una qualsiasi delle rivendicazioni da 1 a 3, caratteri fatto che detta unità di ordinamento (SU) comprende anche mezzi (SR, ordinare i vettori fomiti dall’elaboratore di pixel (CE, CCE) anche sulla base d di uno degli errori di stima calcolati da detto elaboratore e per memorizzare, dell’elaborazione riguardante un blocco di pixel, un certo numero di ve presentano gli errori più bassi insieme ai rispettivi errori, detti mezzi di ordinam memorizzazione (SR) essendo accessibili da detta memoria esterna e da altre circuito per la scrittura di coppie vettore/errore calcolate durante l’elaboraz blocchi precedenti e per la lettura di coppie vettore/errore conservate dell’elaborazione relativa al blocco corrente, e da detta unità di generazione d (GV) per la lettura delle coppie vettore/errore scritte dalla memoria esterna in di inizializzazione della costruzione della popolazione di vettori.
5. Circuito secondo una qualsiasi delle rivendi insieme di istruzioni ridotto (RISC) a pipeline, che include un primo banco d (GPR) comprendente due insiemi di registri di cui uno (“registri dei vettori") memorizzare vettori e l’altro (“registri degli errori”) è atto a memorizzare er registro dei vettori essendo a sua volta diviso in due parti che mem rispettivamente una componente orizzontale e una componente verticale del vettore; uno stesso indirizzo logico essendo assegnato ad un registro dei ve un registro degli errori così da instaurare e mantenere l'associazione tra vettore e il relativo errore, la selezione dei dati da elaborare da un registro de da un registro degli errori associati ad uno stesso indirizzo essendo effet mezzo di un codice di operazione contenuto in istruzioni memorizzate nell’unità
6. Circuito secondo una qualsiasi delle rivendicazioni da 1 a 5, caratteri fatto che detto elaboratore di pixel (CE, CCE) è un'unità aritmetica in pipelin ricevere da dette prima e seconda unità di memoria (MM, MF), per detto dell’errore, gruppi corrispondenti di pixel appartenenti al blocco corrente e ad u di riferimento, e a svolgere su detti pixel le seguenti operazioni: al) far passare inalterati i pixel di un gruppo appartenente ad un blocco di rife oppure a2) effettuare una interpolazione tra pixel adiacenti di un gruppo o tra pixel successivi, l’esecuzione delle operazioni al) e a2) o di interpolazioni nell’operazione a2) essendo mutuamente esclusiva ed essendo determ segnali di controllo fomiti da un'unità di controllo (CCE) dell’elaboratore; b) confrontare pixel omologhi in detti gruppi corrispondenti e calcolare u relativo ad un gruppo; c) accumulare gli errori relativi a tutti i gruppi in un ottene e un er o ; d) calcolare la media dell'errore accumulato.
7. Circuito secondo la rivendicazione 6, caratterizzato dal fatto c elaboratore di pixel è atto a calcolare, prima dell’operazione di calcolo delle passo b), un valore medio del blocco o parte di blocco dì pixel, e sottrarre det medio all’errore calcolato.
8. Circuito secondo la rivendicazione 6 o 7, caratterizzato dal fatto c elaboratore di pixel è atto a calcolare, in un circuito che effettua la selezio predizione, un costo associato ad una codifica intra-immagine, detto calcolo richiedendo il confronto tra pixel di un blocco corrente con un valore medio de l’accumulo dei risultati del confronto e il calcolo della media del valore accumul
9. Circuito secondo una qualsiasi delle rivendicazioni da 1 a 8, caratteri fatto che ogni unità operativa (M1, M2) comprende inoltre registri (RL), anch’essi a detto terzo bus interno (20), per la memorizzazione tempo informazioni che sono fomite da detto controllore interno (GC) e devono essere detta unità di generazione dei vettori (GV).
10. Circuito secondo una qualsiasi delle rivendicazioni da 1 a 9, caratteri fatto che detta seconda unità di memoria (MF) è costituita da un gruppo di ele memoria accessibili in maniera indipendente, che forniscono nell’insieme la ca memoria richiesta per la memorizzazione dei pixel di una finestra d comprendente, almeno per la generazione dei vettori candidati, un numero sig di detti blocchi di riferimento; e dal fatto che i mezzi di indirizzamento (GIN) seconda memoria (MF) sono atti a indirizzare detti elementi in maniera tale operazione di scrittura riguardi singoli elementi di memoria e causi l'aggiorna almeno un intero elemento, e la lettura riguardi una pixel in un gruppo a detto elaboratore di pixel (CE).
11. Circuito secondo una qualsiasi delle rivendicazioni da 1 a 10, caratteriz fatto che dette unità operative (M1, M2) comprendono inoltre un'unità di pro memorie (UTM), connessa da un lato ad una interfaccia di prova (TE) nel circ ricevere informazioni di controllo e inviare risultati di prove e informazioni di st prove, e dall’altro a singoli elementi in dette prima e seconda unità di memo MF) per l’indi rizzamento di uno specifico elemento di memoria interessato dal l'invio di dati di prova all'elemento e la ricezione di risultati deila prova dallo stes
12. Circuito secondo la rivendicazione 11, caratterizzato dal fatto che detta prova delle memorie (UTM) è connessa a detto terzo bus (20) per l’access memoria di istruzioni di detta unità di generazione dei vettori.(GV) e per la prov memoria.
13. Circuito secondo una qualsiasi delle rivendicazioni da 1 a 12, caratteriz fatto che detto controllore interno (GC) comprende: - un sequenziatore di istruzioni (SEQ), che memorizza un gruppo di istruzioni, in detto sequenziatore (SEQ) durante una fase di inizializzazione del c riguardanti il trasferimento di pixel e/o vettori su detto secondo bus intern ancora il trasferimento di parametri operativi in o tra registri del controllore stesso; - un contatore di programma (CPR) che controlla l’esecuzione in sequenza istruzioni; - una logica di controllo (UCC), attivata alla ricezione di un segnale di att indicante che il controllore è pronto ad operare, e comprendente mezzi di de i quali decodificano le istruzioni generate dal se svolgere un’operazione specificata in detta istruzione e deve pilotare detto c di programma (CPR), alla fine di un periodo assegnato all’esecuzione istruzione, in modo che esso faccia procedere la sequenza delle is l'evoluzione della logica sequenziale essendo controllata da segnali di sinc (SYN) generati nel controllore interno (GC); - un secondo banco di registri (RG1), comprendente registri di configu destinati a memorizzare informazioni permanenti fornite da detto controllore e registri destinati a memorizzare informazioni variabili specifiche per un un’immagine, un registro nei banco fornendo alla logica di controllo (UC segnale di attivazione; - un gruppo di contatori (CNT), che deve: controllare, in modo programma registri di configurazione nel secondo banco di registri (RG1), l’attivazio operazioni di elaborazione e di emissione dei dati; generare detti se sincronismo (SYN); e attivare unità differenti del circuito ad istanti ch anch’essi programmabili da detti registri di configurazione, detti contatori ricevendo, per l’esecuzione di tali compiti, segnali di sincronizzazione ass dati in arrivo e segnali di orologio esterni (CK); * un terzo banco di registri (RG2), che memorizzano detti parametri o interessati dalle istruzioni di trasferimento di parametri generate d sequenziatore (SEQ), almeno alcuni dei registri del terzo banco essendo ac da altre unità nel circuito per la lettura di parametri operativi di interesse p altre unità o per la scrittura di parametri operativi da utilizzarsi nella costru informazioni di uscita che regolano il trasferimento di pixel su detto secon interno (16); costruire dette informazioni di uscita a partire da valori fomiti da detti contato e da informazioni memorizzate almeno in detto secondo banco di registri (RG
14. Circuito secondo la rivendicazione 13, caratterizzato dal fatto che de logica di uscita (LUS) comprende inoltre mezzi di selezione sensibili a info relative al tipo dì operazione fornite da detta logica di controllo (UCC) e secondo e terzo banco di registri (RG1, RG2) per controllare la costruzione informazioni di uscita o a partire da valori prestabiliti forniti da detti contatori (CN detto secondo banco di registri (RG1), oppure a partire da valori programmab da detto terzo banco di registri (RG2).
15 Circuito secondo la rivendicazione 13 o 14, caratterizzato dal fatto c informazioni di uscita comprendono: la posizione dì un’immagine nella m esterna; la posizione del blocco corrente all’interno di un’immagine in c elaborazione; la posizione di una regione d’immagine interessata da una opera trasferimento di pixel; e la dimensione della regione.
IT97TO000486 1997-03-14 1997-06-05 Perfezionamenti ai circuiti per la stima del movimento in codificatori di sequenze video numerizzate. IT1293924B1 (it)

Priority Applications (10)

Application Number Priority Date Filing Date Title
IT97TO000486 IT1293924B1 (it) 1997-06-05 1997-06-05 Perfezionamenti ai circuiti per la stima del movimento in codificatori di sequenze video numerizzate.
DE69803266T DE69803266T2 (de) 1997-03-14 1998-03-12 Schaltung zur bewegungsschätzung in codierern für digitalisierte videosequenzen
PCT/EP1998/001433 WO1998042137A1 (en) 1997-03-14 1998-03-12 Circuit for motion estimation in digitised video sequence encoders
US09/180,781 US6122320A (en) 1997-03-14 1998-03-12 Circuit for motion estimation in digitized video sequence encoders
JP54011398A JP3159713B2 (ja) 1997-03-14 1998-03-12 デジタル化ビデオシーケンス符号器における運動推定回路
ES98913710T ES2169507T3 (es) 1997-03-14 1998-03-12 Circuito para estimacion del movimiento en codificadores de secuencias de video digitalizadas.
AT98913710T ATE209423T1 (de) 1997-03-14 1998-03-12 Schaltung zur bewegungsschätzung in codierern für digitalisierte videosequenzen
CA002255900A CA2255900C (en) 1997-03-14 1998-03-12 Circuit for motion estimation in digitised video sequence encoders
EP98913710A EP0919099B1 (en) 1997-03-14 1998-03-12 Circuit for motion estimation in digitised video sequence encoders
AU68310/98A AU711190B2 (en) 1997-03-14 1998-03-12 Circuit for motion estimation in digitised video sequence encoders

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT97TO000486 IT1293924B1 (it) 1997-06-05 1997-06-05 Perfezionamenti ai circuiti per la stima del movimento in codificatori di sequenze video numerizzate.

Publications (3)

Publication Number Publication Date
ITTO970486A0 ITTO970486A0 (it) 1997-06-05
ITTO970486A1 true ITTO970486A1 (it) 1998-12-05
IT1293924B1 IT1293924B1 (it) 1999-03-11

Family

ID=11415758

Family Applications (1)

Application Number Title Priority Date Filing Date
IT97TO000486 IT1293924B1 (it) 1997-03-14 1997-06-05 Perfezionamenti ai circuiti per la stima del movimento in codificatori di sequenze video numerizzate.

Country Status (1)

Country Link
IT (1) IT1293924B1 (it)

Also Published As

Publication number Publication date
IT1293924B1 (it) 1999-03-11
ITTO970486A0 (it) 1997-06-05

Similar Documents

Publication Publication Date Title
CN109314779A (zh) 用于视频编码中的运动向量储存的方法及其装置
US5537601A (en) Programmable digital signal processor for performing a plurality of signal processings
AU711190B2 (en) Circuit for motion estimation in digitised video sequence encoders
CN101416519B (zh) 多视图视频编码方法和装置
CN101068353B (zh) 图形处理单元与计算巨图块的绝对差值加总值的方法
US6799246B1 (en) Memory interface for reading/writing data from/to a memory
CN106797464A (zh) 用于视频编码和解码中的矢量编码的方法和装置
KR0160618B1 (ko) 실시간 움직임 추정장치 및 그 방법
KR890013558A (ko) 디지탈 신호처리 장치와 그방법
US6570570B1 (en) Parallel processing processor and parallel processing method
US5659364A (en) Motion vector detection circuit
KR100416444B1 (ko) 모션벡터선택방법및이방법을수행하는이미지처리장치
KR20180045029A (ko) 배선 복잡성이 감소된 시프트 레지스터
JP2002171401A (ja) 間引き演算命令を備えたsimd型演算装置
WO2010113340A1 (en) Single instruction multiple data (simd) processor having a plurality of processing elements interconnected by a ring bus
US8064523B2 (en) Motion vector search apparatus
US7523294B2 (en) Maintaining original per-block number of instructions by inserting NOPs among compressed instructions in compressed block of length compressed by predetermined ratio
ITTO970486A1 (it) Perfezionamenti ai circuiti per la stima del movimento in codificatori di sequenze video numerizzate.
CN106412597A (zh) 多核视频解码器中的工作负载均衡
US20080059546A1 (en) Methods and Apparatus For Providing A Scalable Motion Estimation/Compensation Assist Function Within An Array Processor
Kim et al. An efficient architecture of in-loop filters for multicore scalable HEVC hardware decoders
CN110313015A (zh) 数据处理方法和处理电路
JP2960328B2 (ja) シストリックアーキテクチャ内に配置される「n+1」個の演算子にオペランドを供給するための装置
US5548665A (en) Vector correlation detecting circuit
TWI450590B (zh) 嵌入式系統及其中移動評估的資料讀取之方法

Legal Events

Date Code Title Description
0001 Granted