Você está na página 1de 7

Experimento 05

Implementação de Circuitos Combinacionais com Multiplexadores

Grupo A3
Beatriz Alves Freire – 190056711
Bruno Henrique Silva de Jesus – 211055423
Célio Júnio de Freitas Eduardo

Dep, Ciência da Computação – Universidade de Brasília (UnB)


CIC0231 – Laboratório de Circuitos Lógicos
30 de maio de 2023

Abstract. The experiment aimed to present the practical concepts of using multiplexers, decoders,
and full adders, thereby enabling the construction of circuits where multiple inputs, along with
selectors, produce a single output - the multiplexer, thus saving logical gates. Alternatively, these
circuits allow for a few inputs to be distributed into multiple outputs - the decoder. Both circuits
either convert multiple inputs into a single output or receive a simpler input and distribute it into
something more complex with multiple outputs. However, the full adder circuit in this experiment
deviated from this concept, as its objective was to demonstrate how a 1-bit binary addition would
work. Nonetheless, it is equally important, as addition is a widely used and crucial operation,
performed billions and billions of times in a processor.

Resumo. O experimento visou apresentar os conceitos práticos do uso de multiplexadores,


decodificadores e somadores. Dessa forma, possibilitando a construção de circuitos onde várias
entradas junto com seletores produzam uma única saída, o multiplexador, economizando portas
lógicas, ou poucas entradas que possam ser espalhadas para várias saídas, o decodificador, ambos
os circuitos acabam ou convertendo uma entrada múltipla em uma saída única ou recebendo uma
entrada mais simples e espalhando para algo mais complexo e com várias saídas, o somador foi o
circuito desse experimento que desviou disso, pois, seu objetivo é mostrar como funcionaria uma
soma de 1 bit em binário, mas nem por isso é menor importante, já que a soma é uma operação
muito utilizada e muito importante, realizada bilhões e bilhões de vezes em um processador.

1. Introdução

Os assuntos envolvidos foram multiplexadores, decodificadores e um somador de 1 bit. O


multiplexador é um circuito pensado para receber informações múltiplas, mas encaminhar a saída
por um só canal, para isso ele utiliza um entradas de seleção, que possibilitam que essas múltiplas
entradas sejam acessadas e seus dados transmitidos. Já o decodificador é um circuito que detecta
uma combinação específica de dados em suas entradas e assim identifica esse sinal de uma forma
específica, ele utiliza n linhas de entrada para n bits e uma a 2^n linhas de saída para indicar a
combinação da entrada. Já o somador é um circuito expansivo do meio-somador, a diferença entre
eles é que o meio-somador não aceita o carry de entrada (Cin), enquando o somador completo
aceita, ambos têm a mesma saída, o resultado da soma e o carry out (Cout). Carry out, neste caso,
é o bit gerado pela operação de soma entre as duas entradas e o carry in, o bit que vêm da operação
seguinte, na primeira operação de soma ele é zero, servindo mais a partir da segunda soma realizada
[Floyd and Thomas 2017].

1.1Objetivos

Os objetivos desse experimento são demonstrar a funcionamento do multiplexador e do


decodificador, o multiplexador será usado na seleção de entrada de um somador, no caso em que
também observaremos o funcionamento do somador e suas duas saídas. O multiplexador tem
bastante utilidade quando há diversas fontes de dados e um processamento na mesma unidade,
também servindo para casos me que há várias entradas e uma saída só, ele consegue fazer isso por
usar o conceito de seleção de dados. O decodificador será usado nesse experimento, mas seu
comportamento pode ser entendido também como o de um demultiplexador, que seria receber
entradas e através do input recebido encaminhar isso para seu respectivo canal de saída único.

1.2Materiais

 Quartus 2
 Portas lógicas AND e OR
 Kit FPGA DE2 ou DE2-70

2. Procedimentos e Resultados

2.1 Multiplexador e Somador

Neste experimento foi solicitado a criação de um multiplexador de 8 canais de entrada, para isso
são utilizadas três canais de seleção, pois a relação entre os canais é de logn seleções para os canais
de entrada. A teoria sobre isso se encontra abaixo, como seu funcionamento e tabela verdade.

A B C D E F G H S0 S1 S2 Y
0 0 0 0 0 0 0 0 0 0 0 A
0 0 0 0 0 0 0 0 0 0 1 B
0 0 0 0 0 0 0 0 0 1 0 C
0 0 0 0 0 0 0 0 0 1 1 D
0 0 0 0 0 0 0 0 1 0 0 E
0 0 0 0 0 0 0 0 1 0 1 F
0 0 0 0 0 0 0 0 1 1 0 G
0 0 0 0 0 0 0 0 1 1 1 H
Como podemos verificar acima, as entrada de A a H não influenciam na saída, somente os valores
dos bits de seleção, que acabam por liberar a saída do que estiver naquele canal. O circuito inteiro
poderia ser implementado assim a partir de portas lógicas.

Foi usada uma entrada sempre em enable, que é usada para ativar o multiplexador, não precisa
necessariamente dela mas, caso esse circuito receba entradas que podem ser compartilhadas entre
outro parte do circuito, pode ser importante ter uma entrada que possibilite essa ativação do
multiplexador somente quando necessário. As entradas de seleção se localizam na parte de baixo e
os bits de entrada do lado esquerdo, foram usadas portas ANDS de 5 entradas (considerando o bit
enable) e uma porta OR de 8 entradas, que direciona a saída da porta AND para a saída.

O somador completo foi implementando conforme se segue.


O circuito funciona com a junção de três input’s, quais sejam, A, B e Cin, e duas saídas, Cout e
Soma, a Soma é feita conectando as entradas A e B num porta XOR, depois usar essa saída para
uma XOR com Cin, a saída Cout é feita considerando-se A e B numa porta AND, depois usando
outra AND com a saída XOR de A e B, com Cin. A tabela verdade é a que se segue.

As saída seguem as regras citadas acima, respeitando-se o que está nessa tabela de valores.

Infelizmente não foi possível realizar o teste na placa FPGA por dificuldades técnicas na
implementação do circuito lógico durante o tempo despendido com o projeto, sendo assim só foram
feitas as simulações funcionais e temporais do circuito, que se encontra abaixo.
As imagens acima correspondem a simulação funcional e temporal do circuito.

2.2 Pré-Projeto 02 – Somador comportamental

Diferente da implementação acima, foi solicitada também a implementação comportamental do


circuito lógico descrito, no caso, o mesmo somador., mas agora com o código em SystemVerilog.
O circuito acima funciona da mesma forma como o anterior, com a diferença de estar implementado
de outra forma, dessa vez por comportamento. Foi utilizado um loop para efetuar a operação de
soma com todos os bits do mux.

2.3 – Função de mintermos com mux e decodificador

A última parte desse projeto serviu para demonstrar o funcionamento de um circuito lógico a partir
de uma dada função, qual seja, essa aqui descrita abaixo.

𝑓(𝐴,𝐵,𝐶,𝐷,𝐸,𝐹,𝐺)=𝐹.𝐺+𝐴.𝐵.𝐶.𝐷.~𝐸.~𝐹.𝐺+~𝐴.~𝐵.~𝐶.~𝐷.~𝐸.~𝐹.𝐺+𝐴.~𝐵.𝐶.𝐸.𝐹.~𝐺+
~𝐴.𝐵.𝐶.𝐷.~𝐸.𝐹.~𝐺+𝐴.𝐵.𝐶.𝐷.𝐸.~𝐹.~𝐺+𝐴.~𝐵.~𝐶.𝐷.𝐸.~𝐹.𝐺

O circuito utilizado foi este abaixo, usamos a descrição comportamental para fazer a
implementação.
O circuito foi implementado considerando-se o MUX como definidor dos mintermos e depois
passando para o decodificador, ao final usase-se um conjuntos de ANDs e ORs para se chegar ao
circuito final a partir dos termos que saem do decodificador.

Conclusões

Foi um dos experimentos que deu mais trabalho para fazer, a implementação dessas funções foi
difícil, senti como se tivesse muitos erros em cada parte da implementação, e mesmo a troca para
o comportamental não diminuiu a dificuldades do projeto. A assimilação do conteúdo se deu de
forma não ideal, já que faltou os testes na placa e mesmo agora acredito que a série de erros não
iria diminuir, sendo um fator que precisa ser melhorado para os próximos experimentos. O tempo
dedicado para assimilar a nova linguagem também foi um problema, trabalhar com o bus se
mostrou problemático demais, houve várias coisas que foram realmente problemáticas de se
implementar, o relatório também está incompleto, isso reforça o tanto que isso deu trabalho para o
grupo. Acredito que tenhamos que melhorar bastante em relação a isso.

Referências

[Floyd, Thomas L] Sistemas digitais [recurso eletrônico] : fundamentos e aplicações / Thomas L.


Floyd ; tradução José Lucimar do Nascimento. – Dados eletrônicos. – 9. ed.– Porto Alegre :
Bookman, 2007.

Você também pode gostar