16
Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca. Sistemas Digitais – Ano 2010 – Distribuição livre. Somador e subtrator de 8 bits 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.

Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Embed Size (px)

Citation preview

Page 1: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

Somador e subtrator de 8 bits

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.

Page 2: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

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.

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

Page 3: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

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.

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

Page 4: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

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á-lo-emos “somador”, porém você pode utilizar o nome que lhe convier. Depois de nomeá-lo, clique Next.

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:

Page 5: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

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

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:

Page 6: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

Figura 1: somador.vhd

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 Sourcedo 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:

Page 7: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

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:

Figura 2: somador8bits.vhd

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.

Figura 3: somador8bits.vhd

Page 8: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

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

Figura 4: somador8bits.vhd

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.

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.

Page 9: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

Nosso código-fonte ficará assim:

Figura 5: mux.vhd

A 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.

Page 10: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

E o código:

Figura 6: inverter.vhd

Pronto. 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.

Page 11: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

Na entidade addsubpossuiremos 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:

Figura 7: addsub.vhd

Page 12: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

Após isso, diremos como os componentes declarados na arquitetura funcionam dentro do do somador/subtrator (implementaremos isso dentro do beginno código-fonte).

Figura 8: addsub.vhd

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.

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:

Figura 9: addsub.ngr

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, respectivamente.

Page 13: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

Figura 10: addsub.ngr

Testes

Criaremos um Source teste para testar o Somador-Subtrator. Navegue até Source for e mude de Implementation para Behavioral Simulation.

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.

Figura 11: t_addsub.vhd

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).

Page 14: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

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

Figura 12: t_addsub.vhd

É esperado que, após a execução destes testes, tenhamos uma tabela contendo estes dados de entrada e saída:

Page 15: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

Para executar a simulação, vá até a janela Processes, navegue até Xilinx ISE Simulator >> Simulate Behavioral Model (com o t_addsub selecionado).

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

Figura 13: Simulation

Page 16: Somador e subtrator de 8 bits - Projeto - Sistemas Digitaissdigitais.wdfiles.com/local--files/start/Alezy Oliveira... ·  · 2012-09-17Para desenvolvermos um somador/subtrator de

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1Autor: Alezy Oliveira Lima – Universidade Federal de Alagoas, Campus Arapiraca.Sistemas Digitais – Ano 2010 – Distribuição livre.

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:

Figura 14: Simulation

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!