Baixe o app para aproveitar ainda mais
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.
Compartilhar