



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Essa estratégia de construção de um somador se chama carryripple (LIN, 2003). Unidade Lógica e Aritmética (ULA). Uma unidade logica e aritmética é um ...
Tipologia: Notas de estudo
1 / 5
Esta página não é visível na pré-visualização
Não perca as partes importantes!
EA773 2s Tiago Tavares e Marcos Couvre
Uma Unidade Lógica e Aritmética (ULA) é um dispositivo que realiza operações lógicas e aritméticas sobre números representados em circuitos lógicos. Tipicamente, uma ULA recebe dois operandos como entrada, e uma entrada auxiliar de controle permite especificar qual operação deverá ser realizada. Por esse motivo, a construção de uma ULA se baseia em dois fundamentos principais: o controle de fluxo de dados e a construçao de circuitos que implementam operações.
Controlar o fluxo de dados, em um circuito lógico, significa modificar, como parte do funcionamento do circuito, as conexões entre entradas e saídas de componentes. Há dois casos que são tipicamente abordados na literatura: a multiplexação (várias entradas compartilham a mesma saída) e a demultiplexação (uma entrada é ligada a apenas uma dentre várias saidas possíveis). Uma das formas de implementar multiplexadores e demultiplexadores envolve o uso de lógica de três estados (tri state). Um componente tri state tem uma entrada adicional de controle, na qual não há fluxo de dados. Essa entrada pode ser utilizada para desabilitar o componente. Nesse caso, a saída do componente assume um estado de alta impedância e passa a se comportar como se tivesse sido desconectada do circuito. Assim, um multiplexador pode ser construído ligado várias entradas a uma só saída usando buffers tri state. Uma entrada de controle recebe o número da entrada de dados que deve ser habilitada, e os buffers correspondentes a todas as outras entradas são configurados para estado de alta impedância. Esse projeto, mostrado na Figura 1, é bastante conhecido.
Figura 1: Esquema lógico de um multiplexador, retirado da Wikimedia Commons.
Um demultiplexador pode ser construído usando um raciocínio semelhante. Desta vez, porém, a entrada de controle definirá a qual das várias saídas a entrada deverá ser conectada. Este projeto também é bastante conhecido e pode ser implementado facilmente.
Um somador é um circuito que recebe dois números e produz, na saída, a soma desses dois números. O projeto desse circuito depende de como o número será representado é possível, por exemplo, construir somadores analógicos se um número for representado por um nível de tensão correspondente. Em circuitos lógicos, é uma prática comum representar números relacionando cada bit a um dígito desse número em base 2. Uma arquitetura possível para um somador parte da soma de um bit. Um operando de 1 bit pode assumir os valores 0 ou 1. Como sabemos, 0+0=0, 0+1=1, 1+0=1 e 1+1=2, e, portanto, um somador de 1 bit pode ser descrito pelas regras mostradas na Tabela 1, considerando que Co é o bit mais significativo do resultado e Y é o bit menos significativo.
A B Y Co
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1 Tabela 1: Tabela verdade de um somador de 1 bit.
O somador com operandos de 1 bit, portanto, precisa de 2 bits em sua saída para representar o resultado da operação, sendo que o bit mais significativo corresponde ao “vai um” (chamado de Carry na literatura de circuitos lógicos) de uma conta de soma. Assim, se quisermos adicionar um segundo bit aos operandos, será preciso somá lo considerando o carry. Nesse caso, devemos considerar, além dos casos que deram origem à Tabela 1, que 1+0+0=1, 1+0+1=2, 1+1+0=2 e 1+1+1=3, e, portanto, o somador relativo ao segundo bit pode ser descrito pelas regras mostradas na Tabela 2.
A B Ci Y Co A B Ci Y Co
0 0 0 0 0 0 0 1 1 0
0 1 0 1 0 0 1 1 0 1
1 0 0 1 0 1 0 1 0 1
1 1 0 0 1 1 1 1 1 1 Tabela 2: Tabela verdade de um somador de 1 bit com carry.
As flags de status evidenciam informações sobre a operação que foi realizada. É normal que cada arquitetura de ULA forneça um conjunto diferente de flags de status, mas alguns deles se tornaram bastante usuais. Esses bits, e seus significados, são descritos na Tabela 3.
Bit Significado Condição
C Carry out Houve carry out no bit mais significativo do operador.
Z Zero O resultado é zero. Tabela 3: Significados e condições relacionadas às flags de status
FPGA
FPGA é o acrônimo para Field Programmable Gate Array. Trata se de um dispositivo no qual é possível carregar instruções que definem um circuito lógico, e esse circuito será implementado no interior do circuito integrado através do re arranjo de sinais lógicos. No laboratório, utilizaremos uma placa FPGA que, adicionalmente, traz LEDs e botoeiras que poderão ser usadas nos procedimentos de teste. Desta forma, os circuitos projetados no Quartus II podem receber entradas de chaves e acender LEDs (de forma semelhante à placa de teste do primeiro experimento). Para isso, existe um procedimento correto, e há tutoriais (Ting & Fazanaro, 2010) e manuais (ALTERA, 2006) disponíveis online explicando detalhadamente todos os passos desse procedimento.
Montagem
Nesta aula, montaremos uma pequena ULA. Para tal, utilizaremos o simulador Quartus II e a placa FPGA. O objetivo desta montagem é desenvolver e testar uma ULA. Para isso, o grupo deverá:
Tabela 4: Casos de teste para a operação soma.
Referências
Charles Lin, 2003, Half Adders, Full Adders, Ripple Carry Adders, http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Comb/adder.html
Ting, Wu Shin & Fazanaro, Felipe Ieda, 2010, TUTORIAL Altera Quartus II e Kit de Desenvolvimento DE1, ftp://ftp.dca.fee.unicamp.br/pub/docs/ea773/Tutorial_QuartusII.pdf
ALTERA, 2006, Cyclone II FPGA Starter Development Board, https://www.altera.com/en_US/pdfs/literature/manual/mnl_cii_starter_board_rm.pdf