O jogo da vida se move bem rápido, se você não usa stop movimento, pode perder
Munged Ferris Bueller cita de lado, o jogo de vida do Conway é o clássico autômato celular que todos nós alcançamos. O método típico é apenas iterar em cada célula na grade, computando o próximo estado em um novo buffer de grade. [K155LA3] Situado para transformar isso em sua cabeça implementando o jogo de vida no hardware de um FPGA.
[K155LA3] A versão usa o cinzel, um novo HDL das comunidades Berkley e Riscv. Sob o capô, o Chisel é Scala com algumas bibliotecas personalizadas que sabem como mapear conceitos de Scala no hardware. Em traços amplos, a Verilog e a VHDL estão focadas em expressar hardware e, em seguida, adicionar a abstração em cima daquela ao longo do ano. O cinzel e outros idiomas de HDL mais recentes se concentram em expressar elementos de propósito geral de alto nível que são mapeados no hardware. Os FPGAS já mapam circuitos complexos e hardware em Luts e outras fatias, então o que é outra camada de abstração?
O FPGA escolhido para este projeto é um digilent Arty A7 com um PMOD VGA para transformar o RGB444 em sinais analógicos para realmente exibir. O que é excelente sobre a implementação [K155LA3] é o quão rápido é. Mesmo correndo a 60 quadros por segundo, é praticamente tão rápido quanto o monitor pode lidar. Claro, muitos computadores que encontram você poderia simular uma grade de 60 x4 8 a 60 fps. Em seguida, em vez de conectar a lógica da grade ao relógio VGA de 60 Hz, ele o conecta ao oscilador externo da placa de 100 MHz. Agora, cada pixel em cada quadro exibido inclui mais de um milhão de gerações.
Infelizmente, até mesmo esta pequena grade de 60 × 48 ocupa 90% das lutas no Artix-7. No futuro, adoraríamos ver uma implementação ainda maior de hardware FPGA capaz de lidar com grades que poderiam realizar computadores inteiros neles. E naturalmente, esta não é a primeira versão do FPGA do jogo da vida aqui na Hackaday.