Sistemas Digitais Projeto RTL – Unidade de Execução Prof. Wanderley
Introdução Unidade de Controle Responsável por gerar os sinais de controle Unidade de Execução Responsável pela manipulação de dados
Unidade de execução para somar 1 milhão de números Introdução Circuito combinacional para somar 4 números Unidade de execução para somar 1 milhão de números
Introdução Unidades de execução são compostas por: Unidades funcionais tais como, somadores, deslocamentos, multiplicadores, ALUs e comparadores Elementos para armazenagem de dados tais como, registradores e memórias Elementos para transferência de dados tais como, barramentos, multiplexadores e buffers tri-states
Projeto RTL Projetos de Unidades de Execução podem também ser referidos como projetos RTL Projetos RTL (do inglês, Register-Transfer Level) são a origem do desenvolvimento de sistemas digitais integrados, tais como microcontroladores e microprocessadores Embora seja um projeto de hardware, sua descrição é feita através de linguagens de descrição de hardware, ou seja, via software Linguagens mais utilizadas são o VHDL e o Verilog
Projeto RTL Consiste em manipular adequadamente os dados, tendo o registro como um importante elemento de armazenamento de dados Um dado pode sofrer infinitas manipulações, sendo que a cada manipulação ele poderá ser armazenado em um ou outro registrador Exemplo de tipos de transferência de dados entre registros
Projeto RTL As manipulações são feitas por unidades funcionais Unidades funcionais típicas + Somador: uma unidade básica que permite a realização de operações de soma e subtração ALU, do inglês Arithmetic Logic Unit: realiza as operações aritméticas e operações lógicas como, negação, OU, E, etc. ALU
Projeto RTL Dá-se o nome de operação de transferência entre registros à sequência: Leitura de dado em registro Modificação do dado lido Escrita de dado em registro Cada operação da sequência descrita deve ser completada dentro de um ciclo de clock Logo, cada operação equivale a um estado de uma máquina de estado finito Uma unidade funcional pode ser utilizada somente uma vez a cada clock, mas pode ser utilizada novamente no clock seguinte
Projeto RTL Processo de Projeto RTL Que tipos de registradores usar (tamanho e operações possíveis) e quantos usar? Que tipos de unidades funcionais usar (somador ou ALU) e quantas usar? Alguma unidade funcional pode ser compartilhada? (otimização de recursos) Como organizar os registradores e as unidades funcionais?
Projeto RTL Exemplos: registradores de 8 bits (0 a 255)
Projeto RTL MUX para combinar múltiplas operações Necessidade de um sinal para controle do MUX
Projeto RTL MUX para compartilhar recursos (unidade funcional) Elimina-se um somador
Projeto RTL Compartilhamento de registro: se duas variáreis não são usadas ao mesmo tempo, então elas podem compartilhar o mesmo registro. Exemplo: Se (condição) então Reg = Input Senão Reg = A + B
Projeto RTL Detalhes sobre o reuso de unidades funcionais. Considere as funções: a = b + c d = e + f Projeto 2: (reuso de somador) Projeto 1:
Projeto RTL Detalhes sobre o reuso de unidades funcionais Projeto 1: Ambas as operações são realizadas em 1 ciclo de clock; Mais rápido; Menos complexo; Mais recursos? Projeto 2: As operações são realizadas de forma sequencial, ou seja, em 2 ciclos de clock; Mais lento; Mais complexo (adiciona um sinal de controle dos MUXs); Menos recursos?
Projeto RTL Métodos de Transferência de dados: Fontes múltiplas: Controle do MUX
Destinos múltiplos: controle do registrador Projeto RTL Métodos de Transferência de dados: Destinos múltiplos: controle do registrador
Barramento Tri-State (fontes múltiplas e destinos múltiplos) Projeto RTL Métodos de Transferência de dados: Barramento Tri-State (fontes múltiplas e destinos múltiplos) Apenas uma fonte pode acessar o barramento por vez (evitar conflito de dados) Controle feito a partir de buffers tri-state Os destinos estão diretamente conectados ao barramento
Projeto RTL Sinais de Status Exemplo 1: Se (A=0) então... São testes condicionais extremamente úteis à unidade de controle para geração do próximo estado de execução. Cada teste condicional de um algoritmo representa um sinal de status. Exemplo 1: Se (A=0) então... Exemplo 2: Se (A é par) então...
Projeto RTL Exemplo: Soma de n a 1
Projeto RTL Exemplo: Soma de n a 1
Projeto RTL Exemplo: Fatorial de n
Projeto RTL Exemplo: Fatorial de n