SIMULAÇÃO E CIRCUITOS E ISPOSITIVOS PROGRAMÁVEIS Edson T. Midorikawa / 2007 E.T.M./2011 RESUMO Nesta experiência será discutido o procedimento de simulação de circuitos digitais, em particular sua importância dentro de uma metodologia para projeto de sistemas digitais. Serão abordados também princípios de dispositivos programáveis, como as CPLs e FPGAs. A parte experimental consiste na aplicação de técnicas de simulação em alguns circuitos com o auxílio da ferramenta de software para projeto de sistemas digitais uartus II da Altera e a programação de projetos em dispositivos programáveis. O objetivo principal desta experiência é a familiarização com os procedimentos de simulação com uma ferramenta de software e uma breve introdução aos dispositivos programáveis. 1. PARTE TEÓRICA 1.1. Metodologia de Projeto de Sistemas igitais Para que um sistema digital possa ser implementado eficientemente, é necessário adotar uma metodologia de projeto. Uma possível metodologia de projeto pode ser descrita através do fluxograma mostrado na figura 1.1 abaixo (Ranzini and Horta, 2000). INÍCIO EFINIÇÃO SÍNTESE ESCRIÇÃO AVALIAÇÃO SIMULAÇÃO OK? N N OK? S S FIM Figura 1.1 Uma metodologia de projeto de sistemas digitais. As principais etapas da metodologia proposta de projeto de sistemas digitais são as seguintes: i. Na etapa de EFINIÇÃO, o sistema digital (S) é especificado funcionalmente a partir dos seus sinais de entrada e saída e de suas funcionalidades. Um S pode ser dividido em diversas partes ou módulos. ii. Na etapa de ESCRIÇÃO são gerados os algoritmos responsáveis pelo funcionamento de cada uma das partes definidas na primeira etapa. Pode ser realizado com um editor gráfico, utilizando símbolos gráficos para cada componente ou módulo já projetado (captura esquemática), ou usando-se uma linguagem de descrição de hardware (HL). Simulação de Circuitos e ispositivos Programáveis (2011) 1
iii. A etapa seguinte (SIMULAÇÃO) envolve a execução de uma simulação do S, com o objetivo de verificar possíveis erros de concepção do projeto. Procura-se aqui encontrar erros, e em caso afirmativo, uma ação corretiva pode ser tomada. iv. Na SÍNTESE, cada um dos módulos do S é transformado em elementos de hardware, para serem implementados fisicamente. v. Na AVALIAÇÃO, estes elementos de hardware são testados para verificar se a implementação do S está funcionando de acordo com a especificação do projeto. Caso for encontrada qualquer discordância, uma nova síntese pode ser elaborada. 1.2. Simulação de Circuitos igitais O objetivo da simulação é verificar se o projeto do circuito digital, especificado via captura esquemática ou via linguagem de descrição de hardware (HL), executa corretamente de acordo com as suas especificações. Há duas categorias de simulação, funcional e temporizada. A simulação funcional simula a operação do circuito a partir de uma perspectiva lógica apenas, sem se preocupar com os atrasos de propagação dos sinais pelos componentes. Todos os dispositivos operam com tempos de atraso, setup e hold iguais a zero. Ela apenas verifica as equações booleanas e o seqüenciamento da máquina de estados. e uma maneira geral, é mais rápida que a simulação temporizada, permitindo assim encontrar erros de projeto mais rapidamente. A simulação temporizada simula a operação do circuito sob uma perspectiva de propagação de sinais pelos componentes. Todos os dispositivos operam com tempos de atraso, setup e hold reais. Ou seja, circuitos logicamente corretos, mas que não obedecem, por exemplo, o tempo de setup de um dos componentes pode produzir resultados diferentes do esperado. Geralmente, esta simulação usa atrasos do pior caso (worst-case delays), de modo que um circuito real deve operar mais rápido que o simulado. Ela é usada para verificar problemas de temporização, mas pode também ser usada para re-verificar as equações booleanas e o seqüenciamento da máquina de estados. Por se tratar de um processo mais demorado, é normalmente usado depois de uma simulação funcional. Várias ferramentas dispõem do recurso de simulação. O uartus II 9.1 oferece este recurso com auxílio do editor de formas de onda, como ilustrado na figura 1.2 abaixo. Figura 1.2 - Editor de formas de onda do uartus II 9.1. etalhes e mais informações sobre a ferramenta de simulação disponível no uartus II 9.1 podem ser encontrados no documento uartus II Simulation disponível na página da Internet da Altera. Simulação de Circuitos e ispositivos Programáveis (2011) 2
1.3. ispositivos Programáveis Os dispositivos lógicos programáveis representam uma nova abordagem no processo de desenvolvimento de sistemas digitais. No passado, os projetistas tinham de usar apenas componentes digitais com "funções fixas" disponibilizados no mercado (contadores, decodificadores, deslocadores, etc). Os dispositivos programáveis permitem ao usuário definir uma função a ser desempenhado por um ou vários chips. As características mais marcantes destes dispositivos são a programabilidade e a alta capacidade, o que aumenta a eficiência e a flexibilidade dos projetos e, também, diminui o tempo de desenvolvimento do produto. (ueck, 2001) Lógica Programável Os projetistas de circuitos digitais têm à sua disposição uma grande variedade de CIs padronizados, com as mais variadas funções. O fato destes CIs serem fabricados por várias empresas e em grande volume fazem com que tenham um custo relativamente baixo. Por esta razão, a técnica muito comum para a implementação de projetos de sistemas digitais é a interconexão destes CIs padronizados. (Tocci, 2007) Apesar de ser amplamente empregada, a utilização de CIs padronizados na implementação de sistemas tem alguns problemas. Primeiro, alguns sistemas podem precisar de centenas ou milhares de CIs. Este grande número de CIs necessita de um espaço considerável em uma placa de circuito impresso, sem levar em conta o consumo de energia necessária para alimentá-las. Um segundo aspecto diz respeito com o tempo necessário para a montagem e testes das placas.uma grande quantidade de CIs necessários em um sistema resultam em um tempo maior para colocar e soldar estes componentes na de circuito impresso. E a manutenção é o terceiro aspecto. uanto maior o número de componentes, menor é a confiabilidade do sistema. Assim, o fabricante do equipamento deve manter um estoque considerável, dispondo de toda a variedade de CIs utilizados no circuito. Uma solução para estas questões é reduzir o número de CIs usados no projeto. Com isto teremos uma série de vantagens: um menor espaço na placa, um menor consumo de energia (fontes de alimentação menores), processos de fabricação mais rápidos e baratos, maior confiabilidade e uma manutenção mais fácil. Para reduzir o número de CIs a serem usados no projeto é necessário colocar mais e mais funções nos chips. É claro que isso tem sido feito com as tecnologias LSI, VLSI, ULSI e, mais recentemente, GSI, para funções padronizadas como memórias, microprocessadores, sintetizadores de voz, entre outros. Esses dispostivos contêm milhares a alguns milhões de portas lógicas conectadas para operar de um modo pré-determinado. Existem muitas situações para as quais não existem soluções LSI, VLSI, ULSI e GSI. Nesses casos, o projetista se vê obrigado a recorrer aos dispositivos SSI e MSI padrões para obter as funções necessárias. O recente desenvolvimento de uma nova categoria de dispositivos, conhecidos como dispositivos lógicos programáveis (PL), ofereceu aos projetistas uma alternativa para substituir um grande número de CIs padronizados por um único CI. Esses dispositivos permitem especificar a sua operação lógica através de um processo chamado programação (Tocci, 2007). Tipos de ispositivos Lógicos Programáveis Uma grande variedade de dispositivos programáveis foi desenvolvida nos últimos tempos. Podemos citar, por exemplo, os seguintes: (Tocci, 2007), (Wakerly, 2006), (Fregni e Saraiva, 1995) PROM (Programmable Read-Only Memory) precursor dos PLs, a PROM pode gerar qualquer função lógica possível das variáveis de entrada. Contudo é usada apenas para um pequeno número de variáveis de entrada; PLA (Programmable Logic Array) desenvolvido em meados da década de 70, foi o primeiro dispositivo programável sem a estrutura interna da PROM, pois tanto a matriz das portas AN como a matriz das portas OR podem ser programadas. Não teve boa aceitação por parte dos projetistas; PAL (Programmable Array Logic) contém uma arquitetura interna similar a da PROM, sendo uma simplificação da PLA, pois apenas as conexões das entradas da matriz das portas AN são programáveis (a matriz das portas OR é fixa). É há muito tempo o tipo de dispositivo programável mais utilizado; GAL (Generic Array Logic) tipo de dispositivo programável que permite a implementação de circuitos sequenciais, pois introduz a possibilidade de emular flip-flops; CPL (Complex Programmable Logic evice) combina vários dispositivos do tipo PAL em uma estrutura em forma de matriz. Os blocos lógicos têm conexões AN programáveis e conexões OR fixas. uando necessário, vários blocos lógicos podem ser combinados para implementar; Simulação de Circuitos e ispositivos Programáveis (2011) 3
FPGA (Field Programmable Gate Array) contém um grande número de blocos lógicos que podem ser programados independentemente. Esses blocos contêm lógica combinatória e registradores para circuitos sequenciais; A Altera produz a famíla de CPLs MAX7000S, cujo diagrama de blocos é apresentado na figura 1.3. A principal estrutura do MAX7000S é uma série de Blocos de Matriz Lógica (LABs - logic array blocks), interconectados entre si por uma Matriz de Interconexão Programável (PIA - programmable interconnect array). Cada LAB é, na realidade, composto por um grupo de 16 macrocélulas, que podem compartilhar os termos-produto das suas variáveis. (uech, 2001) O CPL EPM7128S84 é um membro da família da Altera e sua identificação tem o seguinte significado: EPM7 família MAX7000 128 número de macrocélulas S programação "in-circuit" (quando instalado na placa do circuito) LC84 empacotamento PLCC de 84 pinos O EPM7128SLC84 contém 2.500 portas utilizáveis, 128 macrocélulas, 8 LABs, 8 pinos de I/O por LAB (totalizando 64 pinos de I/O). Na prática o EPM7128SLC84 deve ser programado na própria placa de circuito, através de quatro pinos dedicados para a interface de programação. As macrocélulas que não forem conectados a um pino de I/O de usuário apenas poderão ser usadas como um módulo de lógica interna da PL. Uma macrocélula é similar a um GAL, pois ela fornece uma função de soma de produtos como sinal de saída. Figura 1.3 - iagrama de Blocos do CPL MAX7000S da Altera. Simulação de Circuitos e ispositivos Programáveis (2011) 4
2. PARTE EXPERIMENTAL 2.1. Atividades Pré-Laboratório Nesta experiência será usado o software uartus II da Altera para a simulação dos circuitos abaixo. Consulte as seções relevantes da apostila "uartus II Simulation Using VHL esigns" (disponível na página Internet do curso ou da Altera) para instruções de uso do programa (criação de um projeto de circuito, compilação, simulação e programação). Circuito Assíncrono a) Seja o circuito da figura 2.1 abaixo. Analise sua estrutura e identifique seus componentes e sinais. 1 1 2 3 2 3 A 4 4 Figura 2.1 - Circuito a ser simulado. b) esenhe este circuito no uartus II usando o editor gráfico (captura esquemática), não se esquecendo de criar um projeto 1 para ele. Especifique os sinais 1, 2, 3, 4 e A como sinais de saída para poderem ser analisados na simulação. Em seguida, salve, compile o projeto e verifique a presença de erros. Simulação funcional c) Simule o comportamento funcional do circuito, conforme descrito na apostila "uartus II Simulation Using VHL esigns" (seção 5.1). Imprima as formas de onda obtidas para ser anexada no relatório. d) Explique as formas de onda obtidas a partir da simulação funcional. Simulação temporizada e) Execute em seguida uma simulação temporizada do circuito, conforme descrito na seção 5.2 do documento "uartus II Simulation Using VHL esigns". Anexe também as formas de onda obtidas. f) Analise as formas de onda obtidas a partir da simulação temporizada. Comparação e análise das simulações g) Compare as formas de onda analisadas nos itens (d) e (f). ual a conclusão desta comparação? h) ual foi a influência dos atrasos nos componentes na diferença nas formas de onda do sinal 4 dos itens (c) e (e)? Explique. i) Repita a simulação temporizada para um "grid size" maior (por exemplo, 1 ms) 2. Houve alguma mudança nas formas de onda? Analise. 1 urante a criação do projeto, especifique o dispositivo programável correto: família MAX7000S e componente EPM7128SLC84-7 ou -15, conforme disponível no painel de montagens da bancada. 2 Não esqueça também de alterar o valor do parâmetro end time, que especifica o tempo de fim de simulação (por exemplo, 1 seg). Simulação de Circuitos e ispositivos Programáveis (2011) 5
2.2. Montagem Experimental do Circuito j) Execute uma montagem do circuito lógico da figura 2.1 no painel de montagens experimentais. Anexe um diagrama lógico. k) Analise as formas de onda dos sinais 1, 2, 3, 4 e A, monitoradas com auxilio de um osciloscópio. Anexe uma cópia das formas de onda. l) Compare as formas de onda obtidas experimentalmente com as simulações da seção 2.1. Analise. 2.3. Programação de ispositivo Programável m) Com o projeto do circuito da figura 2.1 disponível no uartus II, realize a programação do circuito no dispositivo programável da placa MAX7-PCS disponível no painel de montagens experimentais. Use o documento uartus II Introduction Using Schematic esign (seção 9.1) para auxiliá-los neste item. n) Teste o funcionamento do circuito na placa MAX7-PCS monitorando os sinais de saída no osciloscópio. o) Compare as formas de onda obtidas experimentalmente com as simulações da seção 2.1 e a montagem da seção 2.2. Comente eventuais acontecimentos no uso do uartus II e na montagem experimental. 2.4. Perguntas p) ual é o papel da simulação no processo de desenvolvimento de circuitos digitais? Escreva com suas próprias palavras. q) uais as vantagens do uso de ferramentas de simulação no processo de desenvolvimento de circuitos digitais? r) Exemplifique outros usos possíveis da simulação. s) Como o uso de dispositivos lógicos programáveis facilita o projeto de circuitos digitais? 3. BIBLIOGRAFIA ALTERA. uartus II Simulation Using VHL esigns. July, 2010. ALTERA. uartus II Introduction Using Schematic esign. September, 2010. UECK, R. K. igital esign with CPL Applications and VHL. elmar, 2001. FREGNI, E. & SARAIVA, A. M. Engenharia do Projeto Lógico igital: conceitos e prática. Edgard Blücher, 1995. KIME, C. R.; MANO, M. M. Logic and computer design fundamentals. 3 rd ed., New Jersey: Prentice Hall, 2004. MIORIKAWA, E. T., et al. Projeto de circuitos com MAX+PLUS II. Apostila de Laboratório igital. Escola Politécnica da USP, 2002. ORONEZ, E..M.; PEREIRA, F..; PENTEAO, G.; PERICINI, R.A. Projeto, esempenho e Aplicações de Sistemas igitais em Circuitos Programáveis (FPGAs). Bless Gráfica e Editora Ltda., 2003. RANZINI, E.; HORTA, E. L. Lógica programável. Apostila de Laboratório igital. Escola Politécnica da USP, 2000. TOCCI, R. J.; WIMER, N. S.; MOSS, G. L. igital Systems: principles and applications. 10 th ed., Prentice-Hall, 2007. WAKERLY, J. F. igital design: principles and practice. 4 th ed., New Jersey: Prentice- Hall, 2006. Simulação de Circuitos e ispositivos Programáveis (2011) 6
4. MATERIAL ISPONÍVEL Circuitos Integrados TTL: 7400, 7410, 7474. 5. RECURSOS NECESSÁRIOS 1 painel de montagens experimentais. 1 fonte de alimentação fixa, 5V 5%, 4A. 1 placa MAX7-PCS, com cabo para interface paralela. 1 computador tipo IBM-PC com software uartus II. 1 impressora. Simulação de Circuitos e ispositivos Programáveis (2011) 7