14.1 – Os microprocessadores e os microcontroladores

Os microprocessadores e os microcontroladores pertencem a uma categoria de circuitos integrados capaz de processar informações complexas, realizando operações matemáticas, armazenando dados e programas, para utilização nas mais diversas aplicações.

Se bem que muitos confundam os dois dispositivos, eles possuem estruturas e finalidades diferentes.

 

Um microcontrolador é um dispositivo completo, podendo ser comparado a um computador com diversos recursos embutidos num único chip, apresentando características específicas.

Assim, os microcontroladores possuem uma unidade de processamento central, também conhecida por CPU e que é capaz de executar programas. No entanto, o que o microprocessador faz exige a utilização de dispositivos complementares.

Isso ocorre porque o microprocessador não foi criado para uma finalidade única. Dizemos que se trata de um dispositivo de propósito geral ou, se usarmos o termo m inglês “general purpose”.

Na figura 176 temos a estrutura interna de um microprocessador comum, onde são mostrados os diversos blocos.

  

Figura 176 – Blocos internos de um microprocessador comum
Figura 176 – Blocos internos de um microprocessador comum

  

Temos então diversos blocos que são responsáveis pelo processamento dos dados, observando-se que esses dados passam de um bloco a outro através de um barramento interno (internal bus).

Para interfacear com o mundo externo temos um barramento de dados externo (external data bus) e para o endereçamento dos dados temos um barramento de endereços (external address bus).

A ALU é a unidade lógica aritmética ou Arithmetic Logic Unit, responsável pelos cálculos aritméticos e outros que são realizados com os dados, a partir do programa.

Na figura 177 temos o modo como um microprocessador, como o Z80 se comunica com o mundo exterior, e alguns dos circuitos externos usados na sua operação.

   

Figura 177 – Conex~çoes do Z80 com o mundo exterior
Figura 177 – Conex~çoes do Z80 com o mundo exterior

 

 Temos então um oscilador (OSC) que determina a velocidade de sua operação, sendo este denominado oscilador de clock. O circuito de reset (RST) resseta o microprocessador quando necessário. Os barramentos de dados, controle e endereços se comunicam com as portas e com as memórias RAM e ROM.

Na memória ROM são armazenadas informações fixas, como aquelas com que o microprocessador deve operar e um programa. Na RAM ficam as informações que mudam ou são adquiridas durante o processamento, desaparecendo quando o circuito é desligado.

Veja então, por esta estrutura que, ao se utilizar um microprocessador num computador precisamos ter o apoio de diversos elementos, inclusive alguns adicionais como um disco rígido externo, uma memória RAM, dispositivos de entrada e saída, dispositivos para implementar um teclado, um monitor, uma zmpressora, o mouse e eventualmente outros.

Os microcontroladores são diferentes, pois eles são fabricados para uma finalidade específica (specific purpose), pois já contém tudo que é preciso para a aplicação em que eles vão ser usados.

Assim, os microcontroladores são normalmente embutidos em algum tipo de equipamento de modo a controlar todas as funções, e para isso, integram a maioria dos recursos necessários.

Os microcontroladores possuem então em seu interior um processador (uma CPU) e demais recursos para que ela opere na aplicação desejada, por exemplo, uma memória ROM, uma memória EEPROM ou de outro tipo e circuitos de entrada e saída.

Na figura 178 temos a estrutura interna de um microcontrolador.

 

Figura 178 – A estrutura interna em blocos de um microcontrolador
Figura 178 – A estrutura interna em blocos de um microcontrolador

 

 Veja que além da CPU (Central Processing Unit) ou unidade central de processamento, existem diversos blocos internos que permitem ao microcontrolador ser um sistema completo de controle, com a necessidade de muito poucos elementos externos.

Enquanto os microprocessadores são usados num computador, que pode realizar diversos tipos de tarefas, os microcontroladores são encontrados em equipamentos comercializados, automações, ou outros que só rodam um único programa que depende do que eles devem fazer exigindo poucos elementos externos.

Conforme mostra a figura 179, o microcontrolador reúne num único chip as funções de processador e diversas outras necessária a aplicações de controle.

 

Figura 179 – O microcontrolador é mais do que um microprocessador
Figura 179 – O microcontrolador é mais do que um microprocessador

 

Para poder operar de uma forma mais eficiente na aplicação a que se destinam, os microcontroladores são dispositivos encontrados em diversas versões, com diversas capacidades de processamento, sempre visando o menor custo e o menor consumo de energia.

Numa máquina industrial, por exemplo, o microcontrolador retém o programa que deve controlar as funções dessa máquina e, ao mesmo, possui recursos para fazer o controle da máquina e receber os comandos de um controle remoto, de um painel ou de sensores.

Num robô, o microcontrolador controla seus movimentos a partir de sinais obtidos de sensores, de um controle remoto, ou ainda de uma programação que automatize seus movimentos.

Como os microcontroladores operam em aplicações específicas, dependendo do ambiente em que isso ocorra, eles podem ser dotados de recursos que os torna mais robustos. Isso ocorre, por exemplo, no caso de microcontroladores que vão trabalhar em máquinas industriais, em eletrodomésticos sujeitos a umidade (máquinas de lavar, por exemplo), ou dentro de veículos (barcos, carros ou aviões).

Na figura 180 temos um microcontrolador Arduino que pode ser usado em diversas aplicações de automação e controle.

 

Figura 180 - Placa com o Arduino
Figura 180 - Placa com o Arduino

 

Dentro de um microcontrolador podemos então encontrar um processador, cuja capacidade de processamento dependerá de sua aplicação.

Numa automação de uma máquina ou de uso predial, por exemplo, é possível encontrar processadores de famílias antigas mais simples, como os Z80, 80C51, enquanto que em aplicações mais complexas, processadores como os da série 80386, 80486 e Pentium, podem ser necessários.

Quando temos um produto automatizado, como uma máquina de lavar, um forno de microondas onde poucas funções são controladas, podemos usar microcontroladores populares ou de baixo custo como os da Atmel, Microchip, Texas, Freescale. Os microcontroladores PIC da Microchip, em especial, pela facilidade de obtenção e programação, são muito usados em projetos de automação e controle.

 

14.1.2 - Programação

Os microcontroladores são fabricados sem conter nada em sua memória, assim, eles não conseguem fazer nada num circuito se não forem programados.

Para programar um microcontrolador deve ser usada uma linguagem especial e recursos especiais.

Existem duas possibilidades para a programação. Os primeiros tipos, podiam ser programados manualmente, havendo para esta finalidade uma placa onde os microcontroladores eram encaixados em suporte especial e, depois, através de chaves tipo dip switches, eram colocados os códigos a serem transferidos para o microcontrolador e o endereço onde isso ocorria.

Este tipo de programação servia para o caso de programas muito simples, com poucas linhas e que, portanto, poderiam ser transferidos para o microcontrolador em pouco tempo.

Hoje em dia são usadas placas conectadas à USB ou porta serial de um computador de modo a se criar o programa neste computador e então fazer a transferência para o microcontrolador.

Na figura 181 uma placa deste tipo, observando-se o soquete especial em que é encaixado o microcontrolador que a ser programado.

 

Figura 181- Uma placa típica de programação de microcontrolador
Figura 181- Uma placa típica de programação de microcontrolador

 

Uma vez programado, o microcontrolador pode então ser colocado na placa da aplicação definitiva, ou seja, na placa que contenha os demais elementos com que ele vai interfacear, ou seja, sensores, circuitos de controles de potência, etc.

Vamos dar um pequeno exemplo de como criar uma aplicação com um microcontrolador.

Inicialmente definimos o que desejamos controlar e como, por exemplo, um circuito que ligue uma ventoinha quando a temperatura supera os 50º C e ligue um aquecedor quando a temperatura cai abaixo de 10 ºC. Ao mesmo tempo, se a temperatura subir muito, por exemplo, acima de 70 ºC ou cair de demais, menos de 5 ºC, o circuito deve fazer soar um alarme.

Começamos por determinar no microcontrolador qual é a entrada que vai ler o sensor de temperatura e em quais são as tensões que correspondem às temperaturas em que o acionamento dos dispositivos externos devem ser feitos.

Determinamos depois quais saídas vamos usar para os controles, uma para a ventoinha, outra para o aquecedor e finalmente, uma terceira para o alarme.

Criamos então através de um fluxograma, a estrutura de nosso programa.

Depois, a partir deste fluxograma, escrevemos o programa usando para isso as diversas linguagem possíveis, de acordo com o programa do computador que trabalha com o microcontrolador.

Veja então que o leitor que vai trabalhar com microcontroladores precisa:

Conhecer os tipos de microcontroladores de modo a saber fazer a escolha de acordo com o tipo de aplicação

Ter a placa de programação e um computador com o programa que emula a placa, ou seja, um compilador que transfere os dados para um microcontrolador instalado nesta placa

Conhecer a linguagem de programação de modo a poder criar ou transferir um programa pronto para esta placa e o microcontrolador usando o computador

Para trabalhar com os microcontroladores os leitores têm duas possibilidades. Uma consiste em aprender sozinhos, usando placa de baixo custo e microcontroladores simples, partindo de aplicações menos complexas e lendo livros ou artigos sobre o assunto.

Oura consiste em se fazer cursos presenciais de treinamento, os quais podem ser encontrados em algumas localidades.

 

14.1.3 – Os Microcontroladores mais comuns

Hoje em dia os leitores que desejarem trabalhar com microcontroladores podem contar com uma grande quantidade de tipos, disponibilizados por diversos fabricantes. A escolha do tipo ideal para uma aplicação depende de diversos fatores como:

a) Disponibilidade do microcontrolador no mercado

b) Disponibilidade da placa de programação

c) Custo do microcontrolador, se a aplicação for num produto que deve ser industrializado

d) Conhecimento do processo específico de programação

Damos a seguir a descrição de alguns fabricantes de microcontroladores e os tipos que disponibilizam.

 

a) Microchip

A linha de PICs da Microchip possui uma grande quantidade de tipos, com características as mais variadas possibilitando sua utilização em muitas aplicações. O destaque dos PICs é a disponibilidade de tipos muito simples, que facilita a implementação em projetos de baixo custo ou com finalidades didáticas. Na figura 182 temos a família PIC. Acesse www.microchip.com para mais informações.

  

Figura 182 – Invólucros de alguns microcontroladores PIC
Figura 182 – Invólucros de alguns microcontroladores PIC

 

 

b) Atmel

A Atmel possui uma ampla linha de microcontroladores de baixo custo, destacando-se os Atmega. Mais informações sobre os microcontroladores desta empresa podem ser obtidas no site http://www.atmel.com/.

 

c) Texas Instruments

Na linha de microcontroladores da Texas Instruments, destacamos os MSP430, de baixo consumo. Mais informações no site www.ti.com.

 

d) Freescale

Com uma ampla linha de microcontroladores pode ser acessada em: http://www.freescale.com/.

 

e) Renesas

Os microcontroladores da Renesas se caracterizam pelo seu baixo custo e simplicidade. Mais informações em: http://am.renesas.com/

 

14.1.4 – Linguagens de programação

Para programar um microcontrolador deve-se conhecer uma das diversas linguagens utilizadas nos programas compiladores. As principais linguagens utilizadas são:

 

Assembly

Assembly em inglês significa montar, referindo-se esta linguagem à montagem de um programa utilizando a linguagem binária, que aprendemos nos primeiros capítulos deste livro. O programa utilizado para se criar um programa com esta linguagem é chamado de “assembler”, ou traduzindo, “montador”.

Abaixo temos um exemplo de um programa em assembler;

A linguagem C não é compilada, ou seja, os programas gerados pelo programador vão diretamente para o microcontrolador na forma binária.

 

Linguagem C

As linguagens são classificadas em níveis. As de níveis mais baixos, “conversam” diretamente com os microcontroladores, como a linguagem assembler. A linguagem C está num nível intermediário, no sentido de que o programado criado não vai diretamente para o microcontrolador, mas precisa antes passar por um programa denominado “compilador”.

O programa fonte que é criado pelo programador nesta linguagem, passa por um programa denominado compilador que gera então a linguagem binária que o microcontrolador entende.

Uma desvantagem desta linguagem, em relação ao assembler, está no fato de que ela exige mais memória. Isso ocorre pela necessidade de se ter um número maior de instruções para se realizar a tarefa deseja.

 

Pascal

Trata-se de uma linguagem de alto nível, sendo bastante utilizada pelo fato de usar uma sintaxe amigável e comandos que podem ser memorizados com facilidade.

 

Basic

O Basic é uma das linguagens mais antigas, tendo sido criada em 1963 com a finalidade de facilitar o ensino de programação. Esta linguagem foi utilizada de maneira ampla até os anos 80 com a popularização dos primeiros microcomputadores pessoais, ressurgindo depois com versões mais poderosas, mais adaptadas as tecnologias de microcontroladores atuais.

Basic é o acrônimo para Beginners All-Purpose Symbolic Instuction Code ou “código de instruções simbólicas para todos os propósitos”.

Ainda hoje, existem muitos programadores que usam esta linguagem com finalidade didática como, por exemplo, nos microcontroladores da série Basic Stamp.

 

Ladder

Esta é uma linguagem alternativa, tendo sido criada para aplicações em controladores lógicos programáveis ou CLPs, visando o acionamento de relés a partir de sinais obtidos de sensores.

Muito utilizada nos processos de automação a partir dos anos 80, depois ela passou a ser mais utilizada em processos industriais.

 

14.2 – Os Processadores de Sinal Digitais ou DSPs

Se convertermos sinais analógicos tais como sons, imagens, sinais obtidos a partir de sensores lineares como termistores, LDRs e outros em sinais digitais, além de termos muito mais facilidade em trabalhar com eles, existe a possibilidade de modificarmos suas características, acrescentando uma vantagem de controle a partir de um microprocessador.

Isso significa que, nos modernos equipamentos que trabalham com sinais analógicos, tais como amplificadores de áudio, televisores, modems, equipamentos de telecomunicações, telefones celulares, TV a cabo e digital, o uso de um dispositivo que seja capaz de converter sinais analógicos em digitais, e depois converter os sinais digitais em analógicos, é essencial.

A tecnologia que permite desenvolver circuitos com a capacidade de converter sinais analógicos em digitais não é complicada. O problema surge quando se deseja operar com sinais que precisam manter suas características de fidelidade, mas em frequências muito altas.

Podemos dizer que dispositivos comuns que poderiam ser usados com esta finalidade se tornam inadequados, exigindo dos fabricantes o desenvolvimento de tecnologias avançadas.

Hoje é possível contar com circuitos integrados que reúnem todos os elementos necessários a conversão de sinais analógicos para a forma digital em frequências muito elevadas e, além disso, incorporar os microprocessadores e diversos circuitos de apoio que podem trabalhar com estes sinais digitalizados. A partir deles, aplicações em equipamentos, como os que citamos como exemplos no início deste item, podem ser desenvolvidas com facilidade.

É claro que a montagem do próprio DSPs não interessa ao nosso leitor que pode contar com o componente pronto. No entanto, para saber usá-lo e para saber como reparar, ou simplesmente instalar estes dispositivos nas aplicações modernas, é preciso conhecer seu princípio de funcionamento.

 

14.2.1 – Convertendo sinais analógicos em digitais

Vamos partir de uma forma de onda de um sinal comum, como, por exemplo, um som qualquer e que pode ser representada conforme mostra a figura 183.

 

Figura 183 – Sinal que varia entre -1 e + 1 V
Figura 183 – Sinal que varia entre -1 e + 1 V

 

 

Esta forma de onda corresponde a um sinal analógico já que, instante a instante, a intensidade do sinal varia, assumindo valores que mudam segundo saltos infinitamente pequenos.

Isso é diferente de um sinal digital em que a intensidade do sinal varia instante a instante, mas segundo saltos discretos e que, portanto, podem ser representados por valores finitos ou dígitos, conforme mostra a figura 184.

 

Figura 184 – Um sinal que varia segundo passos discretos, ou seja “aos saltos”
Figura 184 – Um sinal que varia segundo passos discretos, ou seja “aos saltos”

 

 

A conversão de um sinal analógico para a forma digital pode ser feita tomando-se certa quantidade de amostras da sua intensidade em diversos instantes de modo que cada amostra tenha um valor numérico que possa ser representado na forma digital.

O nosso sinal analógico tomado como exemplo pode ser "amostrado" um certo número de vezes tomando-se valores que correspondem a "altura" de cada retângulo, ou seja, o seu valor em cada instante conforme mostra a figura 185.

 

Figura 185 – Podemos obter em cada instante um valor do sinal, dado pela altura do pulso amostrado
Figura 185 – Podemos obter em cada instante um valor do sinal, dado pela altura do pulso amostrado

 

 

Representando o valor instantâneo de cada amostragem na forma digital, um ciclo de nosso sinal analógico pode se converter em uma sequência de números binários conforme mostra a figura 186.

 

Figura 186 – Sequência de bits correspondentes a amostragem de um sinal
Figura 186 – Sequência de bits correspondentes a amostragem de um sinal

 

 

É claro que estes valores binários podem facilmente ser trabalhados por um microprocessador que seja programado para realizar algum tipo de operação que nos interesse.

Um sinal na sua forma analógica original não poderia sequer se aplicado a um microprocessador, quanto mais ser trabalhado de uma determinada forma por seus circuitos.

 

14.2.2 – Requisitos mínimos

Um ponto importante a ser considerado, quando convertemos um sinal analógico qualquer numa sequência de valores digitais, é a precisão que estes valores representam o sinal original.

Se representarmos um sinal senoidal, por exemplo, com apenas duas amostragens, uma para o valor máximo positivo e outra para o valor máximo negativo estará claro que na "recuperação" da forma de onda original não teremos uma boa fidelidade, conforme sugere a figura 187.

 

Figura 187 – Duas amostragens por ciclo são suficiente para se obter fidelidade na conversão
Figura 187 – Duas amostragens por ciclo são suficiente para se obter fidelidade na conversão

 

 

Fica claro, pela figura 187 que a precisão na recuperação do sinal original e, portanto, em qualquer tratamento digital que dermos ao sinal, depende da quantidade de amostragens: tanto melhor ela será quanto mais amostragens conseguirmos obter para o sinal.

Define-se o limite de Nyquist como a menor frequência de amostragens que podemos utilizar para converter um sinal e que ainda se pode obter precisão. Este limite estabelece que a frequência mínima de amostragens que podemos usar na conversão é de 3 vezes a frequência do sinal amostrado.

É claro que, na prática, é conveniente usar frequências muito maiores do que 2 vezes a do sinal e isso ocorre, por exemplo, quando possível. No caso dos CDs em que a frequência de amostragem é de 44,1 kbytes por segundo onde o que nos leva a 2 vezes a frequência máxima que podemos ouvir que é de 20 kHz.

A coisa começa a complicar-se um pouco se levarmos em conta que para representar um valor instantâneo de uma amostragem com uma definição de 1 byte (8 bits), o que levaria a 256 valores diferentes, precisamos transmitir 8 bits por amostragem.

Assim, se tivermos um sinal de 10 MHz e desejamos amostrá-lo 10 vezes em cada ciclo, isso significa 100 milhões de amostragens por segundo e em cada segundo a produção de 800 milhões de bits, conforme sugerido pela figura 188.

 

Figura 188 – Quanto maior a taxa de amostragem maior a fidelidade na recuperação do sinal
Figura 188 – Quanto maior a taxa de amostragem maior a fidelidade na recuperação do sinal

 

 

O leitor já pode ter uma ideia das dificuldades que ocorrem se desejarmos processar um sinal de vídeo, por exemplo, ou o sinal produzido por um sistema de telecomunicações que opere com várias centenas de megahertz.

Usando apenas um byte por amostragem de um sinal de vídeo, por exemplo, limitamos as suas intensidades a 256 níveis e se isso for feito com um sinal de cor teremos a mesma limitação em relação a sua quantidade.

Uma maneira interessante de se fazer conversão com uma taxa amostragem usando apenas um bit é a chamada sigma-delta que é usada nos conversores dos CD-players. Já estudamos esta técnica no capítulo anterior, mas revisamos seu conceito, pois é importante.

A ideia é simples: a partir do momento em que o sinal a ser amostrado passa por zero, o circuito simplesmente verifica se na amostragem seguinte sua intensidade modificou-se o suficiente para se alterar um único bit.

Se a intensidade ainda se mantém aproximadamente a mesma (dentro da faixa de resolução), o bit enviado ao circuito é zero e a intensidade é mantida. No entanto, se o sinal aumentou o suficiente para ser alterado de um bit, este bit é somado à intensidade anterior.

Assim, no ciclo do sinal amostrado, somando-se ou subtraindo-se um bit pode-se ter sua digitalização com boa precisão, conforme mostra a figura 189.

 

Figura 189 – A conversão sigma-delta
Figura 189 – A conversão sigma-delta

 

 

Mas existem ainda outros requisitos importantes para a digitalização dos sinais que devem ser considerados.

Uma das aplicações mais importantes dos DSPs atualmente é nos sistemas de telecomunicações móveis e nos microcomputadores portáteis com aplicações especiais. como os que reconhecem a caligrafia (reconhecedores de letras).

Nestes equipamentos alimentados por bateria o consumo do dispositivo é um requisito muito importante. Como a complexidade de um DSP aumenta em função da quantidade de amostragens que ele pode fazer e a potencialidade do microprocessador usado, os fabricantes trabalham arduamente tendo em vista este requisito com resultados práticos surpreendentes.

De fato, DSPs que podem operar tanto com sinais digitais como analógicos são usados em telefones digitais.

Além destes fatores devem ser considerados os custos e a facilidade de uso.

Algumas taxas de amostragem utilizadas na prática:

Taxa de amostragem (amostragens por segundo)

Uso

8k

Walk-talkies, intercomunicadores, microfones sem fio

11,025 k

Áudio MPEG, subwoofer e outros de menor fidelidade

16k

Extensão para telefone, VoIP e VVoip

22,050 k

PCM e MPEG de baixa qualidade

32k

NICAM, Rádio Satélite, e microfones sem fio de alta qualidade

44,056k

Áudio do sistema NTSC de TV

44,1 k

Áudio CD, MPEG1 em MP3, VCD. SVCD. PAL e microfones sem fio encriptados

47,5

Gravador de som PCM – primeiros tipos

48 k

Som do vídeo digital profissional, TV digital, som do DVD e filmes – SDI e HD-SDI, compressores e outros equipamentos de som

50 k

Primeiros gravadores de som digital como os da 3M dos anos 70

50,4 k

Gravador Mitsubishi X-800

88,2 k

Equipamentos de som digital, visando CDs de 44,1 k, mixers, equalizadores, câmaras de eco, etc.

176,4 k

Gravadores de som HD-CD e produção de CDs

192 k

Áudio em DVD, DVD LPCM, Som Blu-ray e som HD-DVD

352,8 k

Digital eXtreme Definition usado na gravação de Super Audio CDs

2 822,8 k

SADC com modulação delta-sigma processo conhecido como Dirtect Stream Digital da Sony e Philips

5 644,8

RSD de Taxa dupla, no sistema de 1 bit Direct Stream Digital x2 – Usado em gravadores profissionais DSD

 

 

14.2.3 – Como a conversão do sinal é feita

Existem diversas técnicas para a conversão de sinais analógicos em digitais e que podem ser encontradas em DSPs.

Na figura 190 temos um circuito denominado "flash converter" e que pode ser encontrado na entrada de um DSP tendo por base conversor digital-analógico.

 

Figura 190 – Blocos de um conversor flash
Figura 190 – Blocos de um conversor flash

 

 Para um circuito de 8 bits o que se faz é ligar 256 comparadores em série, tendo cada um em sua entrada de referência aplicada uma tensão que vai determinar seu ponto de disparo.

Estes circuitos são ligados a um decodificador que entrega em sua saída os valores digitais correspondentes ao sinal aplicado na entrada.

Em funcionamento, o circuito é habilitado, por um instante, no momento exato em que se deseja fazer a amostragem do sinal.

A tensão instantânea do sinal é então aplicada ao divisor de tensão ligado à entrada de referência dos comparadores de tensão.

Os comparadores, que vão comutar, são aqueles em que a tensão instantânea do sinal amostrado é maior ou igual à tensão de referência, ou seja, uma quantidade proporcional à intensidade do sinal.

Assim, teremos certo número de sinais de entrada que vão determinar o valor digital que o decodificador vai entregar na saída.

Uma desvantagem deste tipo de conversor é que são necessários tantos comparadores quantos sejam os níveis de sinais que devem ser detectados. A vantagem está na sua alta velocidade de operação.

Existem outras técnicas para se converter o sinal como, por exemplo, os conversores de aproximação sucessiva, o dual slope converter, este último mostrado em blocos na figura 191.

 

Figura 191 – O conversor de aproximações sucessivas
Figura 191 – O conversor de aproximações sucessivas

 

 

 14.2.4 – O microprocessador

O sinal digital obtido pelo conversor é aplicado a um microprocessador que vai submetê-lo a uma série de processamentos, de acordo com a finalidade do projeto. Assim, no chip do DSP além do conversor A/D encontramos um microprocessador.

O uso de microprocessadores específicos para o DSP, e não tipos comuns, deve-se principalmente ao fato de que os sinais precisam ser processados em velocidades muito altas. Um microprocessador comum não tem uma faixa passante suficientemente larga para operar num DSP.

Além disso, normalmente as funções mais usadas se resumem a adição, multiplicação e outras funções simples que devem ser aplicadas rapidamente de forma repetitiva, o que é uma modalidade diferente da operação esperada para os microprocessadores comuns.

Isso significa que os microprocessadores usados nos DSPs possuem características especiais, que os diferenciam dos microprocessadores comuns.

Uma delas é a utilização de circuitos especiais que são capazes de multiplicar números com velocidade muito grande.

Outra característica especial incorporada aos microprocessadores dos DSPs e que leva em conta sua principal aplicação que é com sinais de áudio e vídeo é a incorporação de um modo especial de endereçamento denominado bit-swapped addressing.

Como o nome sugere, a ordem de processamento dos bits na entrada e saída é invertida. Assim com esta arquitetura, os bits são armazenados na mesma ordem que eles são gerados pela amostragem, mas endereçados na mesma ordem em que eles são requisitados, sem a necessidade de se fazer cálculos internos de endereçamento.

No entanto, uma das principais funções encontradas num DSP é o cálculo das transformadas de Fourier.

Através da transformada de Fourier é possível representar uma forma de onda em termos de frequência (pela intensidade relativa do fundamental e harmônicas). Na figura 192 mostramos o que ocorre.

 

   Figura 192 – Usando a Transformada de Fourier
Figura 192 – Usando a Transformada de Fourier

 

 

Esta forma de representação torna simples a implementação de funções de processamento como, por exemplo, a de um filtro capaz de remover uma componente de frequência que leve o DSP a operar como um filtro passa faixas ou rejeita faixas.

  


 

 

 

14.2.5 – Os DSPs comerciais

Diversos fabricantes possuem na sua linha de produtos DSPs. Daremos a seguir alguns exemplos. Observamos que o ideal é que o leitor entre nos sites das empresas citadas para ter informações sobre os seus produtos. Isso ocorre, porque sempre estão sendo lançados novos DSPs com características cada vez mais avançadas.

Assim, começamos pela Analog Devices que possui uma ampla linha de DSPs destacando-se tipos que são usados em brinquedos, sintetizadores de música, além de outras aplicações.

Informações sobre os DSPs da Analog Devices podem ser obtidas na Internet no endereço: http://www.analog.com

A Motorola tem também DSPs em sua linha de produtos como, por exemplo, tipos que podem executar uma instrução por ciclo de clock com baixa potência de consumo. A frequência máxima destes dispositivos pode superar os 80 MHz. Dentre as aplicações dos DSPs da Motorola temos: DVD, HDTV, Dolby, etc.

Uma linha de DSPs muito utilizada atualmente em projetos é a do TMS320 da Texas Instruments.

Os DSPs da Texas são fabricados segundo a arquitetura de Harvard que permite acessos simultâneos a instruções e operadores de dados.

O TMS320 da Texas Instruments é encontrado em diversas gerações e em versões tanto para operação com ponto fixo como com ponto flutuante.

Mais informações sobre os DSPs da Texas podem ser obtidas no site da Internet: http://www.ti.com

 

14.3 - FPGA

Muitas são as alternativas modernas para a criação de um novo produto. Microcontroladores, DSPs, FPGAs, ASICs e mesmo circuitos integrados de funções comuns podem ser utilizados.

Tudo dependerá de diversos fatores que o projetista deve considerar ao fazer a escolha. Esta escolha deve ser a melhor, para atender às necessidades do projeto, para que o produto seja um sucesso.

Uma solução comum que se adota na indústria de grande porte é o ASIC, (Application Specific Integrated Circuit), ou seja, o circuito integrado para uma aplicação específica que é criado com todos os recursos para se fazer o que se deseja. Telefones celulares, CD e DVD players, câmeras digitais são alguns exemplos de produtos que fazem uso de ASICs.

A vantagem deste produto está no fato de se ter um componente único para aquela aplicação, com todos os recursos e apenas eles, minimizando custos e espaço numa placa, pois não há desperdício. A desvantagem está no tempo de desenvolvimento e custo, que só permite que este tipo de aplicação seja adotado numa linha de produção de larga escala.

Outra solução é o microcontrolador, que pode ser programado para se fazer o que se deseja. Existem centenas de soluções no mercado que permitem escolher um microcontrolador com características que sejam mais apropriadas a um projeto. No entanto, este tipo de solução também tem suas desvantagens.

Os microcontroladores, mesmo os que estejam mais próximos do que se desejam, nem sempre têm todas as funções necessárias à aplicação, exigindo que circuitos externos de certa complexidade sejam agregados. Por outro lado, sobram sempre funções que não são usadas, o que também significa um desperdício. O microcontrolador vem com suas funções implementadas na fábrica.

Uma solução cada vez mais adotada é aquela que não vem programada de fábrica ou com todas as funções já disponibilizadas de fábrica. Trata-se da solução em que as funções são implementadas pelo usuário. Trata-se do FPGA, de que trataremos a seguir.

FPGA é o acrônimo para Field Programmable Gate Array consistindo num dispositivo ou hardware que pode ser reconfigurado ou programado pelo usuário. Trata-se de um circuito integrado que vem com um grande conjunto de blocos que, através de programação podem ser configurados de tal forma que o conjunto exerça um determinado número de funções específicas.

Em outras palavras, trata-se de um chip que pode ser programado pelo usuário para fazer o que se deseja. Diferentemente de um microcontrolador que vem com os blocos prontos já numa estrutura definida e que pode ser programado para determinadas funções, o FPGA vem com os blocos desligados, sendo então interconectados por programação pelo usuário para fazer o que ele deseja. O microcontrolador vem com os blocos de funções fixos, enquanto que no FPGA o usuário os cria, conforme sugere a figura 193.

 

Figura 193 – Programando um FPGA
Figura 193 – Programando um FPGA

 

O FPGA foi criado pela Xilinx em 1983, mas hoje existem muitas empresas que disponibilizam em suas linhas de produtos este tipo de componente como a Altera, Actel, etc.

Um FPGA típico conta com três tipos de blocos, mostrados em sua disposição básica na figura 194. Estes blocos são:

 

Figura 194 – Os blocos que formam um FPGA
Figura 194 – Os blocos que formam um FPGA

 

 

CLB- Configuration Logical Blocos ou Blocos Lógicos de Configuração. Trata-se do coração do FPGA, consistindo em circuitos formados pela reunião de flip-flops além de lógica combinacional. Com eles é possível criar funções lógicas. Diversas são as configurações para estas células, dependentes do fabricante e do que se denomina “granulação” (grain).

Assim, nos FPGAs em que os grãos são grandes, os blocos lógicos podem ser complexos contendo pequenos microprocessadores, memórias, unidades lógicas e aritméticas, etc. Nos FPGAs com granulação média, já encontramos blocos lógicos menos complexos como funções lógicas de média complexidade. Finalmente, nos FPGAs de granulação fina ou grãos pequenos, encontramos funções simples em cada bloco como multiplexadores, flip-flops, etc.

Para cada empresa encontramos arquiteturas típicas com diversos tipos de granulação que influem na velocidade do dispositivo. Podemos então em primeiro lugar citar os FPGAs da Altera que utilizam LUTs ou Look-Up Table em que temos células de armazenamento que são empregadas para implementar as funções. Nesta arquitetura, cada bloco armazena apenas um bit, ou seja, um nível lógico 0 ou 1. Esta arquitetura também é usada pela Xilinx, conforme mostra um bloco típico na figura 195.

 

Figura 195 – Arquitetura com LUTs
Figura 195 – Arquitetura com LUTs

 

Neste bloco temos diversas entradas que entram numa matriz programada determinando que tipo de função o bloco executa. Cria-se uma tabela verdade para o bloco, conforme a vontade do usuário. A saída deste bloco é então armazenada num flip-flop e utilizada quando solicitada pelo clock.

Outro tipo de configuração é a usada pela Plessey, mostrada na figura 196, e que consiste em portas NAND de duas entradas que são conectadas a outros blocos de funções de modo a implementar a função desejada.

 

Figura 196 – Arquitetura com blocos NAND
Figura 196 – Arquitetura com blocos NAND

 

Este bloco é do tipo de granulação fina, assim como o denominado “crosspoint” (ponto de cruzamento) que é mostrado na figura 197.

 

Figura 197 – Crosspoint
Figura 197 – Crosspoint

 

Num dos tipos possíveis temos um par de transistor em filas que são dispostos em linhas paralelas.

A Actel utiliza outro tipo de configuração que é mostra a figura 198.

Nela temos as entradas de multiplexadores conectadas de tal forma a permitir a implementação de diversas funções lógicas. Por exemplo, um multiplexador de duas entradas(a) e (b) selecionadas pode ser usado para implementar a função ac+bc.

 

Figura198 – Usando MUXs
Figura198 – Usando MUXs

 

IOB – Input/Output Blocks – Estes são os circuitos que têm por finalidade fazer o interfaceamento do FPGA com o mundo exterior. Eles levam às entradas dos CLBs os sinais externas e depois trazem de volta o resultado de suas operações. Basicamente, estes circuitos funcionam como buffers, exatamente como no caso de microcontroladores e DSP, trabalhando com sinais nos dois sentidos, conforme a programação.

Switch Matrix – São as chaves que fazem as interligações dos diversos blocos ou o roteamento dos sinais. Conforme podemos ver pela figura 199, os blocos lógicos formam uma matriz.

 

Figura 199 – Os blocos comutadores
Figura 199 – Os blocos comutadores

 

Para que o circuito funcione, os diversos blocos devem ser interligados de forma apropriada o que é conseguido através de uma programação externa. Esta programação vai determinar exatamente o que o conjunto de blocos do FPGA vai fazer, ou seja, o modo final de seu comportamento.

As interligações dos blocos são chamadas também de roteamento, e existem diversas maneiras de se fazer isso, sendo as metodologias adotadas pelas diversas empresas próprias, dotando cada produto de características próprias pois elas influem na capacidade de processamento do dispositivo, na sua velocidade e em outros fatores que devem ser observados quando se realizada um projeto.

Na figura 200 temos um exemplo de roteamento utilizado pela Xilinx. Nele, as conexões são cruzadas havendo aquelas que se destinam à interligação dos blocos (passando os sinais de um para o outro) e as que se destinam à programação, ou seja, que determinam o que o bloco vai fazer.

 

Figura 200 – Exemplo de roteamento
Figura 200 – Exemplo de roteamento

 

Para fazer as conexões, são utilizados transistores que funcionam como chaves ligando as diversas linhas de programação dos blocos, conforme elas devam ser utilizadas. Transistores também transportam os sinais para as linhas em que eles devem ser encaminhados.

Analisando estas linhas de interligação, podemos encontrar quatro funções diferentes: as linhas de uso geral que passam de um bloco para outro, conectando chaves. As linhas de conexão direta que tem a função de ligar um bloco a outro diretamente. As linhas longas, cuja finalidade é fornecer retardos para sincronizar os circuitos, e as linhas de clock que enviam os sinais que sincronizam todas as funções do FPGA.

Outras metodologias podem ser encontradas. A Actel, por exemplo, utiliza mais segmentos ou conexões no sentido horizontal do que no sentido vertical, conforme mostra a figura 201.

 

Figura 201 – Tecnologia usada pela Actel
Figura 201 – Tecnologia usada pela Actel

 

Nesta tecnologia as linhas horizontais conectam os blocos comutadores enquanto que as linhas verticais correspondem aos blocos que devem ser comutados.

 

14.3.1 - As Tecnologias de Roteamento

As características das chaves programáveis de roteamento determinam muito do comportamento do dispositivo. Capacitâncias, resistências e a própria tecnologia segundo as quais são fabricadas vão influir em certas características como a velocidade, volatilidade e consumo de energia do dispositivo.

Por exemplo, uma capacitância mais elevada reduz a velocidade de propagação do sinal e, além disso, causa um aumento do consumo do dispositivo. Existem basicamente três tecnologias disponíveis para os FPGAs quanto aos dispositivos que são integrados no chip.

 

a) SRAM (Static Access Memory). Trata-se da mesma tecnologia usada para a fabricação de outros tipos de memórias. Nela, a chave que faz o roteamento dos sinais é um transistor que é controlado por uma memória SRAM, ou seja, uma memória estática. A principal desvantagem desta tecnologia está no fato de que a memória SRAM é volátil, ou seja, seus dados desaparecem quando o circuito é desligado. Para superar esta característica, os FPGAs deste tipo devem usar uma memória externa FLASH que contenha o programa. Com isso, temos de usar componentes adicionais na placa, significando custos e espaço adicionais na placa.

b) Antifuse – trata-se de uma tecnologia em que temos um dispositivo de dois terminais, semelhante a um fusível, conforme mostra a figura 202. O dispositivo apresenta uma alta impedância quando em condições normais, mas passa a apresentar uma resistência muito baixa quando lhe é aplicada uma tensão de programação entre 11 e 20 V. Antifuse ou antifusível, porque diferentemente dos fusíveis comuns que “abrem” com a corrente, este dispositivo “fecha” o circuito quando a corrente de programação é aplicada. Trata-se da mesma tecnologia usada na programação de PROMs.

 

 

Figura 202 – O anti-fuse
Figura 202 – O anti-fuse

 

 

c) Floating Gate (Comporta Flutuante) – nesta tecnologia temos a existência de transistores MOS, como os utilizados nas memórias EEPROM e EEPROM. Estes transistores possuem duas comportas para programação e controle. A maior vantagem desta tecnologia está no fato de que os dados são retidos, mesmo depois de cortada a alimentação, podem ser reprogramados por tensão (EEPROM) e, além disso, esta operação pode ser feita com o CI instalado na própria placa, recurso denominado ISP (In System Programmability).

 

Conforme pudemos ver, existem diversas tecnologias disponíveis e dentro de uma mesma tecnologia, o modo de construção pode variar, por exemplo, o tamanho dos blocos lógicos. O que isso significa para a performance de um FPGA? Como levar em conta estes fatores. Damos a seguir alguns itens importantes que devem ser considerados:

 

 

Comparação com outras tecnologias

Pelo que vimos a respeito dos FPGAs, o leitor já pode ter uma visão geral do que estes dispositivos podem fazer e como são utilizados. No entanto, sua escolha pode ser feita de uma maneira melhor, se fizermos uma comparação com outras tecnologias.

Por exemplo, o tamanho dos blocos lógicos é um primeiro ponto que deve ser observado na escolha de um FPGA para uma aplicação. Um bloco grande implementa mais funções, exigindo-se assim menor número de blocos para o equipamento. No entanto, um bloco maior exige mais espaço. Existe, portanto, um compromisso entre o tamanho do bloco e o número de funções implementadas, devendo o projetista escolher a melhor relação entre os dois para o seu projeto.

A área lógica ativa é menor do que a área lógica total, incluindo a de programação e de saídas/entradas e também as conexões de roteamento. Na verdade, de 70 a 90% da área de um FPGA consiste em conexões de roteamento. Assim, o tipo de roteamento deve ser considerado na escolha de um FPGA para uma aplicação.

A granulação também é importante. Maior granulação (grãos maiores) significa um menor retardo dos sinais. Com o aumento da granulação também temos menor número de percursos para os sinais (entre blocos).

Os FPGAs também não devem ser confundidos com os CPLDs. Enquanto os FPGAs são formados por uma grande quantidade de pequenos blocos, os CPLDs são formados por pequena quantidade de grandes blocos. Os FPGAs são baseados em RAMs, o que significa que eles precisam ser reprogramados quando ligados novamente, existindo uma memória externa para isso.

Os CPLDs são baseados em EPROM, não sendo, portanto, voláteis. Os CPLDs são mais rápidos, por terem menos blocos, mas em compensação são menos flexíveis. Os FPGAS podem ser facilmente roteados para implementar funções aritméticas e RAM, o que não ocorre com os CPLDs. Os CPLDs são mais indicados para projetos simples, enquanto que os FPGAs podem ser usados em projetos complexos.

Comparando com os microcontroladores, vemos que estes componentes já vêm com todas as funções prontas e podemos apenas mexer no software. Se o projeto que desejamos não puder usar o hardware existente precisaremos de componentes externos, o que pode encarecer o projeto.

Da mesma forma, os DSPs já vêm com todas as funções prontas devendo as mesmas serem aproveitadas apenas por programação. Se não puderem comportar o que se deseja, devem ser empregados circuitos externos adicionais.

Finalmente temos o caso de circuitos integrados comuns, que certamente serão necessários em grande quantidade, pois cada um só pode conter poucas funções e além do custo, vão ocupar uma área muito grande na placa de circuito impresso, se a implementação do projeto exigir um circuito de alguma complexidade. Esta solução se aplica apenas a circuitos muito simples.

 

 

Índice

Curso de Eletrônica Digital – Analógica e Digital – Sistemas de Numeração (CUR5001)

Curso de Eletrônica Digital – A Álgebra de Boole (CUR5002)

Curso de Eletrônica Digital – Famílias de Circuitos Lógicos Digitais (CUR5003)

Curso de Eletrônica - Eletrônica Digital – A Família de Circuitos Integrados CMOS (CUR5004)

Curso de Eletrônica Digital – Combinando Funções Lógicas - (Lógica Combinacional) (CUR5005)

Curso de Eletrônica - Eletrônica Digital - Os Elementos Biestáveis (CUR5006)

Curso de Eletrônica - Eletrônica Digital - Flip-Flops e Funções Integradas em CIs (CUR5007)

Curso de Eletrônica - Eletrônica Digital - Os Multivibradores Astáveis e Monoestáveis (CUR5008)

Curso de Eletrônica - Eletrônica Digital - Os Contadores Digitais (CUR5009)

Curso de Eletrônica - Eletrônica Digital - Aplicações para os contadores digitais e decodificadores (CUR5010)

Curso de Eletrônica - Eletrônica Digital - Como Funcionam os Registradores de Deslocamento (Shift-Registers) (CUR5011)

 Curso de Eletrônica - Eletrônica Digital - Multiplexadores, Demultiplexadores, Decodificadores e Displays (CUR5012)

Curso de Eletrônica - Eletrônica Digital - Memórias, ADCs e DACs (CUR5013)

Curso de Eletrônica - Eletrônica Digital - Microprocessadores, Microcontroladores, DSPs e FPGAs (CUR5014)