norma 3gpp ts 26.071 v6.0.0 (2004-12)

1
A(z) 1 s(n) ^ + v(n) c(n) u(n) g c fixed codebook adaptive codebook g p LP synthesis post-filtering s'(n) ^ Norma 3GPP TS 26.071 V6.0.0 (2004-12). Codificador AMR de 8 débitos diferentes desde 4.75 a 12.2 kbit/s. Incorpora: codificador de voz de débitos múltiplos; detector de presença de voz; gerador de ruído de conforto. Sintetizador de voz baseado do modelo CELP. Usado em sistemas de telefonia de voz de banda estreita em sistemas UMTS. Norma define código em linguagem C para a implementação do codec em vírgula fixa. Síntese do Or1k teve de ser feita para cumprir limitações de espaço impostas pela FPGA de interesse: 6912 slices! Unidade composta por Core do CPU, Cache de dados e instruções de 1KB e interface wishbone ocupa 4353 slices. Unidades adicionais do top-level do Or1k, removidas através do comentário de macros. Aumento das caches de 1KB para 4KB implica a passagem de 476 para 1726 slices. Frequência máxima de funcionamento para a unidade básica 17.082 MHz. Aumento de 7 MHz na frequência, quando se compara o modelo usado para cumprir as restrições com o que contém todas as unidades disponíveis. Análise ao código revelou que a escrita dos diferentes algoritmos está feita de forma eficiente. A norma inclui funcionalidades para realizar profiling às diferentes partes do codec. O peso computacional associado à codificação de frames de voz é o de maior valor. Codificador de voz apresenta um peso computacional 6 vezes superior ao descodificador. Resultados revelaram que a pesquisa no codebook fixo pode ser um factor limitativo da performance total do codec. Norma define operações básicas a serem usadas ao longo do algoritmo do codec. Os resultados destas operações são saturados e garantem a máxima precisão possível. Operações mac representam cerca de 43% de todas as operações. Profiling do codificador de no modo de 12.2 kbit/s. Codificação de frames de voz. OPTIMIZAÇÃO DO ALGORITMO DO OPTIMIZAÇÃO DO ALGORITMO DO CODEC AMR CODEC AMR Alteração na pesquisa ao codebook fixo. Efectuar um maior número de subconjuntos de pesquisas mas sendo estas por si só menos extensas que as originais. Optimização realizada reflecte-se numa diminuição em 15% do peso computacional do codificador, quando este se encontra a funcionar no seu pior caso para o modo analisado. Optimização não causou degradação audível no sinal de saída. Or1k Top-level 12121 slices Q M EM (8K B) 3637slices InstC ache(4kb) 2146 slices D ata C ache (4kb) 2473 slices Pow erM anagem ent 7 slices D ebug U nit 40 slices Store B uffer 273 slices PIC 42 slices InstWishbone interface 90 slices D ata w ishbone interface 44 slices IMM U 150 slices IM M U TABLE 150 slices Tick-Timer 9 slices RAM 64x21 114 slices Tag C ache 282 slices RAM 64x14 68 slices DMMU 198 slices RAM 64x14 68 slices RAM 64x24 103 slices DM M U TABLE 161 slices C ache R am (4K B ) 1726 slices Tag ram 98 slices D c ram 4K B 1726 Slices InstTag 282 slices Tag ram 98 slices CPU CO RE 3237 slices CUMPRIR RESTRIÇÕES DE ESPAÇO DA FPGA XCV600 CUMPRIR RESTRIÇÕES DE ESPAÇO DA FPGA XCV600 Escassez de documentação relativa ao correcto manuseamento das ferramentas que auxiliam o processador Or1k. Familiarização com as ferramentas e o próprio ambiente onde estão integradas foi lenta. Optimização do algoritmo da norma do codec produziu uma redução de 15% da capacidade máxima de processamento no modo de maior débito. O uso de macros para se optimizar as operações básicas possibilitou uma redução em 2.3 vezes nas operações necessárias. As macros possibilitaram a passagem de 317.4 MIPS para 137.5 MIPS no caso do codificador e de 44.66 MIPS para 20.51 MIPS, sendo estes os valores mínimos para o processamento em tempo real. A fase de substituição das funções por macros, não foi completada devido a erros que surgiram na simulação do programa do codec. Estes erros estão fundamentalmente associados ao compilador. O uso do compilador que é fornecido pelo processador revelou ser instável. Para cumprir requisitos de tempo real, um conjunto de instruções dedicadas tem de ser necessariamente incorporado no processador. Destas, aquela de maior importância é a de leitura do acumulador da MAC. Como é inúmeras vezes chamada no interior de ciclos, esta tem um peso importante no processamento já que a sua codificação em assembly é extensa. A sociedade moderna assenta a sua dinâmica nas telecomunicações e contacto em tempo real. Por essa razão vários sistemas capazes de realizar a codificação de voz têm sido desenvolvidos. Integrado no contexto mencionado, neste projecto pretendeu-se realizar a implementação de um codificador de voz de débito variável, usando um processador dedicado, OpenRisc 1200. Isto passa pela optimização dos algoritmos do codec e o refinamento da arquitectura do processador. Peso das diferentes operações do codec AMR 44% 14% 8% 5% 39% 9% 8% 9% m ac m ultiplicação adição/subtracção shift CODIFICADOR D ESC O D IFIC A D O R 13% 24% 35% 6% 23% S íntese LP C odebook adap. -M A C odebook adap. -M F Codebook fixo O utros ORGANIZAÇÃO DO SISTEMA A IMPLEMENTAR ORGANIZAÇÃO DO SISTEMA A IMPLEMENTAR CPU/DSP CORE Inst. Cache Data Cache Memory Controller Data Addr Control Arbitrador de acessos Wishbone interface Cypress SSRAM Wishbone interface Wishbone interface Wishbone interface Wishbone interface PROFILING DO CODEC AMR PROFILING DO CODEC AMR SUMÁRIO SUMÁRIO CONCLUSÕES CONCLUSÕES CODIFICADOR AMR CODIFICADOR AMR ADAPTAÇÃO DO TOP-LEVEL PARA ADAPTAÇÃO DO TOP-LEVEL PARA COMUNICAR COM A MEMÓRIA COMUNICAR COM A MEMÓRIA Memória da plataforma de desenvolvimento sem interface Wishbone! Solução: controlador de memórias com suporte para SSRAM com esse interface. A solução não é suficiente. Tentativas de acesso à memória por parte da cache de dados e de instruções obedece a um mecanismo de prioridades. Proposta : Adicionar um Arbitrador de acessos. O controlador de memórias implica um aumento em 1407 slices e o arbitrador de acessos 890 slices. A área total do sistema será de 6650 slices. Restrições de espaço cumpridas! Hardware/Software co-design para Hardware/Software co-design para aplicações de processamento de voz aplicações de processamento de voz 1 Faculdade de Engenharia da Universidade do Porto, 2 CHIPIDEA Microelectrónica SA Orientação: 1 Prof. Dr. Aníbal João Ferreira, 1 Prof. Dr. João Canas Ferreira 2 Eng.º António Pacheco, 2 Eng.º Vasco Santos Alunos: 1 Pedro Manuel Fonseca da Mota, 1 Pedro Manuel Vieira dos Santos 67% 59% 51% 43% 40% 41% 45% 53% 95% 66% 76% 99% Prep. inicial m ac m ult. adi/sub shift O utras oper. CO DIFICADO R DESCODIFICADOR Colocação inline das operações básicas do algoritmo, é vital para uma eficiente optimização. Uso de macros, escritas todas elas em assembly, foi a solução adoptada para a escrita das operações básicas. Estas não retornam valores, pelo que foi necessário reescrever todas as chamadas a estas operações no código. Durante este processo foram encontrados diversos problemas devido ao compilador e simulador, pelo que não se conseguiu completar esta tarefa na sua totalidade. No entanto, até ao momento conseguiu-se uma redução de cerca de 60% no processamento total. Em contrapartida a memória de programa aumentou em 11%. Optimizações realizadas sobre o codec AMR. (valores acumulados) ADAPTAÇÃO DO CODEC PARA O ADAPTAÇÃO DO CODEC PARA O PROCESSADOR PROCESSADOR

Upload: steel-vinson

Post on 01-Jan-2016

46 views

Category:

Documents


5 download

DESCRIPTION

Hardware/Software co-design para aplicações de processamento de voz 1 Faculdade de Engenharia da Universidade do Porto, 2 CHIPIDEA Microelectrónica SA Orientação: 1 Prof. Dr. Aníbal João Ferreira, 1 Prof. Dr. João Canas Ferreira 2 Eng.º António Pacheco, 2 Eng.º Vasco Santos Alunos: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Norma 3GPP TS 26.071 V6.0.0 (2004-12)

A(z)1 s(n)^

+

v(n)

c(n)

u(n)

g c

fixedcodebook

adaptive codebook g p

LP synthesis

post-filterings'(n)^

• Norma 3GPP TS 26.071 V6.0.0 (2004-12).

• Codificador AMR de 8 débitos diferentes desde 4.75 a 12.2 kbit/s.

• Incorpora: codificador de voz de débitos múltiplos; detector de presença de voz; gerador de ruído de conforto.

• Sintetizador de voz baseado do modelo CELP.

• Usado em sistemas de telefonia de voz de banda estreita em sistemas UMTS.

• Norma define código em linguagem C para a implementação do codec em vírgula fixa.

• Síntese do Or1k teve de ser feita para cumprir limitações de espaço impostas pela FPGA de interesse: 6912 slices!

• Unidade composta por Core do CPU, Cache de dados e instruções de 1KB e interface wishbone ocupa 4353 slices.

• Unidades adicionais do top-level do Or1k, removidas através do comentário de macros.

• Aumento das caches de 1KB para 4KB implica a passagem de 476 para 1726 slices.

• Frequência máxima de funcionamento para a unidade básica 17.082 MHz. Aumento de 7 MHz na frequência,

quando se compara o modelo usado para cumprir as restrições com o que contém todas as unidades disponíveis.

• Análise ao código revelou que a escrita dos diferentes algoritmos está feita de forma eficiente.

• A norma inclui funcionalidades para realizar profiling às diferentes partes do codec.

• O peso computacional associado à codificação de frames de voz é o de maior valor.

• Codificador de voz apresenta um peso computacional 6 vezes superior ao descodificador.

• Resultados revelaram que a pesquisa no codebook fixo pode ser um factor limitativo da performance total do codec.

• Norma define operações básicas a serem usadas ao longo do algoritmo do codec. Os resultados destas operações são saturados e garantem a máxima precisão possível.

• Operações mac representam cerca de 43% de todas as operações.

Profiling do codificador de no modo de 12.2 kbit/s.Codificação de frames de voz.

OPTIMIZAÇÃO DO ALGORITMO OPTIMIZAÇÃO DO ALGORITMO DO CODEC AMRDO CODEC AMR

• Alteração na pesquisa ao codebook fixo.

• Efectuar um maior número de subconjuntos de pesquisas mas sendo estas por si só menos extensas que as originais.

• Optimização realizada reflecte-se numa diminuição em 15% do peso computacional do codificador, quando este se encontra a funcionar no seu pior caso para o modo analisado.

• Optimização não causou degradação audível no sinal de saída.

Or1k Top-level12121 slices

QMEM (8KB)

3637slices

Inst Cache(4kb)

2146 slices

Data Cache (4kb)

2473 slices

Power Management

7 slices

Debug Unit

40 slices

Store Buffer

273 slices

PIC42 slices

Inst Wishboneinterface

90 slices

Data wishbone interface

44 slices

IMMU

150 slices

IMMU TABLE

150 slices

Tick-Timer9 slices

RAM 64x21

114 slices

Tag Cache282 slices

RAM 64x1468 slices

DMMU198 slices

RAM 64x1468 slices

RAM 64x24 103 slices

DMMU TABLE161 slices

Cache Ram ( 4KB)

1726 slices

Tag ram98 slices

Dc ram 4KB1726 Slices

Inst Tag

282 slices

Tag ram 98 slices

CPU CORE3237 slices

CUMPRIR RESTRIÇÕES DE ESPAÇO DA FPGA XCV600CUMPRIR RESTRIÇÕES DE ESPAÇO DA FPGA XCV600

• Escassez de documentação relativa ao correcto manuseamento das ferramentas que auxiliam o processador Or1k.

• Familiarização com as ferramentas e o próprio ambiente onde estão integradas foi lenta.

• Optimização do algoritmo da norma do codec produziu uma redução de 15% da capacidade máxima de processamento no modo de maior débito.

• O uso de macros para se optimizar as operações básicas possibilitou uma redução em 2.3 vezes nas operações necessárias.

• As macros possibilitaram a passagem de 317.4 MIPS para 137.5 MIPS no caso do codificador e de 44.66 MIPS para 20.51 MIPS, sendo estes os valores mínimos para o processamento em tempo real.

•A fase de substituição das funções por macros, não foi completada devido a erros que surgiram na simulação do programa do codec. Estes erros estão fundamentalmente associados ao compilador.

• O uso do compilador que é fornecido pelo processador revelou ser instável.

• Para cumprir requisitos de tempo real, um conjunto de instruções dedicadas tem de ser necessariamente incorporado no processador. Destas, aquela de maior importância é a de leitura do acumulador da MAC. Como é inúmeras vezes chamada no interior de ciclos, esta tem um peso importante no processamento já que a sua codificação em assembly é extensa.

A sociedade moderna assenta a sua dinâmica nas telecomunicações e contacto em tempo real. Por essa razão vários sistemas capazes de realizar a codificação de voz têm sido desenvolvidos.

Integrado no contexto mencionado, neste projecto pretendeu-se realizar a implementação de um codificador de voz de débito variável, usando um processador dedicado, OpenRisc 1200. Isto passa pela optimização dos algoritmos do codec e o refinamento da arquitectura do processador.

Peso das diferentes operações do codec AMR44%

14% 8% 5%

39%

9% 8% 9%

mac multiplicação adição/subtracção shift

CODIFICADOR DESCODIFICADOR

13%24%

35%

6%

23%

Síntese LP Codebookadap. - MA

Codebookadap. - MF

Codebookfixo

Outros

ORGANIZAÇÃO DO SISTEMA A IMPLEMENTARORGANIZAÇÃO DO SISTEMA A IMPLEMENTAR

CPU/DSP

CORE

Inst.

Cache

Data

Cache

Memory

Controller

Data

Addr

Control

Arbitrador de acessos

Wishbone

interface

Cyp

ress

SS

RA

M

Wishbone

interface

Wishbone

interface

Wishbone

interface

Wishbone

interface

PROFILING DO CODEC AMRPROFILING DO CODEC AMRSUMÁRIOSUMÁRIO

CONCLUSÕESCONCLUSÕES

CODIFICADOR AMRCODIFICADOR AMR

ADAPTAÇÃO DO TOP-LEVEL PARA ADAPTAÇÃO DO TOP-LEVEL PARA COMUNICAR COM A MEMÓRIACOMUNICAR COM A MEMÓRIA

• Memória da plataforma de desenvolvimento sem interface Wishbone!

• Solução: controlador de memórias com suporte para SSRAM com esse interface. A solução não é suficiente. Tentativas de acesso à memória por parte da cache de dados e de instruções obedece a um mecanismo de prioridades.

• Proposta : Adicionar um Arbitrador de acessos.

• O controlador de memórias implica um aumento em 1407 slices e o arbitrador de acessos 890 slices.

• A área total do sistema será de 6650 slices. Restrições de espaço cumpridas!

Hardware/Software co-design para Hardware/Software co-design para aplicações de processamento de vozaplicações de processamento de voz

1Faculdade de Engenharia da Universidade do Porto, 2CHIPIDEA Microelectrónica SA

Orientação:

1Prof. Dr. Aníbal João Ferreira, 1Prof. Dr. João Canas Ferreira

2Eng.º António Pacheco, 2Eng.º Vasco Santos

Alunos:

1Pedro Manuel Fonseca da Mota, 1Pedro Manuel Vieira dos Santos

67%59%

51%43%40%41%45%53%

95%

66%76%

99%

Prep.inicial

mac mult. adi/sub shift Outrasoper.

CODIFICADOR DESCODIFICADOR

• Colocação inline das operações básicas do algoritmo, é vital para uma eficiente optimização.

• Uso de macros, escritas todas elas em assembly, foi a solução adoptada para a escrita das operações básicas. Estas não retornam valores, pelo que foi necessário reescrever todas as chamadas a estas operações no código.

• Durante este processo foram encontrados diversos problemas devido ao compilador e simulador, pelo que não se conseguiu completar esta tarefa na sua totalidade.

• No entanto, até ao momento conseguiu-se uma redução de cerca de 60% no processamento total. Em contrapartida a memória de programa aumentou em 11%.

Optimizações realizadas sobre o codec AMR.(valores acumulados)

ADAPTAÇÃO DO CODEC PARA O ADAPTAÇÃO DO CODEC PARA O PROCESSADORPROCESSADOR