Escolar Documentos
Profissional Documentos
Cultura Documentos
Disciplina: Sistemas Digitais Professor: Manoel Eusbio Monitor: Luiz Felipe Librio Equipe: Anlia Lima (alc5) Caio Csar (ccss2) Ivson Diniz (ids) Las Sousa (lsa) Lorena de Ftima (lfsa)
INTRODUO
Este relatrio refere-se ao projeto da disciplina de Sistemas Digitais. O projeto possui duas partes. A implementao de uma unidade lgica e aritmtica (ULA) e de um somador BCD (Binary-Coded Decimal). Os dois projetos precisam ser acoplados em um decodificador binrio para display de sete segmentos. Na ULA, so implementadas diversas operaes aritmticas, como soma, subtrao e complemento a dois de um nmero binrio, alm de operaes booleanas tais como igualdade e comparao entre vetores, verificando se um maior ou menor que o outro. O sistema usa o conceito de complemento a dois e seu barramento de quatro bits. Realiza operaes de subtrao aproveitando o prprio somador para isso. No somador BCD, cada dgito decimal representado por um nmero binrio tambm de quatro bits. Alm de realizar as operaes e comparaes na ULA, existem tambm os decodificadores que foram utilizados para mostrar o resultado na sada do display. Fazendo uso de conceitos vistos em aula, como tabela-verdade e mapa de Karnaugh, todos os circuitos foram estruturados de modo a se tornarem otimizados e simplificados. Na implementao deste projeto, a ferramenta utilizada para estruturao e teste foi o programa Quartus II.
1 - Componentes Gerais
1.1 - Somador 1 bit:
Descrio do projeto do somador de bits: O somador de bits soma dois bits A e B quaisquer que lhe sejam dados como entrada, levando em conta um bit chamado de Carry In,que somado aos outros dois e que tambm uma entrada, e devolve um bit que representa a soma dos 3 bits e outro bit que informa se a soma deu overflow, ou seja, se a soma no pode ser representada por um bit. Entradas: bits A, B e Carry_In Sadas: bits Resultado e Overflow. Tabela Verdade: A 0 0 0 0 1 1 1 1 Mapas de Karnaugh: Mapa para Soma: Cin\A B 0 1 00 0 1 01 1 0 11 0 1 10 1 0 B 0 0 1 1 0 0 1 1 Carry in 0 1 0 1 0 1 0 1 Soma 0 1 1 0 1 0 0 1 Carry out 0 0 0 1 0 1 1 1
Minitermos: ( ) ( )
Minitermos:
Bloco esquemtico:
Waveform:
1.2 Displays
Como trabalha-se com displays de sete segmentos, cada segmento ter sua prpria tabela verdade relacionada com o vetor de entrada. Aps a reduo com os mapas de Karnaugh, possvel implementar as funes individualmente com suas devidas portas lgicas. necessrio destacar que a lgica utilizada nos displays invertida, ou seja, o bit 0 indica lead aceso e bit 1 indica lead apagado. Algumas pequenas diferenas existem entre o display da U.L.A. e do somador BCD: Na U.L.A. o status do display da esquerda indica o sinal do nmero, o qual definido pelo bit de sinal do vetor de entrada do display. Obs: Em nosso projeto optamos por indicar no display o nmero 0 como sada padro ao ser realizada qualquer operao de status. No BCD, s so feitas somas de nmeros positivos, portanto, o display da esquerda no indica sinal, mas ser definido como zero ou um dependendo do resultado final.
Bloco esquemtico:
OBS.: Logo abaixo neste esquemtico est o display 1( esquerda), que aparece 0 ou o sinal -.
a 0 1 0 0 1 0 1 0 0 0
b 0 0 0 0 0 1 1 0 0 0
c 0 0 1 0 0 0 0 0 0 0
d 0 1 0 0 1 0 0 1 0 1
e 0 1 0 1 1 1 0 1 0 1
F 0 1 1 1 0 0 0 1 0 0
g 1 1 0 0 0 0 0 1 0 0
Mapa de Karnaugh f:
00 0 0 0 0
01 1 0 0 0
11 1 1 0 0
10 1 0 0 0
00 1 0 0 0
01 1 0 0 0
11 0 1 0 0
10 0 0 0 0
Bloco esquemtico:
No display 1 ( direita) ir aparecer 1 caso houver overflow ou 0 caso no houver. O esquemtico simples ficou:
2 - Componentes da ULA
2.1 - Somador/Subtrator de nmeros complementados a 2 com 4 bits
O componente Somador/Subtrator recebe dois nmeros complementados a 2, representados por vetores de tamanho quatro, e ainda um bit seletor, que indica que operao ele ir realizar, e efetua sobre estes nmeros uma operao de soma ou subtrao, liberando como sadas um vetor de tamanho quatro representando um nmero tambm complementado a 2 e um bit overflow, indicando se a soma/subtrao no pode ser representada pelo sistema de complemento a 2 com quatro bits. Entrada: A[3..0], B[3..0] e bit Seleo Sada: Resultado[3..0] e Overflow Os nmeros que podem ser representados por quatro bits complementados a 2 esto no intervalo de -8 at 7. Por isso a operao deve levar em conta possveis casos de overflow. Se o usurio selecionar a operao de soma pelo bit seletor de entrada, deve-se apenas aplicar a operao de soma bit a bit em todos os bits de A e de B. Se ele selecionar a operao de subtrao, deve-se fazer: Resultado = A B Resultado = A + (-B) Resultado = A + + 1 O que se resume a uma operao de soma cujo primeiro Carry In 1. Para termos de escolha, temos que decidir o valor do primeiro carry in e que vetor vai entrar para ser operado com A (se B ou ). Tudo isso decidido pelo vetor seletor. Para isso foi decidido o padro de seletor ter o valor 0 caso se queira somar e valor 1 caso se queira subtrair, o que ajuda a colocar o prprio vetor seletor como carry in do primeiro somador de 1 bit. Agora para se escolher qual bit de B vai entrar em cada somador de 1 bit, temos que fazer uma lgica entre o seletor e qual bit passa, dependendo do valor de B: Sel 0 1 Operao F=A+B F=AB
Agora, para definir quando indicar overflow, temos que usar uma lgica sobre os carry out de alguns somadores. No final, o somador/subtrador se resume a apenas um somador que seleciona suas entradas(no caso, se B ou +1). Em somas de dois nmeros com sinal, teremos overflow apenas nos casos de somar-se dois nmeros positivos e o resultador dar maior que o nmero 7 (ou seja, acaba dando pelo complemento a 2 um nmero que seria negativo) ou no caso de se somar dois nmeros
negativos e o resultado dar menor que -8 (ou seja, acaba dando um nmero que, representado apenas pelos 4 primeiros bits, seria um nmero positivo pela lgica complementar a 2). Para verificar isso foi feita uma tabela verdade entre os valores do ultimo somador de 1 bit e os valores de overflow:
Bloco esquemtico:
Waveform:
Waveform:
Waveform:
Mapas de Karnaugh:
00 0 1
01 0 0
11 0 1
10 0 0
Bloco esquemtico(bit-a-bit):
Feito o comparador bit a bit, podemos uni-los em um componente maior que analisa vetores de quatro bits. Basta apenas acoplar cada operador Igualdade para irem analisando A em relao a B bit por bit. O primeiro Carry In deve ser 1 (VCC), pois se ele for 0 a comparao inicial ir retornar 0 sempre(e assim o retorno final sempre zero).
Bloco esquemtico:
Waveform:
Waveform:
2.7 Multiplexadores
Em todo o projeto foram usados 3 multiplexadores ao todo: dois mux 4:2 (Mux de Vetores e Mux de Status) e um mux 2:1 (Para definir o vetor utilizado em A no somador, que pode ser a entrada j definida ou GND em caso de complemento a dois). Cada entrada dos mux possuem um endereo bem definido atravs do qual escolhe-se qual ser a sada. Tal escolha feita por meio do vetor ou bit seletor. O endereamento obtido por meio da relao de minitermos, onde internamente existem portas AND aplicadas aos bits do vetor seletor e s entradas.
Para Mux de Vetores: Entradas: Seletor: S[2..0] , 4 vetores de tamanho 4 Sada: vetor: V[3..0]
Para Mux de Status: Entradas : Seletor: S[2..0] , 4 bits Sada : bit de Status
Para Mux Seleo de A: Entradas: Bit Seletor, 2 vetores de tamanho 4 Sada: S[3..0]
10 endereo do bit vindo do comparador A < B 11 endereo com valor 0 A tabela verdade a seguir descreve o componente: Funo F= A+B F= A- B F= Complemento a 2 de B F= A=B F= A>B F= A<B F = A AND B F = A XOR B S2 0 0 0 0 1 1 1 1 S1 0 0 1 1 0 0 1 1 S0 0 1 0 1 0 1 0 1 Complemento 0 0 1 1 0 0 1 1 Operao 0 1 1 1 0 1 1 1 Mux Vetores[1] 0 0 0 1 1 1 0 1 Mux Vetores[0] 0 0 0 1 1 1 1 0 Mux Status[1] 1 1 1 0 0 1 1 1 Mux Status[0] 1 1 1 0 1 0 1 1
Bloco esquemtico:
Waveform:
ULA Completa:
3 - Somador BCD
O sistema BCD serve para representar nmeros decimais, para isso usa as seguintes caractersticas: Domnio para cada dgito: 0000 at 1001 ( 0 9 ). Dessa forma os nmeros binrios de 4 bits fora desse intervalo sero desconsiderados como entrada, mas devem ser considerados como uma sada possvel. 1010 1011 1100 1101 1110 1111 Soma de cada digito decimal: Se, ao somar, o resultado ultrapassar o domnio o nmero binrio deve ser modificado de forma que se encaixe no domnio. Como um nmero binrio de 4 bits pode representar 16 nmeros decimais e o sistema BCD representa apenas 10 basta somar 6 (0110) ao nmero binrio. O novo nmero binrio resultado ser representado agora por um nmero binrio de 4 bits e um bit overflow: 1 XXXX -> Exemplo: 6 + 4 = 10 1010 + 0110 = 0000 1010 = 1 0000. Para tornar um nmero 10 em 0 em nmeros decimais, por exemplo, basta somar 6 ao nmero e aplicar mod 16. Observando os outros estouros: Se der 11 11 + 6 = 17 mod 16 = 1 12 12 + 6 = 18 mod 16 = 2 (...) 18 18 + 6 = 24 mod 16 = 8 O controle de se voc vai somar 6 ou no depende do overflow, que deve indicar se o nmero resultante passou de nove. Casos em que ocorre overflow: Se o Carry out da soma dos bits mais significativos der 1 ou se o 1 e 2 bits mais significativos forem 1 (11XX) ou se o 1 e o 3 bits mais significativos forem 1 (1X1X). Pela prpria descrio, observa-se que o circuito tem um OU junto com essas 3 entradas: o resultado do Carry out do Full Addler (Somador) do bit mais significativo, um AND da soma do 1 mais significativo e do 2 mais significativo e um AND da soma do 1 mais significativo e do 3 mais significativo. Feito o overflow, agora sabemos quando somar 6 ao resultado. Porm 6 0110. Ento, dado o resultado S S S S, basta colocar 2 Full Addlers no S e S, somando 1. Este 1 pode ser o prprio overflow.
Soluo: representar o dgito da unidade com 4 bits e ter um bit overflow que diz se passou de nove.
Por fim faz-se um XOR entre o Carry out da soma do S e o resultado do S, evitando-se outro Full Addler para o S coma mostra a tabela abaixo: S 0 0 1 1 Carry out S 0 1 0 1 Novo S 0 1 1 0
Porta XOR
A[3..0]
Soma[3..0]
B[3..0]
overflow
Para esta implementao de um somador de dois dgitos, consideramos as entradas separadas tambm por dgitos, sendo um VetorA e um VetorB os nmeros totais formados por: VetorA1 dgito da unidade do primeiro nmero. VetorA2 dgito da dezena do primeiro nmero. VetorB1 dgito da unidade do segundo nmero. VetorB2 dgito da dezena do segundo nmero. Sadas: Digito_Unidade dgito unidade da sada. Dgito_Dezena dgito da dezena da sada. Overflow tem valor 1 caso a soma passe de 99, 0 caso contrrio. Bloco esquemtico:
Waveform:
CONCLUSO
Este projeto foi uma aplicao bem prtica dos conceitos de Sistemas Digitais vistos nas aulas. Com mtodos como a tabela-verdade e o mapa de Karnaugh, podemos simplificar circuitos relativamente grandes em algumas portas lgicas simples. Utilizando a lgica de complemento a dois, as operaes de subtrao se reduziam a uma soma. Logo, conseguimos aproveitar num nico mdulo o somador e o subtrator. A modularizao do problema simplificou bastante os circuitos. Na implementao de somadores de quatro bits, no precisamos criar uma tabela-verdade para todas as possibilidades, mas podemos reduzir o problema a um bit, e depois reaproveitar os mdulos para fazer um somador de tantos bits quanto se desejam. Alm disso, vimos conceitos de seletores, decodificadores e multiplexadores. Como o projeto dependia de uma escolha do usurio, os resultados fornecidos pela ULA deveriam ser filtrados, isto , escolhidos. E tambm o processo inverso ocorreu quando foi necessrio transformar alguns bits em um determinado padro de codificao, como foi o caso do display. Para isso, a implementao dos circuitos para os bits de seleo foi necessria. Outra grande importncia do projeto foi o aprendizado na utilizao de ferramentas de implementao de hardware, como o Quartus II.