Primeiro Trabalho de Sistemas Digitais
Transcrição
Primeiro Trabalho de Sistemas Digitais
Primeiro Trabalho de Sistemas Digitais 1 – Introdução O objetivo deste trabalho é criar um divisor de frequência simples em linguagem VHDL comportamental e simular o projeto no software ISE. 2 – Planejamento Um divisor de frequências recebe um pulso em sua entrada e sua saída também é um pulso com frequência menor comparada a frequência da entrada. O projeto em VHDL será composto por um módulo, chamado divisor_simples. Será definido o clk como entrada e o clk_out como saída. 3 – Criação dos Códigos Fonte em VHDL Para criar os códigos fontes foi utilizado o Software ISE da empresa Xilinx. Após iniciado o software, é necessário criar um novo projeto. A Figura 2 corresponde a primeira janela que abre. Ao se criar um novo projeto no ISE é necessário escolher uma pasta que será a workspace. Nela, todos os arquivos necessários para o funcionamento da simulação e implementação do projeto serão salvos. Como cada conta possui um limite de memória ocupada, foi escolhida a pasta tpm que é a pasta para arquivos temporários utilizada no laboratório e com isso, o limite de dados que podem ser armazenados não será estourado em nenhuma conta dos alunos que participaram deste trabalho. Após a escolha da workspace, é necessário dar um nome ao projeto, o mesmo nome do módulo principal. Além disso, é escolhido o tipo do módulo de maior hierarquia que é do tipo HDL. Na janela seguinte, escolhe-se a plataforma de desenvolvimento (Evaluation Development Board) que é a Spartan3AN Starter Kit. Após criado o novo projeto, iremos criar os códigos contes. Para isso iremos na aba Project > New Source. Na nova janela é escolhido VHDL Module e o nome do módulo é divisor_simples. Na janela seguinte, é possível criar as portas do módulo só que essa criação será feita mais adiante. Após criado o módulo divisor_simples, serão criadas as suas entradas e saídas, além da sua lógica de funcionamento. Observações sobre a estrutura de um código VHDL encontram-se no Apêndice 1. A Figura 1 mostra o início do código que é uma documentação do projeto. É importante a realização de uma documentação adequada com informações a respeito do projeto e com comentários ao longo do código para facilitar uma leitura futura de fácil entendimento. Além disso, é mostrado o início do código de fato. A primeira parte é a respeito de quais bibliotecas VHDL serão usadas e a segunda parte é a criação da entity divisor_simples. Na entity serão declaradas as constantes, entradas e saídas do módulo. Figura 1 O jeito mais simples e comum de se fazer o divisor de frequências é com o auxílio de um contador: a saída irá variar apenas quando alguma condição do contador for satisfeita. A Figura 2 mostra a segunda parte do código que será a lógica de funcionamento do divisor de frequências. Dois sinais internos são usados como parte da lógica. Um deles será o contador e serão os responsáveis por informar o momento de mudança dos valores de cada saída, determinando assim a frequência de saída de acordo com o valor máximo assumido. O outro será um sinal que sofrerá alteração ao longo do funcionamento do divisor e seu valor será direcionado à saída de clk_out, pois nenhuma saída pode ser diretamente manipulada em VHDL. Figura 2 Após desenvolvido o código, será feita a simulação. 4 – Simulação A simulação do projeto é feita no ISim que é a ferramenta utilizada pelo ISE para simulações. Instruções de como simular um projeto no ISE encontram-se no Apêndice 2. Para realizar a simulação será forçado um clock em clk 50 MHz de frequência que começa em nível lógico zero. O tempo total de duração da simulação será de 600ns. Figura 3 Pode ser observado que a frequência do clock foi dividida por 2n, como n é igual a 2, a divisão vista na saída clk_out é por 4. Analisando o período do clock, vemos que é de 20ns, o que nos leva a 50MHz e no clk_out o período é de 80ns, que por sua vez leva a uma frequência de 12,5MHz, ou seja, a divisão por 4 é claramente observada. 4 – Conclusões A implementação do divisor de frequências utilizando VHDL comportamental gerou o resultado esperado, agregando, dessa forma, conhecimento sobre a linguagem VHDL e o uso do software. Apêndice 1 Um codigo em VHDL pode ser estruturado de várias maneiras e há inúmeras funções disponíveis. Nesse trabalho o conhecimento necessário de VHDL é básico e será feito um panorama geral e simplificado. As primeiras declarações do código VHDL são library e use. Elas permitem a utilização de um package. Um package de VHDL contém subprogramas, definições de constantes, e/ou definições de tipo para ser usado através de um ou mais sistemas. Cada package contém uma “seção de declaração”, na qual o subprograma disponível (i.e. exportável), constantes e tipos são declarados, e um “corpo do package”, no qual as implementações do subprograma são definidas, juntas com qualquer constante ou tipos usados internamente. A seção de declaração representa a porção do package que é “visível” ao usuário do package. A implementações de fato das subrotinas no package não são tipicamente do interesse do usuário. A segunda declaração é a entity. Essa é a parte principal do projeto, é a interface do Sistema que descreve as entradas e saídas. Composta de duas partes: parameters e connections. Parameters refere-se aos parâmetros, exemplo largura de barramento, são declarados como generics. Connections por sua vez, refere-se como ocorre a transferência de informações, são declarados como ports. O nome de uma entity deve identificar o sistema, podendo usar letras e números, porém deve iniciar por uma letra. A terceira declaração é a architecture. A quarta declaração é process. Um process sequencial e independente representa o comportamento de uma parte do sistema. O corpo do process é uma lista sequencial de declarações. A sequência de declarações no process é executada em ordem, começando pela primeira. Depois da última declaração do process ser executada, o process é repetido desde a primeira declaração e continua a se repetir até ser suspenso. Se a lista de sensibilidade opcional é dada, uma wait on … declaração é inserida depois da última declaração sequencial, causando a suspenção do processo naquele ponto até que ocorra um evento em algum dos sinais na lista, nessa hora o process é reexecutado com a primeira declação no process. Uma função da library usada é a if/else. E como o próprio nome sugere é utilizada para realizar comparações. Um módulo VHDL é um arquivo com contém o código VHDL como um todo. Com prática a organização de um código VHDL se mostrará de fácil estruturação, pois seu mecanismo de funcionamento é simples, porém muito poderoso e abrangente. Apêndice 2 Para se realizar uma simulação no ISE é utilizada a ferramenta do ISE chamada ISim. Para isso é necessário mudar o modo view (que está localizado na barra de ferramentas logo acima do esquemático de hierarquia) de implementation para simulation. Depois dê um clique em cima de do processo de maior hierarquia e em process dê um duplo clique em Behavioral Check Syntax. Se não ocorrem erros e a sintaxe estiver correta, dê um duplo clique em Simulate Behavioral Model e o ISim será aberto em uma nova janela. Na Figura 4 estão localizados os botões citados. Figura 4 Toda vez que uma nova simulação for ser executada, é necessário reiniciar o status do simulador. Isso é feito clicando no botão restart (seta mais a esquerda das três). O tempo de execução da simulação é determinado numa caixa do lado direito do botão restart. O botão com uma seta e uma ampulheta inicia a simulação e essa terá a duração do tempo determinado pelo usuário. Para forçar um clock ou um valor constante em uma entrada clique com o botão direito em cima da entrada desejada (i.e. reset ou clk) e selecione o opção de interesse. Uma janela de configuração abrirá e ao término da configuração clique em OK. A Figura 5 mostra a tela de uma simulação e nela estão localizados os itens citados anteriormente. Figura 5
Documentos relacionados
Segundo Trabalho de Sistemas Digitais
com isso, o limite de dados que podem ser armazenados não será estourado em nenhuma conta dos alunos que participaram desde trabalho. Após a escolha da workspace, é necessário dar um nome ao projet...
Leia mais