“TAB2VHDL: UM AMBIENTE DE SÍNTESE LÓGICA PARA MÁQUINAS DE ESTADOS FINITOS” LEANDRO DE OLIVEIRA TANCREDO UNIVERSIDADE ESTADUAL PAULISTA – UNESP FACULDADE DE ENGENHARIA CAMPUS DE ILHA SOLTEIRA DEPARTAMENTO DE ENGENHARIA ELÉTRICA DISSERTAÇÃO DE MESTRADO “TAB2VHDL: UM AMBIENTE DE SÍNTESE LÓGICA PARA MÁQUINAS DE ESTADOS FINITOS” 19 DE SETEMBRO DE 2002 UNIVERSIDADE ESTADUAL PAULISTA – UNESP FACULDADE DE ENGENHARIA CAMPUS DE ILHA SOLTEIRA “TAB2VHDL: UM AMBIENTE DE SÍNTESE LÓGICA PARA MÁQUINAS DE ESTADOS FINITOS” ______________________________________ Prof. Dr. Carlos Magnus Carlson Filho Banca ______________________________ Prof. Dr. Norian Marranghello Banca _____________________________________________ Prof. Dr. Alexandre César Rodrigues da Silva Orientador Dissertação de Mestrado submetida ao DEE – FEIS – UNESP como exigência para obtenção do título de Mestre em Engenharia Elétrica. ILHA SOLTEIRA – SP 1 Ver glossário na página 78. AGRADECIMENTOS Dedico esta dissertação aos meus amigos e familiares, cada um a seu tempo e a seu modo... Aos meus verdadeiros orientadores da vida, meu pai João e minha mãe Eliana; Á minha amada, persistente, carinhosa, sensível e companheira Cristiane; Aos meus irmãos batalhadores Adriano e Liamara, minha cunhada Sandra e minha afilhada Nathália; Ao meu orientador que abriu os olhos para outro mundo, e também a sua família, que foi essencial para a existência desse trabalho; Meus amigos professores estimuladores Clinton, Silvio, Elizandra, Cláudia Hidalgo; Aos coordenadores responsáveis, sérios e porém acolhedores Maurício e Carlos; Á coordenadora pedagógica da FAIJALES dona Ruth correta, competente e afetuosa; Meus avôs amorosos, Amélia, Vick, Marcos e Sebastião (falecido); Meus tios sempre presentes e amorosos Mariza ,Paschoal e Antônia; Minhas primas seus maridos e filhos Cláudia, Isamara e Família; Meus amigos dedicados, acolhedores e acima de tudo profissionais Tereza, Getúlio, , Neide, Cidinha Botaro, Cidinha (Barretos), Marivaldo, João Marcelo, João Roberto, Edward, Leônidas e Kleber ; Aos amigos do DEE FEIS Fábio, Helder, Marcos e Tércio; Aos professores rigorosos e persisitentes Nobuo, Aparecido, Edvaldo e Kitano que contribuíram para esse trabalho. A minha melhor gratidão é trazer um pouco de cada um deles dentro de mim e levar os frutos de suas sementes para a vida e para o resto de minha vida, se por vezes pareci distante, não estava. Fiz, faço e farei por vocês. Tento retribuir a força que vocês me concedem. 1 Ver glossário na página 78. Frases P O R T A S Se você encontrar uma porta a sua frente, pode abri-la ou não. Se você abrir a porta, pode ou não entrar em uma nova sala. Para entrar, você vai ter de vencer a dúvida, o titubeio ou o medo. Se você venceu, dá um grande passo: nesta sala, vive-se. Mas tem um preço: inúmeras outras portas que você descobre. O Grande Segredo é Saber: “Quando e qual porta deve ser aberta” A Vida não é Rigorosa: ela propicia erros e acertos. Os erros podem ser transformados em acertos quando com eles se aprende. Não existe a segurança do “Acerto Eterno”. Içami Tiba 1 Ver glossário na página 78. RESUMO Este trabalho apresenta uma nova ferramenta de síntese para projetos de sistemas digitais denominada TAB2VHDL. A partir da descrição em diagrama de transição de estados de uma máquina finita, representada no modelo de Mealy, é gerada uma descrição otimizada do sistema na linguagem de VHDL. Elimina-se dessa forma a tarefa árdua com detalhes de projeto. A TAB2VHDL foi comparada com duas outras ferramentas disponíveis comercialmente. Foram projetados diversos chip-set de códigos de transmissão digital utilizados no setor de telecomunicações. Os resultados comprovaram o desempenho satisfatório com relação ao custo de implementação, ao tempo de execução e uso de memória. Palavra Chave: FPGA, VHDL, FSM, HDL, Síntese Lógica ABSTRACT This paper presents a new synthesis tool for digital system projects called TAB2VHDL. From the description in states transition diagram of a finite machine, represented in Mealy's model, an optimized system description in VHDL language is generated. Therefore, it is eliminated an arduous task with project details. The TAB2VHDL was compared with two other available commercial tools. It was projected a sort of chip-set digital transmission codes, used in telecommunication sector. The results proved the satisfactory performance related to the implementation cost, to the time of execution and memory use. Keywords: FPGA, FSM, VHDL, HDL, Logic Synthesis 1 Ver glossário na página 78. LISTA DE ABREVIATURAS 2B1Q 2 Binary/ 1 Quaternary 3B4B 3 Binary/2 Binary ADSL Asymmetric Digital Subscriber Line AHDL Altera Hardware Description Language AMI Alternate Mark Inversion ASIC Aplication-Specific Integrated Circuits CAD Computer-Aided Design CAP Carrierless Amplitude/Phase Modulation CCS Calculus of Communicating System CCITT Comité Consultatif International Telegraphique et Telephonique CI Circuito Integrado CPLD Complex Programmable Logic Devices CSP Communicating Sequencial Process DE Discrete Event EPLD EPROM Programmable Gate Array EPROM Erase Programmable Ready Only Memory ERB Estação Rádio-Base FDDI Fiber Distributed Data Interface FPGA Field Programmable Gate Array FSM Finite State Machine HDB3 High Density Bipolar of order 3 code HDL Hardware Description Language HDLC High Level Data Link Control 1 Ver glossário na página 78. IEEE Institute of Electrical and Electronic Engineers HDL Hardware Design Language HDSL High bit rate Digital Subscriber Line ISO International Standards Organization ITU International Telecommunication Union LAPB Balanced Link Acess Procedure LAPD Link Acess Procedure for the D channel MIPS Milhões de Instruções por Segundo MLT-3 Multi-Level Transmission-3 MOC Model of Computation OSI Open System Interconnection PCM Pulse Code Module RDSI Rede Digital de Serviços Integrados RTL Register Transfer Level SDL Specification and Description Language SEQ2VHDL Sequential To VHDL VADSL Very High Bit-rate Asymmetric Digital Subscriber Line VDSL Very Data Digital Subscriber Line VHDL VHSIC Hardware Description Language VHSIC Very High Speed Integrated Circuits 1 Ver glossário na página 78. INDICE GERAL AGRADECIMENTOS................................................................................................................ 1 RESUMO............ ........................................................................................................................ 3 ABSTRACT........ ........................................................................................................................ 3 LISTA DE ABREVIATURAS................................................................................................... 4 INDICE GERAL......................................................................................................................... 6 ÍNDICE DE FIGURAS............................................................................................................... 8 INDICE DE TABELAS............................................................................................................ 10 CAPÍTULO 1...... ...................................................................................................................... 11 INTRODUÇÃO..... ................................................................................................................... 11 1.1 CENÁRIO DO SETOR DE TELECOMUNICAÇÕES................................................. 2 1.2 CONCEITOS DE REPRESENTAÇÃO DE UM PROJETO DIGITAL ...................... 5 1.3 PROPOSTA DE PESQUISA ......................................................................................... 14 1.3.1 OBJETIVO................................................................................................................... 17 1.3.2 ORGANIZAÇÃO DA DISSERTAÇÃO DE MESTRADO ................................... 17 1.3.3 CONTRIBUIÇÕES..................................................................................................... 17 CAPÍTULO 2...... ...................................................................................................................... 19 MODELAGEM E LINGUAGEM DE SISTEMAS DE TELECOMUNICAÇÕES............ 19 2.1 MODELOS DE SISTEMAS DE TELECOMUNICAÇÕES....................................... 19 2.1.1 EXEMPLOS DE MODELOS [LEE 99].................................................................... 21 2.1.2 EVOLUÇÃO E ESCOLHA DO MODELO DE DESCRIÇÃO .............................. 26 2.2 LINGUAGENS DE DESCRIÇÕES.............................................................................. 26 2.2.1 LINGUAGEM DE DESCRIÇÃO DE HARDWARE ............................................. 27 2.2.2 LINGUAGEM SOFTWARE [TAN 02B] ................................................................... 36 2.2.3 CARACTERÍSTICAS RELEVANTES NA ESCOLHA DAS LINGUAGENS... 37 2.2.4 FERRAMENTAS PARA ENTRADAS FSM DE PROJETOS HDL...................... 38 CAPÍTULO 3...... ...................................................................................................................... 39 AMBIENTE TAB2VHDL (TABELA E SEQ2VHDL) ......................................................... 39 3.1 PROGRAMA TABELA................................................................................................. 40 3.2 PROGRAMA SEQ2VHDL............................................................................................ 47 CAPÍTULO 4........ .................................................................................................................... 50 1 Ver glossário na página 78. PROJETOS DE CÓDIGOS DE LINHA ................................................................................. 50 4.1 CODIFICAÇÃO......................................................................................................... 51 4.1.1 CÓDIGO HDB3 .......................................................................................................... 51 4.1.2 CÓDIGO DE LINHA MLT-3 .................................................................................... 59 4.1.3 CÓDIGO AMI ............................................................................................................. 61 4.1.4 CÓDIGO 2B1Q ........................................................................................................... 63 4.1.5 CÓDIGO HDB1 .......................................................................................................... 64 4.2 COMPARAÇÃO DOS RESULTADOS....................................................................... 67 CONCLUSÃO...... ..................................................................................................................... 72 BIBLIOGRAFIA....................................................................................................................... 74 GLOSSÁRIO............................................................................................................................. 78 APÊNDICE I...... ....................................................................................................................... 82 ANÁLISE ESTRUTURAL DO AMBIENTE TABELA E SEQ2VHDL............................. 82 A. DESCRIÇÃO DO SISTEMA TAB2VHDL ................................................................. 82 B. OBJETIVO...................................................................................................................... 82 C. DESCRIÇÃO DOS PROCESSOS................................................................................ 83 D. DESCRIÇÃO DOS DEPÓSITOS DE DADOS ........................................................... 87 E. MODELAGEM DE DADOS......................................................................................... 88 F. DIAGRAMA DE FLUXO DE DADOS (D.F.D) ......................................................... 90 G. DESCRIÇÃO DAS INTERFACES .............................................................................. 94 APÊNDICE II............................................................................................................................ 98 APÊNDICE III.... .................................................................................................................... 109 1 Ver glossário na página 78. ÍNDICE DE FIGURAS Figura 1 - Representação da Cidade A com Centrais Telefônicas e ERBs. ............................ 2 Figura 2 - Fluxo de um processo de projeto de circuito integrado ........................................... 7 Figura 3 - Níveis de Abstração do Diagrama Y ........................................................................ 8 Figura 4 - Diagrama Y - Domínio Comportamental................................................................. 9 Figura 5 - Diagrama Y - Domínio Estrutural e Físico ........................................................... 10 Figura 6 - Divisão de um PLD conforme sua estrutura. ......................................................... 11 Figura 7 - Evolução da Arquiteturas da Altera ........................................................................ 13 Figura 8 - Matriz Simétrica (Symetrical Array)..................................................................... 14 Figura 9 - Diagrama Y apresentando a ferramenta de síntese TAB2VHDL......................... 15 Figura 10 - Modelo Funcional representados por uma nuvem............................................... 20 Figura 11 -Sintaxe simples (bolas e arcos ou diagrama de blocos e setas). .......................... 21 Figura 12 - Representação de um circuito de uma máquina seqüencial síncrona................. 24 Figura 13 - Máquina de Mealy ................................................................................................. 25 Figura 14 - Máquina de Moore ................................................................................................. 25 Figura 15 - Resumo dos arquivos textos gerados pelo ambiente TAB2VHDL .................... 39 Figura 16 - Diagrama Y que representa os arquivos textos do Programa TABELA............ 40 Figura 17 - Diagrama de blocos do programa TABELA........................................................ 41 Figura 18 - Diagrama de estados do Código AMI ................................................................. 42 Figura 19 – Arquivo AMI.TAB de Entrada do Programa TABELA..................................... 42 Figura 20 - Esquemático do circuito que implementa o código de linha AMI. .................... 45 Figura 21 - Simulação do circuito apresentado na Figura 20. ................................................ 45 Figura 22 - Diagrama Y que representa a ferramenta SEQ2VHDL ...................................... 47 Figura 23 - Sinal Bipolar........................................................................................................... 52 Figura 24 - Aspectos do sinal HDB-3 que envolvem violação. ............................................. 52 Figura 25 - Fluxograma da Regra 4 da codificação HDB-3 ................................................... 54 Figura 26 - Diagrama de estado do código HDB3 em Hexadecimal. .................................... 55 Figura 27 - Representação do Diagrama de Estado do código MLT-3 ................................. 60 Figura 28 - Esquemático do circuito para a função D0 = X’.Q + X.Q’................................. 62 1 Ver glossário na página 78. Figura 29 - Simulação do circuito apresentado na Figura 28. ................................................ 63 Figura 30 - Diagrama de Estado do Código HDB1 ................................................................ 65 Figura 31 - Gráfico comparando a alocação de pico de memória.......................................... 68 Figura 32 - Gráfico comparando o tempo de execução do código......................................... 69 Figura 33 - Gráfico comparativo entre os códigos e o números de portas lógicas ............... 69 Figura 34 - Gráfico que compara o número de fan-in entre as ferramentas.......................... 70 Figura 35 - Comparação entre a porcentagem útil de utilização e os códigos. ..................... 70 Figura 36 - Diagrama de Fluxo de Dados 1............................................................................. 90 Figura 37 - Diagrama de Fluxo de Dados 2............................................................................. 90 Figura 38 - Criando Tabela de saída do programa tabela ....................................................... 91 Figura 39 - Diagrama de Fluxo de Dados 4............................................................................. 92 Figura 40 - Diagrama de Fluxo de Dados 5............................................................................. 92 Figura 41 - Diagrama de Fluxo de Dados 6............................................................................. 93 Figura 42 - Menu Cadastro do Arquivo de Saída do Programa TABELA............................ 94 Figura 43 - Menu das opções de entrada de dados.................................................................. 94 Figura 44 - Menu do número de entrada e saída ..................................................................... 95 Figura 45 - Menu de inclusão do número de flip-flop e o tipo............................................... 95 Figura 46 - Menu de inclusão da tabela de estado .................................................................. 96 Figura 47 - Menu de entrada de dados - continuação ............................................................. 96 Figura 48 - Menu de entrada de dados - finalização ............................................................... 97 Figura 49 - Menu SEQ2VHDL ................................................................................................ 97 1 Ver glossário na página 78. INDICE DE TABELAS Tabela 1 - Classificação das Arquiteturas da Altera ............................................................... 12 Tabela 2 - Origem e Status ....................................................................................................... 35 Tabela 3 - Principais Características........................................................................................ 35 Tabela 4 - Níveis de Descrição................................................................................................. 35 Tabela 5 - Comparação das especificações das linguagens adotadas.................................... 37 Tabela 6 - Características do VHDL........................................................................................ 38 Tabela 7 - Tabela de Conversão de Hexadecimal para Decimal............................................ 56 Tabela 8 - Comparação entre o SC, AC e o TAB2VHDL para o código HDB3.................. 58 Tabela 9 – Comparação do código de linha MLT3 utilizando SC, AC e TAB2VHDL...... 60 Tabela 10 - Comparação entre SC, AC e TAB2VHDL na criação do código AMI. ............ 61 Tabela 11 - Tabela Verdade do código 2B1Q......................................................................... 64 Tabela 12 - Comparação do projeto 2BQ1 ao utilizar o SC, AC e TAB2VHDL ................. 64 Tabela 13 – Comparação do código HDB1 utilizando SC, AC e TAB2VHDL ................... 66 Tabela 14 - Resultado final da implementação ....................................................................... 67 Tabela 15 - Comparação utilizando elemento de memória JK e D no TAB2VHDL ........... 71 Tabela 16 - Criando arquivo de entrada do programa TABELA........................................... 88 Tabela 17 - Entrada de Dados do Programa TABELA........................................................... 88 Tabela 18 - Identifica estado do programa SEQ2VHDL........................................................ 89 Tabela 19 - Cria entidade do Programa SEQ2VHDL............................................................. 89 Tabela 20 - Cria arquitetura do programa TAB2VHDL......................................................... 89 1 Ver glossário na página 78. CAPÍTULO 1 INTRODUÇÃO Neste capítulo descreve-se o desenvolvimento do setor de telecomunicações, referenciando cenários antigos, atuais e futuros, para em seguida, apresentar-se às tendências de serviços mundiais de telecomunicações, e as novas tecnologias emergentes, que utilizam como meio condutor o par de fios metálicos, meio físico existente onde ocorre a maioria das transmissões de dados locais das empresas concessionárias de telefonia, condutor que é um dos responsáveis pelas novas Redes Digitais Integradas (RDI), que permitem altas taxas de velocidade de transmissão digital. Essas redes apresentam como um dos seus componentes, códigos de linha, que são circuitos integrados que serão designados como estudo de casos neste trabalho, vários códigos de linha foram projetados e implementados em componentes FPGA1 (do inglês Field Programmable Gate Array) da ALTERA. Utilizou-se de dois ambientes comerciais, cujos resultados serviram para avaliar a ferramenta desenvolvida. Apresentam-se também as possíveis formas de representação dos circuitos digitais, que contém seus domínios e seus níveis de abstração, a partir do diagrama Y de Gajski & Kahn [GAJ 83], muito importante para que se entendam, quais são as possíveis formas de descrição de um chip. 2 Logo em seguida, temos as ferramentas para modelagem, que abrange sua evolução e as principais linguagens formais de descrição de sistemas digitais ou HDLs (abreviatura do inglês Hardware Description Languages ) comerciais como ALTERA e XILINX. Finalmente, apresenta-se a proposta de pesquisa, contendo o objetivo, a organização da tese, e suas contribuições. 1.1 CENÁRIO DO SETOR DE TELECOMUNICAÇÕES A telecomunicação nasceu da necessidade de comunicação entre duas pessoas, levando suas vozes a distâncias cada vez maiores [TEL 94]. No início da implantação dos sistemas telefônicos a interligação entre os assinantes, era feita pela telefonista, tornou-se lento por se tratar de um sistema manual, com o passar do tempo as centrais manuais foram substituídas por centrais analógicas de comutação automática, e mais tarde por centrais digitais. Figura 1 - Representação da Cidade A com Centrais Telefônicas e ERBs. 3 Com o passar do tempo, o aumento dos usuários tornou necessária a existência de várias centrais, as quais seriam, ligadas por fibras óticas ou através de rádios, como exemplifica a Figura 1. Apesar do emprego de novos meios de transmissão, durante todos esses anos, o meio de transmissão presente na maioria das interligações entre os usuários finais e as centrais, é o par trançado. Além dos aumentos de centrais, outro fator importante, no setor de telecomunicações, na última década, foi a massificação e um crescimento cada vez maior de sua gama de serviços que podem ser classificados como [UEH 97]: a) Telecomunicação Multimídia apresenta como característica explorar todas as formas de comunicação e tratamento de imagens, elegendo a visão, som e movimento como um dos principais órgãos sensoriais para fins de comunicação; b) Telecomunicações Inteligentes são os serviços que agregam acessos a banco de dados com múltiplas facilidades, rapidez e flexibilidade; c) Telecomunicações Pessoais é quando o ser humano precisa movimentar-se e a necessidade de se comunicar deverá adaptar-se ao seu próprio deslocamento. Outro fator relevante foi a inversão no movimento do homem em direção à busca da informação, ou seja, não nos deslocamos mais fisicamente até a informação. Agora é a informação que se movimenta em nossa direção. O passo inicial surgiu com a criação da Internet [TAS 99]. Tais mudanças comportamentais e evoluções das centrais, só foram possíveis, graças à digitalização dos serviços de telecomunicações existentes e ao próprio progresso da eletrônica. Contudo, uma das características relevantes pelo aumento de velocidade foi a transformação ocorrida nas três primeiras camadas do modelo OSI/ISO (abreviatura do inglês Open System Interconnection / International Standards Organization) a camada Física (Nível 1), Enlace (Nível 2) e Rede (Nível 3), que são as principais camadas de referência utilizadas em uma rede pública [MAR 01]. Nos anos 70, os níveis 2 e 3 eram todos implementados em software, somente a primeira camada ou a camada física era composta de hardware. A partir do final de 70 e 4 início dos anos 80, surgem padrões para os sistemas de comunicação em hardware. O protocolo responsável pela implementação foi o HDLC (abreviatura do inglês High Level Data Link Control) publicado pela ISO. Conseqüentemente surgiram implementações de diversos firmwares oferecidos como chip-set como LAPB (abreviatura do inglês Balanced Link Acess Procedure) e LAPD (abreviatura do inglês Link Acess Procedure for the D channel). Assim, no final dos anos 80 e início dos anos 90, os membros do corpo de padronização reconhecem a existência de redundância entre a camada de enlace e a camada de rede, tais aplicações como teste de erro e controle de fluxo, com isso houve a migração das camadas de enlace e rede para o hardware, possibilitando que os sistemas operem de uma forma mais rápida. Dessa forma, unindo a infra-estrutura atualmente utilizada para os serviços de telefonia, ou seja, o par trançado com inovações tecnológicas de hardware, uma grande quantidade de serviços digitais de telecomunicações, estão disponíveis e novas aplicações surgirão com o tempo [BOR 99]. Atualmente, com o advento da fabricação de microcomputadores em grande escala, impulsionou-se a implementação de novas tecnologias, empregados em diversos segmentos de rede como nas Redes Locais ou LAN (abreviatura do inglês Local Area Network), ou nas Redes Privadas ou WAN (abreviatura do Inglês Wide Area Network) e nas Redes Comerciais ou Redes de Valores Agregados ou VAN (abreviatura do inglês Value-Added Networks), todas contendo como parte da sua placa de rede ou modem, um circuito integrado responsável pelo código de linha. Com relação às VANs, apresenta-se a seguir uma breve descrição das tecnologias atuais de digitalização: a. RDSI – Rede Digital de Serviços Integrados Rede de telefonia evoluída para rede digital integrada, que proporciona conectividade digital fim-a-fim, suporta uma variedade de serviços vocais e de dados, aos quais os usuários têm acesso através de um conjunto limitado de conexões usuário-rede. Uma das padronizações, ou seja, a interface S possui acesso básico no cliente caracterizado 5 por utilizar uma taxa de transmissão de 192 Kbps e o código de linha AMI (abreviatura do inglês Alternate Mark Inversion). Outro exemplo está na Interface U, ou seja, um acesso primário de 2048 Kbps, segmentado em 30 canais de dados ou voz a 64 Kbps, acrescido de um canal de sinalização de 64 Kbps. Com relação ao código foi inicialmente empregada a técnica de transmissão PCM (do inglês Pulse Code Modulation) que utiliza o código de linha HDB3 (do inglês High Density Bipolar of order 3 code). Atualmente é possível a substituição pela técnica HDSL (abreviatura do inglês High bit rate Digital Subscriber Line). b. HDSL – Linha do Assinante Digital com Alta taxa de transmissão Transmissão de dados digitais em redes para implementação de acessos de 2 Mbps na rede existente, utilizando 1, 2 ou 3 pares metálicos com velocidade de transmissão de 2336 Kbps, 1168 kbps ou 784 Kbps, formado por um chip-set com técnicas de codificação de linha 2B1Q (do inglês 2 Binary/ 1 Quaternary). Descreve-se no capítulo 4 o comportamento dos códigos de linhas, que foram implementados em FPGA para avaliar a ferramenta desenvolvida. 1.2 CONCEITOS DE REPRESENTAÇÃO DE UM PROJETO DIGITAL Nesta sociedade tecnológica a qual vive-se, é fácil arruinar-se em detalhes quando se representa um projeto de circuito eletrônico, pela complexidade enfrentada. Para que se possa dominar esta complexidade, deve-se limitar a quantidade de informação analisada, em um determinado momento, “trabalhe em níveis de árvores ao invés de florestas” [ARM 89]. Essa frase é análoga a situação enfrentada por projetistas, devido a complexidade dos chips, por exemplo, no mercado mundial tem-se máquinas como o Pentium 4, que pode trabalhar com até 42 milhões de componentees, com uma freqüência de relógio máxima de 2.530 MHZ, com microprocessadores de 32 bits e executam instruções a 2.530 MIPS (Milhões de Instruções por Segundo) [INT 02a]. Durante a década de 60 os circuitos integrados, não ultrapassavam a ordem das centenas de componentees, trabalhava-se com freqüência de relógio não superior a 1 MHZ, alcançando uma taxa máxima de execução de instruções na ordem de frações de MIPS 6 [DeM 94]. Os projetos eram elaborados a partir de papel e lápis [MAR 95] o que passou a ser o fator limitante do projeto na época. A necessidade de criar novas ferramentas, e as evoluções tecnológicas descritas acima, dobram o número de portas que de dois em dois anos, fez surgir, editores de “layouts”, e algumas outras ferramentas de desenho, todos sujeitos a erros [CAL 98]. Nas décadas de 70 e 80, com o aumento da complexidade cada vez maior, tinha-se que garantir a funcionalidade do sistema, pois o custo do projeto era considerado elevado, proliferaram programas de auxílio ao projeto de sistemas digitais e ferramentas de síntese. No cenário atual, KHOSLA et alli [KHO 01] descreve que para sistemas elétricos existe uma grande variedade de linguagens e simuladores. Este último é muito utilizado para avaliar o comportamento dos circuitos analógicos, sendo o SPICE o mais popular, enquanto que para os circuitos digitais as linguagens VHDL e a Verilog HDL são as mais utilizadas. Na atualidade para se implementar um circuto digital, deve-se respeitar as etapas de um projeto que consiste essencialmente de dois subconjuntos que se agregam formando a Descrição Inicial (front-end) e a Descrição Final (back-end), conforme o fluxograma representado na Figura 2 [ROC 99]. A partir da Descrição Inicial especifica-se o projeto, buscando uma implementação do circuito, escolhe-se uma linguagem de descrição de hardware, e logo após simula-se as dependências tecnológicas. Caso ocorra algum erro, descreve-se novamente o circuito utilizando a linguagem de descrição até que o circuito esteja validado. Assim, parte-se para a síntese lógica que é novamente analisada por uma simulação lógica e temporal, caso não corresponda ao esperado, é corrigida novamente através da mesma linguagem de descrição, ou refeita a síntese, até que a simulação lógica e temporal valide o circuito. Dessa forma, insere-se a estrutura de vetor de teste, logo em seguida, a geração de lista de ligações e a geração dos vetores de teste. Posteriormente, passa-se para a fase de descrição final, que não será objeto do nosso trabalho, pois o sistema será implementado em estrutura FPGA; desse modo o circuito não passará pelo processo de fabricação. 7 Especificação do projeto Linguagem de descrição de hardware Simulação sem dependência tecnológica ok? N Síntese Lógica Simulação lógica e temporal ok? Inserção de estrutura de teste Geração de vetores de teste Geração da lista de ligações Colocação e interligação Verificação da Implementação ok? Simulação após implementação ok? Programação ou Fabricação Teste Montagem Descrição Inicial (Front-End) Descrição Final (Back-End) N N S N N S S S Figura 2 - Fluxo de um processo de projeto de circuito integrado Conseqüentemente, nesta seção, conforme [CAL 98] [MAR 95], além das etapas do projeto, descreve-se formas de representações voltadas para sistemas digitais, freqüentemente classificados por seus níveis de abstração e decomposto de forma hierárquica, baseado na quantidade de informação contida na descrição associada a cada passo. Assim, em descrições de mais alto nível, a sintaxe é próxima da linguagem humana, possuindo poucas informações associadas e deve, se possível, ser a descrição inicial, enquanto que a de mais baixo nível, está próxima a linguagem de máquina, localizado na descrição final, ou seja, no ponto de origem do diagrama Y [GAJ 83], apresentado na Figura 3. 8 Pela figura 3 pode-se notar que um sistema digital pode ser classificado com três [DeM 94] quatro [CAL 98] ou cinco níveis de abstrações distintas [MAR 95] e ordenado de forma ascendente: Dispositivo ComportamentalEstrutural Físico Alto Nível de Abstração Lógico RTL Sistêmico Baixo Nível de Abstração Figura 3 - Níveis de Abstração do Diagrama Y • Nível Dispositivo - Os modelos dos componentes provêm da teoria de circuitos elétricos e eletrônicos, e/ou da física de semicondutores, isto é componentees, resistores, capacitores, equações diferenciais, diagramas elétricos, etc; • Nível Lógico - O sistema digital é descrito a partir de noções elementares da teoria de circuitos digitais: portas lógicas, flip-flops, equações booleanas, etc; • Nível RTL (abreviação do inglês Register Transfer Level) - Os modelos de base são os componentes mais complexos da teoria de circuitos digitais e as formas de descrevê-los são: registradores, decodificadores, ULAs, multiplexadores, linguagens de transferência entre registradores, grafos de fluxo de dados e de controle, etc; • Nível Sistêmico - O sistema digital é descrito como um conjunto de algoritmos e módulos capazes de executar aqueles que podem ou não ter um mapeamento direto para um 9 hardware existente: processadores, memórias, componentes abstratos implementados no software básico do sistema, tais como um pacote de ponto flutuante em um sistema sem coprocessador aritmético, ou monitores de sistemas operacionais; Os domínios podem ser classificados como: • Domínio Comportamental, o qual mostra diversos formalismos para a representação da funcionalidade do sistema, destacando-se pela utilização de linguagens de descrição de hardware. O diagrama Y apresentado na Figura 4, destaca o domínio comportamental. Comportamental Estrutural Físico Algoritmo HDLs,Tabela Verdade e de Estado Equações Booleanas Equações Diferenciais Figura 4 - Diagrama Y - Domínio Comportamental • Domínio Estrutural ou Funcional contém informações sobre conjuntos diferentes de primitivas, ou seja, como deve-se interconectar blocos de base de comportamento conhecidos, sem preocupar-se com a disposição física destes no sistema. • Domínio Físico contém informações geométricas a respeito dos componentes e módulos e/ou da disposição espacial no sistema a ser fabricado. 10 A Figura 5 apresenta o diagrama Y destacando os Domínios Estrutural e Físico. ComportamentalEstrutural Físico CPUs - Memória Barramentos Registradores ULAs Portas Lógicas Transistor Máscaras Células Lógicas Blocos de CIs Placas Figura 5 - Diagrama Y - Domínio Estrutural e Físico A ferramenta de síntese desenvolvida opera no domínio comportamental, no nível RTL visando uma implementação otimizada com componentes programáveis. 1.2.1.1 CIRCUITOS PROGRAMÁVEIS O conhecimento e o domínio da tecnologia de circuitos programáveis torna-se assim uma importante estratégia para o projetista de sistemas eletrônicos. Este item propõe uma visão geral das arquiteturas comerciais utilizadas na atualidade. Os Dispositivos Lógicos Programáveis (do inglês Programmable Logic Array) são dispositivos digitais configuráveis, usados para implementar um conjunto de funções lógicas seqüenciais ou combinatórias. Devido a complexidade de sua estrutura interna divide-se em duas categorias conforme apresenta Figura 6: 11 • Arranjos Lógicos Programáveis que são formados por meio de um estrutura interna de conjuntos de portas AND-OR, divididos em dois tipos PLA e PAL,e por não possuir elementos de memória, não será objeto de estudo. • Arranjos de Portas Programáveis (do inglês Programmable Gate Array) são formadas por estruturas mais genéricas e versáteis chamadas de blocos lógicos, destacando as FPGAs e os CPLDs, os quais serão comentados nas seções seguintes. PLD Arranjos Lógicos Programáveis Arranjos de Portas Programáveis CPLDFPGAPLAPAL Figura 6 - Divisão de um PLD conforme sua estrutura. Com o passar dos tempos, os dispositivos lógicos e programáveis tornaram-se extremamente densos, rápidos e complicados, exigindo-se dessa forma ferramentas CAD (do inglês Computer-Aided Design) cada vez mais complexas. Dois importantes fabricantes de dispositivos programáveis disputam o mercado atualmente, os quais serão apresentados nas seções seguintes. 12 2 3 4 5 6 7 8 Ver glossário. 1.2.1.1.1 ALTERA As arquiteturas programáveis da ALTERA [ALT 01] são conhecidas como CPLDs (Complex Programmable Logic Devices). A maior diferença destas arquiteturas para a arquitetura FPGA da XILINX da Actel está no roteamento dos blocos lógicos. Enquanto que as arquiteturas FPGA utilizam técnicas de roteamento onde os fios possuem comprimento variável e com atrasos dependentes do roteamento, as CPLDs utilizam matrizes de interconexão onde os atrasos nas conexões são previsíveis e, uma vez os blocos alocados independem do roteamento. Do ponto de vista da tecnologia de programação dos componentes, as arquiteturas podem ser classificadas em quatro grupos: LUT2, SOP3, SRAM4, FLASH5, EEPROM6 e EPROM7. Na Tabela 1 apresenta-se a classificação das arquiteturas da Altera de acordo com as seguintes características: Família de Componentes, Estrutura de Blocos Lógicos8 e Tecnologia de Programação. Família de Componentes Estrutura de Bloco Lógico Tecnologia de Programação Stratics LUT SRAM APEX II (1 Gbps) LUT SRAM APEX 20 K LUT SRAM FLEX 10K LUT SRAM FLEX 8000 LUT SRAM MAX 9000 SOP EEPROM MAX 7000 SOP EEPROM MAX 5000 SOP EPROM Classic SOP EPROM FLASHlogic SOP SRAM&FLASH Tabela 1 - Classificação das Arquiteturas da Altera 13 9 Ver glossário Conforme apresentado na Figura 7 podemos observar, que com a evolução do ponto de vista da arquitetura, a disposição dos blocos lógicos é cada vez mais envolvida por linhas de intersecção e roteamento, o que permite uma maior interação com outros componentes, além do aumento de portas e blocos que não foram representados na figura. Figura 7 - Evolução da Arquiteturas da Altera Nesta dissertação utilizou o ambiente MAX + PLUS II da Altera [ALT 01]. 1.2.1.1.2 XILINX A XILINX foi criada em 1984 com o objetivo de produzir circuitos programáveis pelos usuários. Em 1985 produziu o primeiro circuito FPGA. Em 1992, tornou disponíveis circuitos EPLD9 (do inglês Eraseble Programmable Logic Device). Na atualidade fornece além dos componentes programáveis, um conjunto de ferramentas de software que roda em PCs e estações de trabalho, destinado a programação dos componentes [XIL 01]. Classic MAX 5000 MAX 7000 FLEX 10 K FLEX 8000 MAX 9000 APEXII/20K STRATIX Blocos 14 Conforme a Figura 8 podemos observar a matriz de blocos lógicos, que pela disposição apresenta os blocos lógicos e o roteamento: Figura 8 - Matriz Simétrica (Symetrical Array). 1.3 PROPOSTA DE PESQUISA Este trabalho tem como proposta criar uma ferramenta de síntese de alto nível (do inglês high-level synthesis) denominada TAB2VHDL (TABELA TO VHDL) e a partir dela implementar vários circuitos integrados de códigos de linhas utilizados em transmissão de dados, no setor de telecomunicações, condicionados dos conceitos estudados sobre o cenário, diagrama Y, utilizando a linguagem VHDL [ARM 89] [PER 91] [SHA 86]. Criou- se desta forma, um ambiente amigável para a síntese de sistemas digitais que veio facilitar a tarefa do projetista, eliminando a descrição detalhada como no exemplo de uma metodologia de projetos digitais seqüenciais apresentada em [TAN 02a]. Atualmente dispõe-se de dois importantes tradutores disponíveis comercialmente que interpretam uma máquina de estado finito, descrita através de seu diagrama de estado. Estas ferramentas são denominadas: Statecad [XIL 00] da Actel e Active-HDL [CYP 02] da Cypress. Esses softwares destacam-se pelo uso do diagrama de estados para descrever o comportamento de uma máquina de estados finitos, traduzido-as para sua representação em Interconexões Blocos Lógicos 15 código VHDL. Nenhum processo de otimização é efetuado nesta etapa, deixando a cargo das ferramentas de síntese, ou seja, o MAX + Plus II ou XILINX. Estas ferramentas apresentam entradas gráficas que possibilitam expressar idéias em um modo natural, bem próximo da linguagem humana. As etapas do projeto é apresentada na Figura 9, onde parte-se do nível RTL do domínio comportamental e chega-se ao nível lógico do mesmo domínio, ou seja, parte-se do diagrama de transição e estado e chega-se nas correspondentes funções booleanas em suas formas mínimas. Vários algoritmos de minimização de funções booleanas poderiam ser empregados nesta etapa do projeto. O programa TABELA emprega o método Quine-Mc Cluskey [DaS 89]. ComportamentalEstrutural Físico Funções Booleanas Diagrama de Estado Dispositivo Lógico RTL Sistêmico Minimização VHDL S E Q 2 V H D L Figura 9 - Diagrama Y apresentando a ferramenta de síntese TAB2VHDL Dadas as equações booleanas otimizadas, a ferramenta SEQ2VHDL as interpreta e gera um modelo RTL correspondente na linguagem VHDL, ou seja, parte-se do nível lógico e chega-se no nível RTL do domínio comportamental, conforme apresentado na Figura 9. 16 Como a descrição em VHDL independe da tecnologia, as ferramentas de síntese comerciais apropriadas levariam para o nível de implementação de estado no domínio físico. Conforme GENOE [GEN 95] existem aproximadamente 6000 licenças para sintetizadores lógicos no mercado, entretanto, há uma carência de ferramentas que interpretem os níveis de abstração altos. MACHADO et alli [MAC 97] empregam uma metodologia de especificação de sistemas digitais, baseada em Rede de Petri orientada por objetos para obter de forma rápida e simplificada um modelo VHDL do sistema pretendido. LI e LEESER [LIY 00] desenvolveram uma nova linguagem de descrição denominada HML, baseada na linguagem de programação funcional SML e um tradutor para gerar códigos VHDL a partir da descrição HML. LOHSE et alli [LOH 94] descrevem um tradutor para gerar um subconjunto da VHDL partindo de diagrama de decisão binário. MARRA et alli [MAR 99] desenvolveram o C2VHDL, um tradutor que converte código C para o código VHDL. Um tradutor de linguagem, foi proposto por BONATTI [BON 95] e implementado em um pacote de domínio público denominado Stoht. CONSTANTINIDES et alli [CON 99] et alli desenvolveu uma ferramenta de síntese automática que a partir de uma FSM otimiza uma FPGA, usando uma técnica de decomposição a qual divide a FSM em várias sub-máquinas e usa uma técnica de Algoritmo Genético para explorar o espaço de possíveis partições. FUHRER et alli [FUH 97] descrevem uma solução para minimização de estados de uma FSM para circuitos lógicos. Portanto, muitas outras ferramentas de síntese de Alto Nível são descritas na literatura, comprovando a importância desse tipo de abordagem. 17 1.3.1 OBJETIVO Este trabalho visa desenvolver uma ferramenta de síntese que gera um modelo funcional de síntese na linguagem VHDL. Das especificações do comportamento de uma máquina de estados finitos através de um diagrama de estados, descrito no modelo de Mealy, o programa TABELA [DaS 89] gera equações booleanas dos controles dos elementos de memórias e de saídas. 1.3.2 ORGANIZAÇÃO DA DISSERTAÇÃO DE MESTRADO No Capítulo 1 – INTRODUÇÃO No Capítulo 2 – MODELAGEM E LINGUAGEM DE DESCRIÇÃO DE SISTEMAS DE TELECOMUNICAÇÕES No Capítulo 3 – Projeto TAB2VHDL (TABELA E SEQ2VHDL). No Capítulo 4 – ESTUDOS DE CASOS. Apêndice I –ANÁLISE ESTRUTURAL DO AMBIENTE TABELA E SEQ2VHDL Apêndice II – PROGRAMA SEQ2VHDL. Apêndice III – LISTAGENS DOS CÓDIGOS DE LINHA. 1.3.3 CONTRIBUIÇÕES O trabalho em questão trará contribuições de grande importância para as áreas educacionais no ensino de ferramentas de síntese no curso de Engenharia Elétrica do DEE – FEIS – UNESP - Ilha Solteira, no curso de Tecnologia de Produção Moveleira do CEUV – Votuporanga e no curso de Sistemas de Informação da FAIJALES – Jales, pois pretende-se utilizá-la em disciplinas ministradas na graduação e na pós-graduação. A partir da documentação apresentada nos Apêndices I e II, que é de domínio público ao contrário dos tradutores que possuem direitos autorais, os pesquisadores poderão desenvolver novas ferramentas de otimização e criar ferramentas através de outras 18 linguagens de softwares e hardwares, respeitando suas características segundo o modelo adotado, conforme capítulo 2. Permitirá aos alunos implementar sistemas autônomos, utilizando diagrama de estados, sem preocupar-se com detalhes de projetos digitais, pois com a ferramenta de síntese desenvolvida, a partir de uma FSM, criam-se protótipos de circuitos que se integrarão a sistemas de telecomunicações e de automação industrial, cujo custo de implementação será minimizado . CAPÍTULO 2 MODELAGEM E LINGUAGEM DE SISTEMAS DE TELECOMUNICAÇÕES Neste capítulo, descreve-se sobre o enfoque tecnológico computacional, o estado da arte dos modelos de sistemas de telecomunicações, e em seguida, as principais linguagens de descrição de hardwares e softwares, para finalizar, tem-se as características relevantes a serem consideradas para a escolha da linguagem utilizada na modelagem de um projeto de telecomunicações. 2.1 MODELOS DE SISTEMAS DE TELECOMUNICAÇÕES A definição de um modelo de sistemas de telecomunicações não é simples, pois se pode ter vários enfoques: do usuário, do planejador de redes, da concepção teórica ou da concepção tecnológica. Portanto o modelo funcional conforme o ponto de vista do usuário, pode ser representado por uma “nuvem” e duas interfaces de acesso usuário-rede, de acordo com a Figura 10. 20 Figura 10 - Modelo Funcional representados por uma nuvem Com relação aos serviços, pode ocorrer uma grande confusão, por exemplo, ao definir o modelo, sobre o enfoque tecnológico, sob o ponto de vista da empresa concessionária de telecomunicações o serviço é visto como uma troca de informações de rede que é capaz de transportar informações na faixa de 0 até 3,1 KHZ, podendo ser utilizada para telefonia (transporte de voz), fax e comunicação de dados, entretanto sobre o enfoque do usuário, não pode ser definida como tal, por não incluir a funcionalidade do aparelho telefônico [UEH 97]. Durante o desenvolvimento de sistemas complexos de telecomunicações a dedução, a modelagem e análise de requisitos é o principal desafio, pois tem-se uma rede heterogênea, que apresenta uma distribuição mundial. Portanto muitas propostas de pesquisas têm sido feitas através da descrição de sistemas comportamentais [AMY 00]. O modelo adotado neste trabalho será semelhante ao adotado por [LEE 99], ou seja, do ponto de vista tecnológico que é utilizado na concepção de sistemas digitais, originado de sistemas computacionais, o modelo de computação (em inglês model of computation ou MOC), é a “lei da física” dos componentes concorrentes, incluindo o que eles são (ontologia), como eles se comunicam, como seu controle de fluxos são relatados (protocolos), e que informação contém seus elementos (epistemologia). Estas são suas semânticas concorrentes. I I 21 2.1.1 EXEMPLOS DE MODELOS [LEE 99] Existe uma grande variedade de modelos computacionais, os modelos usuais utilizados em sistemas embarcados, que por definição são computadores mascarados, ou melhor, uma caixa preta que na maioria das execuções tem um conjunto de tarefas com relação custo/benefício reduzido. Todos os sistemas realizam tarefas que envolvem comunicação e processamento de sinais, necessitando para isso de interfaces. A representação desses sistemas utiliza-se de bolas, arcos e diagramas com setas e blocos. Descreve-se a seguir alguns desses modelos. 2.1.1.1 MODELO PARA EQUAÇÕES DIFERENCIAIS No modelo para equações diferenciais, uma possível semântica para a sintaxe da equação diferencial é representada na Figura 11. Os arcos representam funções contínuas e um determinado tempo. As bolas representam a relação entre essas funções. Dessa forma, o objetivo do modelo é encontrar um ponto fixo, isto é, um conjunto de funções do tempo que satisfaça a relação. Portanto, são excelentes para modelagem de circuitos analógicos e muitos sistemas físicos. Utiliza-se a linguagem VHDL-AMS [SAS 97], Simulink e SPICE. A B C Figura 11 -Sintaxe simples (bolas e arcos ou diagrama de blocos e setas). 22 2.1.1.2 MODELO EQUAÇÃO DIFERENÇA Outro modelo seria a Equação diferencial discretizada, ou seja, em um modelo a equação diferença, popularmente usada para modelos computacionais, utiliza-se de sinais digitais. 2.1.1.3 MODELO DE SINCRONISMO / REATIVO No Modelo de Sincronismo / Reativo (do inglês synchronous / reactive ou SR), os arcos representam o valor dos dados que são alinhados pelo sinal do clock global. Portanto, seus sinais são discretos, como ocorre na equação diferença, mas diferente da equação diferencial, onde o sinal não precisa possuir o mesmo valor durante o sinal do clock. Assim as bolas representam a relação entre entrada e saída. 2.1.1.4 MODELO DE EVENTO DISCRETO No modelo computacional de evento discreto (do inglês discrete-event ou DE), o arco representa o conjunto de eventos em um determinado tempo. Um evento consiste de um valor e um tempo fixo. Este modelo computacional é popular para especificar hardware e simulação de sistemas de telecomunicação, e tem sido utilizado em um grande número de simuladores. 2.1.1.5 MODELO CICLO DIRIGIDO Alguns sistemas nos quais o tempo do evento é conduzido primariamente pelo clock, ou seja, sinais com eventos repetidos indefinidamente em um intervalo de tempo fixo, através da modelagem de eventos discretos possibilitaria a sua implementação, no entanto se tornaria uma solução cara. 23 2.1.1.6 PASSAGEM DE MENSAGEM SÍNCRONA Na passagem de mensagem síncrona, os componentes são processos, e as comunicações desses processos devem ser atômicas (ações instantâneas chamadas de “rendezvous”). Se dois processos estão prontos para se comunicar, e por uma razão, o primeiro atinge o ponto esperado, esse protela, até que o outro processo, que espera se comunique. Portanto, atômico significa que dois processos estão envolvidos em uma troca, e que essa troca é iniciada e completada em um simples passo ininterrupto. Nesta categoria têm-se vários exemplos de modelos que incluem os Processos Seqüenciais de Comunicação (do inglês Communicating Seqüencial Process ou CSP) e Sistemas de Comunicação de Cálculos (do inglês Calculus of Communicating System ou CCS). 2.1.1.7 MÁQUINAS DE ESTADOS FINITOS Na Máquina de Estados Finitos (do inglês finite-state machine ou FSM), bolas representam o estado do sistema e arcos representam a transição de estado, este modelo não é concorrente, pois as execuções são seqüências ordenadas de transições de estado. Assim, sistemas de transição são versões gerais, no qual uma bola possibilita representar mais que um estado do sistema (e pode existir um número infinito de bolas). Uma grande variedade de ferramentas para FSM é apresentada em [AT& 02], para as mais diversas aplicações como pesquisas sobre FSM. Pode-se notar que FSM são excelentes para controle lógico em sistemas embarcados, motivo pelo qual foi adotado como modelo neste trabalho. Sendo assim apresenta-se a seguir a representação de um sistema digital para uma máquina de estado finito. 24 2.1.1.7.1 REPRESENTAÇÃO DE UM CIRCUITO DE UMA FSM [TAN 02a] Uma máquina de estados finitos tem a representação conforme delineado na Figura 12 [KOH 78]. Figura 12 - Representação de um circuito de uma máquina seqüencial síncrona O comportamento de uma FSM é representado como uma seqüência de eventos que ocorrem em instantes discretos, designados de t= 1,2,3, etc. Suponha que uma máquina M tenha recebido sinais de entrada ( x1, x2, ..., xn), uma n-upla ordenada na forma de vetor de entrada, e tenha respondido produzindo sinais de saída (z1, z2, ..., zm). Uma m-upla ordenada destes valores é o vetor de saída. Se agora, no tempo t, aplica-se um sinal x(t) para M, ela responde com z(t) que depende de x(t) e de sua entrada passada em M. O valor da variável de memória é chamado de variável do estado atual (q0, q1, ..., qk). Os valores armazenados nos k elementos de memória definem o estado interno atual da máquina. As saídas z1, z2, ..., zm e as variáveis do próximo estado q0´, q1´, ..., qk´ são funções das entradas externas e do estado interno e são definidas através do circuito combinacional representado na Figura 12. Os valores de q que aparecem na saída do circuito Circuito Combinacional Entradas Saídas Variáveis do Estado Atual Variáveis do Próximo Estado Elementos de Memória (Flip-Flop) x1 . . x2 . xn z1 . . . z2 zm q0 q1 qk . . . q'0’ q'1’ q’k ’̀ . . . . . . . . . 25 combinacional no instante t, determinam os valores das variáveis de estado no instante t+1, e portanto definem o próximo estado. 2.1.1.7.2 MODELOS DE MÁQUINAS SÍNCRONAS A. MÁQUINA DE MEALY Na máquina de Mealy [WAK 00] as saídas e o próximo estado dependem do estado atual e da entrada no tempo t, conforme Figura 13. ))(),(()( txtyHtz = (1.1) próximo estado ))(),(( txtyH= (1.2) sendo que, )(tx é o estado de entrada e )(ty o estado atual )(tx Figura 13 - Máquina de Mealy B. MÁQUINA DE MOORE A máquina de Moore [WAK 00] é um sistema seqüencial onde as saídas dependem apenas do estado atual do circuito, conforme Figura 14 . ))(()( txHtz = (1.3) )(tx Figura 14 - Máquina de Moore Lógica de Saída z(t) Memória de estado y(t) Lógica Estado Seguinte Lógica de Saída z(t) Memória de estado y(t) Lógica Estado Seguinte 26 Outros tipos de modelos de descrição são abordados em [LEE 99] como Passagem de Mensagem Assíncrona, e Tempo CSP (abreviação do inglês Communicating Seqüencial Process) e tempo PN (abreviação do inglês Publish e Subscribe e Unstructured events). 2.1.2 EVOLUÇÃO E ESCOLHA DO MODELO DE DESCRIÇÃO Uma grande variedade de MOC tem surgido no mercado entretanto, muitos projetistas não aproveitam essas oportunidades de escolha, pois preferem dominar um ou dois modelos como conseqüência da complexidade das mesmas. Esta realidade está mudando paulatinamente, principalmente pela oferta de ferramentas que trabalham com diferentes níveis de abstração e em diferentes domínios do projeto. Dessa forma a escolha de um modelo de descrição de sistemas de telecomunicações auxiliará muito o projetista. Dentre aos vários modelos, deve-se salientar, novamente, que a FSM foi escolhida pela facilidade de interpretação, o que facilita a entrada de dados para a ferramenta de síntese. Apresenta-se a seguir as principais linguagens de descrição de softwares e hardwares para sistemas de telecomunicações. 2.2 LINGUAGENS DE DESCRIÇÕES EDWARDS [EDW 01] descreve que para cada modelo em estudo, apresenta-se uma diversidade de características que podem ou não ser adaptáveis entre as várias linguagens, em que determinadas ocasiões não estão aptas a serem utilizadas. Um sistema embarcado é uma linguagem que tem como propósito comum e suficiente resolver tarefas que precisam ser escritas, analisadas e compiladas. Os sistemas embarcados que possuem componentes envolvidos por hardware e software têm recebido muita atenção nos últimos anos [ONL 96]. Atualmente uma grande variedade de linguagens está evoluindo. Cada vez mais para um domínio específico. 27 Por exemplo, a linguagem assembly é conveniente para o processamento final, porém inadequada para ser empregada no domínio comportamental, por possuir uma quantidade limitada de instruções de controle. Faz-se em seguida, um breve comentário sobre as principais linguagens de descrição envolvidas em um projeto de telecomunicações. 2.2.1 LINGUAGEM DE DESCRIÇÃO DE HARDWARE As linguagens de descrição de hardware ou HDL (abreviatura do inglês Hardware Description Language) permitem ao projetista desenvolver sistemas através de circuitos digitais, sem a necessidade do conhecimento de detalhes da teconologia de implementação, facilitando dessa forma as modificações e a implementação do sistema. Está disponível uma grande variedade de HDL, como por exemplo, a AHDL [ALT 02] o Verilog HDL [GOL 86] e a VHDL, entretanto algumas foram padronizadas pelo IEEE. Adotou-se como padrão do ambiente desenvolvido TAB2VHDL a linguagem VHDL. Descreve-se a seguir de forma sucinta os principais componentes da linguagem. Na seção seguinte faz-se um breve comentário sobre o Verilog HDL. 2.2.1.1 VHDL A VHDL é uma linguagem de descrição de hardware usada para programar o comportamento e a estrutura de um sistema digital. (O significado de VHDL é a abreviatura do inglês VHSIC Hardware Description Language sendo que o termo VHSIC significa Very High Speed Integrated Circuit). A VHDL é uma linguagem de descrição de hardware de propósito geral, pois pode ser empregada para descrever e simular a operação de uma grande variedade de sistemas digitais, cujo grau de complexidade pode variar de algumas portas lógicas a interconexões de muitos circuitos integrados complexos. Esta linguagem teve origem nos laboratórios militares com o propósito de uniformizar métodos para a especificação de sistemas digitais, que após ter sido padronizada pelo IEEE passou a ser utilizada pela indústria de eletrônica. 28 Com relação ao comportamento pode-se descrever os sistemas digitais em três níveis de abstração, ou seja, no comportamental, no funcional também conhecido como Data Flow e no estrutural. Por exemplo, um somador binário pode ser descrito no nível comportamental em termos de suas funções de adição de dois números binários, sem especificar detalhes de implementação. O mesmo somador pode ser descrito no nível funcional através das equações lógicas (booleanas) para o somador e finalmente pode-se descrevê-lo no nível estrutural pela especificação da interconexões das portas que compõem o somador. Como a ferramenta de síntese desenvolvida utiliza-se da descrição em nível funcional para implementar as funções combinacionais de controle dos elementos de memória e das saídas dar-se-á mais ênfase nesse tipo de modelagem, porém para ilustrar a potencialidade da linguagem, alguns exemplos em nível comportamental também serão apresentados. Isto se torna necessário, pois esta é uma linguagem natural para a metodologia de projeto top-down, em que o sistema é inicialmente especificado em alto nível de abstração e testado, utilizando um simulador. Após o sistema ter sido depurado nesse nível, o projeto é gradativamente refinado em sua especificação, levando eventualmente a uma descrição estrutural totalmente detalhada com a tecnologia de implementação. É importante salientar que a VHDL foi concebida para ser independente da tecnologia, o que significa que se o modelo especificado for implementado em uma tecnologia utilizada nos dias atuais, também poderá ser implementado em tecnologias que serão desenvolvidas no futuro. A descrição de qualquer projeto em VHDL consiste de um par de declarações denominadas de entidade (do inglês ENTITY) e arquitetura (ARCHITECTURE). A declaração de entidade descreve os portos de entrada e saída do projeto e o corpo da arquitetura descreve o comportamento do sistema. O modelo VHDL apresentado a seguir representa uma porta E (AND) contendo como entrada os sinais denominados de A e B e como saída o sinal denominado de F, sendo que o tipo de dados permitido é do tipo BIT. 29 ENTITY Ex_and2 IS PORT ( A,B : IN BIT; F : OUT BIT ); END Ex_and2; ARCHITECTURE Porta_and OF Ex_and2 IS BEGIN F <= A AND B; END Porta_and; A entidade pode ser considerada como sendo uma caixa preta contendo portos, que são pontos de comunicação com a parte externa da caixa. Esses portos são muitas vezes associados com os pinos dos dispositivos. Cada porto tem associado a ele um nome, um modo e um tipo. O modo de um porto refere-se à direção para onde o dado é transferido. Os modos permitidos são: • IN : Os dados entram na entidade; • OUT : Os dados saem da entidade. Eles não podem ser utilizados internamente; • INOUT: Os dados são bidirecionais. Vão para dentro e para fora da entidade; • BUFFER: Dados que saem da entidade e que também podem ser utilizados como realimentação. O tipo BIT é um tipo definido na biblioteca padrão (Standard library) e pode assumir somente os valores ‘0’ e ‘1’. Existem, porém, várias outras bibliotecas sendo que a biblioteca IEEE.std_logic_1164 define os seguintes tipos de dados: • ‘0’ : força a zero; • ‘1’ : força a um; • ‘Z’ : alta impedância; • ‘L’ : zero fraco; • ‘H’ : um fraco; • ‘-‘ : don’t care. 30 A arquitetura especifica o que está dentro da caixa preta, ou seja, qual a estrutura ou o comportamento da entidade. A descrição de uma arquitetura pode ser uma combinação dos estilos estruturais, funcionais e comportamentais. No estilo estrutural os componentes que são parte do sistema, são instanciados no modelo e as conexões são estabelecidas. É uma sistemática muito semelhante à captura de esquemático. Apresenta-se a seguir um modelo estrutural para comparar dois números A e B. ENTITY compara IS PORT ( A, B : IN std_logic_vector ( 3 DOWNTO 0) IGUAL : OUT std_logic); END compara; USE WORK.pkg_portas.ALL; ARCHITECTURE estrutural OF compara IS SIGNAL X : std_logic_vector ( 3 DOWNTO 0); BEGIN uo: xnor2 PORT MAP ( A(0), B(0), X(0)); u1: xnor2 PORT MAP ( A(1), B(1), X(1)); u2: xnor2 PORT MAP ( A(2), B(2), X(2)); uo: xnor2 PORT MAP ( A(3), B(3), X(3)); u4: and4 PORT MAP ( X(0), X(1), X(2),X(3),IGUAL); END estrutural; Neste modelo as instâncias xnor2 e and4 foram previamente definidas na package denominada pkg.portas, onde por meio de descrições individuais, essas portas foram descritas e modeladas. Dessa forma, podem ser instanciadas por meio do mapeamento dos portos (do inglês PORT MAP). Neste tipo de descrição, utilizam-se componentes desenvolvidos pelos fabricantes dos ambientes de sínteses. Por exemplo, a Altera disponibiliza uma vasta biblioteca de componentes que foram projetados, otimizados e testados para serem implementados nos FPGA e CPLD por ela fabricados. Sempre que possível esses componentes devem ser utilizados. O mesmo exemplo pode ser descrito, no estilo funcional, também chamado de Data Flow ou RTL. Neste modelo o circuito é codificado por meio das funções booleanas que descrevem o funcionamento do sistema. Logo abaixo, exemplifica-se o estilo funcional para o circuito comparador. 31 ENTITY compara IS PORT ( A, B : IN std_logic_vector( 3 DOWNTO 0) IGUAL: OUT std_logic); END compara; ARCHITECTURE funcional OF compara IS BEGIN IGUAL <= ‘1’ WHEN A = B ELSE ‘0’; END funcional; O estilo comportamental é caracterizado pelo alto nível de abstração na descrição dos modelos. As descrições têm a forma IF ... THEN. O circuito do exemplo, que está sendo estudado, é representado pelo seguinte modelo: ENTITY compara IS PORT ( A, B : IN std_logic_vector( 3 DOWNTO 0) IGUAL: OUT std_logic); END compara; ARCHITECTURE comportamental OF compara IS BEGIN Comp: PROCESS(A,B) BEGIN IF A = B THEN IGUAL <= ‘1’; ELSE IGUAL <= ‘0’; END IF; END PROCESS; END comportamental; Existem dois tipos de declaração em VHDL, as concorrentes e as seqüenciais. As declarações concorrentes estão fora do PROCESS e são avaliadas concorrentemente durante o processo de simulação. Os PROCESS também são instruções concorrentes. São exemplos de declarações concorrentes as equações booleanas, as atribuições de sinais condicionais e seletivos (WHEN/ELSE, WITH/SELECT) e as declarações de instanciação. Apresenta-se a seguir exemplos de declarações concorrentes: 32 -- Exemplos de equações booleanas. X <= ( A AND (NOT SEL1) OR (B AND SEL1); G <= NOT (Y AND SEL2); -- Exemplo de atribuição condicional. Y <= D WHEN (SEL1 = ‘1’) ELSE C; H <= ‘0’ WHEN (X = ‘1’ AND SEL2 = ‘0’) ELSE ‘1’; -- Exemplo de instanciação. Inst: nand2 PORT MAP (H, G, F); Apesar do hardware ser concorrente, ele pode ser modelado através de um algoritmo por uma série de declarações seqüenciais. Por definição, as declarações seqüenciais são agrupadas utilizando-se a declaração PROCESS. A declaração PROCESS é usada para construir algoritmos permitindo-se dessa forma agrupar declarações seqüenciais. Durante a simulação as declarações incluídas dentro de um processo são executadas seqüencialmente. Uma arquitetura pode conter qualquer número de processos sendo que cada processo é executado concorrentemente. Os processos podem ser utilizados para modelar lógicas combinacionais ou seqüenciais (síncronas). O processo é executado quando ocorrer um evento em qualquer um dos sinais que estiverem contidos na lista de sensibilidade. Assim, define-se evento a qualquer alteração do valor lógico sobre um sinal. As declarações IF-THEN-ELSE e CASE-WHEN são declarações seqüenciais que especificam situações condicionais. O exemplo de atribuição de sinal condicional IF-THEN-ELSE é apresentado como parte da arquitetura de um circuito multiplexador. ARCHITECTURE .. ... Mux: PROCESS(A, B, S) BEGIN IF S = ‘0’ THEN X <= A; ELSE X <= B; END IF; END PROCESS; ... END architecture; 33 Um outro exemplo ilustrativo envolvendo descrição comportamental é um contador de 4 bits com reset síncrono. Neste exemplo também se apresenta somente a declaração PROCESS contida na arquitetura. É importante ressaltar que a declaração CLK’EVENT AND CLK = ‘1’ implica que a declaração de sinal subseqüente ocorre na borda de subida do sinal CLK, pois a condição IF só será verdadeira se ocorrer um evento (alteração do valor lógico) no sinal CLK e o valor for igual a 1. ARCHITECTURE ... ... ... upcounter: PROCESS(CLK) BEGIN IF CLK’EVENT AND CLK = ‘1’ THEN IF RESET = ‘1’ THEN COUNT<= “0000”;-- poderia ser empregada a notação x”0” ELSE COUNT = COUNT + 1; END IF; END IF; END PROCESS; ... ... END architecture; Um outro exemplo relevante é o apresentado num contador de 4 bits com reset assíncrono. upcounter: PROCESS(CLK, RST) BEGIN IF RST = ‘1’ THEN COUNT <= X “0”; ELSIF CLK’EVENT AND CLK = ‘1’ THEN COUNT = COUNT + 1; END IF; END PROCESS; 34 Observe que esse processo é sensível tanto a mudança de valor no sinal CLK quanto no sinal RST. A linguagem VHDL, assim como qualquer outra linguagem de descrição, também disponibiliza alguns operadores nativos (próprios da linguagem), são eles: • Lógicos: AND, NAND, OR, NOR, XOR, XNOR e NOT. • Relacionais: = (igual), /= (não igual), < (menor que), <= (menor que ou igual), > (maior que), >= (maior que ou igual). Operadores complexos podem ser desenvolvidos e acrescentados nos modelos através das PACKAGES, que são desenvolvidas pelos usuários e algumas já são disponibilizadas pelo fabricante do ambiente de síntese. Muito sobre VHDL ainda teria que ser apresentado para que o leitor possa ter um perfeito entendimento sobre a linguagem. Boas revisões biográficas na área de Sistemas Digitais são apresentadas em [WAK 00] e [ERC 00], Ferramentas comerciais em [ALT 01] e [XIL 01]. A abordagem aqui apresentada tem como objetivo dar uma noção sobre os conceitos básicos necessários para que se possa entender o tipo de ferramenta desenvolvida. 2.2.1.2 VERILOG HDL [MAG 92] O Verilog HDL é uma linguagem originalmente desenvolvida pela Gateway Design Automation, empresa que mais tarde, passou a pertencer a Cadence Design System. Inicialmente, era uma linguagem utilizada somente no simulador Cadence Verilog- XL, face à concorrência do VHDL, em 1990 passou a ser de domínio público. O nome “Verilog” é registrado pela Cadence. O uso do Verilog HDL foi promovido pelo OVI 35 (abreviatura do inglês Open Verilog International), tendo a primeira versão do Manual de Referência de Descrição de Hardware sido publicada em Outubro de 1991. Atualmente o Verilog HDL é padronizado pelo IEEE Standard Verilog Hardware Description Language ou IEEE Std 1364-2001 (Revisão do IEEE Std 1364-1995) [IEE 01]. Nas Tabela 2, 3 e 4, a seguir, são comparados as principais características do VHDL e do Verilog HDL nas. VHDL Verilog Origem Padrão IEEE Cadence Design System, Inc. Status Domínio Público Proprietário, mais tarde de domínio público Aceitação dos Projetistas Emergente Largamente usada Tabela 2 - Origem e Status VHDL Verilog Sintaxe Próxima ADA C, Pascal Nível de Complexidade Difícil Fácil Significado Direto do Hardware Não Verdadeiro Sim Requer Conhecimento de Software Sim Não Tabela 3 - Principais Características NÍVEL DE DESCRIÇÃO VHDL Verilog Nível Funcional BOM REGULAR Nível Comportamental BOM BOM Register Transfer Level (RTL) BOM BOM Nível Lógico BOM BOM Nível De Chaves NÃO BOM Nível Elétrico NÃO NÃO Tabela 4 - Níveis de Descrição 36 2.2.2 LINGUAGEM SOFTWARE [TAN 02b] As Linguagens de softwares descrevem uma seqüência de instruções e regras, que de certa forma, envolvem a tradução das tarefas que o processador deve executar em uma ordem pré-determinada. Um breve resumo das principais linguagens de softwares utilizadas para o projeto de sistemas de telecomunicação é apresentado abaixo: • Linguagem C é uma linguagem orientada para procedimentos e de objetivos gerais, que pode ser utilizada em aplicações comerciais e científicas. Suas características são próximas à da linguagem Assembly, o que a torna perfeitamente adequada para escrever softwares complexos de sistemas de telecomunicações, além do padrão ISO e ANSI (do inglês American National Standards Institute), detalhes dos comandos da linguagem C é apresentado em [TAN 02b]. • Assembly é uma linguagem de baixo nível, ou seja, uma linguagem de programação que é uma lista de instruções que será executada pelo processador, escrita de uma forma simbólica, de acordo com sentenças que representam instruções em linguagem de máquina, obtendo como conseqüência execuções mais rápidas. Esta linguagem é considerada de difícil implementação, por estar distante da linguagem natural humana, e próxima a linguagem de máquina, conforme o diagrama Y. • Linguagem C++ é um aperfeiçoamento da linguagem C, e conseqüentemente, tem sua mesma aplicabilidade, no entanto usa a abordagem de orientação por objetos. • Linguagem SystemC é um subconjunto da linguagem C++, tendo como objetivo a descrição de hardware. • Java tem várias características que a tornam vantajosa frente a outras linguagens, tais como Orientada a Objeto, Independente de Plataforma, sem ponteiros, sendo que sua grande desvantagem é a baixo rendimento relativa a outras linguagens tais como C e a impossibilidade de acessar o hardware da máquina real. 37 10 11 12 13 14 15 16 17 18 19 Ver glossário Notamos que cada linguagem de programação usa seu próprio conjunto de símbolos e regras específicos para descrever determinadas tarefas, veremos agora algumas das características que foram predominantes para a escolha das linguagens utilizadas na elaboração do ambiente e da especificação do hardware. 2.2.3 CARACTERÍSTICAS RELEVANTES NA ESCOLHA DAS LINGUAGENS Neste item faz-se uma comparação dos fatores relevantes para a escolha das linguagens do programa SEQ2VHDL, sendo que a linguagem C será utilizada como ferramenta para a elaboração do programa, enquanto que a linguagem VHDL especificará os projetos que serão sintetizados a partir da ferramenta MAX+Plus II da Altera. Conforme Tabela 5, apresenta-se às especificações das linguagens de descrição de hardware e software adotadas: Linguagens Adotadas Características VHDL C Idealização da Linguagem 10 Hardware Software Implementação de Sistemas em Baixo Nível 11 Excelente Alto Transição de Estados 12 Sim Sim Representação Lógica 13 Alta Não Sincronismo 14 Alto Alto Facilidade de Corrigir Erros e Manutenção 15 Média Alta Público Alvo 16 Médio Muito Ferramentas Disponíveis 17 Muitas Muitas Aprendizagem 18 Alta Média Documentação 19 Médio Baixo Tabela 5 - Comparação das especificações das linguagens adotadas Logo abaixo se faz um breve comentário de duas principais ferramentas de projetos existentes no mercado geradas a partir de uma Máquina de Estado Finito. 38 2.2.4 FERR MENTAS PARA ENTRADAS FSM DE PROJETOS HDL 2.2.4.1 STATECAD O StateCAD é um software que usa o diagrama de bolas para descrever uma máquina de estado, gerando o mesmo projeto nas linguagens VHDL ou Verilog. Podem apresentar representações lógicas e máquinas de Mealy/Moore. O StateCAD otimiza o código gerado em função da velocidade, da área e outros. 2.2.4.2 ACTIVE-HDL O Active-HDL é um ambiente de projeto HDL específico para Xilinx, para FPGA, este software de verificação e entrada de projetos VHDL e Verilog é capaz de manipular os dispositivos Xilinx. O ambiente oferece a opção de simulação VHDL ou Verilog. O simulador VHDL é compatível com IEEE 1076-87/93 enquanto que o simulador Verilog cumpre com o padrão IEEE 1364-95. Na Tabela 6, apresentamos algumas características do software Active-HDL. Características Active-HDL Editor HDL SIM Editor de Máquina de Estado SIM Editor de Esquema SIM Editor de Diagrama de Bloco SIM Gerenciador de Fluxo de Síntese SIM Geração de “Testbench” SIM Visualizador de Formas de Ondas SIM Tabela 6 - Características do VHDL. No próximo capítulo, descreve-se o ambiente TAB2VHDL, formado pelos programa TABELA e o SEQ2VHDL. CAPÍTULO 3 AMBIENTE TAB2VHDL (TABELA E SEQ2VHDL) Descreve-se neste capítulo um método sistemático para projetos que a partir de uma descrição textual de uma máquina de estados finitos síncronas (1), máquinas de estados (circuitos seqüenciais ou FSM), origina-se uma segunda descrição (2), onde os elementos de memória são claramente identificáveis (flip-flops) e finalmente uma última descrição (3) em VHDL nos quais está presente uma entrada particular, denominada de relógio, que sincroniza os eventos aos quais a máquina esta sujeita, e pode-se gerar um circuito integrado como representado na Figura 15. Figura 15 - Resumo dos arquivos textos gerados pelo ambiente TAB2VHDL SEQ2VHDL TABELA MAX+PLUS II memória relógio 1) 2) 3) 40 O comportamento de um circuito seqüencial pode ser descrito por um diagrama de estados. Tal diagrama define as transições entre os estados do sistema e suas saídas, quando submetidos às entradas. 3.1 PROGRAMA TABELA O programa TABELA [DaS 89] elaborado pela UNICAMP gera a tabela de transição de uma máquina seqüencial a partir de seu diagrama de estados, e minimiza as funções de transições internas correspondentes aos elementos de memória utilizados e as funções de saída do circuito. Figura 16 - Diagrama Y que representa os arquivos textos do Programa TABELA Os dados solicitados pelo programa são: • nome do dispositivo de saída para os resultados ( não deve conter extensão); • número de flip-flops; • tipo de cada um dos flip-flops ( podem ser do tipo D ou JK); • número de variáveis de entradas seguido pelo número de variáveis de saída; • a tabela de próximo estado deve ser descrita na seguinte forma: Estado atual Próximo estado Entrada Saída. Diagrama de estados Dispositivo Lógico RTL Arquitetura Comportamental Estrutural Físico Funções Booleanas e Memórias 41 20 21 Ver glossário Os estados, as entradas e as saídas devem estar na forma decimal. As máquinas podem ser completa ou incompletamente especificadas, e devem estar na representação do modelo de Mealy. O programa monta a tabela de transição armazenando-a no arquivo de saída. A partir desta tabela são obtidos os mintermos 20 e os don’t care states21 das funções internas (controle) de todos os flip-flops e da saída do circuito. Utilizando-se do algoritmo de Quine- McCluskey [McC 56] ( Algoritmo de minimização de funções booleanas ) estas funções são obtidas nas suas fórmulas mínimas. O método de Quine-McCluskey é um método clássico que possui duas fases: a obtenção dos implicantes primos, e a cobertura irredutante, onde a partir do conjunto de implicantes primos são obtidos os implicantes essenciais para a realização da função. [DaS 89]. O diagrama de blocos do programa TABELA é apresentado na Figura 17. Figura 17 - Diagrama de blocos do programa TABELA 42 Como exemplo da aplicação do programa TABELA descreve-se a seguir o projeto do código de linha AMI. Ele codifica os pulsos 0 em “0”, cuja alocação foi adotada como “00”, e os pulsos 1, alternadamente em pulsos “+1” e “-1” onde adotou-se respectivamente as alocações “01” e “10”. O objetivo do código AMI é eliminar o nível DC na linha de transmissão. O projeto tem início na representação do funcionamento do sistema por meio do diagrama de transição de estado. O diagrama de transição de estados para o código AMI é apresentado na Figura 18. Figura 18 - Diagrama de estados do Código AMI As informações contidas no diagrama de estado são transcritas por meio de notações convenientes para gerar um arquivo, com extensão “.TAB”, que é o arquivo de entrada para o programa TABELA. Apresenta-se mais adiante, o arquivo AMI.TAB, conforme Figura 19 que descreve o diagrama de estado apresentado na Figura 18 para ser lido pelo programa. 1 1 2 D 3 1 2 4 0 0 0 0 5 0 1 1 1 6 1 0 1 2 7 1 1 0 0 8 -100 Figura 19 – Arquivo AMI.TAB de Entrada do Programa TABELA 43 A numeração na coluna, mais à esquerda, será utilizada para se referir às linhas do arquivo de descrição do diagrama de estados. Essa numeração não poderá estar inserida no arquivo AMI.TAB para o correto funcionamento do programa TABELA. Na linha 1 especifica-se a quantidade de elemento(s) de memória(s). No caso necessita-se de somente um elemento de memória, visto que o sistema contém somente dois estados. Na linha imediatamente abaixo especifica-se o tipo de elemento de memória que será utilizada, no caso o flip-flop tipo D. Na linha 3 especifica-se a quantidade de entradas e de saídas. O sistema projetado tem 1 porto de entrada e 2 portos de saídas. Nas linhas subseqüentes especificam-se as transições dos estados e a saída gerada. A linha 4 é lida da seguinte forma, estando a máquina no estado atual ‘0’ ela transita para o estado ‘0’ quando tiver entrada ‘0’ e gerar saída ‘0’. Na linha seguinte, ao estar a máquina no estado atual ‘0’ ela transita para o estado ‘1’ quando tiver entrada ‘1’ e gera saída ‘1’. Deve-se lembrar que na especificação está se utilizando a notação decimal. Como a saída tem dois bits a notação saída ‘1’ significa que o bit mais significativo assume o valor binário ‘0’ e o bit menos significativo o valor binário ‘1’. Observe que se utilizou a alocação “01” para representar um sinal com polaridade positiva “+1”. O final da descrição é representado pela notação “-100”. Ao executar o programa TABELA, utilizando o arquivo AMI.TAB como entrada, o arquivo gerado inicia-se com um cabeçalho que permite identificar o caso rodado, o usuário e a data. Posteriormente é apresentada a tabela de transição de estados da qual são extraídas as funções de controle dos elementos de memória e das saídas. São apresentados todos os mintermos das funções booleanas e os respectivos implicantes primos. Por exemplo, a função D0 é composta pelos mintermos 2 e 1. Os implicantes primos geram função mínima representada por X’.Q + X.Q’. A função Z1 é composta pelo implicante X.Q e a função Z0 é composta pelo implicante X.Q’. O custo total para a implementação das três funções combinacionais é igual a 10, considerando-se como critério de custo a quantidade de entrada das portas lógicas AND e OR utilizadas. 44 O programa Tabela gera o arquivo de saída AMI.TXT apresentado a seguir: CASO : AMI - modelagem funcional DATA : 22 . 02 . 2002 USUARIO : Leandro de Oliveira Tancredo !DE!P/!ENTRADA !MINT!!Q0!Q0+!D0!!Z1!Z0! ! 1! 1! 0 (0) ! 1!! 1! 1! 1!! 0! 0! ! 1! 0! 1 (1) ! 3!! 1! 0! 0!! 1! 0! ! 0! 0! 0 (0) ! 0!! 0! 0! 0!! 0! 0! ! 0! 1! 1 (1) ! 2!! 0! 1! 1!! 0! 1! FUNCAO D0 ========= MINTERMOS : 2; 1; IMPLICANTES PRIMOS ESSENCIAIS : ESSENCIAL: 1 REDUNDANCIA: 0 -> 01 ESSENCIAL: 2 REDUNDANCIA: 0 -> 10 CUSTO FINAL DE D0 = 6 FUNCAO Z1 ========= MINTERMOS : 3; IMPLICANTES PRIMOS ESSENCIAIS : ESSENCIAL: 3 REDUNDANCIA: 0 -> 11 CUSTO FINAL DE Z1 = 2 FUNCAO Z0 ========= MINTERMOS : 2; IMPLICANTES PRIMOS ESSENCIAIS : ESSENCIAL: 2 REDUNDANCIA: 0 -> 10 CUSTO FINAL DE Z0 = 2 CUSTO TOTAL DAS 3 FUNCOES = 10 A Figura 20 apresenta o esquemático obtido pela interpretação do arquivo gerado pelo programa TABELA e a Figura 21 apresenta a simulação do circuito que implementa o código de linha AMI, utilizando-se o ambiente Max + Plus II da Altera. 45 Figura 20 - Esquemático do circuito que implementa o código de linha AMI. Figura 21 - Simulação do circuito apresentado na Figura 20. 46 A tecnologia de circuitos integrados vem avançando a cada dia com o objetivo de permitir que mais e mais componentes possam ser inseridos em uma simples pastilha de silício, assim os sistemas digitais também têm aumentado em complexidade. Como os sistemas digitais tem se tornado complexos, os detalhes de projeto de um sistema no nível de portas lógicas e flip-flops têm se tornado tediosa e passaram a consumir muito tempo do projetista. A descrição utilizando captura de esquemático está em desuso. A linguagem de descrição de hardware permite que um sistema digital seja projetado e depurado em alto nível de abstração, antes de ser convertido para o nível de portas lógicas ou de flip-flops. O emprego de ferramentas de síntese, também denominadas de CAD, para este tipo de atividade está cada vez mais em evidência, conforme já mencionado. Com o objetivo de automatizar os passos de projeto desenvolveu-se o programa TAB2VHDL ( TABELA para VHDL ) que recebe como entrada a saída gerada pelo programa Tabela, e cria um modelo funcional do circuito projetado na linguagem de descrição VHDL. Dessa forma, o arquivo contendo a descrição VHDL do circuito poderá ser sintetizado por ambientes de sínteses comerciais. O ambiente que se está utilizando é o MAX + PLUS II da Altera [ALT 02], que está licenciado para trabalhar com o VHDL. Na realidade, trata-se de um pseudo VHDL, pois não disponibiliza todas as implementações especificadas no padrão IEEE. No ambiente disponível não se dispõe de um simulador VHDL e sim um sistema que dado o modelo descrito em VHDL, gera-se um netlist que é utilizado por um simulador de circuito digital. Apresenta-se logo após o modelo VHDL funcional gerado pelo programa SEQ2VHDL que teve como arquivo de entrada a descrição gerada pelo programa TABELA. 47 3.2 PROGRAMA SEQ2VHDL Neste item, conforme Figura 22, utiliza-se a ferramenta SEQ2VHDL, ver Apêndice II, que recebe como entrada às funções booleanas e memórias do arquivo AMI.TXT (a saída gerada pelo programa TABELA) e cria um modelo funcional do circuito projetado na linguagem de descrição VHDL para o ambiente MAX+PLUS II. Figura 22 - Diagrama Y que representa a ferramenta SEQ2VHDL A listagem abaixo descreve o arquivo AMI.VHD gerado pelo programa SEQ2VHDL: -- PROJETO DE TESE DE MESTRADO - Ferramenta de Síntese Lógica -- A ferramenta tem por objetivo transformar a descrição de uma máquina de estados finitos -- sintetizada pelo programa TABELA para o seu modelo RTL descrito em VHDL. -- Programa: SEQ2VHDL.EXE -- Programador: Leandro de Oliveira Tancredo -- Versão: 9.0 de 3 de março de 2002 ENTITY AMI IS PORT( -- CLK e CLR estão presentes em todos os modelos CLK, CLR : IN BIT; -- Os parâmetros seguintes são definidos de acordo -- com a descrição contida no programa tabela. -- Xn representam as variáveis de entrada Funções Booleanas VHDL Dispositivo Lógico RTL Arquitetura Comportamental Estrutural Físico 48 -- Qn representam as variáveis de estado -- Zn representam as funções de saída X0 : IN BIT; Q0 : OUT BIT; Z0, Z1 : OUT BIT ); END AMI; -- RTL e a designação para todas as arquiteturas ARCHITECTURE RTL OF AMI IS -- VEn são sinais auxiliares que assumem os mesmos valores -- das variáveis de estado. Eles são utilizados para permitir -- um melhor modelamento do sistema SIGNAL VE0: BIT; -- Jn, Kn e Dn representam as funções de controle e sao definidas -- no arquivo gerado pelo Programa TABELA SIGNAL D0 : BIT; BEGIN -- Nesta parte do modelo tem-se a descrição de cada um dos Flip-flops. -- Deve-se observar que os sinais auxiliares são utilizados, sendo que -- no final de cada processo seus valores são transferidos para as -- variáveis de estados -- Importante salientar que em relação ao software, existem duas -- procedures, -- uma que implementa o flip-flop D e outra que implementa o JK e estas -- procedures -- recebem os índices que representam o respectivo elemento de memória. -- Tais índices estão definidos no arquivo gerado pelo programa TABELA -- Inferindo flip-flop tipo D PROCESS(CLK, CLR) BEGIN IF CLR = '0' THEN VE0 <= '0'; ELSIF CLK'EVENT and CLK = '1' THEN VE0 <= D0; END IF; Q0 <= VE0; END PROCESS; -- Processos que implementam as funções combinacionais de controle -- dos Elementos de memória e de Saídas. D0 <= ( NOT(X0) AND (VE0)) OR ((X0) AND NOT(VE0)); Z1 <= ( (X0) AND (VE0)); Z0 <= ( (X0) AND NOT(VE0)); END RTL; 49 Pode-se notar que na entidade do modelo apresentado foram definidos os portos de entrada e saída e os sinais de sincronismo (CLK e CLR). O porto denominado Q0 não é necessário para o perfeito funcionamento do sistema. Este foi inserido para permitir que o projetista observe, através de simulação, os estados pelos quais a máquina está transitando. Cabe salientar que o TAB2VHDL foi desenvolvido para ser empregado no ensino de sistemas digitais. Se a avaliação das transições de estado não forem necessárias, as variáveis de estado podem ser omitidas, conforme apresentado na Figura 21. São definidos sinais auxiliares denominados VEn cujo objetivo é evitar que se gerem vários drivers para um mesmo sinal, o que exigiria o desenvolvimento de uma função de resolução. Esta função define qual será o valor do sinal em caso de conflitos. É criado um processo para cada um dos flip-flops utilizados. Dois tipos de processos foram criados, um para modelar flip-flop D, sensível a transição de subida, e o outro para modelar flip-flop JK, sensível a transição de subida. Vários outros modelos de flip-flop poderiam ser definidos na ferramenta SEQ2VHDL. Por fim, são definidas as funções de controle dos elementos de memória, D0, e de saída, Z1 e Z2. Estas funções foram obtidas do arquivo gerado pelo programa TABELA. Na simulação apresentada na Figura 21 verifica-se o perfeito funcionamento do código AMI, cujo modelo foi gerado pelo programa SEQ2VHDL. Vários códigos de linhas foram projetados, empregando três diferentes ambientes de projeto. No próximo capítulo, ao implementar os códigos, compara-se o projeto gerado pelo SEQ2VHDL com outras ferramentas. CAPÍTULO 4 PROJETOS DE CÓDIGOS DE LINHA Escolheu-se para estudo de casos a implementação de alguns chip-sets de códigos de transmissão digitais, utilizando-se duas ferramentas e o ambiente TAB2VHDL, este último apresentado no Capítulo 3. A maioria desses exemplos são padrões, todavia, com o passar do tempo surgem novos serviços, que obrigam a adaptação do código à nova tecnologia utilizada. Logo, os projetos devem permitir uma maior flexibilidade de adaptação, sendo que uma solução adequada seria a implementação em software. Contrariamente, por estes códigos estarem localizados nas camadas inferiores da OSI/ISO, conforme visto no Capítulo 1, e por isso necessita-se de velocidade nas suas aplicações em tempo real, adotando-se a implementação em hardware. Conforme apresentado no Capítulo 1, o desenvolvido de projetos eletrônicos tem impulsionado o setor de telecomunicações nos últimos anos, permitindo assim a criação de vários serviços digitais, como exemplo, temos várias tecnologias RDSI, HDSL, ADSL, VDSL e várias outras que estão surgindo no mercado. A utilização de componentes lógicos programáveis, como FPGAs para implementação de hardware, tem proporcionado uma melhoria no desempenho do circuito, ou seja, a redução de custos e uma integração física maior com relação aos projetos convencionais. 51 22 23 24 25 26 Ver Glossário Os códigos de linha HDB3, HDB1, 2BQ1, 3B4B, MLT-3, AMI e algumas técnicas alternativas de detecção de sincronismo foram projetados utilizando-se as ferramentas comerciais aqui denominadas simplesmente de SC e AC, e os resultados foram comparados com os obtidos pelo ambiente TAB2VHDL. Todos os códigos VHDL gerados foram sintetizados no ambiente de projeto Max + Plus II da altera. Do arquivo com extensão RPT (Report) gerado pode-se extrair parâmetros como Circuitos Lógicos (LC) 22, Porcentagem Útil (% Útil) 23, Fan-In 24, Custo 25, Memória 26 para avaliar o desempenho do ambiente proposto. 4.1 CODIFICAÇÃO Conforme PÉRICO [PÉR 95], a codificação de linha em um sistema de telecomunicação consiste no uso de códigos que atuam sobre um conjunto de bits que unidos formam originalmente uma palavra, essa palavra é alterada em uma nova palavra transformada, e transportada através de um meio de transmissão, de tal forma que sua principal característica é procurar preservar a faixa de freqüência original dos pulsos gerados, sendo que na recepção a palavra transformada é decodificada preservando-se assim a palavra original. O objetivo da codificação é preservar o código nas seguintes situações: otimizar o espectro de energia do sinal transmitido, eliminar componentes do sinal com nível DC, prover mecanismo de preservação de sincronismo no próprio sinal. 4.1.1 CÓDIGO HDB3 O código HDB3 trabalha como o AMI, até a limitação de 3 zeros, a partir do quarto zero, obriga a introdução de falsos “um” na seqüência de zeros, cuja finalidade é limitar a seqüência de zeros. Este código tem sido prescrito através de muitos anos pelo CCITT para sistemas de linha digitais primários de 2.048 Mbit/s. 52 Para compreender algumas regras, deve-se definir os conceitos de bipolaridade e violação de uma cadeia de 4 zeros: • Sinal bipolar é aquele que possui duas polaridades denominadas de B+ e B- e o estado zero, conforme Figura 23 . ESTADO "0" B- B+ Figura 23 - Sinal Bipolar • Violação da regra AMI, são pulsos que tem a mesma polaridade do pulso anterior, podendo ser positivas, chamadas de violação positivas (V+), ou negativas, chamadas violação negativa (V-), conforme Figura 24. VIOLAÇÃO MARCA SEM VIOLAÇÃO VIOLAÇÃO Figura 24 - Aspectos do sinal HDB-3 que envolvem violação. 53 As regras de codificação HDB-3, segundo a recomendação ITU-T de novembro de 1971, são: 1. O sinal HDB-3 é bipolar, pois produz três valores de intensidades que são representados por B+ e B- e 0; 2. Os sinais binários zeros são sempre codificados como zeros no sinal HDB-3 até a cadeia de três zeros consecutivos. Para seqüências a partir de quatro zeros consecutivos ou superior, aplica-se a regra 4; 3. Os uns do sinal binário são codificados alternadamente como B+ e B- no sinal HDB-3, tal como no código AMI. Violações da regra AMI só serão introduzidas quando uma seqüência de quatro espaços consecutivos aparecerem, conforme regra 4; 4. Na ocorrência de quatro zeros consecutivos, serão seqüencialmente numerados como 1o, 2o, 3o e 4o zero, deve-se portanto, proceder como nos sub-itens abaixo: a. Para o primeiro zero da seqüência será codificado como zero, se a marca precedente do sinal HDB-3 tiver polaridade oposta à violação precedente, será codificado como marca sem violação (B+ ou B-), caso as marcas de violação precedente tiverem a mesma polaridade; b. O segundo e terceiro zero da seqüência são codificados como zero; c. O último ou 4o espaço da seqüência é codificado como marca e a polaridade devem ser tal a regra AMI seja violada. Tais violações podem ser positivas ou negativas. 54 O fluxograma representado através da Figura 25 mostra os passos que deve-se tomar quando aparecem quatro espaços consecutivos, ou seja a regra 4. Primeiro espaço verificar a violação precedente É da mesma polaridade que a marca precedente? Codificar com espaço (zero) Codificar como marca B+ ou B- sem violação Segundo e terceiro espaço codificado com espaços (zeros) Quarto espaço codificado como violação V+ ou V- Figura 25 - Fluxograma da Regra 4 da codificação HDB-3 O diagrama de estado de uma máquina de Mealy, que gera o código de linha HDB3 é apresentado e descrito no trabalho de KEOGH [KOH 78]. O diagrama de estado ou a tabela de estado do código HDB3 será o ponto de partida para o projeto do código, existem muitos fabricantes comerciais que geram esse código de circuitos integrados como o CD22103A da RCA [INT 02b]. 55 Como se pode notar anteriormente, o código HDB3 pode ser considerado como uma modificação do alternate mark inverte (AMI). Em AMI os dados 0 são transmitidos como 0 e os dados 1 como B+ (representado como +) ou B- (representando como -), como o AMI . O HDB3 busca corrigir o efeito de strings compridas formadas por mais de 4 “zeros”, alterando a codificação de saída, para que não ocorra perda de informações de sincronização de relógio, substituindo quatros 0's sucessivos, por uma seqüência que pode ser B00V ou 000V, conforme regra 4, vista anteriormente. Da descrição física do código, é possível observar o número de estados requerido. O codificador necessitou de 3 partes de memória para armazenar os dados prévios, ou seja, identificar quatro sucessivos O´s. Em seguida, um flip-flop é exigido para armazenar a polaridade do pulso bipolar (B) anterior (0 para + ou 1 para -), e finalmente, um outro flip- flop é requerido para armazenar a polaridade da Violação. Assim, o codificador requer um mínimo de 25 = 32 estados. Figura 26 - Diagrama de estado do código HDB3 em Hexadecimal. Empregando os processos convencionais para a construção e minimização de diagramas de estado para máquinas síncronas de estado finito, o diagrama com 32 estados do HDB3, pode ser visto na Figura 26. Este tem simetria aproximada sobre dois planos, um horizontal e o outro vertical. 56 Todos os dados representados por 1 causam uma transição através do plano horizontal, o qual corresponde à memória do codificador da polaridade do pulso bipolar previsto. Os dois pares de estados 07 e 0F no lado esquerdo e 1F e 17, correspondentes aos pares de estados do lado direito do diagrama, são empregados na descrição AMI. Suas longas strings de sinais “uns” ocasionam a codificação alternada entre os estados + e -. É importante notar que o diagrama de estado é um codificador que produz um símbolo de saída atrasada de três pulsos de relógio. A codificação representada da máquina de estado está em hexadecimal. Partindo do diagrama de estado apresentado se projeta o código HDB3 no ambiente TAB2VHDL. Transforma-se o diagrama de estado (de representação hexadecimal) para a representação decimal, para tanto utilizou-se o programa TABELA. A Tabela 7 apresenta essa transformação. HEX DEC HEX DEC HEX DEC HEX DEC 00 0 04 4 08 8 0C 12 01 1 05 5 09 9 0D 13 02 2 06 6 0A 10 0E 14 03 3 07 7 0B 11 0F 15 10 16 14 20 18 24 1C 28 11 17 15 21 19 25 1D 29 12 18 16 22 1A 26 1E 30 13 19 17 23 1B 27 1F 31 Tabela 7 - Tabela de Conversão de Hexadecimal para Decimal Para a conversão do nível de tensão + , – e 0 utilizou o binário 0 para representar o sinal + e o binário 1 para representarmos o sinal -, portanto +1 seria 01 e –1 seria 11 em binário, convertendo para decimal, tem-se 1 e 3. 57 As inf