10 likes | 138 Views
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:
E N D
Hardware/Software co-design para aplicaçõ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 PROFILING DO CODEC AMR SUMÁRIO 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, OpenRisc1200. Isto passa pela optimização dos algoritmos do codec e o refinamento da arquitectura do processador. • 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. Peso das diferentes operações do codec AMR CODIFICADOR AMR • 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. CUMPRIR RESTRIÇÕES DE ESPAÇO DA FPGA XCV600 • 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. OPTIMIZAÇÃO DO ALGORITMO DO 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. • 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. ORGANIZAÇÃO DO SISTEMA A IMPLEMENTAR ADAPTAÇÃO DO TOP-LEVEL PARA COMUNICAR COM A MEMÓRIA CPU/DSP CORE Wishbone interface Inst. Cache Wishbone interface Arbitrador de acessos Memory Controller Cypress SSRAM Data • 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! Wishbone interface Addr Wishbone interface Data Cache Wishbone interface Control CONCLUSÕES ADAPTAÇÃO DO CODEC PARA O PROCESSADOR • 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. • 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. Optimizações realizadas sobre o codec AMR. (valores acumulados) • 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%.