Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

quinta-feira, 24 de novembro de 2011

...com Verilog, fazendo uma FIFO Síncrona!

E ai meu povo... fim de semestre chegando, cheio de trabalhos e provas pra estudar mas... estou aqui pra compartilhar algumas coisas estressantes (estressante é pouco).
Bom, primeiro vou explicar pq não tava postando nada:
  1.  Sem tempo;
  2.  Não tinha nada de tão interessante pra dizer;
  3.  As coisas interessantes eu não tinha certeza se estava fazendo certo;

Então... bora começar a reza, e vamos falar de coisa boa, vamos falar de Verilog!

É isso ai gente boa, Verilog!! Pois é né?? E então?? (Desembucha logo pow!!)

Calma geeeeeeeente!! Hehehe....

Vamos começar pelo começo, calma, espera, não precisa procurar no Google o que é Verilog o tio aki diz (vou procurar no wikipédia):

Segundo descrição do Wikipédia:

Verilog é uma linguagem de descrição de hardware usada para modelar sistemas eletrônicos. Esta ferramenta suporta o design, verificação e implementação de projetos analógicos, digitais e circuito híbridos em vários níveis de abstração. Com placas especiais é possível descarregar o código gerado nessa linguagem em matrizes de portas denominadas FPGA's (field programmable gate array ou matriz de portas programáveis). Essas placas são constituídas por milhares de transistores e fazem basicamente o que vários circuito integrados fazem, com a diferença de que a matriz é reprogramável.”

Podem acreditar... é isso ai mesmo! Ai vc como um crítico nato q deve ser, vai se perguntar: O que é q eu tenho a v com isso? Ai eu digo: Nada!

Mas a melhor parte é: Fiz três trabalhos em Verilog e vou postar, Rá!

Eu uso o Model Sim pra fazer essas paradinhas, mas podem usar o Quartus que fica legal Tb, porém o teste Bench (oi?) tem que ser feito no model sim. Ta bom, ta bom.... vou explicar o que é teste bench.

O teste bench é um programa que vc faz pra testar outro programa, ou seja, o nosso teste bench vai gerar umas entradas no programa que esta sendo testado a fim de verificar se as saídas correspondem a essas entradas.

if(entendeu==sim)
 printf(“Continue lendo”);
else
printf(“Wikipédia”);


1º - FIFO Síncrona:

A descrição é bem simples e corresponde ao que o próprio nome diz. Em poucas palavras, o primeiro que entra é o primeiro que sai. Essa FIFO tem capacidade para 128 palavras, sendo cada uma de 8 bits. Sabendo disso e de olho na Figura 1 podemos começar.
 Figura 1. Arquitetura da FIFO.

O programa é bem simples, teremos as seguintes entradas:

clock: sinal de clock;
rst: sinal de reset;
r_en: requisição de leitura;
w_en: requisição de escrita;
din: dados de entrada;

e as seguintes saídas:

dout: dados de saída;
empty: sinal de vazio;
full: sinal de cheio.

E essa outra variável auxiliar:

cont: contador para identificar se a memória está cheia ou vazia;

Pronto, ai tipo o programa ta todo comentado a baixo, e é auto explicativo:


Figura 2. Código FIFO (clique na figura pra ampliar).

Sim ai vc pode não ta entendendo o que é essa parte:

Figura 3.Bloco chama SRAM.

Enfim... essa parte é o seguinte, a FIFO ela só gerencia os dados que serão escritos e lidos, porém devemos ter uma memória para guardar os dados. A memória é chamada na FIFO por essa função ai que ta na Figura 3.

O código da memória é ilustrado na Figura 4.


Figura 4. Código memória.

Por fim... temos que testar pra v se ta tudo blz... ai entra o teste bench, q tb está comentado pra vcs se deliciarem. Esse monitor ai vai imprimir o estado de todas as variáveis que estão servindo como parâmetro pra ele, a cada mudança de qualquer uma. Ai é so vc testar se ta saindo tudo certo.
Figura 5. Teste Bench.
Bom, por hj é só!!
Vc: mas, mas, mas... mas vc disse que ia mostrar os três programas que vc fez!
Eu: calma véi.... quer tudo de uma vez! Os outros ficam pra outros posts, mas posso adiantar que um é um BlackJack e o outro uma FIFO Assíncrona.
Valeu!