ZPUino – All free, all open, all yours
O que é o ZPUino? É um "chip", maioritariamente desenvolvido em Portugal, composto por um CPU de 32-bits e os seus associados interfaces com o mundo exterior, mas ao contrário dos "chips" normais, o ZPUino não existe "fisicamente" - ele é na realidade apenas o "desenho" de um chip que pode ser transferido para uma FPGA (Field Programmable Gate Array). Curioso?
Estes dispositivos são como "chips" em branco, que permitem a qualquer pessoa desenhar o interior do "chip" a qualquer altura, personalizando-os para resolver os seus problemas. Podem-se tornar em qualquer coisa digital, e possuem características únicas. Empresas como a Intel, Apple, ARM e outras usam FPGAs para implementar os seus processadores antes de irem para produção.
E é isso que o ZPUino é: uma parte da FPGA. O resto da FPGA livre é para os utilizadores criarem os seus sistemas digitais, que ligados ao ZPUino e sempre dentro do mesmo "chip", permitem objectivos que seriam difíceis de cumprir com outros sistemas, como Arduino e mesmo Raspberry Pi.
Mas, um pouco de história
O Projecto ZPUino começou em 2010 e publicou a primeira versão "alpha" em Dezembro do mesmo ano. O objectivo do projecto era implementar uma plataforma compatível com o Arduino, mas a correr com um core ZPU (um processador open-source) e dispositivos similares com os do original Arduino AVR. O projecto desenvolveu-se em várias fases, e com hardware diferente em cada uma delas.
Começou por ser um simples SoC (System on-a-Chip) com o processador ZPU tradicional, e alguns dispositivos básicos, como UART e SPI. Um "bootloader" e "programador" em software foram tambem implementados, usando a porta série normal e uma variante do protocolo HDLC - o ZPUino foi desenhado para arrancar os seus "sketches", "programas" de uma memória flash externa SPI e parte desta lógica é separada entre o ZPUino e o programador.
Tudo estava pronto para permitir uma transição quase transparente entre o código do Arduino e o do ZPUino.
Durante esta primeira fase, o interface do Arduino e as suas bibliotecas foram adaptadas para o ZPUino, bem como adicionado um novo compilador ao interface, já que na altura o Arduino apenas permitia usar processadores AVR. Neste momento esta abordagem já foi ultrapassada com o lançamento dos Arduinos baseados em ARM, e é usada a nova infrastrutura. No entanto, o ZPUino foi o primeiro sistema a usar o ambiente do Arduino de um modo genérico, que o permitia usar para qualquer processador.
A segunda fase estava relacionada com o "chip" em si. Um novo CPU foi desenhado e implementado (ZPUino Premium), que possuia uma "pipeline" de três estágios e executava grande parte das operações em apenas um ciclo de relógio.
Alguns novos dispositivos foram também adicionados, como Audio (sigma-delta) e temporizadores com suporte PWM avançado. A ligação aos dispositivos é feita usando o standard "Wishbone", que permite que qualquer dispositivo com esta interface funcione imediatamente.
Foram criados algumas variantes do ZPUino, com caracteristicas diversas. Uma destas versões era peculiar, pois implementava uma nova instrução no CPU, que possibilitava operações matemáticas mais complexas. Esta versão foi usada no projecto SoundPuddle original, e desde então esta instrução está presente em todas as versões à data.
O ZPUino já foi usado em projectos como o Soundpuddle, o RetroCade Synth e outros. Nós gostamos particularmente da sua utilização no Papilio Arcade MegaWing
Um pouco sobre o projecto SoundPuddle
Em Abril de 2012, Álvaro Lopes (mentor do ZPUino) foi contactado pelo John English, do Colorado, Estados Unidos, que o questionou se o ZPUino poderia fazer análise de sinal em tempo-real para um projecto que ele queria fazer para o festival Apogaea nesse mesmo ano. Depois de uma análise inicial Álvaro Lopes confirmou-lhe que era possível, e procedeu à implementação numa placa da Gadget Factory Papilio One. Foi um enorme sucesso.
Depois de algumas melhorias for mostrado também no festival "Burning Man" nesse mesmo ano. O "feedback" foi simplesmente fantástico, e o SoundPuddle ainda hoje, com várias variantes, corre vários festivais nos Estados Unidos e em outros países.
Hoje em dia o ZPUino, devido à sua flexibilidade de software e hardware é usado em diversos projectos por todo o mundo.
Talvez um dia o teu projecto também precise desta flexibilidade - e estamos cá para que o consigas concretizar.
Download: ZPUino GitHub
Homepage: ZPUino
Este artigo tem mais de um ano
Isto assim é fixe. Quando tiver tempo vou ver se investigo melhor isto. É desta que invisto numa FPGA 🙂
Caro, terei todo o gosto em elucidar-te e ajudar-te nos teus projectos 🙂
Álvaro
ZPUino
Muitos Parabéns, grande projecto! Também quero investir num FPGA!
Vantagens em relação ao Mojo v3 ???
Obg.