Hackear um hardware para que ele execute uma função diferente daquela para a qual foi projetado é a essência do DIY. Transformar mini computadores em consoles ou projetores e modificar as propriedades de um roteador são os exemplos mais comuns, mas há entusiastas por aí com conhecimento suficiente para “fazer falar” certos componentes, e isso inclui os FPGAs. Isso nos leva ao blog pessoal do engenheiro Thanassis Tsiodras, que decidiu compilar uma CPU open source dentro do FPGA de um pequeno thin client. Por quê? Porque pode...
A origem do projeto
A história começa com um artigo de Tom Verbeure, engenheiro de hardware na Nvidia. Basicamente, o que Verbeure fez foi construir um ray tracer em tempo real usando um FPGA muito barato, o que não é exagero porque hoje é possível comprar lotes inteiros no eBay por menos de 200 dólares. O hardware em questão é o thin client Pano Logic, disponível nas versões G1 e G2. O plano da empresa era oferecer um substituto para computadores tradicionais em ambientes empresariais com a flexibilidade de um FPGA, mas seus responsáveis desistiram em 2013, e seu hardware ficou flutuando no éter, sem suporte.
O thin client Pano Logic e a comunidade
No entanto, a partir daí começaram os esforços da comunidade para dobrar a vontade desses thin clients. Assim chegamos ao blog do engenheiro e desenvolvedor Thanassis Tsiodras, que obteve um Pano Logic G2 equipado com o FPGA Spartan6 LX100. Seu objetivo? Compilar uma CPU open source em seu interior e, aproveitando o tamanho natural do FPGA, fazê-lo funcionar como multi-core. Depois de desmontar o thin client, ele criou o cabo JTAG para ligar um programador Xilinx compatível (que custa menos de 25 dólares no eBay).
As dificuldades com o software
Foi aqui que surgiram dificuldades. Para ser mais específico, a ausência de suporte em versões recentes do software oficial. Synthesis, o pacote de ferramentas da Xilinx, não suporta o Spartan6 LX100 em sua edição mais recente (e gratuita) para Linux. A única compilação compatível com LX100 funciona dentro do Windows, mas há algo mais: o trabalho desse “setup” é instalar uma máquina virtual... com uma imagem Linux. Por um momento ele pensou que poderia extrair dessa imagem todos os elementos necessários para sua execução nativa, mas encontrou um limite no endereço MAC da placa de rede virtual, já que o software espera ver esse endereço e nenhum outro.
O resultado: um processador dual-core
O restante da entrada finalmente foca no plano original, que é compilar uma CPU dentro do FPGA. Admito que o conteúdo técnico fica um pouco pesado. Em outras palavras, isso é qualquer coisa menos um projeto para iniciantes. O acesso ao hardware pode ser econômico (um FPGA em um produto abandonado combinado com um programador de 25 dólares não soa tão mal), mas o código não deixa de agir como filtro. Mesmo assim, o resultado impressiona: um processador LEON3 dual-core a 50 MHz, “sintetizado” em um FPGA destinado ao lixo. O resto do projeto tentará acessar outros componentes do hardware, especialmente os 128 MB de memória DDR2. Se quiser saber mais, não hesite em visitar o blog de Thanassis.
Site oficial: Clique aqui