Projeto Final - implementação da Unidade Lógico Aritmética em VHDL PDF

Title Projeto Final - implementação da Unidade Lógico Aritmética em VHDL
Author Erick Reis
Course SISTEMAS DIGITAIS 1
Institution Universidade de Brasília
Pages 21
File Size 950.3 KB
File Type PDF
Total Downloads 95
Total Views 137

Summary

implementação da Unidade Lógico Aritmética em VHDL...


Description

Sistemas Digitais 1 – 1/2016

Projeto Final

15/0034156 e 15/0039921

Sistemas Digitais 1 – 167983

Projeto Final U.L.A.

Nome Erick Antonio Corrêa dos Reis Leonardo Amorim de Araújo Data de Entrega: 04/07/2016

Matrícula Assinatura 15/0034156 15/0039921

1

Sistemas Digitais 1 – 1/2016

Projeto Final

15/0034156 e 15/0039921

Sumário 1.

Introdução................................................................................................3

2.

Objetivos..................................................................................................4

3.

Metodologia.............................................................................................5

4.

Unidade Lógica Aritmética.......................................................................6 4.1.

Especificações..................................................................................6

4.2.

Operações........................................................................................7

4.2.1.

Soma..........................................................................................7

4.2.2.

Subtração...................................................................................8

4.2.3.

Multiplicação...............................................................................9

4.2.4.

Divisão......................................................................................10

4.2.5.

Operações Lógicas..................................................................12

4.3.

Exibição de Resultados..................................................................12

4.3.1.

Multiplexador............................................................................13

4.3.2.

Divisor de Clock.......................................................................14

4.3.3.

Conversor Binário para BCD...................................................15

4.3.4.

Conversor BCD para display de 7 segmentos.........................16

4.3.5.

Multiplexação dos displays......................................................16

5.

Código Final..........................................................................................18

6.

Conclusão..............................................................................................20

7.

Referências...........................................................................................21

2

Sistemas Digitais 1 – 1/2016

Projeto Final

15/0034156 e 15/0039921

1. Introdução A unidade lógica e aritmética (ULA) ou em inglês Arithmetic Logic Unit (ALU) é um circuito digital que realiza operações lógicas e aritméticas. A ULA é uma peça fundamental da unidade central de processamento (CPU), e até dos mais simples microprocessadores. É na verdade, uma "grande calculadora eletrônica" do tipo desenvolvido durante a II Guerra Mundial, e sua tecnologia já estava disponível quando os primeiros computadores modernos foram construídos. A ULA executa as principais operações lógicas e aritméticas do computador. Ela soma, subtrai, divide, determina se um número é positivo ou negativo ou se é zero. Além de executar funções aritméticas, uma ULA deve ser capaz de determinar se uma quantidade é menor ou maior que outra e quando quantidades são iguais. A ULA pode executar funções lógicas com letras e com números.

3

Sistemas Digitais 1 – 1/2016

Projeto Final

15/0034156 e 15/0039921

2. Objetivos Este trabalho visa mostrar a implementação da Unidade Lógico Aritmética em VHDL, demonstrando os códigos utilizados e os possíveis problemas para apresentação da saída de dados na FPGA Basys 3, que foi a placa utilizada para mostrar os resultados obtidos. Será apresentado no decorrer deste trabalho a forma de implementação de todo o circuito, toda a estrutura de código utilizado, além de comentários sobre o funcionamento e porquê do código utilizado.

4

Sistemas Digitais 1 – 1/2016

Projeto Final

15/0034156 e 15/0039921

3. Metodologia Todo o projeto foi desenvolvido na linguagem VHDL através do software Vivado. Optamos por esse método já que a elaboração dele em uma protoboard seria praticamente inviável visto as dimensões do projeto. Como alguns componentes utilizados no projeto já haviam sido elaborados ao longo da matéria, conseguimos focar um pouco mais na elaboração da ULA em si, evitando possíveis erros durante a apresentação.

5

Sistemas Digitais 1 – 1/2016

Projeto Final

15/0034156 e 15/0039921

4. Unidade Lógica Aritmética Uma representação simplificada de uma ULA está apresentada na Figura 1.1, onde A e B são os dados (ou operandos) sobre os quais será realizada uma operação. Como há várias opções para as operações, há uma seleção de qual deve ser a operação, indicada pela entrada S. O resultado da operação é apresentado na saída da ULA.

Figura 1 - Esquema simplificado de uma ULA 4.1.

Especificações

O diagrama de blocos do circuito implementado pode ser visualizado da seguinte maneira:

Figura 2 – Diagrama de blocos da ULA 6

Sistemas Digitais 1 – 1/2016

Projeto Final

15/0034156 e 15/0039921

Pode-se visualizar que como entrada da ULA temos as chaves A e B, onde cada uma possui 3 bits (repare na seta que possui o número 3). A notação de vetor de bits foi utilizada para simplificar o esquemático. Além das entradas A e B, pode-se verificar também a “Entrada de Controle” que faz a seleção de operação desejada na ULA, e está também possui 3 bits. A entrada de controle possui a mesma lógica utilizada em multiplexadores. Cada bloco lógico realiza a sua operação e envia ao multiplexador sua saída. Este multiplexador possui 8 entradas, mas cada entrada é um vetor de bits, como se pode ver na figura 2. Assim como já configurado para as entradas, é muito mais interessante trabalhar com vetores em VHDL pois simplifica bastante o circuito. As entradas de controle selecionam o vetor de bits desejado e colocam este vetor na saída do multiplexador. Esta saída do multiplexador está em binário, e para que possamos mostrar esta saída em um display de 7 segmentos (neste caso, dois displays), é necessário primeiramente converter estes bits em BCD. Pois bem, esta é a função do conversor de binário para BCD, mostrado acima. Logo após a conversão, a saída entra em um decodificador para display de 7 segmentos e podemos visualizar o resultado nos displays. 4.2.

Operações

Uma característica da ULA é a capacidade de realizar diversos tipos de operações, as quais serão descritas detalhadamente a seguir: 4.2.1. Soma O somador simples possui 3 entradas, duas de bits e uma de carry, somente uma saída de bits e uma saída de carry. Sua estrutura pode ser visualizada na figura.

Figura 1 - SomadorCompleto.vhd Já o somador completo, que possui 3 entradas para o vetor A e 3 entradas para o vetor B utiliza 3 somadores simples, como pode ser visualizada nas 7

Sistemas Digitais 1 – 1/2016

Projeto Final

15/0034156 e 15/0039921

declarações de component abaixo na figura. Sua saída pode ter até 6 bits. No caso do circuito desta ULA, só é possível obter no máximo uma saída com 4 bits do somador, que corresponde a soma de 7 + 7, em binário 111 + 111 que gera 1110.

Figura 3 - Som3bits.vhd 4.2.2. Subtração A operação de subtração na ULA se utiliza da lógica do Complemento de 2. Se é desejado realizar a subtração entre um número A e um número B, de forma que seja A – B = R, somente precisamos converter o número B para seu complemento de 2, de forma que a operação ficará A + B 2 = R2. O resultado R estará em formato de complemento de 2, mas como não estamos trabalhando com números negativos nesta ULA, então R = R 2, ou seja, o resultado obtido não precisará ser decodificado e obteremos um resultado para a subtração. Para implementação do circuito subtrator, somente foi preciso utilizar um somador completo, descrito já na seção 4.2.1 e converter a entrada B em complemento de 2, o que pode ser visto na figura abaixo pela seguinte linha do código: InvB...


Similar Free PDFs