REVISTA DO DETUA, VOL. 2, Nº 2, JANEIRO 1998 248 Resumo - Este artigo aborda a reconfiguração dinâmica das FPGAs (Field Programmable Gate Arrays) e o seu uso em diferentes aplicações práticas. A técnica aqui considerada apresenta diferentes formas que podem ser usadas no projecto de circuitos lógicos virtuais que possuam as propriedades de flexibilidade, extensibilidade e reutilização. Estas podem ser encontradas nas técnicas de orientação por objectos, de onde podem surgir algumas ideias para o desenvolvimento de hardware: o encapsulamento (tornando possível a construção de objectos de hardware), herança (permitindo a reutilização de objectos já existentes) e a modificação da funcionalidade de um objecto de hardware durante o funcionamento normal do circuito. De forma a dotar os objectos de hardware com estas facilidades e eliminar algumas restrições é sugerida uma arquitectura da FPGA que combina as suas células lógicas com matrizes de estrutura regular que podem ser movidas dentro da FPGA. Abstract - This paper discusses dynamically reconfigurable field programmable gate arrays (FPGA) and their use for different practical applications. The technique considered presents different ways that might be used in order to design virtual logic schemes, which have acquired such properties as flexibility, extensibility and reusability. Since object- oriented technology allows to design software systems with such facilities, we have been trying to apply some ideas of this technology to the design of hardware circuits based on reprogrammable and reconfigurable logic blocks, such as FPGA cells. These ideas are encapsulation, making it possible to construct hardware objects, inheritance, allowing to provide reuse of existing hardware objects, and run time support, which enables us to modify the functionality of hardware objects on the fly, i.e. dynamically during run- time. In order to provide hardware objects with the facilities considered above and eliminate some constrains, we suggest an architecture of FPGA combining its logic cells with regular matrix structures that are moveable within an FPGA. Finally the paper suggests some reasonable ways, aimed at developing FPGA-based circuits. I. INTRODUÇÃO Os modelos de circuitos digitais podem ser visualizados recorrendo a diferentes níveis de abstracção [1]. Cada nível de abstracção descreve diferentes características e contém os detalhes que lhes estão associados. Neste artigo consideram-se dois: arquitectural e lógico. No primeiro nível um circuito é caracterizado por um conjunto de operações. No segundo nível, um circuito é definido por um conjunto de funções lógicas. A síntese arquitectural, também referida como síntese de alto nível ou síntese estrutural, permite-nos criar uma estrutura macroscópica para um circuito representando-o por um conjunto de blocos. Por outras palavras, o processo de síntese deve definir o datapath como um conjunto de recursos interligados (tais como registos, barramentos de dados e blocos funcionais), bem como um modelo lógico da unidade de controlo [1]. As tarefas principais da síntese arquitectural são scheduling, partilha de recursos, binding e criação do datapath e da unidade de controlo (estas tarefas são descritas em detalhe em [1]). A síntese de nível lógico é aplicada a circuitos combinatórios e sequenciais, permitindo-nos obter uma implementação do circuito na forma de uma netlist de portas ou de outros elementos tais como células lógicas, matriciais ou funcionais. A combinação de um datapath e de uma unidade de controlo forma um dispositivo operacional que pode ser visto como um objecto de hardware. Baseado neste conceito um sistema digital pode ser modelado como um conjunto de objectos de hardware que comunicam entre si, em que a execução das funções de cada objecto é requerida através do envio de mensagens. Cada mensagem está relacionada com uma unidade de controlo específica e condiciona o seu comportamento de acordo com o que foi requerido (e, consequentemente, com o que se deseja). Neste tipo de abordagem o sistema deve ser decomposto de tal modo que os seus componentes sejam abstracções chave no domínio do problema. Esta decomposição, baseada numa colecção de objectos que comunicam entre si com o objectivo de cumprir uma determinada função, é designada por decomposição orientada por objectos (Object-Oriented Decomposition – OOD) [2]. De notar que o comportamento de um dado objecto de hardware é proporcionado pela sua unidade de controlo que é também responsável pela interface externa do objecto. Por outras palavras, a unidade de controlo responde às mensagens (externas) que vai recebendo, executando as acções por estas requisitadas. Em muitas aplicações práticas (em particular aplicações embebidas – embedded applications [3]), os sistemas digitais são heterogéneos e por isso as suas especificações podem Circuitos Virtuais Baseados em Reprogramação e Reconfiguração Dinâmica Valery Sklyarov, Andreia Melo, Arnaldo Oliveira, Nuno Lau, Ricardo Sal Monteiro