Tutorial Xilinx

TUTORIAL XILINX

Nota: Para desenvolver o somador e subtrator de 8 bits na Plataforma Windows, utilize preferencialmente Windows XP ou Vista. Você poderá encontrar problemas durante
algumas etapas da compilação/execução se utilizar o Windows 7. No entanto, parte desses problemas podem ser resolvidos com uma simples instalação do ISE 10.1 Service Pack, disponível no site do desenvolvedor: http://www.xilinx.com/support/download/index.htm.

Para desenvolvermos um somador/subtrator de 8 bits, necessitaremos basicamente de três componentes: o multiplexador, o inversor e o somador de 8 bits, que é composto por 8 somadores de 1 bit.

Definições:

· Multiplexador: é um dispositivo que possui múltiplos fluxos de dados na entrada e somente um fluxo de dados na saída.
· Inversor: é uma porta lógica que fornece na saída o inverso do sinal recebido na entrada. Também conhecido como porta NOT.

Somador de 8 bits

Para termos um somador de 8 bits, precisamos implementar 8 somadores de um bit. Na
janela principal da interface do sistema ISE, vamos criar um novo projeto. Para isso, vá em FILE»New Project.

imagem1.JPG

Na janela que abrirá, em Project name, dê o nome de sua preferência ao projeto (por exemplo: “somador-subtrator”). Lembrando que o nome do projeto não pode conter espaços. No campo Top level source type, deixe HDL e clique Next.

imagem2.JPG

Na janela que segue, preencha os campos do formulário tal qual na imagem a seguir.

imagem3.JPG

Como linguagem preferencial, opte por VHDL. Clique Next até finalizar. No canto superior esquerdo, logo abaixo do diretório do nosso projeto, aparecerá um ícone. De acordo com as configurações que nós escolhemos, seu nome será xc3s500e-4fg320.

imagem4.JPG

Agora, criaremos o componente somador. Selecione o ícone e clique com o botão direito » New source.

imagem5.JPG

A partir daqui, implementaremos o somador de 1 bit. Na janela New Source Wizard,
escolheremos VHDL Module e criaremos o nosso novo componente. Neste exemplo, nomeá-loemos “somador”, porém você pode utilizar o nome que lhe convier. Depois de nomeá-lo, clique Next.imagem6.JPG

A janela que segue, declararemos as portas lógicas que compõem o nosso somador.
Nosso somador possui 3 portas de entrada (X, Y e Cin) e duas de saída (S e Cout). A janela com a tabela das portas lógicas que serão utilizadas no nosso somador ficará assim:imagem7.JPG

Next até finalizar. O componente somador já aparece na janela Sources.imagem8.JPG

Pronto, temos disponíveis as portas lógicas de um componente somador de 1 bit. No
entanto, precisamos mostrar ao somador como essas portas lógicas interagem entre si. Diremos quais são seus componentes e fios (signals), e como eles se comportam. Isso será a implementação da arquitetura do somador.

Para fazermos isso, clicaremos no icone do componente somador(que corresponde ao arquivo “somador.vhd”) e implementaremos o comportamento dos seus componentes na arquitetura do componente. Seu comportamento será:
S <= (X xor Y xor Cin);
Cout <= (X and Y) or (X and Cin) or (Y and Cin);

O código-fonte do nosso somador ficará desta forma:imagem9.JPG

Pronto, já temos um somador de 1 bit. Agora criaremos um somador de 8 bits baseado no somador de 1 bit que obtivemos. Da mesma forma que fizemos ao criar o somador de 1 bit, crie um New Source do tipo VHDL Module e nomeie-o “somador8bits”. Este também possuirá 3 portas de entrada e 2 portas de saída, no entanto algumas destas serão vetores lógicos (BUS). Declararemos as entradas: busX, busY e Cin; e as saídas: busS e overflow (estouro de bits). Quando declararmos os vetores lógicos (BUS), precisaremos declarar o campo MSB. Declararemos o MSB das portas BUS com o valor 7, da forma que aparece na figura a seguir:imagem10.JPG

Agora, declararemos que dentro do somador de 8 bits existem arquiteturas do tipo
somador. Será necessário declarar apenas uma, já que serão todas iguais. Logo, teremos no código-fonte do componente somador8bits:imagem11.JPG

Agora, temos um componente somador dentro do componente somador8bits. Agora, diremos ao programa como ele se comporta dentro do somador8bits. Declararemos os signals.

Signals são fios internos que ligam os componentes. Precisaremos de 8 desses fios para
ligarmos um somador ao outro. Eles serão declarados na arquitetura do somador8bits.imagem12.JPG

Diremos, então, como se comportam as portas dos componentes dentro do somador8bits. Elas serão declaradas no begin:imagem13.JPG

O overflow funciona exatamente como uma porta “ou exclusivo” entre os dois últimos sinais. Preste atenção que o Cout de cada somador estásendo ligado no signal que por sua vez está se ligando na entrada do outro somador, sendoessa Cin. Está feito nosso componente somador8bits. Observe na imagem a seguir que vários outros componentes somador foram criados dentro do componente somador8bits.imagem14.JPG

Multiplexador

Criaremos um New Source tal qual na imagem a seguir, e nomeá-lo-emos mux. O
multiplexador possuirá três entradas e uma saída.imagem15.JPGNosso código-fonte ficará assim:imagem16.JPGA função do multiplexador nesse caso é quando a seleção for igual a zero, a saída virá do
caminho busX, senão do busY.

Inversor

Da mesma forma que no multiplexador, criaremos o inversor. Salvaremos o componente
com o nome “inverter”. Ele possui uma entrada e uma saída.imagem17.JPGE o código:imagem18.JPGPronto. Já implementamos todos os componentes que precisaremos. Agora podemos começar a construir o Somador/Subtrator de 8 bits.

Somador/Subtrator

Criaremos um novo Source. Chamaremos de addsub e declararemos as portas de entrada: busX, busY e op, e as portas de saída: busS e overflow.imagem19.JPG
Na entidade addsub possuiremos dois signals(que, como dito anteriormente, são fios internos que ligam os componentes). O fio 1 liga o busF do inverter ao busY do mux, e o fio 2 que liga o busS do mux ao busY do somador8bits.
Sabendo disso, vamos implementar a arquitetura do somador/subtrator (addsub). Vamos declarar os componentes e os sinais, tal qual ilustra a figura abaixo:imagem20.JPG
Após isso, diremos como os componentes declarados na arquitetura funcionam dentro do do somador/subtrator (implementaremos isso dentro do begin no código-fonte).imagem21.JPG
Pronto, temos o somador/subtrator implementado. (-:
É possível visualizar uma ilustração do esquemático dele. Para isso, primeiro clicaremos no botão Implement Top Module na barra de ferramentas.imagem22.JPG
Se tudo tiver sido implementado corretamente, na janela Sources devemos clicar
(selecionar) o ícone do somador/subtrator (addsub). Logo após isto, observaremos a janela Processes (abaixo de Sources) e navegaremos até Synthetize - XST » View RTL Schematic.Clique duplo em View RTL Schematic para visualizar. Aparecerá esta imagem:imagem23.JPG

Este é o nosso addsub em sua visualização mais ampla. À medida em que dermos um
clique duplo dentro da ilustração esquemática deste chip, visualizaremos toda a sua estrutura interna (os componentes e os sinais que implementamos anteriormente). Na figura abaixo, podemos ver os componentes inverter, mux e somador8bits, espectivamente.imagem24.JPG

Testes

Criaremos um Source teste para testar o Somador-Subtrator. Navegue até Source for e
mude de Implementation para Behavioral Simulation.imagem25.JPG
Crie um New Source. Desta vez faremos diferente, não selecionaremos a opção VHDL Module e sim VHDL Test Bench. Nomeie-o “t_addsub” e clique Next até finalizar.
Criamos o arquivo de teste. Porém, para os testes que nós realizaremos, precisaremos
importar bibliotecas adicionais.imagem26.JPG
O ISE gera também, dentro do Begin, uma variável clock. No entanto, ela não será utilizada no nosso teste, então tudo que for implementado junto a essa variável deve ser comentado ou excluído do código. Para comentar uma linha de código em linguagem VHDL, use “—“ (dois hífens juntos).imagem27.JPG

Agora, implementaremos os seguintes testes logo após o begin do stim_proc: process:imagem28.JPGimagem29.JPG

É esperado que, após a execução destes testes, tenhamos uma tabela contendo estes
dados de entrada e saída:imagem30.JPG
Para executar a simulação, vá até a janela Processes, navegue até Xilinx ISE Simulator» Simulate Behavioral Model (com o t_addsub selecionado).imagem31.JPG

Logo após o ISE simular a execução do somador-subtrator, irá aparecer uma janela assim:imagem32.JPG

Os valores foram apresentados desta forma pelo fato de estarem em hexadecimal. É
possível visualizá-los em valores decimais. Para isso, clique com o botão direito no valor e habilite a opção Decimal (Signed), como na figura a seguir:imagem33.JPG
Confira os dados obtidos no somador com os dados esperados na tabela exibida
anteriormente neste tutorial. Se os dados conferem, nosso Somador-Subtrator foi implementado com sucesso!

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License