DEPARTAMENTO DE ENGENHARIA EL´ETRICA CIRCUITOS DIGITAIS I
Experimento: Simula¸c˜ao de Circuitos no Max+Plus II
1
Introdu¸
c˜
ao
O ambiente de desenvolvimento de projetos de circuitos digitais Max + Plus II ´e uma ferra-menta computacional de an´alise e de s´ıntese de circuitos que facilitam um r´apido desenvolvi-mento de projeto de circuitos digitais. Por meio deste ambiente, ´e poss´ıvel fazer simula¸c˜oes de circuitos l´ogicos e programa¸c˜ao de dispositivos (PLDs - Programmable Logic Devices).
O objetivo deste tutorial ´e dar ao aluno uma breve introdu¸c˜ao ao ambiente gr´afico e de simula¸c˜ao, sendo que informa¸c˜oes mais aprofundadas devem ser buscadas nos t´opicos de ajuda do programa.
2
Fundamentos
As fases de implementa¸c˜ao de um projeto l´ogico digital no Max + Plus II podem ser divididas em:
• Entrada de dados para o projeto (Design Entry);
• Compila¸c˜ao e Simula¸c˜ao (Project verification, Project processing); • Programa¸c˜ao (Device programming).
2.1
Entrada de dados
A entrada de dados para o projeto consiste em fornecer ao programa informa¸c˜oes sobre a fun¸c˜ao l´ogica a ser implementada. Esta entrada de dados pode ser feita de diversas formas: • Gr´afica, atrav´es do editor gr´afico (Graphic Editor ). Neste caso, se utilizam bibliotecas com elementos b´asicos (primitivas) que podem ser diretamente inseridos no programa e ser interligados da maneira desejada;
• Por meio de formas de onda (Waveform Editor ). Neste caso, os dados de entrada s˜ao formas de onda que implementam alguma fun¸c˜ao desejada. A partir das formas de onda de entrada e de sa´ıda fornecidas, o programa implementa a fun¸c˜ao l´ogica. • Por meio de uma linguagem de programa¸c˜ao(HDL - hardware description language,
linguagem de descri¸c˜ao de hardware). Pode-se criar uma descri¸c˜ao de um sistema digital utilizando comandos reservados de linguagens estruturadas. O editor de texto (Text Editor ) permite a programa¸c˜ao em diversas linguagens (AHDL, VHDL ou Verilog HDL), que descrevem o funcionamento do circuito.
• Floorplan Editor, editor de planta baixa. Consiste de um editor que mostra o rotea-mento (disposi¸c˜ao de pinos de entrada e sa´ıda, ou I/O) em rela¸c˜ao ao dispositivo pro-gram´avel (FPGA) escolhido. Quando necess´ario uma mudan¸ca na disposi¸c˜ao de I/O ele mostra quais mudan¸cas s˜ao poss´ıveis, mas para que se fa¸cam valer as modifica¸c˜oes ´e necess´ario a recompila¸c˜ao do projeto.
2.2
Compila¸
c˜
ao
A compila¸c˜ao ´e composta por uma s´erie de procedimentos realizados pelo ambiente de pro-grama¸c˜ao para analisar, minimizar, corrigir e apontar falhas no projeto desenvolvido. O primeiro est´agio de compila¸c˜ao faz a verifica¸c˜ao sint´atica e semˆantica do arquivo de descri¸c˜ao de hardware (no caso de uma HDL) ou liga¸c˜oes entre os pinos, componentes sobrepostos, dispositivos sem nomea¸c˜ao etc..(no caso do uso do Editor Gr´afico). Caso haja algum erro, o processo de compila¸c˜ao ´e interrompido. O segundo passo da compila¸c˜ao ´e a cria¸c˜ao de um arquivo que possa representar o funcionamento do circuito a n´ıvel de equa¸c˜oes, sem pre-ocupa¸c˜oes sobre qual componente ser´a configurado e tampouco qual o tipo de roteamento utilizado. Em muitos projetos esse est´agio ´e o que consome mais recursos computacionais tais como mem´oria alocada para gerar os arquivos ou mesmo tempo de compila¸c˜ao. O ar-quivo que representa a descri¸c˜ao das equa¸c˜oes do circuito ´e chamado de Netlist. E, a partir deste, ´e avaliado se o componente escolhido e suas configura¸c˜oes permitem um roteamento implement´avel.
Deve se ressaltar que esta fase ´e a mais cr´ıtica quanto a problemas na compila¸c˜ao, pois muitas vezes op¸c˜oes de s´ıntese e de minimiza¸c˜ao ou at´e mesmo op¸c˜oes de escolha de fam´ılia de componentes podem inviabilizar a continuidade da s´ıntese do projeto. Para garantir uma r´apida configura¸c˜ao pelo compilador, h´a uma sugest˜ao de op¸c˜oes de escolha autom´atica de componentes para que o ambiente de programa¸c˜ao fa¸ca a escolha mais adequada. Devido `as diferen¸cas entre arquiteturas dos componentes l´ogico program´aveis, alguns projetos podem se adequar melhor ou pior em um tipo de fam´ılia de componente.
2.3
Simula¸
c˜
ao
A simula¸c˜ao ´e a fase de projeto que permite ao projetista uma an´alise do comportamento do circuito compilado, por meio da an´alise das formas de onda. Deve-se na simula¸c˜ao escolher todas as vari´aveis relevantes (entradas, sa´ıdas, valores intermedi´arios) e usar temporiza¸c˜oes parecidas `as condi¸c˜oes a que se prop˜oe o sistema. Atrasos de propaga¸c˜ao devem ser analisados e tamb´em os spikes. Quando os atrasos de propaga¸c˜ao forem maiores que o permitido, deve-se escolher fam´ılias de componentes l´ogicos mais r´apidos. E quando a quantidade de spikes for grande, pode-se trocar de fam´ılia de componente ou escolher outras op¸c˜oes de s´ıntese de compila¸c˜ao e desta forma o sistema deve ser recompilado e reavaliado.
2.4
Programa¸
c˜
ao
Na programa¸c˜ao, tem-se a efetiva programa¸c˜ao do dispositivo l´ogico. Arquivos criados na fase de compila¸c˜ao auxiliam a programa¸c˜ao exatamente como foi configurado o dispositivo. Na programa¸c˜ao, deve-se verificar se o componente ´e realmente o especificado na compila¸c˜ao. Caso n˜ao se tenha especificado o componente (Assign ≫ Device ≫ AUTO) n˜ao se pode fazer a programa¸c˜ao. Tamb´em deve-se verificar se as liga¸c˜oes do cabo entre o micro e a placa gravadora, fonte de alimenta¸c˜ao da placa, etc. est˜ao funcionando corretamente. Antes de programar, deve-se verificar o nome que est´a escrito no cabo (Byte Blaster, Bit Blaster etc.) e configurar esta op¸c˜ao na configura¸c˜ao de hardware (Max+plus II ≫ Programmer ≫ Hardware Setup).
Neste tutorial, vamos apresentar um exemplo bastante simples de entrada de dados pelo editor gr´afico e sua simula¸c˜ao, observando as formas de onda de interesse. Numa outra oportunidade ser´a realizada a programa¸c˜ao de um dispositivo.
3
Editor gr´
afico
No ambiente do editor gr´afico, podem-se criar projetos digitais utilizando elementos prim-itivos, ou seja, pode-se inserir cada componente existente em bibliotecas. Portas l´ogicas (AND, OR, NOT, NAND, etc.) e outros componentes podem ser utilizados para criar o projeto. Na verdade montaremos um esquem´atico do circuito l´ogico.
3.1
Criando um projeto no ambiente gr´
afico
Ao entrar no programa, selecione no menu MAX+plus II ≫ Graphic Editor. Ser´a aberta uma janela gr´afica (Fig. 1) onde ser´a montado o circuito l´ogico a partir de elementos existentes nas bibliotecas.
Figura 1: Janela principal do Max+PlusII com a janela do editor gr´afico aberta. Para entrar com os componentes, pode-se fazer um clique duplo na janela gr´afica, ou com o bot˜ao direito pressionado, selecionar a op¸c˜ao Enter Symbol, ou pelo menu Symbol ≫ Enter Symbol. Ser´a aberta uma janela (Fig. 2) onde h´a diversas bibliotecas de s´ımbolos (Symbol Libraries), com arquivos de s´ımbolos (Symbol Files). Clicando, por exemplo, em c:\maxplus2\max2lib\prim\. Aparecer˜ao diversos arquivos de s´ımbolos. Selecionando, por exemplo, o and2, ser´a inserido na janela gr´afica o s´ımbolo de uma porta AND com duas entradas (Fig. 3).
Antes de prosseguir, ´e uma boa medida salvar o arquivo e relacion´a-lo a um projeto (project). Todos os arquivos de um mesmo projeto devem estar numa mesma pasta porque o ambiente de programa¸c˜ao n˜ao tem a capacidade de relacionar arquivos de um mesmo projeto em pastas diferentes.
Salve o arquivo a partir do menu File ≫ Save as, e grave-o em seu diret´orio (por ex-emplo C:\alunos\Vodalus\Maxplus), com o nome de tutorial.gdf (Fig. 4). O projeto vai relacionar v´arios arquivos que ser˜ao produzidos ou utilizados pelo ambiente de desenvolvi-mento para executar outras tarefas como a compila¸c˜ao e a simula¸c˜ao. Sempre ´e necess´ario relacionar o arquivo de trabalho com um projeto. Isto ´e feito a partir do menu File ≫ Project ≫ Set Project to Current File. Note que o nome do arquivo na barra superior da janela ser´a modificado.
Figura 2: Janela para sele¸c˜ao de s´ımbolos.
2 AND2
Figura 3: Porta AND.
anteriormente utilizada a entrada (Input) e a sa´ıda (Output). Para obter outra entrada, pode-se ir novamente `a biblioteca, ou, no esquem´atico, selecionar o s´ımbolo de entrada e, pressionando-se a tecla Control, arrastar o s´ımbolo, que ser´a duplicado. Deve-se agora interli-gar os s´ımbolos com fios. Para isto, basta posicionar o cursor do mouse sobre a extremidade do s´ımbolo que se deseja conectar. O cursor mudar´a para uma cruz, e com o bot˜ao esquerdo pressionado, levar o cursor at´e o ponto desejado. Pode-se fazer o caminho indo diretamente de um terminal a outro, ou fazˆe-lo por segmentos de reta. Caso se deseje apagar a liga¸c˜ao ou componente, basta selecionar o objeto (quando este aparecer´a com uma linha vermelha) e apertar a tecla Delete. A Fig. 5 mostra o componente com as entradas e sa´ıdas conectadas. Os sinais de interesse devem ser identificados para posterior utiliza¸c˜ao, e para isso os pinos de entrada e sa´ıda devem ter nomes. No caso das entradas e sa´ıda, basta clicar sobre PIN NAME, e digitar o nome desejado, por exemplo, A e B para as entradas, e C para a sa´ıda.
Quando h´a muitos componentes, liga¸c˜oes e entradas e sa´ıdas, uma alternativa que torna o esquem´atico mais limpo e de mais f´acil depura¸c˜ao ´e dar nomes aos pinos, e referenci´a-los em outros pontos do circuito com o mesmo nome. Para isto, conecte uma linha nos terminais que deseja conectar, sem fechar a conex˜ao entre os terminais. Na extremidade da linha, clique com o bot˜ao direito do mouse e selecione Edit Node Name, e coloque o nome desejado (A, B ou C). Repita para o terminal que deseja conectar. Desta forma, o programa saber´a que esses dois pontos devem ser conectados. O resultado ficar´a como indicado na Fig. 6.
Figura 4: Gravando o arquivo. VCC 4 PIN_NAME INPUT VCC 3 A INPUT 2 AND2 5OUTPUT PIN_NAME
Figura 5: Componente com entradas e sa´ıdas conectadas.
4
Compilador
O processo de compila¸c˜ao ´e uma an´alise da viabilidade do projeto. No processo de com-pila¸c˜ao, s˜ao criados v´arios arquivos que podem ser posteriormente utilizados para outras etapas de simula¸c˜ao e implementa¸c˜ao. A primeira an´alise ´e a semˆantica, que verifica conex˜oes desnecess´arias, pinos e fios sem conex˜ao, nome do projeto e de outros componentes corretos, palavras erradas nos editores de texto, vari´aveis n˜ao declaradas, bibliotecas n˜ao encontradas etc.
A segunda fase da compila¸c˜ao ´e a cria¸c˜ao em arquivos espec´ıficos o projeto a ser imple-mentado no FPGA, suas liga¸c˜oes, e o tipo de componente FPGA mais adequado quanto ao tamanho, freq¨uˆencia de trabalho etc. Por fim, o compilador cria arquivos necess´arios para a programa¸c˜ao do FPGA, e tamb´em, o arquivo de relat´orio (*.RPT), que mostra com detalhes todo o processo de compila¸c˜ao, escolha de op¸c˜oes de compila¸c˜ao, resultados de otimiza¸c˜ao de circuitos tamanho dos circuitos, mem´oria necess´aria para a compila¸c˜ao etc.
Para compilar o projeto, clique no ´ıcone com uma f´abrica, do disquete com uma chamin´e, ou acesse o menu Max+plusII ≫ Compiler. Ser´a aberta uma janela (Fig. 7) onde deve-se teclar em Start. Caso n˜ao haja problemas, ser˜ao criados outros arquivos, que po-dem ser visualizados em Max+plusII ≫ Hierarchy Display. O arquivo .RPT ´e uma
B A B A C C VCC 3 A INPUT VCC 4 B INPUT 2 AND2 5OUTPUT C
Figura 6: Atribuindo nomes aos dois lados de um fio.
esp´ecie de arquivo de relat´orio (report), que mostra como foram criados os circuitos im-plement´aveis, configura¸c˜oes de compila¸c˜ao, quantidade de c´elulas l´ogicas implementadas, roteamento (pinagem) do componente escolhido etc. Abra este arquivo (clicando duas vezes no rpt) e veja as informa¸c˜oes nele contidas. O arquivo .FIT mostra como foi projetado o cir-cuito implement´avel a n´ıvel de portas l´ogicas primitivas. O arquivo mostra as configura¸c˜oes no momento de compila¸c˜ao.
Se o projeto compilou sem problemas (aten¸c˜ao, sempre haver´a um aviso quando estiver selecionada a op¸c˜ao automatic device), pode-se proceder para a etapa de verifica¸c˜ao das formas de onda. E ´e criado o arquivo s´ımbolo ( .SYM) que ´e a representa¸c˜ao gr´afica do projeto como um ´unico componente discreto.
5
Simulador - Waveform Editor
O simulador, como o nome sugere, verifica os resultados de sa´ıda do circuito de acordo com as entradas. Abra o Editor de Forma de Onda (Max+plusII ≫ Waveform Editor, Fig. 8), clique com o bot˜ao direito em qualquer ponto da tela, e selecione Enter Nodes from SNF. Pressionando-se a tecla List, aparecer˜ao todas as entradas (I) e sa´ıdas (O) do circuito em Available Nodes & Groups. Selecione todos e clicando na seta `a direita, passe todos para Selected Nodes & Groups. Dessa forma, as entradas e a sa´ıda ser˜ao selecionadas para a an´alise das formas de onda.
Figura 8: Janela do editor de forma de onda.
Agora vamos atribuir formas de onda `as entradas para verificar a sa´ıda. ´E interessante que as entradas assumam todas as combina¸c˜oes poss´ıveis. Isso ´e obtido da seguinte maneira: selecione uma das entradas, clicando em A, por exemplo. A linha toda ficar´a selecionada. Nos ´ıcones `a esquerda da janela principal, clique no correspondente ao que se assemelha a um X com um C, que ´e um gerador de onda quadrada. Na janela que se abrir´a, h´a v´arias informa¸c˜oes sobre o sinal que ser´a gerado: intervalo, contagem bin´aria, per´ıodo. O per´ıodo (Count Every), n˜ao deve ser maior que o intervalo. O fator de multiplica¸c˜ao (Multiplied By), aumenta o per´ıodo da onda quadrada a ser gerada. Para este caso, mantenha os valores default.
Repita para o sinal de entrada B, modificando apenas o fator de multiplica¸c˜ao para 2. Note que o per´ıodo da onda de B ´e o dobro em rela¸c˜ao a A. A combina¸c˜ao de valores (00, 01, 10, 11) pode ser vista pelas formas de onda e pelo cursor azul sobre as formas de onda.
Antes de simular o circuito, salve o arquivo e depois v´a em Max+plusII ≫ Simulator, ou clique no ´ıcone do menu superior que se parece com um computador com uma forma de onda. Outra op¸c˜ao ´e utilizar o ´ıcone com o disquete e a forma de onda, que salvar´a o arquivo e realizar´a a simula¸c˜ao. Caso n˜ao ocorram erros, aparecer´a na tela a forma de onda de sa´ıda em C (Fig. 9). Note que os atrasos de propaga¸c˜ao dos sinais s˜ao considerados na
tempo vis´ıvel atrav´es do menu View ≫ Time Range.
Figura 9: Simula¸c˜ao e formas de onda de entrada e sa´ıda.
6
Editor de texto
No ambiente do editor de texto, pode-se descrever o circuito por meio de uma das linguagens de descri¸c˜ao de hardware dispon´ıveis: AHDL, VHDL, Verilog HDL. Cada linguagem tem suas particularidades, e seu uso depende do tipo de projeto e do estilo do projetista. Por exemplo, uma porta AND de duas entradas, programado em AHDL, ´e descrita pela listagem: SUBDESIGN and_1 ( A, B : INPUT; C : OUTPUT; ) BEGIN C = A AND B; END;
Como em qualquer linguagem de programa¸c˜ao, existem palavras reservadas que n˜ao podem ser utilizadas como vari´aveis do programa, por exemplo: input, output, and, clear, if, then, else.
7
Programa¸
c˜
ao
Na programa¸c˜ao, o circuito que foi simulado ser´a implementado em hardware no FPGA. No kit did´atico utilizado h´a um FPGA (EPM7128SLC84-7) com conex˜oes para entrada e sa´ıda de sinais, al´em de chaves, LEDs e displays. A placa deve ser alimentada por uma fonte externa e comunica-se com o computador via interface paralela (LPT-1) por meio de um cabo dedicado chamado de ByteBlasterII. Deve-se ter muito cuidado ao manejar a placa e o cabo, pois este ´e curto e n˜ao deve sofrer tens˜oes mecˆanicas. Ap´os a programa¸c˜ao, tanto a alimenta¸c˜ao quanto o cabo de interface podem ser retirados, pois o circuito fica armazenado no FPGA.
Observa¸
c˜
oes importantes:
• Cuidado ao manusear a placa e os cabos. N˜ao encoste os dedos nos dispositivos, contatos, pinos nem na parte de baixo da placa. Coloque-a sobre uma superf´ıcie placa ou sobre o pl´astico de prote¸c˜ao;
• Os LEDs s˜ao ativos em n´ıvel 0, ou seja, ao enviar um bit 0, o LED acende;
• As chaves (DIP-Switches) podem apresentar mal contato, e por esse motivo pode ser melhor utilizar as chaves do m´odulo verde (sem esquecer de conectar os terras) ou o gerador de fun¸c˜oes (sem esquecer de ajustar os n´ıveis de tens˜ao adequadamente entre 0 e 5 V).
• Para conectar o terra da placa ao terra do m´odulo verde, coloque uma das chaves da placa em n´ıvel zero e conecte este ponto ao terra do m´odulo verde, ou utilize um dos pontos de terra do CI.
Procedimentos
Ap´os a compila¸c˜ao e simula¸c˜ao das formas de onda, e antes da programa¸c˜ao do dispositivo, fa¸ca as seguintes verifica¸c˜oes no programa:
• Assign ≫ Device. Tire a sele¸c˜ao de Show Only Fastest Speed Grades; Selecione a fam´ılia MAX 7000S, e em seguida o FPGA EPM7128SLC84-7, que ´e aquele utilizado no kit did´atico (confirme na placa);
• Recompile o projeto, para que seja feita adequa¸c˜ao ao novo FPGA;
• V´a a Max+PLus II ≫ Programmer. Ser´a aberta a janela de programa¸c˜ao (que ainda n˜ao ser´a utilizada). Verifique se o c´odigo do FPGA ´e o correto;
• Assign ≫ Global Project Logic Synthesis. Desabilite todas as op¸c˜oes em Auto-matic Global;
• Options ≫ Hardware Setup. Verifique se est´a configurado o ByteBlasterII e LPT1;
• Recompile o projeto, caso ainda n˜ao o tenha feito ou tenha modificado alguma con-figura¸c˜ao anterior;
• V´a a Max+Plus II ≫ Floorplan Editor. Vocˆe deve visualizar a pinagem do FPGA, e em destaque estar˜ao as entradas e sa´ıdas do seu circuito. Verifique a pinagem alocada pelo programa para as suas vari´aveis de entrada e de sa´ıda. Caso queira mudar algun pino de local (drag-and-drop), use sempre os indicados como I/O. Nesse caso, vocˆe deve recompilar o projeto. Anote a numera¸c˜ao dos pinos de entrada e sa´ıda.
• Caso os pinos n˜ao apare¸cam e/ou n˜ao consiga mudar determinado pino de local, sele-cione no menu Layout ≫ Current Assignment Floorplan e depois v´a em Assign ≫ Back Annotate Project. Recompile e verifique se os pinos aparecem no Floor-plan;
• N˜ao utilize os pinos nomeados como Global Clock ou Global Clear. Caso estes pinos tenham sido atribu´ıdos, mude-os de local novamente e recompile o projeto.
• Conecte o cabo ByteBlasterII da placa `a interface paralela e ligue a fonte da placa. Cuidado com os cabos. N˜ao os estique e os manuseie apenas pelos conectores, nunca pelo cabo.
• Na janela do Programmer, caso os bot˜oes Program, Verify, Examine e Blank-Check estiverem habilitados, clique em Program. O seu circuito ser´a implementado no FPGA e a placa poder´a ser desligada sem perda de dados.
• Retire a alimenta¸c˜ao da placa e em seguida o cabo ByteBlasterII.
• Utilize a placa sobre a bancada ou sobre o m´odulo verde de chaves. Caso use a placa com outros dispositivos, como gerador de fun¸c˜oes e m´odulo verde, conecte os terras desses instrumentos em uma das chaves que estejam em n´ıvel 0 (este ´e o terra da placa, que n˜ao tem pino de acesso direto ao terra).
• Conecte as entradas `as chaves e as sa´ıdas a LEDs. Fa¸ca os testes observando os LEDs ou os displays, se for o caso. Lembre-se que os LEDs do kit s˜ao ativos em zero.