Skip to content

VitorCBSB/hw-verilog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#hw-verilog

##Proposta: modificar o bitstream carregado na FPGA diretamente.

O bitstream permite acesso às mais minuciosas configurações da FPGA. Com isso, é possível realizar uma evolução intrínseca da mesma forma feita no livro do Thompson.

###Problemas encontrados

Além da pouca documentação acerca do formato do bitstream da Altera, e de ter que aprender a modificá-lo sem que a FPGA fique danificada, ele é cifrado por AES-256. O que significa que, a menos que eu consiga quebrar o AES, essa não é uma opção válida.

##Proposta: gerar arquivos Verilog dinamicamente.

A segunda tentativa veio com o intuito de não mexer diretamente no bitstream, pelas dificuldades anteriores. Perde-se um nível menor de evolução possível, mas não há risco de danificação nem cifras para serem quebradas. O processo envolveu a criação de um programa C++ que em seu algoritmo genético, na avaliação dos indivíduos, gerava seus arquivos Verilog e os carregava na FPGA.

###Problemas encontrados

O principal problema encontrado foi o tempo que cada geração exigia (cerca de 7 minutos para 5 indivíduos). Visto que nas simulações por Icarus Verilog, um problema como um somador de 1 bit com carry-in/out levava cerca de 3000 gerações, era inviável deixar o programa rodando por meses.

##Proposta: simular pelo Icarus somente.

Visto que, na etapa anterior, o maior problema é o fato do algoritmo exigir muito tempo, a simulação é um processo significativamente mais rápido. Aqui, perde-se a evolução intrínseca a favor de desempenho.

###Problemas encontrados

Icarus Verilog não consegue simular feedbacks combinacionais, além do fato de se perder a evolução intrínseca.

##Proposta: utilizar o processador MIPS de OAC.

Utilizando um programa feito puramente em C, sem auxílio de bibliotecas externas, compilado para MIPS, ele fica responsável por rodar o algoritmo genético. O circuito genético passa a ter, além de suas entradas e saídas normais, uma entrada que indica sua configuração.

###Problemas encontrados

O processador MIPS foi feito para ser utilizado pela placa DE2-70 e não pela DE2-115. A memória SRAM usada na 70 é diferente da 115. O projeto teria que ser consideravelmente modificado.

##Proposta: gerar arquivos Verilog dinamicamente (2)

Voltando à ideia de gerar arquivos Verilog dinamicamente, mas com a diferença de que o computador não modifica o circuito, compila e envia os dados. O circuito é compilado uma vez, com a descrição dos indivíduos sendo enviadas pela interface serial, evitando-se a espera de compilações.

###Problemas encontrados

About

Evolvable Hardware experiment with Verilog.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published