Pergunta

Eu tenho uma pergunta sobre a codificação de um algoritmo para um Texas Instruments TMS320C64xx DSP no MATLAB:

Eu tenho um trabalho desleixado implementação de meu filtro no MATLAB.Meu objetivo é utilizar o MATLAB Incorporado Codificador de converter este algoritmo para C que eu, em seguida, pode importar para o Code Composer Studio e de carga para o DSP.

Para fazer isso, eu sei que há certas coisas que eu preciso fazer para o meu código de MATLAB.Por exemplo, eu preciso fazer um pré-alocar espaço para as matrizes de então, ele sabe qual o tamanho para torná-los (a menos que eu queira barulho ao redor, com tamanho variável de dados).Tudo o que massaging do MATLAB código em C ish código para que o MATLAB coder pode converter é mais ou menos correcta.No entanto, eu não tenho nenhuma idéia de como se certificar de que a minha tipos de dados (por exemplo, os coeficientes de meu filtro) são corrigidos ponto em vez de vírgula flutuante para que o MATLAB Incorporado Codificador irá converter o meu código C, que envolve apenas do ponto fixo de tipos de dados.

Então eu acho que a minha global perguntas são:

1) Se o C64xx é especificado como um 32-bit DSP de Ponto Fixo, o que significa que um compilador, pois ele vai lançar um erro se tentar utilizar o tipo de dados float?

2) existe uma maneira de garantir que o MATLAB Incorporado Coder não criar tipos de dados float?

3) eu preciso para usar o MATLAB Ponto Fixo de caixa de Ferramentas?

Muito obrigado a todos, deixe-me saber se há mais de informações necessárias para responder a minha pergunta.

Foi útil?

Solução

  1. Você pode usar tipos de dados de ponto flutuante, mas, conforme a resposta anterior, aponta, a DSP estará imitando carros alegóricos e a execução será muito mais lento.Esse tipo de execução é OK para determinadas operações numéricas onde a) você precisa a precisão de carros alegóricos b) e/ou a conversão de ponto fixo é normalmente uma dor (por exemplo,raízes quadradas) ou não viável sempre, c) e/ou estas operações não ocorrer, que muitas vezes em seu programa de porco, a maioria dos ciclos de CPU.

  2. Sim.Há uma caixa de seleção no MATLAB Coder configuração de diálogo, sob a Interface de painel, que diz que "o Apoio apenas puramente números inteiros".Verificar isso irá garantir que você não obter qualquer ponto flutuante tipos de dados no código gerado.No entanto, você precisa primeiro se certificar que você utilize apenas de inteiro/ponto fixo de tipos de dados no código.Esta opção só garante a não flutua gerado - não gerar automaticamente um ponto fixo ou inteiro única versão do código a partir do seu ponto flutuante Código de MATLAB.

  3. Para realmente criar um ponto fixo C-código, você primeiro terá que converter o seu ponto flutuante código de MATLAB para um ponto fixo em um.Você precisará do Ponto Fixo de Ferramentas que permitem a você especificar variáveis como um FI objeto, e definir o ponto fixo de regras de operações com o FIMATH definição.Uma vez que você definir um 16/32 bits de dados de ponto fixo de tipos para todas as suas variáveis e operações, você pode simular, analisar os resultados, e iterar sobre ele para ajustar suas configurações para minimizar as sobrecargas e erros de arredondamento.Em seguida, você pode gerar um verdadeiro inteiro apenas o código em C que vai se comportar apenas como (ou muito próximo) seu ponto fixo MATLAB comportamento.Quaisquer diferenças que você pode ver entre o ponto fixo do código de MATLAB e de ponto fixo de código C será, sobretudo, devido aos introduzido por seu destino compilador.

No link a seguir para um webinar gravado sobre este tópico deve fornecer uma boa introdução a este processo de utilizar o Ponto Fixo de Ferramentas:http://www.mathworks.com/wbnr38838

HTH.

Outras dicas

Só posso responder à sua primeira pergunta:

O C64xx é um DSP de ponto fixo de 32 bits, mas o compilador não reclamará se você usar o ponto flutuante.O código resultante será executado bem, mas será (muito) mais lento porque as operações de ponto flutuante serão emuladas.

O C64xx DSP também pode fazer ponto fixo de 16 bits e ponto fixo misto de 32x16 bits.Quanto menores forem os tipos de dados usados, mais rápido o código resultante será executado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top