Kit Renesas RL78/G13

Recentemente eu recebi dois kits de demonstração de microcontroladores Renesas para avaliação: um do RL78/G13 e outro do V850. Neste artigo vou apresentar o kit e o microcontrolador RL78/G13, bem como as minhas impressões sobre esta plataforma.

O kit consiste em uma PCI com dimensões de 100 x 30mm e possui um microcontrolador R5F100LEA (o RL78/G13 com 64Kibibytes de flash, 4Kibibytes de data flash e 4Kibibytes de RAM em encapsulamento LQFP de 64 pinos), inclui também um depurador in-circuit com comunicação USB (implementado utilizando um microcontrolador 78F0730), além de dois leds, um trimpot e pads por toda a lateral da placa para acesso aos pinos do MCU.

O kit inclui um DVD com, documentação, exemplos e o ambiente de desenvolvimento da IAR (o Embedded Workbench), um cabo USB e uma pequena chave de fenda para ajuste do trimpot.

Após instalar o software do DVD a aplicação de demonstração pode ser executada. Ela se comunica com o kit através de uma porta COM virtual emulada via USB (desde que os estrapes J6 a J9 estejam na posição 2-3) e permite interagir com o MCU, demonstrando algumas das funcionalidades do mesmo.

 

O microcontrolador RL78/G13

A linha RL78 consiste numa família de microcontroladores de 16 bits fabricados pela Renesas e derivados das linhas 78K e R8C. A linha RL78 compreende microcontroladores com as seguintes características:

  • 20 a 128 pinos nos mais diversos encapsulamentos
  • Até 512 Kibibytes de memória flash, até 8 Kibibytes de data flash e até 32 kibibytes de memória RAM
  • Tensões de alimentação de 1,6 a 5,5V e baixo consumo de energia (aproximadamente 66 µA/MHz)
  • Operação a até 32MHz, com oscilador interno (precisão de 0,1%) ou externo
  • DMA de até 4 canais (2 canais nos modelos menores, inclusive 20 pinos)
  • Unidade de multiplicação, divisão e multiplicação e acúmulo integrada
  • Módulo de segurança para verificação de integridade da flash, e RAM (através de CRC e paridade)
  • Pinos de I/O com possibilidade de seleção de sensibilidade CMOS ou TTL
  • Timers de 16 bits, ADC de 10 bits (com sequenciamento de canais), interfaces seriais (SPI, I2C e UART), controlador de LCD na família RL78/L1x
  • Depurador integrado com comunicação por um fio

CPU RL78

A CPU da linha RL78 é do tipo CISC e segue uma arquitetura Von Neumann com um espaço de endereçamento comum de 1Mibibytes, onde os primeiros 64 Kibibytes são compartilhados com a RAM, registradores SFR e registradores GPR da CPU.

A CPU possui os registradores típicos (PC para apontar a próxima instrução a ser executada, PSW para o armazenamento de flags e bits de controle), SP para indicar o topo da pilha), além de 4 bancos com 8 registradores GPR de 8 bits. Estes registradores podem ser acessados pelos seus nomes  (X, A, C, B, E, D, L, H, ou R0 a R7) ou através dos seus endereços na RAM. Uma instrução especial SEL RBn permite selecionar o banco de registradores ativo.

Os registradores também podem ser agrupados para formar pares (AX, BC, DE e HL, ou RP0 a RP3) nas instruções de 16 bits.

Uma particularidade incomum no conjunto de instruções destes micros é a presença de instruções de manipulação de 1 bit apenas: MOV1 para mover 1 bit, AND1 para operação AND de 1 bit, OR1 para operação OR de 1 bit, XOR1 para operação XOR de 1 bit, SET1 para setar um bit, CLR1 para apagar um bit e NOT1 para inverter um bit (estas três últimas são comumente encontradas em outras arquiteturas).

Graças a um pipeline de 3 estágios, a CPU RL78 pode executar uma instrução a cada ciclo de clock (algo incomum para uma máquina CISC), o que lhe garante uma velocidade de execução bastante elevada (cerca de 1,42DMIPS/MHz segundo o fabricante).

Maiores detalhes sobre a CPU e o conjunto de instruções destes microcontroladores podem ser encontrados no manual de software dos mesmos: RL78 family User’s Manual: Software. Informações sobre o hardware e os periféricos podem ser encontradas no RL78/G13 User’s manual: Hardware.

Periféricos

Os microcontroladores RL78/G13 possuem um excelente conjunto de periféricos de propósitos gerais. O modelo RF100LE encontrado no kit possui 58 pinos de I/O, timer de 16 bits e 8 canais (máximo de 7 canais de PWM), timer de intervalo, cão de guarda, relógio de tempo real (RTC), duas interfaces seriais síncronas (chamadas CSI) capazes de operar no modo SPI ou I2C simplificado, uma UART, uma interface I2C completa e um ADC com 10 canais de 10 bits. Existe também um hardware de segurança, para verificar a integridade das memórias (via CRC e no caso da RAM, através de um bit adicional de paridade) e um circuito de correção BCD que pode ser utilizado após operações de adição e subtração BCD. É interessante que esta funcionalidade esteja disponível sob a forma de um periférico e não de instruções, pois permite que se realize este tipo de operação facilmente em linguagens de alto nível (já que basta mover os valores para registradores SFR).

Timers

Dentre os periféricos, a unidade de temporização TAU (timer array unit) merece destaque: as versões de 20 a 64 pinos incluem apenas uma TAU (somente a unidade 0) com 8 canais, ao passo que os modelos com 80, 100 ou 128 pinos incluem duas TAU (unidades 0 e 1) com um total máximo de 16 canais (na versão de 128 pinos).

Os timers de uma unidade TAU do RL78 são substancialmente mais poderosos que os timers encontrados em outros microcontroladores comuns no mercado. Enquanto na maioria das arquiteturas os canais de um timer são compostos de unidades de lógica e comparação, associadas a um contador binário, na TAU cada canal possui o seu próprio contador, o que equivale dizer que uma TAU de 8 canais é equivalente a 8 timers completos em outras arquiteturas (considerando timer uma unidade composta de um contador e um registrador de comparação). A TAU permite agrupar canais de forma que um canal possa ser o mestre (atuando como contador principal, por exemplo) e os demais sejam escravos (atuando como comparadores, por exemplo). Também é possível ter mais de um agrupamento de canais na mesma TAU.

Além disso, cada canal de uma TAU pode operar em diversos modos: temporizador de intervalo, gerador de onda quadrada, contador de eventos externos, divisor de frequencia (somente no canal 0), medidor de intervalo entre pulsos, medidor de largura de pulso, gerador de atraso, além de modos disponíveis pelo agrupamento de canais: gerador de pulso de largura programável, PWM e múltiplos PWMs (até 7 saídas de PWM).

Além da(s) TAU, os RL78 incluem ainda um temporizador de intervalo, que pode ser configurado para gerar interrupções em intervalos de tempo pré-definidos (ótimo para criar bases de tempo em aplicações, ou ainda para chavear tarefas em RTOSs).

Há também um RTC (real time clock) que permite criar bases de tempo de precisão em aplicações que utilizam relógios e calendários. Neste caso um circuito oscilador secundário de 32768Hz (cristal externo) é utilizado para manter a base de tempo do RTC (os micros de 20 a 36 pinos não possuem este circuito oscilador, neste caso o RTC somente pode operar como um temporizador periódico). O RTC inclui contadores para horas, minutos, segundos, dia, semana, mês e ano. Também é possível configurar um alarme que pode provocar a saída de um modo de baixo consumo.

Finalmente, um circuito de saída programável de clock pode ser utilizado para gerar ondas quadradas de frequência selecionável, permitindo-se emitir facilmente sons e tons através de buzzers ou modular leds em sistemas IR. Os chips de 20 pinos não incluem este periférico, ao passo que os modelos de 30 ou mais pinos incluem dois canais independentes.

ADC

Outro periférico interessante dos RL78 é o conversor A/D: no micro de 64 pinos o ADC implementa 12 canais de 10 bits e possui a capacidade de sequenciamento automático de canais (ou seja, seleciona um novo canal de conversão quando uma conversão é completada) e  pode também operar quando a CPU está um modo de baixo consumo de energia.  Um circuito comparador digital permite gerar uma interrupção (e acordar a CPU) quando o resultado da conversão ultrapassa um valor especificado.

O ADC tem um tempo mínimo de conversão de aproximadamente 2.125µs o que equivale a uma taxa de amostragem máxima de 470ksps. Suficiente para a maioria das aplicações do cotidiano.

DMA

E existência de um módulo de DMA (2 canais nos chips de 20 a 64 pinos e 4 canais nos chips de 80, 100 e 128 pinos) é sem dúvidas um grande diferencial dos RL78. O DMA (direct memory access) permite que um periférico acesse diretamente a memória RAM sem a necessidade de intervenção da CPU. A vantagem óbvia é o aumento de performance: a CPU pode permanecer em outra atividade enquanto a transferência é realizada em background (cada transferência necessita de 2 ciclos de clock, a CPU é paralisada durante a transferência).

Cada canal de DMA dos RL78 pode ser configurado para fazer transferências de até 1024 bytes ou words. É possível realizar transferências de SFRs para a RAM ou da RAM para periféricos. Após um número especificado de transferências o DMA pode gerar uma interrupção, de forma que a CPU possa processar os dados. Uma transferência DMA pode ser iniciada automaticamente pelo ADC, por uma interface de comunicação (CSI ou UART) ou por um canal do timer (TAU).

As  aplicações típicas do DMA são: armazenagem em buffer de amostras do ADC, armazenamento automático de frames recebidos pelas interfaces seriais, transmissão automática de frames, etc. Para ficar mais clara a potência do DMA, vamos supor uma comunicação SPI com uma taxa de transferência de 1Mbps. Neste caso um byte é recebido a cada 8µs. Supondo que se utilize um protocolo de comunicação com frames de 8 bytes, teremos 8 interrupções, uma a cada 8µs, em cada uma o micro deverá ler um byte da SPI e armazená-lo na memória. Na última interrupção (das 8 ) o micro irá processar então o frame.

Nesta aplicação, se utilizássemos o DMA, poderíamos programá-lo para transferir automaticamente os dados recebidos para um buffer na memória e somente após a recepção e transferência de 8 bytes é que ocorreria uma interrupção (ou seja apenas após 64µs). Obviamente que o tempo economizado pode ser utilizado para produzir trabalho útil para a aplicação, ao invés de ser gasto com simples transferências para a memória!

Um ponto digno de nota é que o DMA está disponível mesmo nos micros menores. Não conheço muitos microcontroladores de 20 pinos que possuam dois canais de DMA!

Unidade MAC

Os RL78/G1x incluem também uma unidade de multiplicação MAC que pode fazer multiplicações de 16*16=32bits (com ou sem sinal), 16*16+32=32bits (com ou sem sinal). A unidade MAC também pode fazer divisões de 32 por 32 bits com resultado e resto de 32 bits.

As operações de multiplicação e multiplicação e acúmulo são executadas em um ciclo de clock, ao passo que a divisão é executada em 16 ciclos de clock.

Depuração com um pino

Apesar de não ser um periférico, o sistema de depuração dos RL78 merece destaque pois utiliza apenas um pino para comunicação, permitindo economia de recursos do micro e que um pequeno conector seja utilizado para gravação e depuração in circuit.

Resumo

Os RL78 são, sem dúvida, microcontroladores muito atraentes. A CPU RL78 com seu excelente conjunto de instruções e ótima velocidade, aliada aos poderosos periféricos pode fazer toda a diferença em qualquer aplicação. Segundo o pessoal da Renesas no Brasil, estes microcontroladores podem ser adquiridos através da AVNET e existe inclusive a possibilidade de aquisição de baixas quantidades. Em breve eu  publico um artigo com uma aplicação simples para o kit do RL78/G13.

T+

One thought on “Kit Renesas RL78/G13

Leave a Reply