Вы находитесь на странице: 1из 26

UNIVERSIDADE FEDERAL DE SERGIPE (UFS) CENTRO DE CINCIAS EXATAS E TECNOLGICAS (CCET) DEPARTAMENTO DE COMPUTAO (DCOMP)

DISCIPLINA: LAB. DE CIRCUITOS DIGITAIS II PROFESSOR: EDWARD DAVID MORENO ORDOEZ

RELATRIO DE AULA PRTICA N (Prtica 03 - LCDII) Estrutura: Somador 1, 4, 8, 16, 32 e 64 bits Por NOME(S) DO(S) ALUNO(S) Diego Eduardo Alcntara Quelita Arajo

DATA (19/04/2011) Prtica

DATA (26/04/2011) Entrega

1-Introduo Segundo a UFPEL Um circuito combinacional aritmtico implementa operaes aritmticas como adio, subtrao, multiplicao e diviso com nmeros binrios. A operao aritmtica mais simples a adio de dois dgitos binrios, que consiste de quatro possveis operaes elementares: 0+0=0, 0+1=1, 1+0=1 e 1+1=10. As trs primeiras operaes produzem um dgito de soma. Entretanto, quando ambos os operandos so iguais a 1, so necessrios dois dgitos para expressar seu resultado. Neste caso, o transporte (vai-um ou carry, em ingls) somado ao prximo par mais significativo de bits. Um circuito combinacional que implementa a adio de dois bits chamado meio-somador (half adder, em ingls). Um circuito que implementa a adio de trs bits (dois bits significativos e um carry) chamado de somador completo (full adder, em ingls). Estes nomes decorrem do fato de que com dois meio-somadores pode-se implementar um somador completo. O somador completo um circuito aritmtico bsico a partir do qual todos os outros circuitos aritmticos so construdos. A operao da adio de dois dgitos binrios (bits), a qual pode ser vista como a adio de dois nmeros binrios de um bit cada. Considerando-se todas as 4 combinaes de valores que podem ocorrer, os resultados possveis dessa adio so:
Tabela 1: Soma de bits

Repare que no ltimo caso acima, o resultado da adio o valor 2, que em binrio necessita de dois dgitos para ser representado (10). Um circuito aritmtico para realizar a adio de dois bits deve operar corretamente para qualquer combinao de valores de entrada. Isso significa que o circuito para a adio de dois bits deve possuir duas entradas e duas sadas, conforme ilustrado na figura 1.

Figura 1: Entradas e Sadas do Meio Somador

Corrobora a UFPEL que, denomina-se meia-soma a operao de adio de dois bits. O circuito mostrado na figura acima denominado meio somador (half adder). As duas entradas, A e B, representam os dois bits a serem adicionados. A sada S representa o dgito menos significativo do resultado, enquanto que a sada Cout representa o dgito mais significativo do resultado, o qual tambm conhecido por transporte de sada (carry out), uma vez que ele assume valor 1 somente quando o resultado da soma de A e B no pode ser representado num nico dgito. Note que a sada S nada mais do que o XOR entre A e B J a sada Cout o and entre A e B (Cout = A B). Ento, um circuito para o meio somador usa apenas uma porta XOR de duas entradas e uma porta E de duas entradas, conforme mostrado no circuito 1.

Circuito 1: Meio somador

Pode-se observar ento, que o resultado obtido mediante a adio de trs bits: um pertencente ao nmero A, um pertencente ao nmero B e um terceiro que o transporte proveniente do resultado da adio entre os bits da posio anterior. Resumindo quando somamos dois nmeros binrios que possuem mais de um dgito cada ocorre o transporte diferente de zero para a soma de um par de dgitos intermedirios, a soma do par seguinte dever considerar esse transporte proveniente do par anterior justifica a UFPEL. O circuito capaz de realizar a soma de trs bits (A, B e Cin), gerando o resultado em dois bits (S e Cout) denominado somador completo (full adder, em ingls). Apesar da entrada Cin normalmente receber o transporte proveniente da soma imediatamente anterior (carry in, em ingls), a rigor as trs entradas so absolutamente equivalentes sob o ponto de vista funcional. A tabela verdade para a soma completa mostrada na tabela 2, juntamente com o mapa de Karnaugh (figura 2). A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 Cin 0 1 0 1 0 1 0 1 Cout 0 0 0 1 0 1 1 1 S 0 1 1 0 1 0 0 1

Conforme pode-se ver

Tabela 1: Tabela verdade do Somador completo de 1 bit

Figura 1: mapa de Karnaugh

pelo mapa de Karnaugh acima, a expresso mnima em soma de produtos para S contm todos os termos da funo: O circuito que implementa a sada S do somador completo pode ser derivado a partir da equao em soma de produtos acima. No entanto, pode-se ainda manipular tal equao conforme segue:

Logo, o circuito para a sada S do somador completo pode tambm ser representado com duas portas XOR.

Figura 2: mapa de Karnaugh na equao com portas XOR

A sada Cout tem como expresso mnima em soma de produtos:

Circuito 2: circuito para o somador completo de 1 bit

A UFPEL Conclui que utilizando n somadores completos, pode-se realizar um somador capaz de operar dois nmeros binrios de n bits (Tanto os circuitos de somadores de 4, 8, 16, 32 e 64 bits vistos em sala de aula quanto vrios mais). Dessa forma, o dgito de ordem i do resultado, Si, ser obtido pela adio de Ai, Bi e Ci, onde Ci o transporte proveniente do dgito anterior. O somador de ndice i recebe como entradas Ai, Bi e Ci, gerando a soma Si e o valor de transporte Ci+1, o qual ser entrada para o somador completo do dgito seguinte (i+1). A construo de um somador para operar dois nmeros binrios de n bits requer o uso de n somadores completos, conectados segundo a mesma topologia mostrada na figura do circuito somador paralelo para nmeros binrios com 4 bits (figura 5).

Figura 5: circuito somador paralelo para nmeros binrios com 4 bits.

2-Descrio Principal da atividade No Laboratrio foi proposto implementao do Somador de 1, 4, 8, 16, 32 e 64 bits. Com o objetivo de verificarmos a diferena entre as diferentes implementaes. Como visto, no laboratrio a implementao do cdigo discernia apenas no nmero de n bits existentes, ou seja, o vetor que faz a soma dos nmeros binrios era do tamanho referente ao bit pretendido 1, 4, 8, 16, 32 ou 64. Mas, a lgica do cdigo continuava a mesma e o RTL entre eles diferenciava-se na quantidade de portas lgicas que aumentava de acordo, com a quantidade de bits. Abaixo esto s implementaes dos cdigos dos somadores. Em negrito, verifica-se a lgica existente que no muda:
library ieee; use ieee.std_logic_1164.all; entity s1a is port(cin,a,b: in std_logic; s,cout: out std_logic); end s1a; architecture arch_soma01 of s1a is begin s<=a xor b xor cin; cout<=(a and b) or (cin and a) or (cin and b); end arch_soma01; library ieee; use ieee.std_logic_1164.all; entity soma04 is port(cin: in std_logic; a,b: in std_logic_vector (3 downto 0); cout: out std_logic; s: out std_logic_vector (3 downto 0)); end soma04; architecture arch_soma04 of soma04 is begin process (a,b,cin) variable soma:std_logic_vector(3 downto 0); variable c: std_logic; begin c:=cin; for i in 0 to 3 loop soma(i):=a(i) xor b(i) xor c; c:= (a(i) and b(i)) or ((a(i) xor b(i)) and c); end loop; cout<=c; s<=soma; end process; end arch_soma04;

Tabela 3: Somador de 1 bit

Tabela 4: Somador de 4 bits

library IEEE; use IEEE.std_logic_1164.all; entity soma8 is port ( cin: in STD_LOGIC; a,b: in STD_LOGIC_VECTOR(7 DOWNTO 0); cout: out STD_LOGIC; s: out STD_LOGIC_VECTOR(7 DOWNTO 0) ); end soma8; architecture somador8bits_arch of soma8 is begin process(a,b,cin) variable soma:std_logic_vector(7 downto 0); variable c:std_logic; begin c := cin; for i in 0 to 7 loop soma(i) := a(i) xor b(i) xor c; c := (a(i) and b(i)) or ((a(i) xor b(i)) and c); end loop; cout <= c; s <= soma; end process; end somador8bits_arch;

library ieee; use ieee.std_logic_1164.all; entity somador16bits is port ( cin: in STD_LOGIC; a,b: in STD_LOGIC_VECTOR(15 DOWNTO 0); cout: out STD_LOGIC; s: out STD_LOGIC_VECTOR(15 DOWNTO 0) ); end somador16bits; architecture somador16bits_arch of somador16bits is begin process(a,b,cin) variable soma:std_logic_vector(15 downto 0); variable c:std_logic; begin c := cin; for i in 0 to 15 loop soma(i) := a(i) xor b(i) xor c; c := (a(i) and b(i)) or ((a(i) xor b(i)) and c); end loop; cout <= c; s <= soma; end process; end somador16bits_arch;

Tabela 5: Somador de 8 bits


library ieee; use ieee.std_logic_1164.all; entity soma32 is port ( cin: in STD_LOGIC; a,b: in STD_LOGIC_VECTOR(31 DOWNTO 0); cout: out STD_LOGIC; s: out STD_LOGIC_VECTOR(31 DOWNTO 0) ); end soma32; architecture somador32bits_arch of soma32 is begin process(a,b,cin) variable soma:std_logic_vector(31 downto 0); variable c:std_logic; begin c := cin; for i in 0 to 31 loop soma(i) := a(i) xor b(i) xor c; c := (a(i) and b(i)) or ((a(i) xor b(i)) and c); end loop; cout <= c; s <= soma; end process; end somador32bits_arch;

Tabela 6: Somador de 16 bits

library ieee; use ieee.std_logic_1164.all; entity soma32 is port ( cin: in STD_LOGIC; a,b: in STD_LOGIC_VECTOR(31 DOWNTO 0); cout: out STD_LOGIC; s: out STD_LOGIC_VECTOR(31 DOWNTO 0) ); end soma32; architecture somador32bits_arch of soma32 is begin process(a,b,cin) variable soma:std_logic_vector(31 downto 0); variable c:std_logic; begin c := cin; for i in 0 to 31 loop soma(i) := a(i) xor b(i) xor c; c := (a(i) and b(i)) or ((a(i) xor b(i)) and c); end loop; cout <= c; s <= soma; end process; end somador32bits_arch;

Tabela 7: Somador de 32 bits

Tabela 8: Somador de 64 bits

Os resultados das simulaes junto com o TTD e RTP e eventuais comparaes encontram-se abaixo. 3-Resultados de Simulao

Iniciamos este laboratrio escrevendo o cdigo em VHDL (descrita no tpico 2 deste relatrio) no programa Quartus II, e compilamos o cdigo identificando sua funcionalidade da soma para os bits referentes. Quando no encontramos erros na compilao procuramos as estatsticas e resultados do algoritmo TPD, RTL VIEW, Simulao por tempo e Simulao Funcional no Quartus. Por tanto, abaixo observado o Flow Summary referente s instrues VHDL, ou seja, a imagem do resultado da compilao do cdigo. Segue o resultado das implementaes do cdigo realizadas no laboratrio de circuitos digitais II dos Somadores 1, 2, 4, 8, 16, 32 e 64 bits apresentadas abaixo:

Figura 6: Summary do Somador de 1 bit

Figura 7: Summary do Somador de 4 bits

Figura 8: Summary Somador de 8 bits

Figura 9: Summary do Somador de 16 bits

Figura 10: Summary do Somador de 32 bits

Figura 11: Summary do Somador de 64 bits

Nas imagens do Flow Summary do Quartus podemos observar as informaes do Summary de cada somador, dentre elas destacamos o total logic elements e o total pins que para compilao do somador de 1 bit possui: 2 / 33.216 || o total de pinos de: 5 com a porcentagem de: 1%. - J o somador de 4 bits tem: 11 / 33.216 || o total de pinos de: 14 sendo a porcentagem de: 3%. - O somador de 8 bits obteve o total logic elements de: 21 / 33.216 || o total de pinos de: 26 com a porcentagem de: 5%. - O somador de 16 bits obteve o total logic elements de: 41 / 33.216 || o total de pinos de: 50 com a porcentagem de: 11%. - O somador de 32 bits obteve o total logic elements de: 81 / 33.216 || o total de pinos de: 98 com a porcentagem de: 21%. - O somador de 64 bits obteve o total logic elements de: 161 / 33.216 || o total de pinos de: 194 com a porcentagem de: 41%. Abaixo apresentamos o quadro comparativo (tabela 9) entre os somadores para maior compreenso dos dados. Tabela 9: Quadro Comparativo entre os somadores
Som. 1 bit Som. 4 bits Som. 8 bits Som. 16 bits Som. 32 bits Total logic Elements 2 11 21 41 81 Total Pins 5 14 26 50 98 Porcentagem Pins 1% 3% 5% 11% 21% Som. 64 bits 161 194 41%

Como observado o Flow Summary foi captado de todas as implementaes e todas tiveram as caractersticas acima relatadas. A verso do Quartus II 9.0 mostra que o circuito foi sintetizado, com sucesso, para o dispositivo EP2C35F672C6 da famlia Cyclone II com o total de 33.216 elementos lgicos que poderiam ser usados nos somadores mas, foram usados os elementos destacados acima. E o total de pinos que poderiam ser usados de 475. As outras caractersticas foram iguais, no discernindo uma das outras. Nas figuras abaixo capturamos o TPD que consiste no intervalo de tempo mnimo e mximo para um sinal propagar de um pino de entrada do circuito ate um pino de sada. Podemos notar, que na 1 posio do somador de 1 bit (figura 12) o sinal propagou da entrada b sada s e obteve um intervalo de propagao de 11.955 ns, o pior tempo entre as demais iteraes entre entradas e sadas e, como constatamos o melhor tempo foi a sexta posio que obteve 5.152 ns na propagao da entrada a sada cout. Ao total foram 6 iteraes nas entradas e sadas.

Figura 12: TPD do Somador de 1 bit

J o somador de 4 bits (figura 13) das 33 operaes entre entradas e sadas pode-se citar que a primeira posio obteve 16.320 ns de intervalo de tempo ocasionado da propagao do pino de entrada a[0] ao pino de sada cout. Esse circuito, tambm possui o maior tempo na primeira posio, nas demais posies analisamos que a velocidade de propagao maior ficando mais veloz o circuito.

Figura 13: TPD do somador de 4 bits

O somador de 8 bits (figura 14)apresentou um intervalo de tempo menor que o somador de 4 bits referente primeira posio que foi de 15.092 ns a diferena foi de 1, 228 ns de propagao da entrada b[0] sada s[7].

Figura 14: TPD do Somador de 8 bits

O Somador de 16 bits (figura 15) obteve um tempo bem maior de 23.913 ns da entrada cin a sada s[13] que j era de se esperar pelo tamanho do vetor que aumentou relativo maior quantidade de entradas e sadas que os demais somadores anteriores. Para ilustrao da grande quantidade, tiveram 201 iteraes entre entradas e sadas para obter o resultado da soma de bits. A sexta posio obteve 22.771 ns de propagao da entrada cin sada cout, melhor desempenho referente a primeira posio.

Figura 15: TPD do somador de 16 bits.

O TPD do Somador de 32 bits (figura 16) na primeira iterao do processo propagou-se da entrada cin sada s[31] com o tempo de 28.785 ns. Vimos que para todos os somadores a primeira posio sempre obtm o maior tempo das demais posies.

Figura 16: TPD do somador de 32 bits

O Somador de 64 bits (figura 17) apresentou um intervalo de tempo quase o dobro do somador de 32 bits referente a primeira posio, o tempo foi de 55.882 ns que foi propagado da entrada a[0] sada s[63]. Ou seja, o pior tempo do circuito, e o melhor referente a essa analise da tabela, foi da sexta posio que teve um tempo de 55.449 ns.

Figura 17: TPD do Somador de 64 bits

4-Concluso O Trabalho proposto foi realizado com o objetivo da analise da implementao dos somadores de 1, 4, 8, 16, 32 e 64 bits. Visto que, Para finalizar o relatrio observamos que os somadores, independentemente, da quantidade de bits na sua implementao prope a mesma lgica. H ento, uma facilidade em escrever o cdigo e o entendimento do mesmo. Alm de que, praticar a teoria fez a gente abrir os olhos para entender a soma em bits. Antes, entender o carry (Transporte vai-um) era complicado. Agora facilitou muito. Tomamos por base para introduo do relatrio o portal: minerva.ufpel.edu.br/~guntzel/isd/isd3.pdf, achamos que este portal bem completo e fcil de explicar a funcionalidade do somador. Dessa forma, unindo nosso conhecimento obtido em aula com um estudo mais aprofundado em casa aplicamos na elaborao do relatrio. Observamos que a medida que aumentava-se os bits do somador mais complexo ficava o RTL e o Waveform. Como tambm a iterao das operaes de entradas e sadas do TPD se tornavam mais lentas, claro, que j espervamos isso, por conta, do tamanho do vetor que aumentou consideravelmente. A dificuldade maior encontrada foi analisar o RTL e a Simulao por tempo e funcional dos somadores de 16, 32 e 64 bits por conta, da grande quantidade de bits de entrada e sada. E

tambm ao realizar o laboratrio dos Somadores, o tempo foi consideravelmente curto para fazer tantas implementaes e analises. 5- Anexos Aps o TPD selecionamos no programa Quartus a opo de gerar o RTL dos cdigos. Portanto, nas figuras abaixo temos o RTL que foram capturados na tela de todos os somadores. Observamos que quanto mais bits o somador possui, maior ser o circuito. Mais entradas tero dessa forma, foi dificultado o entendimento e compreenso. Por que, ainda no temos muita experincia. Mas, foi gratificante tentar entender o sentido e como os somadores se comportam no hardware.

Circuito 3: Somador de 1 bit

Circuito 4: Somador de 4 bits

Circuito 5: Somador de 8 bits

Circuito 5: Somador de 16 bits

Circuito 6: Somador de 32 bits

Circuito 1: Somador de 64 bits

Aps o RTL, criamos um arquivo Vector Waveform para formar as ondas e analisar a simulao por tempo que aplicada para verificar as caractersticas de temporizao, que so inerentes construo interna do FPGA usado e da forma como o projeto construdo dentro do chip; ou seja, simulao temporal verifica o funcionamento real do projeto conforme o CPDEE define. Como tambm observamos a simulao funcional para Verificar se a funcionalidade do projeto desenvolvido est correta; em outras palavras, a simulao funcional verifica a lgica, conceitua o CPDEE. Notamos que na simulao funcional ocorre um atraso no processo comparado simulao por tempo, pois, h uma complexidade maior no processamento da lgica de um chip. Sendo assim, iremos analisar segundo as informaes do TPD, Simulao Funcional e por tempo cada uma das implementaes realizadas no laboratrio e ver qual o melhor desempenho entre elas.

Figura 3: Somador de 1 bit. Waveform por tempo

Figura 4: Somador de 1 bit, Waveform funcional

Figura 6: Somador de 4 bits (Tempo)

Figura 5: Somador 4 bits (funcional)

Figura 12: Somador 8 bits (Funcional)

Figura 7: Somador de 8 bits (TEMPO)

Figura 14: Somador de 16 bits (tempo)

Figura 15: Somador de 16 bits (fUNCIONAL)

Figura 16: SOMADOR 32 BITS TEMPO

Figura 17: Somador 32 bits Funcional

Figura 18: Somador 64 bits Tempo

Figura 8: Somador 64 bits funcional

6- Referncias UFPEL. Somador. Disponvel em: http://minerva.ufpel.edu.br/~guntzel/isd/isd3.pdf, acesso em 23 abril 2011. CPDEE. QUARTUS II DESENVOLVIMENTO DE PROJETOS VIA ESQUEMTICO. Disponvel em: http://www.cpdee.ufmg.br/~frank/lectures/SPP/SPP-Tutorial_quartus2_v1-1.pdf, acesso em 13 abril 2011. ORDONEZ, E. D. M; PEREIRA, F. D; PENTEADO, C. G.; PERICINI, R. A. Projeto, Desempenho e Aplicaes de Sistemas Digitais em Circuitos Programveis (FPGA). Ed Bless, 2003.

Вам также может понравиться