Buscar

Relatório Memória (VHDL)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE FEDERAL DO ACRE 
CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS 
CURSO DE BACHARELADO EM ENGENHARIA ELÉTRICA 
 
 
 
 
 
Sander Bryan Felicio da Cruz Brito 
 
 
 
 
 
 
 
RELATÓRIO DO PROJETO EM VHDL DO CONTROLADOR DE MEMÓRIA 
 
 
 
 
 
 
 
 
 
 
 
 
Rio Branco 
2015 
Sander Bryan Felicio da Cruz Brito 
 
 
 
 
 
 
 
 
 
 
 
 
 
RELATÓRIO DO PROJETO EM VHDL DO CONTROLADOR DE MEMÓRIA 
 
 
Relatório de Projeto apresentado à disciplina de 
Circuitos Digitais II, do Curso de Bacharelado em 
Engenharia Elétrica, do Centro de Ciências Exatas e 
Tecnológicas, da Universidade Federal do Acre, 
como requisito parcial para obtenção da N2. 
 
 
Prof. Dr. Roger Fredy Larico Chávez 
 
 
 
 
Rio Branco 
2015 
SUMÁRIO 
 
 
 
 
1. OBJETIVO ......................................................................................................................................4 
2. INTRODUÇÃO ...............................................................................................................................5 
3. PROJETO EM VHDL DA CALCULADORA .............................................................................7 
3.1. Descrição ...............................................................................................................................7 
3.2. Esquemático .........................................................................................................................8 
3.3. Limitações .............................................................................................................................9 
3.4. Simulações ......................................................................................................................... 10 
4. CONCLUSÃO ............................................................................................................................. 13 
5. REFERÊNCIA BIBLIOGRÁFICA ............................................................................................ 14 
6. ANEXO ......................................................................................................................................... 15 
6.1. Código Documentado ..................................................................................................... 15 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1. OBJETIVO 
 
 
 
 
Este relatório tem por finalidade apresentar o processo e o resultado do 
desenvolvimento em linguagem VHDL de um controlador de Memória de Acesso 
Aleatório (RAM). Definiremos uma memória com endereçamento de 4 bits para 
palavras de 3 bits, com acesso aleatório e definido por comandos claros. Apresentarei 
as diversas características da descrição de hardware, bem como sua relação com os 
aspectos funcionais do elemento processado (no caso, a memória). Além disso, hão 
de ser discutidas as limitações do projeto, bem como as possibilidades de uso, e 
melhorias. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2. INTRODUÇÃO 
 
 
 
 
Ao longo da história, o ser humano demonstrou preocupação em registrar 
dados que representassem as diversas características de suas vidas. Já na pré-
história, vemos os registros de grandes caçadas em simples pinturas rupestres. 
Aumentando o nível de abstração, contemplamos o surgimento da arte de ler e 
escrever em cidades da Mesopotâmia por volta de 3400 a.C. Com carácter 
pictográfico (desenhos), esses signos (onde os mais conhecidos são os hieróglifos 
egípcios) se desenvolveram para alfabetos mais complexos, como o dos Fenícios, 
que tornou-se a base da escrita moderna. 
A preocupação de registrar perpassou a antiguidade com seus pergaminhos, e 
adentrou na Idade Média, com o árduo trabalho de monges copistas – tendo em mente 
sempre que registrar o passado seria construir as bases do futuro. Com o 
Renascimento e o Iluminismo, houve uma explosão científica por toda a Europa, e 
com ela, um rápido avanço tecnológico, que teve ápice nas Revoluções Industriais. 
Com o projeto da Analytical Machine, de Charles Babbage (1791 – 1871), 
despontou a era dos computadores. E viu-se nessas extraordinárias máquinas, a 
incrível capacidade não apenas de operação, mas de armazenamento eficaz e 
otimista de dados. 
O tempo passou, a abstração aumentou, e as gigantescas máquinas 
diminuíram consideravelmente, sobretudo pelo advento dos microchips desenvolvidos 
pioneiramente por Jack Kilby em 1958. Aliado a eles, os dispositivos de 
armazenamento, conhecidos por “memória” ganharam destaque. 
Estes dispositivos demonstraram eficiência ao utilizarem o sistema binário de 
codificação, associados aos Circuitos Digitais. Percebeu-se que armazenar 
informação consistia em simplesmente manter um nível lógico (em alto ou baixo) e 
atribuir a um conjuntos de dados armazenados um cero sentido de uso. 
A capacidade dos circuitos deriva das noções de portas lógicas. Estas, realizam 
operações pré-estabelecidas, cujos resultados dependem exclusivamente dos níveis 
lógicos de entradas. As portas básicas conhecidas são AND (ativa quando todas as 
entradas estão ativas) e OR (inativa apenas quando todas as entradas estão inativas). 
Estas portas, por sua vez, podem ser arranjadas num tipo de circuito 
denominado latch, conforme vemos na Figura 1. Este dispositivo tem a capacidade de 
armazenar um bit (unidade binária, 0 ou 1). Adicionando-se um pulso que varia 
conforme frequência pré-definida (um clock), teremos o que conhecemos por flip flop. 
Um conjunto destes dispositivos, sujeitos a um mesmo clock é um registrador. Em 
outras palavras, um dispositivo de memória. 
 
Figura 1 
Extraído de “TOCCI, Ronald J.; WIDMER, Neal S. SISTEMAS DIGITAIS – Princípios e Aplicações. 
Tradução de José F. M. do Amaral e Jorge L. M. do Amaral. 7. ed. Rio de Janeiro: LTC, 2000. p 109.” 
 
Há duas maneiras de utilizar memórias no processamento de dados em um 
computador. Primeiro, como memória principal, onde é exigido uma operação rápida 
de dados. Esta memória, conhecida como memória de trabalho atua diretamente com 
a CPU (Unidade Central de Processamento), simultaneamente à ocorrência das 
operações. Atuando diretamente com o processador, temos a Memória Cache. 
Associado, temos as Memórias RAM (de acesso aleatório) e ROM (somente de 
leitura). E, em anexo, uma memória de armazenamento de massa, tratada como 
memória auxiliar. (TOCCI, 2000, p. 417) 
Neste projeto tivemos a preocupação de descrever uma memória do tipo RAM. 
Esta tem como característica principal o acesso a qualquer de seus endereços num 
tempo uniforme, independentemente da posição do mesmo. Além disso, é capaz de 
ler a informação do endereço e escrever no mesmo (carregando dados novos). 
Para tal fim, nos valemos da Linguagem de Descrição de Hardware de Circuito 
Integrado de Velocidade Muito Alta (VHDL). Este tipo de linguagem foi desenvolvida 
pelo Departamento de Defesa dos Estados Unidos, ainda na década de 1980, de 
modo a documentar precisamente os circuitos físicos. Assim, para nós, civis, também 
tornou-se uma ferramenta indispensável na descrição de nossos projetos de modo 
conveniente. (TOCCI, 2013, p. 85) 
 
 
 
 
 
 
3. PROJETO EM VHDL DO CONTROLADOR DE MEMÓRIA 
 
 
 
 
3.1. Descrição 
 
O controlador de memória pode ser descrito a princípio, pela entidade da 
descrição de hardware. 
A princípio, sincronizamos todas as funções pelo pulso alternado de frequência 
estabelecida de clock. Todas as operações vão ocorrer unicamente na borda desubida do clock. 
Temos uma entrada adress que direciona o controlador para desejado 
endereço de memória. Esta entrada possui 4 bits, ou seja, significa que existem 16 
posições diferentes de armazenamento de dados nessa memória – e que podem ser 
acessados aleatoriamente praticamente ao mesmo tempo. 
A palavra que será escrita em cada endereço corresponde à uma entrada de 3 
bits denominada datain. Foi selecionado este tamanho conforme a requisição 
solicitada: a palavra deveria ter o tamanho de 2+n, sendo n o segundo dígito menos 
significativo do Registro Acadêmico. Sendo meu registro 20131810014, 
estabelecemos uma entrada de dados de 3 bits. 
Porém, a cada evento de clock (no caso, a borda de subida), a posição da 
memória é continuamente lida. Para que a informação na entrada datain seja escrita 
na selecionada posição do adress (e não apenas lida), é preciso pôr em alta um 
controlador do comando de escrita, chamado comand. Sempre que ele estiver em 
nível lógico alto, e durante o pulso de clock, a palavra carregada na entrada será 
escrita nessa posição. 
Por fim, a única saída, um vetor de 3 bits (do tamanho da entrada) denominado 
dataout. Trata-se simplesmente da função de leitura. A cada pulso de clock, esta saída 
vai apresentar justamente o valor contido no referido endereço carregado 
(independente de ele estar sendo escrito ou não). 
Podemos sintetizar a descrição na seguinte tabela: 
Nome da Porta Característica Descrição 
clock Entrada (pulso) Pulso de eventos 
comand Entrada (bit) Comando de escrita 
adress Entrada (vetor) Endereço 
datain Entrada (vetor) Dado de entrada 
dataout Saída (vetor) Leitura de dados 
3.2. Esquemático 
 
Definidas as entradas e a única saída, podemos muito bem representar a 
entidade num esquema, conforme a Figura 2. Vale bem notar a diferença entra as 
setas. As que se dirigem para o bloco são justamente as entradas, e a que sai dele é 
a saída. A opção pela espessura indica o fato de Porta (entrada ou saída) ser um 
único bit, ou um vetor deles. 
 
 
 datain 
 adress 
 CONTROLADOR DE MEMÓRIA RAM dataout 
 comand 
 clock 
 
Figura 2 
 
Devido ao erro mostrado na Figura 3, não foi possível a compilação do código 
de descrição pelo software Quartus, portanto não temos uma síntese no visualizador 
RTL para apresentar. 
 
Figura 3 
No entanto, temos uma ideia básica da estrutura de uma memória, conforme 
podemos verificar na Figura 4. 
 
Figura 4 
Extraído de “TOCCI, Ronald J.; WIDMER, Neal S. SISTEMAS DIGITAIS – Princípios e Aplicações. 
Tradução de José F. M. do Amaral e Jorge L. M. do Amaral. 7. ed. Rio de Janeiro: LTC, 2000. p 448.” 
 
Neste exemplo ilustrado, temos buffers de entrada de 4 bits, e buffers de saída 
com o mesmo número. Temos uma função e habilitação para LEITURA ou ESCRITA, 
e um endereçamento de 64 bits. A única diferença entre a representação da imagem 
e o projeto em questão é que o endereçamento é de apenas 4 bits. 
 
3.3. Limitações 
 
Esta descrição de memória é por demais simples se comparado a qualquer 
memória real utilizada no mercado hoje (que tem maior densidade, e são muito mais 
rápidas). 
Primeiro, temos uma limitação de tamanho da palavra (ocasionada sobretudo 
pela delimitação requisitada). A quantidade de informação é por demais pequena se 
comparado ao do endereço. É fácil ver que gastamos mais espaço armazenando o 
código do endereço (que é de 4 bits) do que o da própria palavra (de apenas 3 bits). 
Desse ponto de vista, seria mais interessante aumentar o tamanho da word em 
prol do número de endereços, que facilitaria o carregamento de informações grandes 
(que exigiria a abertura de mais endereços para a compreensão da mesma 
informação). 
A existência do clock pode ser encarada como uma limitação, pois exige uma 
maior habilidade de operação do controlador. Mas o sentido de sua existência é evitar 
operações ambíguas no caso de dados não carregados corretamente. Graças a ele, 
todas as operações são sincronizadas num mesmo instante. Por isso, o operador 
precisa entender que as operação não são imediatas (assíncronas), mas aguardam 
pulsos pré-definidos. 
 
3.4. Simulações 
 
Pelo software ModelSim pudemos simular o funcionamento do controlador de 
memória. Sendo muitos os estados de armazenamento possíveis, selecionei alguns 
casos decisivos e críticos de análise, para apresentar sua simulação. Seguem os 
casos e os devidos comentários. 
Figura 5 – Estando ativo o clock, o dado carregado em datain (111) não é 
escrito na posição do adress (0000), visto que o comando de escrita (comand) está 
desativado. Por outro lado, um pulso depois de ter sido carregado, ele aparece no 
sinal read_adress, indicando a leitura do endereço. Como não tem nada ainda definido 
nessa posição (pois é o início da simulação), dataout apresenta a leitura da posição, 
que justamente indefinida ainda (UUU). 
 
 
Figura 5 
 
Figura 6 – Basta ativar o pulso comand que os dados carregados em datain são 
carregados no endereço adress no seguinte pulso de clock. 
 
Figura 6 
 
Figura 7 – Sempre que é carregado, o sistema aguarda um pulso de clock para 
que, estando comand em alto, para escrevê-lo no adress escolhido. 
 
 
Figura 7 
 
Figura 8 – Mantendo o cursor sobre o sinal de memória, podemos observar os 
valores que estão em cada endereço da memória. 
 
 
Figura 8 
 
Figura 9 – Desativando o comand, a memória passa a operar apenas em modo 
de leitura. A partir deste instante, a saída dataout dependerá apenas do valor que está 
registrado na posição indicada no adress. Tanto que, se mudarmos a entrada em 
datain, a saída não muda, ao passo que mudando o adress, a saída obedecerá ao 
que está “contido” nele. 
 
 
Figura 9 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4. CONCLUSÃO 
 
 
 
 
A questão que envolve o tratamento e operação de dados e seu 
armazenamento, sobretudo, é função vital da sociedade moderna, dependente de 
informação instantânea. E, mais do que isso, exige muita informação em pouco tempo. 
Logo, ao projetar instrumentos que visem solucionar estes problemas, o engenheiro 
deverá fazer uma série de considerações. 
Primeiro, a quantidade de dados que se deseja armazenar. Deve-se fazer uma 
comparação de necessidade, para balancear adequadamente o tamanho do 
endereçamento e da palavra (dando, em geral, preferência ao tamanho da palavra). 
Assim escolheremos o número adequado de bits. 
Segundo, a sincronização destes dados. No caso do referido projeto, utilizamos 
um pulso simples de clock, cujo ajuste de frequência dependerá exclusivamente da 
velocidade garantida com que os dados são carregados com segurança. Assim, 
evitamos que um pulso ocorra num instante de instabilidade no carregamento de 
entrada, que seja do comando de escrita, do endereço ou mesmo do datain. 
E, claro, não pode-se esquecer da possibilidade de acesso aleatório rápido, 
que garante adequação aos modelos exigidos pelo mercado (considerando sempre a 
aplicação de destino). 
 
 
 
 
 
 
 
 
 
 
 
 
 
5. REFERÊNCIA BIBLIOGRÁFICA 
 
 
 
 
BLAINEY, Geoffrey. Uma breve história do mundo. (versão brasileira) São Paulo: 
Fundamento, 2008. 
ROONEY, Anne. A História da Matemática – Desde a criação das pirâmides até a 
exploração do infinito. São Paulo: Makron Books, 2012. 
TOCCI, Ronald J.; WIDMER, Neal S. SISTEMAS DIGITAIS – Princípios e 
Aplicações. Tradução de JoséF. M. do Amaral e Jorge L. M. do Amaral. 7. ed. Rio 
de Janeiro: LTC, 2000. 
TOCCI, Ronald J.; WIDMER, Neal S.; MOSS, Gragory L. SISTEMAS DIGITAIS – 
Princípios e Aplicações. 11. ed. Prentice Hall, 2011. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6. ANEXO 
 
 
 
 
6.1. Código Documentado 
 
Eis o print do código VHDL documentado.

Outros materiais