Baixe o app para aproveitar ainda mais
Prévia do material em texto
11/10/2017 1 Projeto de Sistemas Digitais Edson Midorikawa PCS3225 PCS3225 - 2016 1 Tópicos • Projeto de Sistemas Digitais – Metodologia de projeto – Projeto Exemplo – Projeto #1: Multiplicador – Projeto #2: Máximo Divisor Comum – Exercícios • Referências: Haskell & Hanna, Digital Design using Digilent FPGA Boards – capítulo 9 Gajski, Principles of digital design - Capítulo 8 W.V. Ruggiero & C.B. Margi, Capítulo 1: Metodologia de Projeto Estruturado para Sistemas Digitais. Apostila de PCS2022 PCS3225 - 2016 2 11/10/2017 2 Desenvolvimento de Circuitos Digitais • Circuitos combinatórios e sequenciais – Pequenos circuitos: portas lógicas, mapas de Karnaugh, tabelas verdade, somadores, etc; – Circuitos maiores: componentes MSI (mux, decodificadores, registradores, etc), ULA, circuitos sequenciais, diagrama de transição de estados. • Contudo, sistemas mais complexos precisam de técnicas de projeto mais abstratas e sistemáticas. PCS3225 - 2016 3 Desenvolvimento de Circuitos Digitais • Um método sistemático deve apresentar as seguintes características: – Estratégia top-down (abstrato → detalhes); – Separação entre módulo controlador (unidade de controle) e módulo controlado (fluxo de dados); – Desenvolver uma arquitetura do sistema global em blocos antes de proceder no desenvolvimento dos detalhes do hardware. PCS3225 - 2016 4 11/10/2017 3 Metodologia de Projeto Estruturado • O termo metodologia de projeto se refere a um processo sistemático a ser seguido pela equipe de desenvolvimento para o projeto, verificação e preparo para produção de um produto. • Atende a requisitos de projeto: – Funcionais (funções); – Não-funcionais (custo, tempo de projeto, tamanho, consumo de energia, desempenho, etc). PCS3225 - 2016 5 Metodologia de Projeto Estruturado • Uma metodologia apresenta uma sequência de atividades que levam a um desenvolvimento organizado de um sistema digital; • Conceitos importantes: – Divisão do sistema digital em fluxo de dados e unidade de controle; – Concepção e organização hierárquica de módulos de projeto; – Projeto voltado para a síntese do circuito. PCS3225 - 2016 6 11/10/2017 4 Projeto de Sistemas Digitais • SISTEMA DIGITAL = Fluxo de Dados + Unidade de Controle PCS3225 - 2016 7 Projeto de Sistemas Digitais • Fluxo de Dados – responsável pelo armazenamento, roteamento, combinação e processamento em geral dos DADOS. – composto principalmente por: • registradores, contadores, deslocadores; • memórias; • unidades funcionais gerais (somadores, ULAs, comparadores, etc). – recebe COMANDOS da unidade de controle. PCS3225 - 2016 8 11/10/2017 5 Projeto de Sistemas Digitais • Unidade de Controle – Entradas: • COMANDOS externos para o sistema digital, e • Sinais de STATUS ou CONDIÇÃO vindos do fluxo de dados. – Saídas: • Sinais de CONTROLE para o fluxo de dados; • Pode gerar SAÍDAS DE CONTROLE externas (e.g., fim ou pronto). PCS3225 - 2016 9 Projeto de Sistemas Digitais • Unidade de Controle – responsável pelo sequenciamento das operações realizadas pelo sistema digital. – Ações principais: • Iniciar e terminar operações; • Testar condições; • Decidir ações futuras; – modelo baseado em uma máquina de estados. 10PCS3225 - 2016 11/10/2017 6 Metodologia de Projeto • Passos do método 1. Obter uma descrição verbal do circuito; 2. Desenvolver um pseudocódigo do algoritmo; 3. Elaborar um diagrama ASM de alto nível; 4. Selecionar elementos do fluxo de dados para as operações; 5. Identificar sinais de status e de controle dos elementos fluxo de dados; 6. Elaborar o diagrama ASM da unidade de controle; 7. Verificar conexão do fluxo de dados e da unidade de controle (microarquitetura). PCS3225 - 2016 11 Projeto Exemplo PCS3225 - 2016 12 11/10/2017 7 Metodologia de Projeto 1. Descrição verbal do circuito PCS3225 - 2016 13 Obs.: ignora comandos M1 e M2 até que N1 e/ou N2 sejam acionados ao menos uma vez Metodologia de Projeto 1. Descrição verbal do circuito – Sinais da Interface de Entrada e Saída PCS3225 - 2016 14 11/10/2017 8 Metodologia de Projeto 2. Pseudocódigo do funcionamento do circuito PCS3225 - 2016 15 2. entrada inicial de dados 3. Processamento dos comandos (obs.: precedência condizente com a especificação) 1. Valores iniciais dos registradores Metodologia de Projeto 3. Diagrama ASM de alto nível PCS3225 - 2016 16 11/10/2017 9 Metodologia de Projeto 4. Elementos do fluxo de dados PCS3225 - 2016 17 1. registradores 2. interconexão: R1, R2 � IN (obs: mesmo fio) 3. interconexão: R3 � R1, R2 (obs.: mux) Metodologia de Projeto 4. Elementos do fluxo de dados PCS3225 - 2016 18 11/10/2017 10 Metodologia de Projeto 5. Sinais de status e de controle do fluxo de dados PCS3225 - 2016 19 Sinais de controle Metodologia de Projeto 6. Detalhar ASM da unidade de controle PCS3225 - 2016 20 ASM de alto nível comandos e testes no ASM � variáveis de controle e de estado do FD Obs. (estado extra): trata temporização de mux/R3 11/10/2017 11 Metodologia de Projeto 7. Conexão do fluxo de dados e da unidade de controle PCS3225 - 2016 21 Sinais de controle Sinais de controle Sinais de entrada Sinais de entrada Sinais de saída Sinais de saída Metodologia de Projeto • Após a aplicação da metodologia, o projetista deve prosseguir o desenvolvimento do circuito digital com a sua implementação, usando por exemplo uma HDL. • Em seguida, pode-se fazer a síntese do circuito em uma placa de desenvolvimento com FPGA (ex. Altera DE2). PCS3225 - 2016 22 FPGA 11/10/2017 12 Metodologia de Projeto • Trecho da descrição VHDL do componente principal. PCS3225 - 2016 23 componentes FD e UC Entidade do sistema digital Metodologia de Projeto • Trecho da descrição VHDL do fluxo de dados PCS3225 - 2016 24 11/10/2017 13 Metodologia de Projeto • Trecho da descrição VHDL da unidade de controle PCS3225 - 2016 25 Multiplicador – v1 Projeto #1 PCS3225 - 2016 26 11/10/2017 14 Projeto-Exemplo: Multiplicador • Especificação: multiplicador PCS3225 - 2016 27 Fonte: W.V. Ruggiero & C.B. Margi . Capítulo 1: Metodologia de Projeto Estruturado para Sistemas Digitais. Apostila de PCS2022. Projeto-Exemplo: Multiplicador 1. Especificação: multiplicador (descrição textual ou verbal) PCS3225 - 2016 28 11/10/2017 15 Projeto-Exemplo: Multiplicador 2. Escolha do algoritmo de multiplicação PCS3225 - 2016 29 • Após Start: carregar VA e VB, e inicilizar resultado em zero • Somar o valor do multiplicando ao resultado • Subtrair 1 do multiplicador • Verificar se multiplicador = 0 • Se sim, pára; se não, continua loop de soma do multiplicando ao resultado Projeto-Exemplo: Multiplicador 2. Escolha do algoritmo de multiplicação PCS3225 - 2016 30 Definimos que o multiplicador utilizará o algoritmo de multiplicação por somas sucessivas. Exemplo: 5x3 = 3 + 3 + 3 + 3 + 3 11/10/2017 16 Projeto-Exemplo: Multiplicador 2. Pseudocódigo do algoritmo de multiplicação PCS3225 - 2016 31 • Após Start: carregar VA e VB, e inicilizar resultado em zero • Somar o valor do multiplicando ao resultado • Subtrair 1 do multiplicador • Verificar se multiplicador = 0 • Se sim, pára; se não, continua loop de soma do multiplicando ao resultado Multiplicador 3. Diagrama ASM de alto nível PCS3225 - 2016 32 • Após Start: carregar VA e VB, e inicilizar resultado em zero • Somar o valor do multiplicando aoresultado • Subtrair 1 do multiplicador • Verificar se multiplicador = 0 • Se sim, pára; se não, continua loop de soma do multiplicando ao resultado 11/10/2017 17 4. Elementos do fluxo de dados (FD) PCS3225 - 2016 33 Multiplicador • Após Start: carregar VA e VB, e inicilizar resultado em zero • Somar o valor do multiplicando ao resultado • Subtrair 1 do multiplicador • Verificar se multiplicador = 0 • Se sim, pára; se não, continua loop de soma do multiplicando ao resultado Multiplicador • 4. Elementos do fluxo de dados (FD) PCS3225 - 2016 34 1. Registradores (Ra, Rb: 4 bits ; result: 8 bits) 5b. interconexões: result <= somador somador <= (Ra, result) 2. Somador 3. Subtrator de 1 4. Detector de 0000 5c. interconexões: Rb <= subtrator subtrator <= (Rb, 1) 5a. interconexões: Ra <= Va Rb <= Vb Mux em Rb result: sinal de reset 11/10/2017 18 Multiplicador • 4. Fluxo de Dados PCS3225 - 2016 35 Multiplicador 5. FD: sinais de status e controle PCS3225 - 2016 36 rst: reset ce: chip enable 11/10/2017 19 Multiplicador 6. Detalhar ASM da unidade de controle PCS3225 - 2016 37 zrb 0 1 ceA <= ‘0’ ; ceB <= ‘0’ ceR <= ‘0’ ; dcB <= ‘0’ rstR <= ‘0’ ; ready <= ‘0’ ceA <= ‘1’ ; ceB <= ‘1’ ceR <= ‘1’ ; dcB <= ‘0’ rstR <= ‘1’ ; ready <= ‘0’ ceA <= ‘0’ ; ceB <= ‘0’ ceR <= ‘0’ ; dcB <= ‘0’ rstR <= ‘0’ ; ready <= ‘0’ ceA <= ‘0’ ; ceB <= ‘1’ ceR <= ‘1’ ; dcB <= ‘1’ rstR <= ‘0’ ; ready <= ‘0’ ceA <= ‘0’ ; ceB <= ‘0’ ceR <= ‘0’ ; dcB <= ‘0’ rstR <= ‘0’ ; ready <= ‘1’ Notação com todos os sinais explícitos Multiplicador 7. Conexão de FD e UC PCS3225 - 2016 38 rstR 11/10/2017 20 Multiplicador v1 – Implementação em VHDL PCS3225 - 2016 39 Projeto de Sistemas Digitais • Implementação em VHDL (fluxo de dados) PCS3225 - 2016 40 11/10/2017 21 Projeto de Sistemas Digitais • Implementação em VHDL (fluxo de dados) PCS3225 - 2016 41 Projeto de Sistemas Digitais • Implementação em VHDL (fluxo de dados) PCS3225 - 2016 42 11/10/2017 22 PCS3225 - 2016 Projeto de Sistemas Digitais • Implementação em VHDL (fluxo de dados) 43 Projeto de Sistemas Digitais • Implementação em VHDL (fluxo de dados) PCS3225 - 2016 44 11/10/2017 23 Projeto de Sistemas Digitais • Implementação em VHDL (unidade de controle) PCS3225 - 2016 45 Projeto de Sistemas Digitais • Implementação em VHDL (unidade de controle) PCS3225 - 2016 46 11/10/2017 24 Projeto de Sistemas Digitais • Implementação em VHDL (unidade de controle) PCS3225 - 2016 47 Projeto de Sistemas Digitais • Implementação em VHDL (unidade de controle) PCS3225 - 2016 48 11/10/2017 25 Multiplicador – v2 Projeto #2 PCS3225 - 2016 49 Projeto-Exemplo: Multiplicador-v2 • Especificação: multiplicador PCS3225 - 2016 50 RESET READY 11/10/2017 26 Projeto-Exemplo: Multiplicador-v2 1. Especificação: multiplicador (descrição textual ou verbal) PCS3225 - 2016 51 � Colocar multiplicando na via de dados de entrada ( IN ); � Ativar o sinal ENTRA_MULTIPLICANDO; � Colocar multiplicador na via de dados de entrada; � Ativar o sinal ENTRA_MULTIPLICADOR; � Acionar o botão INICIAR para a execução da multiplicação binária; � Resultado é colocado na via de dados de saída (OUT) e READY é colocado em 1 � Usar comando RESET para reinicializar sistema RESET READY Projeto-Exemplo: Multiplicador-v2 2. Escolha do algoritmo: soma e deslocamento x 1 x 0 x 1 x 1 PCS3225 - 2016 52 11/10/2017 27 2. Escolha do algoritmo: soma e deslocamento I. Produto parcial inicialmente em 0 (zero) II. Um bit do multiplicador processado por vez, começando pelo bit menos significativo a) Se bit for 1: multiplicando somado a produto parcial; em seguida deslocamento para a direita do produto parcial b) Se bit for 0: deslocamento para a direita do produto parcial c) O bit de vai-um (carry) do somador: armazenado e usado como entrada do registrador-deslocador com o produto parcial; d) Soma realizada apenas nos n bits mais significativos de produto parcial. e) Repetir até os 4 bits do multiplicador serem processados PCS3225 - 2016 53 Projeto-Exemplo: Multiplicador-v2 2. Pseudocódigo: soma e deslocamento int4 RA, RB; //RA: multiplicando, RB: multiplicador (assumindo já fornecidos) int4 RPH, RPL = 0000; //RP: produto parcial (High e Low) bit C = 0; //carry for (cont = 4 ; cont > 0 ; cont--) { //verifica bit menos significativo (lsb) de RB if ( lsb(RB) == 1) { RPH += RA; C = Cout; } else { C = 0; } //deslocamento p/ direita, com entrada C RPH || RPL = shiftRight (RPH || RPL, C); //deslocamento p/ direita, com entrada qualquer RB = shiftRight (RB, *); } // Neste ponto, temos Ready = 1 PCS3225 - 2016 54 Projeto-Exemplo: Multiplicador-v2 Cabe uma otimização aqui: RB = RPL 11/10/2017 28 2. Pseudocódigo: soma e deslocamento int4 RA, RB; //RA: multiplicando, RB: multiplicador (assumindo já fornecidos) int4 RPH = 0000; //RPH: produto parcial (High); RPL = RB bit C = 0; //carry for (cont = 4 ; cont > 0 ; cont--) { if ( lsb(RB) == 1) { RPH += RA; C = Cout; } else { C = 0; } RPH || RB = shiftRight (RPH || RB, C); } // Neste ponto, temos Ready = 1 PCS3225 - 2016 55 Projeto-Exemplo: Multiplicador-v2 Otimização : RB = RPL Projeto-Exemplo: Multiplicador-v2 3. Diagrama ASM de alto nível PCS3225 - 2016 56 � ENTRA_MULTIPLICANDO (EM1): carrega IN em registrador A � ENTRA_MULTIPLICANDOR (EM2): carrega IN em registrador B � Acionar o botão INICIAR (INIT) para a execução da multiplicação binária � O resultado é colocado na via de dados de saída (OUT). � Usar comando RESET (RST) para reinicializar sistema Idle EM1 EM2 RST INIT RA <= IN RB <= IN RA , RB <= 0 Multiplica 11/10/2017 29 Projeto-Exemplo: Multiplicador-v2 3. Diagrama ASM de alto nível PCS3225 - 2016 57 int4 RA, RB; // (já fornecidos) int4 RPH = 0000; //RP: produto parcial bit C = 0; //carry for (cont = 4 ; cont > 0 ; cont--) { if ( lsb(RB) == 1) { RPH += RA; C = Cout; } else{C = 0 ;} RPH || RB = shiftRight (RPH || RB, C); } // Neste ponto, temos Ready = 1 RPH <= 0 cont <= 4 Mul0 LSB(RB) cont = 0 RPH <= RPH + RA C <= Cout C || RPH || RB >> 1 cont -- 0 1 0 Idle (...) Mul1 Mul2 1 Ready <= 1 RA e RB fornecidos C <= 0 4. Elementos do fluxo de dados (FD) PCS3225 - 2016 58 Projeto-Exemplo: Multiplicador-v2 Mult_UC INICIAR Mult_FD IN OUT ENTRA_MULTIPLICANDO ENTRA_MULTIPLICADOR Ready Sinais de controle Sinais de condição 11/10/2017 30 • 4. Elementos do fluxo de dados (FD) – Simplificação, assumindo RA e RB fornecidos – Solução completa incluiria MUXes adicionais (e.g., RB) int4 RA, RB; // (já fornecidos) int4 RPH = 0000; //RP: produto parcial bit C = 0; //carry for (cont = 4 ; cont > 0 ; cont--) { if ( lsb(RB) == 1) { RPH += RA; C = Cout; } else{C = 0 ;} RPH || RB = shiftRight (RPH || RB, C); } // Neste ponto, temos Ready = 1 Multiplicador 59 1. Registrador RA: 4 bits 3. Flip Flop 4. Contador decrescente 5. Detector de 0 5a. interconexões: somador <= (RPH, RA) RPH <= somador (paralela) C <= Cout (somador) 2. Registradores-Deslocadores RB , RPH: : 4 bits 6. Somador RPH, C: sinal de reset cont: inicialização em 45b. interconexões: RPH <= C (serial) RB <= LSB(RPH) (serial) Multiplicador 4. Fluxo de Dados PCS3225 - 2016 60 RPH cont RA RB (=RPL)C OUT IN ldCtr zeroc lsb clrA ldA clkA clrC ldC clkC D shiftP ldP clkP shiftB ldB clkB 4 bits4 bits 4 bits 4 bits 4 bits 4 bits1 bit 11/10/2017 31 Multiplicador 5. FD: sinais de status e controle PCS3225 - 2016 61 RPH cont RA RB (=RPL)C OUT IN zeroCtr lsb clrA ldA clkA clrC ldC clkC D shiftP clrP ldP clkP shiftB clrB ldB clkB 4 bits4 bits 4 bits 4 bits 4 bits 4 bits 1 bit ldCtr enCtr 6. Detalhar ASM da unidade de controle Multiplicador PCS3225 - 2016 62 RPH <= 0 cont <= 4 Mul0 LSB(RB) cont = 0 RPH <= RPH + RA C <= Cout C || RPH || RB >> 1 cont -- 0 1 0 Idle (...) Mul1 Mul2 1 Ready <= 1 RA e RB fornecidos C <= 0 clrP ldCtr Mul0 lsb zeroCtr ldP ldC shiftP, shiftB enCtr 0 1 0 Idle (...) Mul1 Mul2 1 Ready RA e RB fornecidos clrC Notação: apenas sinais em 1 11/10/2017 32 Multiplicador 7. Conexão de FD e UC PCS3225 - 2016 63 Mult_UC INICIAR Mult_FD IN OUT ENTRA_MULTIPLICANDO ENTRA_MULTIPLICADOR Ready Sinais de controle Sinais de condição (lsb, zeroCtr) (clrP , clrC , ldCtr, ldP, ldC, shiftP, shiftB, enCtr) EXERCÍCIOS PCS3225 - 2016 64 11/10/2017 33 1 - Máximo Divisor Comum • Circuito que calcula o máximo divisor comum de dois números inteiros a e b. PCS3225 - 2016 65 Máximo divisor comum a_en b_en inicio clk mdc fim Referência: D’Amore, VHDL: descrição e síntese de circuitos digitais, 2ª edição, 2012 . Capítulo 16. 1 - Máximo Divisor Comum • Algoritmo de Euclides: int a, b; //entradas while ( a != b) { if ( a > b) {a = a – b ; } else {b = b – a ;} } mdc = a; PCS3225 - 2016 66 Ex.: mdc (15,10) 11/10/2017 34 2 - Raiz Inteira • Projetar circuito de cálculo da raiz quadrada, baseado no algoritmo abaixo. PCS3225 - 2016 67 DICA: veja vídeo em https://www.youtube.com/watch?v=38md9YNPee0 2 - Raiz Inteira • Exemplo PCS3225 - 2016 68 sqrt(51)= ? 11/10/2017 35 APÊNDICE: POTENCIAIS RESPOSTAS DOS EXERCÍCIOS PCS3225 - 2016 69 Máximo Divisor Comum • Vamos analisar: – as operações executadas; – os recursos necessários para realizá-las; – as etapas necessárias para realizá-las. PCS3225 - 2016 70 11/10/2017 36 PCS3225 - 2016 71 PCS3225 - 2016 72 11/10/2017 37 PCS3225 - 2016 73 PCS3225 - 2016 74 11/10/2017 38 PCS3225 - 2016 75 PCS3225 - 2016 76 11/10/2017 39 Máximo Divisor Comum • Fluxo de dados PCS3225 - 2016 77 sinais de status s1 h1 s2 h2 x1 sinais de comando saída entradas Máximo Divisor Comum • Fluxo de dados e Unidade de controle PCS3225 - 2016 78 diferente maior unidade de controle 11/10/2017 40 Máximo Divisor Comum • Depois de definidos os módulos do fluxo de dados: – devemos estabelecer a sequência de operações do conjunto (como o processamento será executado); – responsabilidade da unidade de controle. • O projeto completo define as : – operações executadas: fluxo de dados; e – mudanças de estados da máquina: unidade de controle. PCS3225 - 2016 79 PCS3225 - 2016 80 11/10/2017 41 PCS3225 - 2016 81 Fluxograma Diagrama de Transição de Estados 82PCS3225 - 2016 Diagrama ASM de alto nível 11/10/2017 42 83PCS3225 - 2016 Diagrama ASM de alto nível → ASM 0 0 1 1 fluxo de dados 84PCS3225 - 2016 Diagrama ASM de alto nível → ASM está implícito fim=0, s1=0 e s2=0 11/10/2017 43 PCS3225 - 2016 85 Diagrama ASM da Unidade de controle PCS3225 - 2016 86 Máximo Divisor Comum Projeto Completo 11/10/2017 44 Máximo Divisor Comum • Codificação em VHDL – Descrição comportamental. – Observação: o autor da referência adota o estilo de codificação de máquina de estados usando apenas 1 processo. PCS3225 - 2016 87 PCS3225 - 2016 88 11/10/2017 45 PCS3225 - 2016 89 PCS3225 - 2016 90 11/10/2017 46 PCS3225 - 2016 91 PCS3225 - 2016 92 11/10/2017 47 PCS3225 - 2016 93 Máximo Divisor Comum • Código VHDL final PCS3225 - 2017 94 11/10/2017 48 PCS3225 - 2016 95 PCS3225 - 2016 96 11/10/2017 49 Raiz inteira • Pseudocódigo e ASM de alto nível – O projeto começa com a elaboração de um diagrama ASM de alto nível que modela o funcionamento do circuito; – Considere um sinal de entrada go que inicia o cálculo da raiz quadrada; – Como é este diagrama? PCS3225 - 2016 97 sqrt go a resultado Raiz inteira • ASM de alto nível PCS3225 - 2016 98 11/10/2017 50 Raiz Inteira • Fluxo de dados – Quais os elementos do fluxo de dados? PCS3225 - 2016 99 Raiz Inteira • Fluxo de Dados PCS3225 - 2016 100 11/10/2017 51 Raiz inteira • Fluxo de dados PCS3225 - 2016 101 Raiz inteira • Fluxo de dados PCS3225 - 2016 102 11/10/2017 52 Raiz inteira • Fluxo de dados – Como inicializar, com valores adequados, as variáveis square e delta? – Como proporcionar valores iniciais, para square e delta? PCS3225 - 2016 103 Raiz inteira • Unidade de controle – A unidade de controle pode ser projetada a partir de um diagrama de transição de estados; – Considere um sinal de entrada go que inicia o cálculo da raiz quadrada; – Como é este diagrama? PCS3225 - 2016 104 sqrt go a resultado 11/10/2017 53 Raiz inteira • Unidade de controle PCS3225 - 2016 105 diagrama de transição de estados resultado= delta/2-1 Raiz inteira • ASM PCS3225 - 2016 106 11/10/2017 54 Raiz inteira • Conexão FD e UC PCS3225 - 2016 107 Raiz inteira • VHDL (componente principal) PCS3225 - 2016 108 11/10/2017 55 Raiz inteira • VHDL (componente principal) PCS3225 - 2017 109 Raiz inteira • VHDL (componente principal) PCS3225 - 2016 110 11/10/2017 56 Raiz inteira • VHDL – Completar a descrição VHDL do projeto, com a escrita da descrição: • do fluxo de dados (SQRTpath) e • da unidade de controle (SQRTctrl). PCS3225 - 2016 111
Compartilhar