{"id":26400954,"url":"https://github.com/helogizzy/somador-bcd8421","last_synced_at":"2026-02-01T00:03:20.362Z","repository":{"id":137203028,"uuid":"551416462","full_name":"Helogizzy/Somador-BCD8421","owner":"Helogizzy","description":null,"archived":false,"fork":false,"pushed_at":"2022-10-15T15:34:02.000Z","size":124,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-14T07:04:20.434Z","etag":null,"topics":["bcd-adder","bcd8421","digital-systems","sistemas-digitais","somador"],"latest_commit_sha":null,"homepage":"","language":"VHDL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Helogizzy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-14T11:07:07.000Z","updated_at":"2023-07-09T22:44:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"aa8f8acb-04af-4996-bccf-caa8f86850d8","html_url":"https://github.com/Helogizzy/Somador-BCD8421","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Helogizzy/Somador-BCD8421","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Helogizzy%2FSomador-BCD8421","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Helogizzy%2FSomador-BCD8421/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Helogizzy%2FSomador-BCD8421/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Helogizzy%2FSomador-BCD8421/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Helogizzy","download_url":"https://codeload.github.com/Helogizzy/Somador-BCD8421/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Helogizzy%2FSomador-BCD8421/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28961157,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T23:03:11.038Z","status":"ssl_error","status_checked_at":"2026-01-31T22:56:44.691Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bcd-adder","bcd8421","digital-systems","sistemas-digitais","somador"],"created_at":"2025-03-17T14:38:17.039Z","updated_at":"2026-02-01T00:03:20.357Z","avatar_url":"https://github.com/Helogizzy.png","language":"VHDL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Somador BCD8421\n\n\u003eColaboradores: Heloisa Alves ([Github Profile](https://github.com/Helogizzy)), Ellen Bonafin ([GitHub Profile](https://github.com/EllenBonafin)) e Gabriel Mazzuco ([Github Profile](https://github.com/gabrielmazz))\n\n## Descrição do Problema\nImplementação de um somador BCD8421 para palavras com 4 dígitos (16 bits).\n\n## Sistema Geral\nEntradas:\n- A: um vetor de 4 bits que representa o primeiro dígito a ser somado.\n- B: um vetor de 4 bits que representa o segundo dígito a ser somado.\n- Carry In (Cin): um bit que indica se a soma anterior causou overflow.\n\nSaídas:\n- S: um vetor de 4 bits que representa o resultado da soma.\n- Carry Out (Cout): um bit que indica se a soma causou um overflow.\n\n![img1](./folder/img1.PNG)\n\n\n## Código Fadder\nO Fadder é o somador, ele está dividi o em dois módulos:\n\n### Módulo somador de 1 bit.\nÉ realizado a soma das entradas A, B e o Carry de entrada. Ele resulta a saída S (que é o resultado da soma), caso estoure o tamanho vai resultar saída para o Cout. Utiliza-se as expressões retiradas das tabelas de Karnaugh.\n\n### Módulo somador de 4 bits.\nApenas as conexões com os fios.\n\n## Código BCDadder\nAs saídas S e Cout irão receber o sinal do fadder 1 quando o sinal de exceder  for zero, senão vai receber o sinal de fadder 2, como mostra a figura.\n\nOnde, o quadrado fadder4 a esquerda representa o Fadder 1, e o quadro fadder4 ajuste a direita representa o Fadder 2.\n\n![img2](./folder/img2.PNG)\n\nEssa parte do código (linha 27) já pré-supõe que temos os resultados do Fadder 1, pois como o VHDL executa em paralelo e tudo está ocorrendo ao mesmo tempo não há ordem para os testes.\n\n```\nbegin\n    -- Seletores\n    S    \u003c= sinal_s_fadder_1   when sinal_excede = '0' else sinal_s_fadder_2;\n    Cout \u003c= sinal_cout_fadder_1 when sinal_excede = '0' else '1';\n```\n\nFoi feita uma mini tabela de Van Karnaugh para a representação dos números em binário.\n\n0 -\u003e 0000\n\n1 -\u003e 0001\n\n2 -\u003e 0010\n\n3 -\u003e 0011\n\n4 -\u003e 0100\n\n5 -\u003e 0101\n\n6 -\u003e 0110\n\n7 -\u003e 0111\n\n8 -\u003e 1000\n\n9 -\u003e 1001\n\n10 -\u003e 1010\n\nNote que a maioria dos números possuem o primeiro dígito igual a zero, com exceção do 8 e 9. Por isso, basta apenas verificar se há um número 1 no último dígito para confirmar.\n\nA expressão NOT na frente do sinal significa que ele é zero (linha 33).\n\n```\n    -- Parte da verificação se 8 ou se 9\n\n    candidato_a_oito \u003c= (not sinal_s_fadder_1(2)) and ((not sinal_s_fadder_1(1)) and (not sinal_s_fadder_1(0)));\n\n    candidato_a_nove \u003c= (not sinal_s_fadder_1(2)) and ((not sinal_s_fadder_1(1)) and sinal_s_fadder_1(0));\n```\n\nO seguinte teste (linha 37) verifica todos os números que começam com 1, com excessão do 8 e 9. É analisado se excede 9, se exceder vai emitir o valor 1.\n\n```\n --  Verifica se o resultado de fadder_1 excede 9\n\n    sinal_excede \u003c= sinal_cout_fadder_1 or (sinal_s_fadder_1(3) and (not (candidato_a_oito or candidato_a_nove)));\n```\n\nCada fadder vai retornar um número de 0 a 9 em decimal. Ao invés de representar apenas um dígito será apresentado 4, como mostra a figura a seguir:\n\n![img3](./folder/img3.PNG)\n\nA partir da linha 72 temos a expansão para 4 dígitos:\n\n```\nbegin\n    bcdadder0 : bcdadder\n    port map(A(3 downto 0), B(3 downto 0), Cin, S(3 downto 0), carry(0));\n\n    bcdadder1 : bcdadder\n    port map(A(7 downto 4), B(7 downto 4), carry(0), S(7 downto 4), carry(1));\n\n    bcdadder2 : bcdadder\n    port map(A(11 downto 8), B(11 downto 8), carry(1), S(11 downto 8), carry(2));\n\n    bcdadder3 : bcdadder\n    port map(A(15 downto 12), B(15 downto 12), carry(2), S(15 downto 12), Cout);\n\nend architecture;\n```\n\n## Código Teste Bench (TB_BCDadder)\nAqui é atribuído os valores de teste e realizada a soma dos números (linha 26).\n\nA letra X é um indicador para o núemro hexadecimal.\n\n```\n    process begin \n        sinal_a   \u003c= x\"0404\"; --Primeiro teste\n        sinal_b   \u003c= x\"0328\";\n        sinal_cin \u003c= '0';\n        wait for 10 ns;\n\n        sinal_a   \u003c= x\"9998\"; --Segundo teste\n        sinal_b   \u003c= x\"0004\";\n        sinal_cin \u003c= '0';\n        wait for 10 ns;\n\n        sinal_a   \u003c= x\"0404\"; --Terceiro teste\n        sinal_b   \u003c= x\"0328\";\n        sinal_cin \u003c= '0';\n        wait for 10 ns;\n\n        sinal_a   \u003c= x\"0815\"; --Quarta teste\n        sinal_b   \u003c= x\"0899\";\n        sinal_cin \u003c= '0';\n        wait for 10 ns; \n\n        wait;\n    end process;\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelogizzy%2Fsomador-bcd8421","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhelogizzy%2Fsomador-bcd8421","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelogizzy%2Fsomador-bcd8421/lists"}