• Nenhum resultado encontrado

4.1 Arquitetura Desenvolvida para a Predição de Movimento entre

4.1.4 Descrição VHDL da arquitetura desenvolvida

A arquitetura desenvolvida para o módulo de predição de movimento entre camadas (MC escalável) é composta por um total de 26 arquivos VHDL, com cerca de 17.350 linhas de código descrevem esse módulo. Desse total, cerca de 4.250 linhas foram escritas nesse trabalho para o desenvolvimento do MC escalável e as demais descrevem a arquitetura do MC não escalável desenvolvida em (AZEVED0, 2006) e utilizada como componente na arquitetura do MC escalável.

A Figura 4.11 apresenta a estrutura geral de arquivos VHDL utilizada na descrição em hardware da arquitetura para predição de movimento entre camadas. Nesta figura, o arquivo VHDL topo, chamado Inter_layer_mp.vhd instancia dois outros módulos: um que descreve a camada base (Base_layer.vhd) e outro que descreve a camada de

61

enriquecimento (Enriq_layer.vhd). Esses dois módulos instanciam o MC não escalável (MC_nao_esc.vhd), o qual instancia os arquivos responsáveis pela compensação de movimento segundo o padrão H.264/AVC. O módulo responsável pela camada base (Base_layer.vhd) instancia, ainda, o arquivo Memory_dualport.vhd, que descreve a memória de dados da camada base. Tal memória é responsável por guardar os dados de movimento codificados na camada base para, posteriormente, serem usados na camada de enriquecimento, durante a predição de movimento entre camadas.

Figura 4.11: Estrutura de arquivos VHDL utilizada na descrição em hardware da predição de movimento entre camadas.

A seguir, serão apresentadas, de forma resumida, as entidades dos principais módulos VHDL desenvolvidos na implementação da predição de movimento entre camadas, mais precisamente, do módulo de compensação de movimento escalável.

Como a maioria desses módulos possui entidades com muitos sinais de entrada e saída, nas representações que seguem, esses sinais foram agrupados, visando facilitar a sua visualização e compreensão. As descrições VHDL completas dessas entidades podem ser encontradas no Apêndice B desta dissertação.

A Figura 4.12 apresenta, de forma simplificada, os sinais que compõem a entidade do módulo Inter_layer_mp.vhd. Tal módulo realiza as operações necessárias à predição entre camadas, como: co-localização, leitura e escrita na memória de dados da camada base, escalonamento dos vetores, entre outras. Esse módulo é responsável também pela comunicação entre as camadas base e de enriquecimento, para que a predição de movimento entre camadas possa ser realizada.

Conforme a Figura 4.12, a entidade deste módulo possui como entrada alguns sinais de controle como clock (clk) e reset (rst), os sinais base_mode_flag e

motion_prediction_flag, que definem se ocorrerá ou não a predição de movimento entre

camadas, e os sinais MC_AVC_base_inputs e MC_AVC_enhancement_inputs, ilustrados com uma seta mais larga, representando o agrupamento de 47 sinais de entrada utilizados na decodificação da camada base e, 47 sinais de entrada destinados à decodificação da camada de enriquecimento, respectivamente. Além disso, os sinais de saída desse módulo estão agrupados em MC_AVC_base_outputs, que corresponde aos 39 sinais de saída da camada base decodificada; MC_SVC_outputs, correspondendo aos 39 sinais de saída da camada de enriquecimento; e o sinal pred_mb_ready, o qual é ativado quando já existem dados de movimento das camadas base e de enriquecimento prontos na saída do módulo Inter_layer_mp.vhd.

62

Figura 4.12: Entidade do módulo Inter_layer_mp.vhd.

A Figura 4.13 apresenta os principais sinais da entidade do módulo Base_layer.vhd, o qual é responsável pela decodificação da camada base. Esta camada possui uma decodificação compatível com o padrão não escalável H.264/AVC.

A entidade representada na Figura 4.13, possui como entrada os sinais de clock (clk) e reset (rst), além do sinal raddr_mem, que corresponde ao endereço de leitura da memória, e os dados de entrada da compensação de movimento, os quais estão agrupados em MC_AVC_base_inputs, que representa 47 sinais de entrada. Os sinais de saída dessa entidade são: rdata_mem, o qual corresponde aos dados lidos da memória;

MC_AVC_base_outputs, que agrupa 38 sinais de saída da compensação de movimento

realizada na camada base; e o sinal mb_ready_b, que é ativado quando a decodificação de um macrobloco da camada base é concluída.

Figura 4.13: Entidade do módulo Base_layer.vhd.

A Figura 4.14, apresenta os sinais da entidade do módulo Memory_dualport.vhd. Este módulo trata-se de uma memória de escrita e leitura, que armazena os dados de movimento da camada base, os quais são lidos e usados na predição dos dados de movimento da camada de enriquecimento. Os sinais de entrada da entidade desse módulo são: o sinal de clock (clk); o sinal we, usado para habilitação da escrita na memória, o qual é ativado dentro do módulo Base_layer.vhd depois de concluída a decodificação de cada macrobloco da camada base; o sinal waddr, que recebe o endereço de escrita da memória, o qual também é gerado dentro do módulo

Base_layer.vhd; o sinal wdata, que recebe os dados a serem escritos na memória, ou

seja, os dados de movimento resultantes da decodificação da camada base; e o sinal

63

módulo Enriq_layer.vhd (raddr_mem) e a uma entrada do módulo Base_layer.vhd, visto que a predição dos dados da camada de enriquecimento é realizada a partir da leitura dos dados escritos na memória de dados da camada base. O sinal de saída dessa entidade é o sinal rdata, o qual é o dado lido da memória, tal sinal está conectado a uma saída do módulo Base_layer.vhd (rdata_mem) e a uma entrada do módulo

Enriq_layer.vhd, pois os dados de movimento da camada base escritos na memória são

lidos, operados no módulo Inter_layer_mp.vhd para a realização da predição dos dados da camada de enriquecimento e, logo após, são enviados para o módulo

Enriq_layer.vhd.

Figura 4.14: Entidade do módulo Memory_dualport.vhd.

A entidade do módulo MC_nao_esc.vhd, não será detalhada nesta seção, pois, como mencionado anteriormente, este módulo não foi desenvolvido nesta dissertação. Tal módulo, apresentado na subseção 4.1.1 deste trabalho, foi desenvolvido em (AZEVEDO, 2006) e instanciado como componente no desenvolvimento da arquitetura do MC escalável.

A Figura 4.15 apresenta os sinais que compõem a entidade do módulo

Enriq_layer.vhd, esse módulo é responsável pela decodificação dos dados da camada de

enriquecimento, que pode ser realizada utilizando-se a predição de movimento a partir dos dados já decodificados na camada base ou a partir de seus dados de entrada, realizando uma decodificação H.264/AVC convencional. As entradas da entidade do módulo Enriq_layer.vhd são: os sinais de clock (clk) e reset (rst); os sinais

base_mode_flag e motion_prediction_flag, os quais determinam se a predição de

movimento a partir dos dados da camada base ocorrerá ou não; o sinal rdata_mem, que armazena os dados lidos da memória de dados da camada base e é uma saída do módulo

Base_layer.vhd descrito anteriormente; o sinal mb_ready_b, que indica que existem

dados decodificados na camada base prontos para serem usados na predição dos dados da camada de enriquecimento; e o sinal MC_AVC_enhancement_inputs, que agrupa os 47 sinais de entrada para a realização da compensação de movimento, caso a opção de realizar a decodificação segundo o padrão H.264/AVC seja escolhida.

A entidade do módulo Enriq_layer.vhd, conforme apresentado na Figura 4.15, possui como saídas os sinais raddr_mem, que indica o endereço a ser lido da memória de dados da camada base e é um sinal de entrada no módulo Base_layer.vhd descrito acima; MC_SVC_outputs, que agrupa 38 sinais de saída da compensação de movimento realizada na camada de enriquecimento; e o sinal mb_ready_e, que indica que os dados de um macrobloco decodificado na camada de enriquecimento estão prontos na saída do módulo.

64

Figura 4.15: Entidade do módulo Enriq_layer.vhd.

4.2 Arquiteturas Desenvolvidas para a Predição Intra Entre Camadas