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

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