O aumento da popularidade dos dispositivos de microcontrolador de 32 bits (MCU) em toda a comunidade incorporada não é uma surpresa. Estes dispositivos ricos em funções adequam-se a uma variedade de aplicações diferentes, o que explica porque muitos desenvolvedores os selecionam para seus próximos projetos. Os projetistas reconhecem que tais dispositivos complexos oferecem tudo o que eles precisam em termos de potência bruta de computação, um rico conjunto periférico e fácil acesso a uma ampla gama de ferramentas de desenvolvimento e bibliotecas.
Muitos desses dispositivos de 32 bits são baseados nos núcleos ARM altamente bem-sucedidos. Assim, os desenvolvedores se sentem confiantes em ter acesso a dispositivos de segunda fonte e a um conjunto abrangente de ferramentas de desenvolvimento, teste e validação disponíveis no mercado.
No entanto, olhando mais de perto as tendências recentes do mercado MCU revela que os dispositivos de 32-bit não são os únicos que experimentam um forte crescimento (Tabela 1). O crescente mercado de MCU de 8 bits apresenta uma taxa de crescimento composta (6,4%) próxima à de 32 bits (6,9%). Outros analistas do setor prevêem taxas de crescimento idênticas para microcontroladores de 8 e 32 bits.
A ascensão dos dispositivos de 8 bits destaca claramente que deve haver algumas razões convincentes para usar um dispositivo de 8 bits no lugar de um MCU de 32 bits. Este artigo procura esclarecer porque os dispositivos 8-bit retêm a quota de mercado.
Diferenças Essenciais
As principais diferenças entre MCUs de 8 e 32-bit são estrutura de custos e preços, desempenho da CPU, facilidade de uso, eficiência em hardware próximo a funções e consumo estático de energia. Ao embarcar em um novo projeto, os desenvolvedores precisam escanear cuidadosamente os requisitos para uma MCU com base na quantidade de capacidade de processamento necessária, no grau de interface necessário e, para projetos alimentados por bateria, os perfis de consumo de energia de todos os tipos importantes. Não há dúvida de que um MCU de 32 bits oferece um desempenho superior ao de um dispositivo de 8 bits, mas o engenheiro enfrenta a tradicional decisão de escolher entre o melhor dispositivo disponível no mercado versus as necessidades reais de um aplicativo.
Obviamente, essas decisões influenciarão muito no custo provável da lista de materiais (BOM). Com uma contagem mais baixa, um dispositivo de 8 bits menos complexo será certamente mais barato do que um dispositivo de 32 bits. Ao comparar MCUs de 8 e 32 bits dos principais fornecedores, cada um com uma quantidade similar de memória flash, pin-out etc., os dispositivos de 8 bits normalmente custam cerca de 20% menos. Mas esta é apenas a primeira de muitas considerações. Outro aspecto diz respeito à facilidade de configuração para um novo desenvolvimento.
Facilidade de desenvolvimento
Os fornecedores de MCUs tendem a adicionar mais recursos e funcionalidades aos seus dispositivos de 32 bits, em oposição aos produtos de 8 bits. Consequentemente, muito mais considerações de configuração emergem com um dispositivo mais complexo. Enquanto alguns MCUs de 32 bits podem funcionar com uma configuração limitada semelhante à de um dispositivo de 8 bits, você não pode tirar vantagem dos recursos adicionais do dispositivo mais potente.
Download deste artigo em .formato PDF Este tipo de arquivo inclui gráficos e esquemas de alta resolução quando aplicável. |
Por exemplo, um dispositivo ARM típico de 32 bits terá configurações de relógio independentes para o próprio núcleo, o barramento AHB, o barramento APBA, e o barramento APBB. Todos eles podem ser definidos para frequências diferentes. Tipicamente, você também terá que mudar para o relógio que você quer usar porque ele está configurado em software, não em hardware como a maioria das partes de 8-bit. Além disso, mudar o relógio significa que você deve configurar os estados de espera para flash, possivelmente baseado na tensão VCC medida.
Tal configuração pode ser muito mais simples com um MCU de 8 bits, no entanto. Por exemplo, os produtos Atmel tinyAVR e megaAVR requerem apenas a inicialização do ponteiro da pilha, que normalmente leva quatro linhas de código, antes de codificar a aplicação. A escolha do relógio, detector brownout, função de pino de reset, etc., é toda pré-programada no dispositivo.
A arquitetura também é muito mais simples que um dispositivo de 32 bits com registros internos, periféricos e SRAM, todos mapeados no mesmo barramento de dados. Os periféricos e a CPU normalmente funcionariam na mesma freqüência, portanto nenhuma configuração de barramento periférico é necessária. Além disso, os projetistas podem evitar se preocupar com a latência na sincronização entre diferentes domínios do relógio.
Performance
Quando se trata de performance desejada da CPU, o engenheiro deve considerar todos os casos de uso. A realidade é que muitos projetos embutidos não têm altos requisitos de computação. Muitas vezes, é necessária muito pouca manipulação de dados, portanto o equilíbrio entre essas necessidades e o consumo de energia e os requisitos de interface periférica torna-se crucial.
Por exemplo, uma aplicação de termostato simples passará a maior parte da sua vida em modo de espera. De vez em quando, ele vai acordar e medir a temperatura e, em seguida, tomar a decisão de ligar/desligar um relé ou enviar uma instrução para um controlador anfitrião. Em seguida, ele retomará o sono. Os requisitos de computação e interface desta aplicação são pequenos, mas muitas outras aplicações como detectores de incêndio, ferramentas eléctricas, medidores de fluxo e controlos de aparelhos também têm um perfil de utilização semelhante.
Eficiência de Hardware Próximo de Funções
Muitos microcontroladores modernos incorporam algumas funções de hardware que servem para ajudar a CPU a funcionar da forma mais eficiente possível. No caso da Atmel, tanto o AVR de 8 bits como as famílias MCU baseadas em ARM de 32 bits apresentam o Sistema de Eventos Periféricos. Um sistema de eventos é um conjunto de características baseadas em hardware que permite que os periféricos interajam sem a intervenção da CPU. Ele permite que os periféricos enviem sinais diretamente para outros periféricos, garantindo um tempo de resposta curto e 100% previsível.
Ao utilizar plenamente as capacidades do sistema de eventos, o chip pode ser configurado para fazer operações complexas com muito pouca intervenção da CPU, economizando tanto a valiosa memória do programa quanto o tempo de execução. No caso de detectar um evento de hardware, é importante primeiro detectar o evento e depois mudar o controle para a rotina de serviço de interrupção (ISR) desejada.
Nessas situações, a velocidade da CPU não é o único fator determinante. É uma questão de quanto tempo, em termos de ciclos, é necessário para responder à interrupção, executar o ISR e retornar. Como o exemplo a seguir irá mostrar, dispositivos de 8 bits podem ser mais eficientes no manuseio de hardware próximo a ações.
Considerando receber um byte no SPI, usando uma interrupção para detectá-lo, e então executar uma rotina ISR simples para ler o byte do periférico SPI e armazená-lo na SRAM. Usando este cenário, a Tabela 2 faz comparações entre um dispositivo Atmel AVR de 8 bits e um Atmel ARM Cortex M0+ baseado em MCU de 32 bits. Calculados com a informação disponível, os resultados são baseados em implementações mínimas. No entanto, os engenheiros devem verificar com suas próprias aplicações, já que a detecção de interrupção e o retorno da interrupção pode levar mais ciclos do que os mostrados na tabela. Exigir 12 ciclos versus 33 ciclos equivale a ter uma largura de banda máxima teórica de 1,67 MB/s para a CPU de 8 bits e uma largura de banda de 606 kB/s para uma CPU de 32 bits quando executada a 20 MHz.
O grau de processamento numérico também pode ter um impacto na pilha e na memória necessária. A aplicação do algoritmo Fibonacci é um método particularmente bom para testar os requisitos de memória. Como ele usa apenas uma variável local, tudo precisa ser empurrado para a pilha.
Ao fazer uma comparação entre um AVR de 8 bits e um dispositivo ARM baseado em CM0+ de 32 bits, e usando um algoritmo Fibonacci recursivo de 15 estágios, o AVR usa um total de 70 bytes de pilha, incluindo 30 para a pilha de retorno (15 chamadas profundas). O dispositivo baseado em ARM usa 192 bytes (60 devem ser pilha de retorno). Isto significa que o CSTACK é mais de três vezes o tamanho da solução de 8 bits. No código C típico, mais variáveis na pilha vêm frequentemente em formato de pacote, por isso este é um canto extremo. Entretanto, dizer 1,5 a 3 vezes mais SRAM é necessário para a mesma aplicação 8-bit-centric em um dispositivo 32-bit (versus um nativo 8-bit) é uma estimativa justa.
Consumo de energia
Nenhum artigo MCU estaria completo sem investigar o consumo de energia estática. Isto por si só pode ser um factor chave na escolha entre um dispositivo de 8 ou 32 bits, especialmente para aplicações alimentadas por bateria. A Tabela 3 ilustra as diferenças de consumo de energia entre dispositivos de 8 e 32 bits nos modos ativo e estático.
As tecnologias de fabricação agressiva aumentam a corrente de fuga de transistor, que aproximadamente duplica com cada geração de processo, e é proporcional ao número de portões. A corrente de fuga aumenta exponencialmente a temperaturas mais elevadas, o que pode ser facilmente ignorado ao desenhar um design de consumo. Telemóveis e leitores de media pessoais são transportados para todo o lado e, como todos nós descobrimos, as temperaturas registadas durante o Verão dentro de um carro podem facilmente subir acima dos 40°C.
O tempo que o microcontrolador irá passar em modo activo versus modo estático contribui significativamente para o orçamento geral de energia da aplicação.
Naturalmente, a relação entre os modos activo e estático irá variar dependendo dos requisitos da aplicação. Tomando o exemplo anterior de interrupção do SPI (Tabela 2, novamente) e assumindo uma largura de banda de dados SPI de 80 kb/s, a CPU de 8 bits gastará 1,2% do seu tempo no modo ativo em comparação com a de 32 bits, que gastará 3,3% no modo ativo (Tabela 4).
Conclusão
Contemplar se usar um microcontrolador de 8 ou 32 bits para um projeto futuro pode envolver uma aplicação Internet das coisas (IoT). Como o IoT realmente toma forma provoca muito debate, mas certamente desafiará os engenheiros a fazer uma avaliação detalhada dos requisitos da MCU. A conectividade sem fio, especialmente ZigBee, também será um componente essencial, mas isso não significa automaticamente que precisará de um dispositivo de maior potência.
Download deste artigo em .formato PDF Este tipo de arquivo inclui gráficos e esquemas de alta resolução quando aplicável. |
Um número de produtos microcontroladores de 8 bits disponíveis satisfaz a necessidade de baixos níveis de processamento e conectividade sem fio. Um desses exemplos é a série ATmegaRFR2 da Atmel, que fornece uma solução de microcontrolador sem fio de chip único, compatível com IEEE 802.15.4, 2.4-GHz, que se adequa a projetos IoT com bateria e baixo custo.
Ingar Fredriksen, diretor de marketing MCU da Atmel para a região EMEA, está sediado em Trondheim, Normay. Ele recebeu seu bacharelado em engenharia elétrica pela Trodheim University College.
Paal Kastnes engenheiro de pessoal na equipe de Aplicações MCU especializada no treinamento de pessoal da Atmel e clientes no uso dos microcontroladores e ferramentas da Atmel, também está baseado em Trondheim. Ele recebeu seu bacharelado em engenharia elétrica da Trondheim University College.