A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Dicas de Circuitos MO801/MC912.

Apresentações semelhantes


Apresentação em tema: "Dicas de Circuitos MO801/MC912."— Transcrição da apresentação:

1 Dicas de Circuitos MO801/MC912

2 Como modelar? Multiciclo x Pipeline Multiplicador

3 Multiciclo Quebrar uma atividade em várias partes
Utilizar registradores para armazenar os valores temporários Reaproveitar o hardware durante a execução de partes diferentes Usar o mesmo multiplicador em ciclos diferentes para fazer multiplicações diferentes Economia de área, pouca variação no desempenho Implementado com uma máquina de estados

4 Pipeline Quebrar uma atividade em várias partes
Utilizar registradores para guardar o valor intermediário Processar vários conjuntos de dados simultaneamente Sem reaproveitamento de hardware Freqüência similar à da implementação multiciclo Maior poder de processamento (throughput)

5 Pipeline

6 Pipeline em Duas Partes
Registradores Apenas guardam os valores entre os estágios (processamento) Processamento Apenas elementos combinacionais Fazem todo o processamento com base nas entradas, não guardam valores Geram saídas que serão guardadas no final do ciclo pelos registradores

7 Processamento Cuidado com os ciclos lógicos
Não há problema em fazer forwarding de valores Procure balancear as atividades entre os vários estágios Codifique os registradores em entidades separadas Isso evita que sejam criados registradores (ou latches) por engano

8 Estágios Multiciclo O que fazer quando um estágio precisa de mais de um ciclo para terminar? Aumentar o tamanho do ciclo? Quebra-lo em dois estágios? Exemplos: Interface com memória externa Multiplicação em mais de um ciclo

9 Registradores library ieee; use ieee.std_logic_1164.all; entity reg is
port ( clk : in std_ulogic; clr : in std_ulogic; d : in std_ulogic_vector(21 downto 0); q : out std_ulogic_vector(21 downto 0) ); end entity reg;

10 Comportamento architecture behavioral of reg is begin
behavior : process (clk) is if rising_edge(clk) then if To_X01(clr) = '1' then q <= (others => '0'); else q <= d; end if; end process behavior; end architecture behavioral;

11 Outra Alternativa library ieee; use ieee.std_logic_1164.all;
entity reg is port ( clk : in std_ulogic; d : in std_ulogic_vector; q : out std_ulogic_vector); end entity reg;

12 Comportamento architecture behavioral of reg is begin
behavior : process (clk) is if rising_edge(clk) then q <= d; end if; end process behavior; end architecture behavioral;

13 Outra forma Crie registros para os valores de entradas e saídas de cada registrador A implementação deixa explícitos os nomes dos registradores além dos campos type tempo is record segundos, minutos : integer range 0 to 59; horas : integer range 0 to 23; end record tempo; variable agora : tempo;

14 Multiplicação FPGAs possuem multiplicadores
Restrições quanto à quantidade de bits Como utiliza-los? Multiplicações por constantes Como fazer seu multiplicador? Como se faz uma multiplicação? Alternativas?

15 Alternativa 1 Seqüência de somas sucessivas Método simples Pró:
Se o bit do multiplicador estiver ativo, some o multiplicando com o total Desloque o multiplicando a cada passo Método simples Pró: Utiliza apenas um somador e shift register Contra: Lento

16 Alternativa 2 Implementar diretamente em lógica
Multiplicador de x bits = lógica de 2x entradas Pró: Rápido Contra: Gasta muito recurso

17 Alternativa 3 Utilizar tabelas (tabuada?)
Utilizar as entradas como endereços e guardar na tabela o resultado Pró: Rápido Temporização previsível Contra: Área da tabela

18 Alternativa 3 Similar à alternativa 1, trabalhando mais bits por vez
Ex.: Multiplicar de 4 em 4 bits Como? Utilizando multiplicadores da alternativa 2 ou 3 Meio termo entre velocidade e área Gasta múltiplos ciclos para completar Multiciclo? Pipeline?

19 Multiplicador Pipeline
Quebrar o algoritmo de multiplicação em fases Quais são as fases? Quantas são? Quantos multiplicadores são necessários? O que são as operações parciais? O que é um número bom de ciclos?


Carregar ppt "Dicas de Circuitos MO801/MC912."

Apresentações semelhantes


Anúncios Google