Você está na página 1de 16

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!

!us Ara!iraca. Sistemas Digitais Ano "010 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"e#ecu !o se utilizar o Windows $. %o entanto, parte desses problemas podem ser resolvidos com uma simples instala !o do ISE 10.1 Service Pack, dispon&vel no site do desenvolvedor: 'ttp:""www.#ilin#.com"support"download"inde#.'tm.

Para desenvolvermos um somador"subtrator de 8 bits, necessitaremos basicamente de trs componentes: o multiple#ador, o inversor e o somador de 8 bits, (ue ) composto por 8 somadores de * bit.

Definies: +ultiple#ador: ) um dispositivo (ue possui m,ltiplos flu#os de dados na entrada e somente um flu#o de dados na sa&da.

-nversor: ) uma porta l.gica (ue fornece na sa&da o inverso do sinal recebido na entrada. /amb)m con'ecido como porta NOT.

Somador de 8 bits
Para termos um somador de 8 bits, precisamos implementar 8 somadores de um bit. %a 0anela principal da interface do sistema -12, vamos criar um novo pro0eto. Para isso, v em FILE>>New Project.

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

%a 0anela (ue abrir, em Project name, d o nome de sua preferncia ao pro0eto 3por e#emplo: 4somador5subtrator67. 8embrando (ue o nome do pro0eto n!o pode conter espa os. %o campo /op level source t9pe, dei#e HDL e cli(ue Next.

%a 0anela (ue segue, preenc'a os campos do formulrio tal (ual na imagem a seguir.

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

:omo linguagem preferencial, opte por HDL. :li(ue %e#t at) finalizar. %o canto superior es(uerdo, logo abai#o do diret.rio do nosso pro0eto, aparecer um &cone. ;e acordo com as configura <es (ue n.s escol'emos, seu nome ser xc!s"##e$%f&!'#.

=gora, criaremos o componente somador. 1elecione o &cone e cli(ue com o bot!o direito >> New source.

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

= partir da(ui, implementaremos o somador de * bit. %a 0anela %ew 1ource Wizard, escol'eremos HDL (odu)e e criaremos o nosso novo componente. %este e#emplo, nome5lo5 emos 4somador6, por)m voc pode utilizar o nome (ue l'e convier. ;epois de nome5lo, cli(ue Next.

= 0anela (ue segue, declararemos as portas l.gicas (ue comp<em o nosso somador. %osso somador possui ? portas de entrada 3*, + e ,in7 e duas de sa&da 3S e ,out7. = 0anela com a tabela das portas l.gicas (ue ser!o utilizadas no nosso somador ficar assim:

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

Next at) finalizar. @ componente somador 0 aparece na 0anela Sources.

Pronto, temos dispon&veis as portas l.gicas de um componente somador de * bit. %o entanto, precisamos mostrar ao somador como essas portas l.gicas interagem entre si. ;iremos (uais s!o seus componentes e fios 3signals7, e como eles se comportam. -sso ser a implementa !o da ar-uitetura do somador. Para fazermos isso, clicaremos no icone do componente somador3(ue corresponde ao ar(uivo 4somador.v'd67 e implementaremos o comportamento dos seus componentes na ar(uitetura do componente. 1eu comportamento ser:

S <= (X xor Y xor Cin); Cout <= (X and Y) or (X and Cin) or (Y and Cin);
@ c.digo5fonte do nosso somador ficar desta forma:

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

Figura 1: somador.vhd

Pronto, 0 temos um somador de * bit. =gora criaremos um somador de 8 bits baseado no somador de * bit (ue obtivemos. ;a mesma forma (ue fizemos ao criar o somador de * bit, crie um New Sourcedo tipo HDL (odu)e e nomeie5o .somador8bits/. 2ste tamb)m possuir ? portas de entrada e A portas de sa&da, no entanto algumas destas ser!o vetores l.gicos 301S7. ;eclararemos as entradas: busX, busB e :inC e as sa&das: bus1 e overflow 3estouro de bits7. Duando declararmos os vetores l.gicos 3EF17, precisaremos declarar o campo (S0. ;eclararemos o +1E das portas EF1 com o valor 23 da forma (ue aparece na figura a seguir:

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

=gora, declararemos (ue dentro do somador de 8 bits e#istem ar(uiteturas do tipo somador. 1er necessrio declarar apenas uma, 0 (ue ser!o todas iguais. 8ogo, teremos no c.digo5fonte do componente somador8bits:

Figura 2: somador8bits.vhd

=gora, temos um componente somador dentro do componente somador8bits. =gora, diremos ao programa como ele se comporta dentro do somador8bits. ;eclararemos os si&na)s. 1ignals s!o fios internos (ue ligam os componentes. Precisaremos de 8 desses fios para ligarmos um somador ao outro. 2les ser!o declarados na ar-uitetura do somador8bits.

Figura 3: somador8bits.vhd

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

;iremos, ent!o, como se comportam as portas dos componentes dentro do somador8bits. 2las ser!o declaradas no be&in:

Figura 4: somador8bits.vhd

@ o4erf)ow funciona e#atamente como uma porta 4ou e#clusivo6 entre os dois ,ltimos sinais. Preste aten !o (ue o ,out de cada somador estsendo ligado no si&na) (ue por sua vez est se ligando na entrada do outro somador, sendoessa ,in. 2st feito nosso componente somador8bits. @bserve na imagem a seguir (ue vrios outros componentes somador foram criados dentro do componente somador8bits.

(u)ti5)exador
:riaremos um New Source tal (ual na imagem a seguir, e nome5lo5emos mux. @ multiple#ador possuir trs entradas e uma sa&da.

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

%osso c.digo5fonte ficar assim:

Figura 5: mux.vhd

= fun !o do multiple#ador nesse caso ) quando a seleo for igual a zero, a sada vir do caminho busX, seno do busY.

Inversor
;a mesma forma (ue no multiple#ador, criaremos o inversor. 1alvaremos o componente com o nome 4in4erter6. 2le possui uma entrada e uma sa&da.

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

2 o c.digo:

Figura : i!verter.vhd

Pronto. G implementamos todos os componentes (ue precisaremos. =gora podemos come ar a construir o 1omador"1ubtrator de 8 bits.

Somador6Subtrator
:riaremos um novo Source. :'amaremos de addsub e declararemos as portas de entrada: bus*, bus+ e o5, e as portas de sa&da: busS e o4erf)ow.

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

%a entidade addsubpossuiremos dois si&na)s3(ue, como dito anteriormente, s!o fios internos (ue ligam os componentes7. @ fio 7 liga o busF do in4erter ao bus+ do mux, e o fio ' (ue liga o busS do mux ao bus+ do somador8bits. 1abendo disso, vamos implementar a ar(uitetura do somador"subtrator 3addsub7. Vamos declarar os componentes e os sinais, tal (ual ilustra a figura abai#o:

Figura ": addsub.vhd

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

=p.s isso, diremos como os componentes declarados na ar(uitetura funcionam dentro do do somador"subtrator 3implementaremos isso dentro do be&inno c.digo5fonte7.

Figura 8: addsub.vhd

Pronto, temos o somador"subtrator implementado. 8$9 H poss&vel visualizar uma ilustra !o do es(uemtico dele. Para isso, primeiro clicaremos no bot!o Im5)ement :o5 (odu)e na barra de ferramentas.

1e tudo tiver sido implementado corretamente, na 0anela Sources devemos clicar 3selecionar7 o &cone do somador"subtrator 3addsub7. 8ogo ap.s isto, observaremos a 0anela Processes 3abai#o de Sources7 e navegaremos at) S;nt<eti=e $ *S: >> iew >:L Sc<ematic. :li(ue duplo em View I/8 1c'ematic para visualizar. =parecer esta imagem:

Figura #: addsub.!gr

2ste ) o nosso addsub em sua visualiza !o mais ampla. J medida em (ue dermos um cli(ue duplo dentro da ilustra !o es(uemtica deste c'ip, visualizaremos toda a sua estrutura interna 3os componentes e os sinais (ue implementamos anteriormente7. %a figura abai#o, podemos ver os componentes in4erter, mux e somador8bits, respectivamente.

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

Figura 1$: addsub.!gr

:estes
:riaremos um 1ource teste para testar o 1omador51ubtrator. %avegue at) 1ource for e mude de Im5)ementation para 0e<a4iora) Simu)ation.

:rie um New Source. ;esta vez faremos diferente, n!o selecionaremos a op !o HDL (odu)e e sim HDL :est 0enc<. %omeie5o 4t?addsub6 e cli(ue Next at) finalizar. :riamos o ar(uivo de teste. Por)m, para os testes (ue n.s realizaremos, precisaremos importar bibliotecas adicionais.

Figura 11: t%addsub.vhd

@ -12 gera tamb)m, dentro do 0e&in, uma varivel c)oc@. %o entanto, ela n!o ser utilizada no nosso teste, ent!o tudo (ue for implementado 0unto a essa varivel deve ser comentado ou e#clu&do do c.digo. Para comentar uma lin'a de c.digo em linguagem VK;8, use 4$$4 3dois '&fens 0untos7.

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

=gora, implementaremos os seguintes testes logo ap.s o be&in do stim?5roc9 5rocess:

Figura 12: t%addsub.vhd

H esperado (ue, ap.s a e#ecu !o destes testes, ten'amos uma tabela contendo estes dados de entrada e sa&da:

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

Para e#ecutar a simula !o, v at) a 0anela Processes, navegue at) *i)inx ISE Simu)ator >> Simu)ate 0e<a4iora) (ode) 3com o t?addsub selecionado7.

8ogo ap.s o -12 simular a e#ecu !o do somador5subtrator, ir aparecer uma 0anela assim:

Figura 13: &imulatio!

Desenvolvendo um somador e subtrator de 8 bits com ISE 10.1 Autor: Alezy Oliveira Lima Universidade Federal de Alagoas, am!us Ara!iraca. Sistemas Digitais Ano "010 Distribui#$o livre.

@s valores foram apresentados desta forma pelo fato de estarem em 'e#adecimal. H poss&vel visualiz5los em valores decimais. Para isso, cli(ue com o bot!o direito no valor e 'abilite a op !o Decima) 8Si&nedA, como na figura a seguir:

Figura 14: &imulatio!

:onfira os dados obtidos no somador com os dados esperados na tabela e#ibida anteriormente neste tutorial. 1e os dados conferem, nosso 1omador51ubtrator foi implementado com sucessoL

Você também pode gostar