Memória RAM com Saída Temporizada

Memória RAM com Saída Temporizada – Placa DE0

O projeto a seguir tem como objetivo apresentar a saída de um memória implementada no FPGA Ciclone III presente na placa DE0 de forma periódica. O projeto fará a leitura dos endereços da memória de forma sequencial e sendo incrementada a cada 0,5s e a escrita pode ser feita concomitantemente com a leitura.

O projeto é implementado em VHDL e simulado com o Modelsim-Altera, por meio de testbench sendo este um exemplo de circuito sequencial.

 Nesse projeto será utilizado apenas a Placa DE0®.

Descrição do Funcionamento

Para este projeto será implementado uma memória de 8 x 8, a qual poderá ser lida e escrita ao mesmo tempo. O projeto também apresentará um contador interno para temporizar a saída, de forma que a cada 0,5s incrementa o endereço de memória lido. O projeto utilizará 9 chaves, sendo 1 de chip enable e 8 para a escrita de dados, 2 botões e 8 LEDs para apresentar o dado lido.

Descrição em VHDL

Para implementar memória do projeto criou-se um tipo de varivel usando um array com 8 posições de std_logic_vector de 8 bits, formando assim a memória de 8×8. O preescaler para incrementar o endereço de saída precisa dividir por 25M, pois o clock é de 50Mhz e o objetivo é a mudança do endereço a cada 0,5s.

O Código começa com a declaração da entidade:

 

Dentro da architecture se declara o tipo memória para a utilização em seguida do sinal desse tipo,  que será a memória RAM do projeto.

 

O processo principal pode ser dividido em quatro partes: reset, escrita, proteção contra ruído e leitura. Primeiramente se declara as variáveis usadas no processo:

 

Quando o reset está pressionado são assumidos os valores padrão de inicio do programa , apresentados abaixo:

 

A escrita possui quatro variáveis de controle: wren, cen, flag, conta. O signal wren (write enable) indica se foi solicitado a escrita de um dado. A variável cen (chip enable) determina se a memória está habilitada, a flag previne que em uma única requisição seja gravado um dado em mais de um endereço de memória. Por último, a variável conta tem por objetivo rejeitar o ruído de trepidação gerado ao pressionar o botão.

 

A proteção contra ruído funciona como um delay para que possa ser feita a próxima gravação, nesse caso adotou-se 0,5s.

 

A leitura ocorre enquanto o cen está habilitado. Para a leitura há um prescaler de 25M para que o endereço lido só seja incrementado a cada 0,5s. Quando o cen não está habilitado, atribui-se alta impedância para a saída.

 

Simulação

Para simular o funcionamento da memória será mandado o comando de gravação de alguns dados e ler os dados gravados. Para diminuir o tempo da simulação alterou-se o topo do valor da variável  responsável pela proteção contra ruído para 3. O código do testbench é composto por duas partes: a geração de clock e a simulação de leitura e escrita. Abaixo segue o processo responsável pela geração de clock:

 

 

Em seguida, atribui-se os valores de reset e cen de forma que o projeto possa funcionar.

 

O passo seguinte é mandar os pulsos de escrita e de leitura para observar se o projeto funcionará como esperado. Note que há uma sequencia de pulsos de habilitação de escrita para testar a proteção contra ruído.

 

O resultado obtido na simulação pode ser observado pelas formas de onda abaixo:

 foram_onda_1

Figura 2: Formas de onda simuladas

forma_onda_2

FIgura 3: Forma de onda simuladas (continuação).

Estrutura Física

 Placa_DE0

Figura 4: Projeto implementado na placa DE0.

O projeto conta apenas com a placa DE0®, de forma a utilizar 8 LEDs representando a saída, 8 chaves para a entrada de dados, 1 chave para a entrada da habilitação de chip, 1 botão de reset, 1 botão de habiliatação de escrita e 1 pino para o clock. Para a atribuição de pinos utilizou-se o manual do usuário da placa DE0®.

Figura 5: Atribuição de pinos do projeto

Gravação e Teste

Para fazer o teste basta gravar o programa seguindo as intruções encontradas no tutorial ou no próprio manual da placa DE0. Em seguida basta dar os comandos de gravação  e leitura e observar o resultado. Abaixo segue o video de operação do projeto:

Arquivos de Projeto

Links Externos

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *