CPU

Nesta página iremos abordar a temática da segunda parte do programa desta unidade curricular: os Microprocessadores.

Microprocessador

Um microprocessador é um circuito digital destinado a realizar um conjunto de operações mediante a execução dum determinado programa.

Como exemplos de microprocessadores, temos o Intel Core i9-12900K, ou o AMD Ryzen 9 5900X, que se podem encontrar nos computadores pessoais mais recentes.

Aplicações

Embora estejamos habituados a associar os microprocessadores aos computadores pessoais, a sua aplicação é bem mais vasta. Com efeito é também possível encontrar microprocessadores em:

  • dispositivos móveis (telemóveis, tablets)
  • consolas de jogos
  • set-top box (TV por cabo ou satélite)
  • equipamentos de rede (por exemplo routers)
  • meios de transporte (nomeadamente automóveis)
  • eletrodomésticos (máquinas de lavar, micro-ondas, etc.)
  • dispositivos diversos (por exemplo termómetros digitais, postal c/ música, etc.)

Arquiteturas

Uma forma de classificação dum microprocessador baseia-se na sua arquitetura do conjunto de instruções (ISA – Instruction Set Architecture). Nos dois exemplos anteriores a arquitetura é a x86 de 64 bits. Existem outras arquiteturas como a ARM usado por exemplo nos mais recentes microprocessadores da Apple (o Apple M1).

Como foi referido a ISA define o conjunto de instruções que cada microprocessador é capaz de executar e os respetivos valores binários em que essas instruções são codificadas. Microprocessadores com diferentes ISAs são incompatíveis em termos de código.

Linguagens

As instruções são codificadas por um conjunto de valores binários dando origem ao chamado “código de máquina”.

No sentido de tornar as instruções (e por isso os programas) mais legíveis pelos humanos, cada instrução pode ser representada por uma mnemónica dando origem à chamada “linguagem assembly”.

Mesmo assim, os programas em assembly são de difícil perceção pelo que é possível usar antes linguagens de mais alto nível como o C ou o Python. No primeiro caso, o programa C é transformado nas instruções assembly por um programa chamado Compilador previamente à sua execução. No segundo caso, os comandos Python vão ser interpretados para a linguagem do microprocessador à medida que o programa vai sendo executado através dum Interpretador.

Organização

Embora a organização dos processadores acima indicados seja bastante complexa, a ponto de exigirem milhares de milhões de portas lógicas (o Intel Core i9-12900K possui 2950 milhões de transístores), eles são formados pela interligação de blocos funcionais semelhantes aos estudados nas aulas anteriores.

A imagem seguinte mostra a organização dum pequeno microprocessador. Nele é possível ver blocos nossos conhecidos como registos, multiplexadores, descodificadores, contadores, unidades para a realização de operações aritméticas e lógicas (ALU).

Microcontroladores

Embora os microprocessadores sejam essencialmente constituídos pela CPU (Unidade central de Processamento), existem outros elementos importantes ao seu funcionamento como as memórias onde estão guardados os programas que executam, ou os dados que vão ser operados, ou os circuitos de geração do sinal de relógio, ou ainda os dispositivos de interface com o exterior (pinos de entrada/saída, barramentos de comunicação, etc.).

Quando todos estes elementos são colocados num único circuito integrado, este passa a designar-se de microcontrolador sendo assim mais propício a ser usado em sistemas embutidos.

ESP32

O ESP32 é um microcontrolador fabricado pela empresa chinesa Espressif Systems, baseado num microprocessador desenvolvido pela empresa norte-americana Tensilica com a arquitetura Xtensa LX7.

A seguinte imagem apresenta um dos modelos do microcontrolador ESP32 disponíveis no mercado e que será aquele que iremos usar nas aulas: o ESP32-PICO-D4

Dado o tipo de encapsulamento usado não ser compatível com as breadboards disponíveis no laboratório, vão ser antes usadas umas placas de desenvolvimento (as ESP32-PICO-KIT) que para além do microcontrolador ESP32, inclui:

  • um regulador de tensão que transforma a tensão de 5V presente no barramento USB nos 3,3V requeridos pelo ESP32
  • um circuito de interface com o barramento de comunicação USB
  • o respetivo conetor microUSB
  • 2 botões para ativação de determinadas funções (como o reset)
  • um conjunto de pinos compatíveis com as breadboards

De realçar que o ESP32 inclui as funcionalidade de comunicação WiFi e Bluetooth e daí que a placa inclua também uma antena. Tudo isto por um preço bastante reduzido.

As demais funcionalidades do ESP32 no geral e da placa Pico Kit em particular podem ser vistas nos seguintes links:

MicroPython

Embora a linguagem de alto nível habitualmente usada para a programação deste tipo de microcontroladores seja a linguagem C, no nosso caso iremos usar uma variante da linguagem Python (o MicroPython).

O processo de instalação do MicroPython numa placa ESP32-PICO-KIT assim como o uso dum editor de código adequado será abordado num outra página.

Problema

Imagine-se que se pretendia fazer piscar um LED como o da seguinte figura com uma frequência definida por um computador, ou que este computador mostrasse no ecrã se o botão, igualmente na figura, se encontra premido ou não. Como o fazer? Não parece fácil, certo?

Se a tarefa fosse antes ligar a esse mesmo computador uma impressora ou uma Webcam, certamente que todos o saberiam fazer. Porquê?

Com efeito enquanto periféricos como as impressoras e/ou webcams possuem já interfaces de ligação com ou sem fios, no caso do nosso LED/botão tal não acontece. Ambos interagem através de sinais elétricos simples não dispondo de portos USB ou ligações WiFi.

Na próxima aula veremos como é possível realizar as tarefas acima descritas sobre estes dois componentes eletrónicos, usando para isso a placa ESP32-PICO-KIT que fará a ponte entre o computador (pois vais estar a ele ligado pelo cabo USB) e o LED/botão através dos pinos da placa que por sua vez estão ligados aos pinos do ESP32.