Projeto de Circuito Combinacional Unidade Lógica e Aritmética (ULA)

Slides:



Advertisements
Apresentações semelhantes
Projecto de Hardware com FPGAs
Advertisements

The new way! The old way... TC – DEI, 2005/2006.
VHDL - VHSIC Hardware Description Language
VHDL - VHSIC Hardware Description Language
Fernando Gehm Moraes Ney Laert Vilar Calazans
César Augusto Missio Marcon Ney Laert Vilar Calazans
Parte 7 - VHDL: Processos, Paralelismo e o Comando process (Continuação) LABORG 05/outubro/2009 César Augusto Missio Marcon Ney Laert Vilar Calazans.
Ney Laert Vilar Calazans
Eletrônica Digital Projeto de Circuitos Combinacionais Aritméticos
Arquitetura dos Microprocessadores 8086 e 8088
VHDL AULA - 2.
Lógica reconfigurável por hardware
Circuitos aritméticos
MC613 Laboratório de Circuitos Lógicos
Introdução a circuitos lógicos
Verificação MO801/MC912.
Dicas de Circuitos MO801/MC912.
VHDL (outros tópicos) MO801/MC912.
MC542 Organização de Computadores Teoria e Prática
MO Prof. Paulo Cesar Centoducatte MC542 Organização de Computadores Teoria e Prática.
Semana de Engenharia Introdução a Linguagem de Descrição de HW VHDL a ao Projeto Baseado em Lógica de Programação ALTERA Prof. Daniel Barros Júnior
FLI – ModelSim Pedro Velho.
O MICROPROCESSADOR INTEL 8080
Library IEEE; use ieee.std_logic_1164.all; use IEEE.std_logic_arith.all;
Tipos de dados Existentes BIT - {0, 1} BIT_VECTOR - {vetor de BIT}
Máquina de Estados Uma máquina de estados finitos ou autômato finito é uma modelagem de um comportamento composto por estados, transições e ações Um estado.
Construção sequencial CASE WHEN
Circuitos Combinacionais Portas Lógicas
Projeto de Somador com e sem Sinal
Cálculo da Freqüência de Operação do Relógio
Máquina de Estados Finito
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Verificação por Simulação Circuitos Descritos.
Exercícios Referentes à Prova P2
Circuitos Seqüenciais Descrição VHDL
Circuitos Combinacionais Básicos Descrição VHDL
UTFPR – Prof. Carlos Raimundo Erig Lima. .….… STD_LOGIC (equivalente ao BIT) STD_LOGIC_VECTOR (equivalente ao BIT_VECTOR)
EPUSP – PTC Guido Stolfi
Lógica reconfigurável por hardware
Dispositivos Lógicos Programáveis (DLP) Ideia e Arquiteturas
Circuitos Seqüenciais Contadores
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Qualificadores.
Projeto de um Comparador Descrição Estrutural x Comportamental
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Descrição de Atrasos.
Circuitos Seqüenciais
Test-bench para Somador
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Projeto de Somador com e sem Sinal Descrição.
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Computador Cleópatra Arquitetura e Programação.
Exercícios de Máquinas de Estado
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Exercícios Circuitos Descritos em VHDL.
Exercícios Referentes à Prova P1
Diagramas de Blocos e Descrição VHDL
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Memórias.
Computador Cleópatra Programação Assembly e Alto Nível
Ney Laert Vilar Calazans
Hardware Description Language Aula 4 -VHDL
Organização e Arquitetura de Computadores
UNIDADE LÓGICA ARITMÉTICA (ULA)
Descrição de Circuitos Combinacionais em VHDL
Projetos Grandes MO801/MC912. Roteiro Componentes Configurações Instanciação múltipla Instanciação condicional Atenção: Os exemplos são cumulativos.
Circuitos Combinacionais Básicos Descrição VHDL
Hardware Description Language Aula 8 –Verilog HDL
Hardware Description Language Aula 4 –VHDL (introdução)
Hardware Description Language Aula 5 -VHDL Prof. Afonso Ferreira Miguel, MSc.
Introdução à Linguagem VHDL
Tudo sobre o Processador
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Exercícios Circuitos Descritos em VHDL.
Introdução a VHDL Monitoria de Digitais.
UNIDADE LÓGICA ARITMÉTICA (ULA)
Projeto de Circuitos Integrados Semidedicados Prof. Marcio Cunha Aula 04 – Linguagem de Descrição de Hardware: VHDL.
Máquina de Estados Uma máquina de estados finitos ou autômato finito é uma modelagem de um comportamento composto por estados, transições e ações Um estado.
Transcrição da apresentação:

Projeto de Circuito Combinacional Unidade Lógica e Aritmética (ULA)

Qualificadores (flags) ULA Unidade Lógica e Aritmética (ULA) é um circuito que realiza funções lógicas e aritméticas É um dos componentes de transformação de dados principais de um processador Normalmente implementado de forma combinacional Representação: Seleção (comando) Vetor de entrada A Vetor de saída Vetor de entrada B Qualificadores (flags)

ULA - Funcionalidades Lógicas Diversas são as funcionalidades lógicas. Dentre as mais comuns estão: E lógico das entradas Ou lógico das entradas Ou exclusivo lógico das entradas Complemento de uma das entradas A seleção de qual operação será realizada é obtida pela porta de comando Normalmente controlada pela unidade de controle do processador onde se encontra a ULA Operações lógicas usam normalmente apenas os qualificadores Z (zero) e N (negativo) Qualificadores de V (overflow) e C (carry) não são considerados, pois operações lógicas não alteram o valor dos mesmos

ULA - Funcionalidades Aritméticas Dentre as funcionalidades aritméticas mais comuns estão: Soma das entradas Subtração das entradas Deslocamento de uma das entrada Rotação de uma das entradas E variações das funcionalidades acima utilizando a flag C A seleção de qual operação será realizada é obtida pela porta de comando Operações aritméticas fazem uso dos quatro qualificadores vistos até então (Z, N, V, C)

Especificação de uma ULA de 4 Bits Projetar uma ULA em VHDL com as seguintes funcionalidades: Soma Subtração Incremento Decremento E lógico Ou lógico Ou exclusivo lógico Complemento Para dar suporte a funcionalidade completa do processador, esta ULA deve ter os seguintes qualificadores: Carry Negativo Zero Overflow A ULA deve ter as portas de entrada e saída com 4 bits

Especificação de uma ULA de 4 Bits Definição da relação entre a codificação e a seleção de comandos: A implementação da ULA deve ser feita utilizando uma descrição comportamental Operação Codificação Soma 000 Subtração 001 Incremento 010 Decremento 011 E lógico 100 Ou lógico 101 Ou exclusivo lógico 110 Complemento 111

Implementação de uma ULA de 4 Bits (Entidade) library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_SIGNED.all; entity Ula4bits is port ( A, B: in STD_LOGIC_VECTOR(3 downto 0); oper: in STD_LOGIC_VECTOR(2 downto 0); N, Z, C, V: out STD_LOGIC; S: out STD_LOGIC_VECTOR(3 downto 0) ); end Ula4bits;

Implementação de uma ULA de 4 Bits (Arquitetura) architecture ula4bits of ula4bits is signal iA, iB, i_S: STD_LOGIC_VECTOR(4 downto 0); signal SS: STD_LOGIC_VECTOR(3 downto 0); begin iA <= A(3) & A; -- Extensão de sinal iB <= B(3) & B; SS <= i_S(3 downto 0); S <= SS; with op select i_S <= iA + iB when "000", iA - iB when "001", iA + 1 when "010", iA - 1 when "011", iA and iB when "100", iA or iB when "101", iA xor iB when "110", not iA when others; N <= '1' when SS < 0 else '0'; Z <= '1' when SS = 0 else '0'; C <= i_S(4); V <= '1' when (op="000" and ((iA>0 and iB>0 and SS<0) or (iA < 0 and iB < 0 and SS > 0))) or ((op="010" or op="011") and ((iA > 0 and SS < 0) or (iA < 0 and SS > 0))) or (op="001" and ((iA>0 and iB<0 and SS<0) or (iA < 0 and iB > 0 and SS > 0))) else '0'; end ula4bits;

Implementação de uma ULA de 4 Bits Exercício: Faça alguns exemplos de vetores e teste se os quatro qualificadores estão implementados corretamente Pergunta: A descrição comportamental apresentada poderia ser mais clara? Sim. Bastaria usar uma definição do que é cada operação. Isto pode ser obtido com uma definição de um tipo em um pacote Exemplo: Definição do tipo OP_ULA no pacote ULA, conforme a especificação package ULA is type OP_ULA is ( soma, sub, inc, dec, op_and, op_or, op_xor, op_not ); end ULA;

Implementação de uma ULA de 4 Bits library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_SIGNED.all; use work.ULA.all; -- Inclusão do pacote ULA entity Ula4bits is port( A, B: in STD_LOGIC_VECTOR(3 downto 0); oper: in OP_ULA; N, Z, C, V: out STD_LOGIC; S: out STD_LOGIC_VECTOR(3 downto 0) ); end Ula4bits;

Implementação de uma ULA de 4 Bits (Arquitetura) architecture ula4bits of ula4bits is signal iA, iB, i_S: STD_LOGIC_VECTOR(4 downto 0); signal SS: STD_LOGIC_VECTOR(3 downto 0); begin iA <= A(3) & A; iB <= B(3) & B; SS <= i_S(3 downto 0); S <= SS; with op select i_S <= iA + iB when soma, iA - iB when sub, iA + 1 when inc, iA - 1 when dec, iA and iB when op_and, iA or iB when op_or, iA xor iB when op_xor, not iA when others; N <= '1' when SS < 0 else '0'; Z <= '1' when SS = 0 else '0'; C <= i_S(4); V <= '1' when (op=soma and ((iA>0 and iB>0 and SS<0) or (iA < 0 and iB < 0 and SS > 0))) or ((op=inc or op=dec) and ((iA > 0 and SS < 0) or (iA < 0 and SS > 0))) or (op=sub and ((iA>0 and iB<0 and SS<0) or (iA < 0 and iB > 0 and SS > 0))) else '0'; end ula4bits;

Implementação de uma ULA de 4 Bits (Arquitetura) - Outra solução  Só comportamental - architecture ula4bits of ula4bits is signal iS: STD_LOGIC_VECTOR(3 downto 0); begin S <= iS; with op select iS <= A + B when soma, A - B when sub, A + 1 when inc, A - 1 when dec, A and B when op_and, A or B when op_or, A xor B when op_xor, not A when others; N <= '1' when S < 0 else '0'; Z <= '1' when S = 0 else '0'; C <= '1' when ((op = soma and A > iS or B > iS) or (op = inc and A >= iS) or (op = dec and A <= iS) or (op = subtracao and A < iS or B < iS)) else '0'; V <= '1' when (op=soma and ((A > 0 and B > 0 and iS < 0) or (A < 0 and B < 0 and iS > 0))) or ((op=inc or op=dec) and ((A > 0 and iS <= 0) or (A < 0 and iS >= 0))) or (op=sub and ((A>0 and B < 0 and iS < 0) or (A < 0 and B > 0 and iS > 0))) end ula4bits;

Exercício Faça um diagrama de blocos mostrando como ficam conectados os subcircuitos da ULA Complemente o projeto da ULA inserindo instruções de multiplicação e divisão. Para tanto, refaça a ULA de forma a esta ter uma saída com o dobro de bits. Organize estes bits para ter funcionalidade adequada para ponto flutuante na divisão e ter um número inteiro maior na multiplicação. Faça, também, uma codificação adequada para as novas instruções Projete a mesma especificação de ULA, mas agora de forma estrutural. Para tanto, utilize as descrições de circuitos aritméticos descritos nas aulas anteriores e complemente os mesmos com as novas funcionalidades