• Nenhum resultado encontrado

Projeto de um PLD com Características de Testabilidade

N/A
N/A
Protected

Academic year: 2021

Share "Projeto de um PLD com Características de Testabilidade"

Copied!
10
0
0

Texto

(1)

Projeto de um PLD com Características de Testabilidade

Alex Gonsales alexdg@inf.ufrgs.br Luigi Carro carro@inf.ufrgs.br Marcelo Lubaszewski luba@inf.ufrgs.br Altamiro Suzin suzin@iee.ufrgs.br UFRGS – Universidade Federal do Rio Grande do Sul

GME - Grupo de Microeletrônica

Caixa Postal 15064 – Porto Alegre, RS – 91501-970 - Brasil

Resumo

Este trabalho propõe o projeto de um circuito programável que possua estruturas adequadas à implementação de testes em sistemas integrados, tais como geração randômica de vetores e de padrões de teste de estruturas específicas. Após a execução dos testes, este dispositivo será reconfigurado para desempenhar funções auxiliares do próprio sistema, como por exemplo, um co-processador ou um filtro digital. Este nível de programabilidade facilita o reuso e possibilita um menor impacto de área no sistema final.

Palavras chaves: Auto-teste, BIST, PLD, FPGA, FPPA, lógica programável, arquiteturas reconfiguráveis.

Abstract

This work presents the design of a programmable circuit able to generate random or dedicated test patterns for different families of circuits on an integrated system. After running the test, this device can change its reconfiguration to run another auxiliary function on system, as a co-processor or as a digital filter, for example. This system level programability allows high reuse of components and represents a smaller amount of area overhead for test structures.

(2)

1 Introdução

A indústria de microeletrônica encontra-se em crescente demanda por circuitos cada vez mais densos e mais complexos, com altíssimas velocidades e implementados em áreas ativas cada vez mais reduzidas. O cumprimento desses requisitos tem colocado aos projetistas de circuitos integrados constantes desafios.

Um dos principais passos dados em direção à solução desses problemas é a integração do maior número de componentes de um sistema, incluindo processador, memória e unidades auxiliares em um único chip, os chamados Systems

on Chip (SOC). Essa alta densidade de integração

proporciona diversas melhorias no desempenho geral dos dispositivos, porém, traz a desvantagem de uma maior complexidade de projeto e de testabilidade dos sistemas desenvolvidos dessa forma.

Uma alternativa viável é integrar algumas ou todas as funções de teste no próprio chip ou na placa a ser testada. Essa técnica é conhecida como auto-teste integrado ou Built-in Self Test (BIST) [ABR 90 ] [AGR 93a] [AGR 93b].

Logo, ao integrar diversos blocos de teste a um dispositivo pré-existente deve-se considerar os limites e custos dos recursos de hardware disponíveis. Essa limitação de recursos traz a necessidade da reutilização destes. Uma técnica de reuso de recursos de hardware é a reconfiguração, que consiste em alterar a funcionalidade de um circuito durante o seu intervalo operacional.

É interessante observar que se os testes não necessitarem serem feitos em paralelo, então é possível utilizar uma única área reconfigurável para realizar os testes de todos os blocos de uma forma sequencial. Em [CAR 00] é apresentado um estudo de caso onde essa abordagem é utilizada. Com essa estratégia reduz-se a área dedicada aos blocos de teste, uma vez que é possível reconfigurar no tempo cada um dos procedimentos sobre o mesmo

hardware. Naquele mesmo trabalho é feita a

sugestão de que um circuito reconfigurável dinamicamente e parcialmente poderia ser muito útil para atacar problemas desse tipo.

A partir disso, surge a motivação para o projeto de uma arquitetura baseada em células, que seja parcialmente e dinamicamente reconfigurável e que possua estruturas adequadas à implementação de algoritmos de teste (BIST) bem como o auto-teste da própria arquitetura [SOU 00]. Além disso, a arquitetura deverá poder ser utilizada para outras aplicações, que não teste. Num primeiro momento, pretende-se verificar a viabilidade de implementação de algoritmos de processamento

digital de sinais (DSP-Digital Signal Processing) na mesma. Dessa forma, poderão ser desenvolvidos sistemas de processamento digital de sinais com auto-teste embutido, utilizando-se o dispositivo aqui proposto.

O fator diferencial deste projeto seria a reconfiguração parcial e dinâmica, ou seja, enquanto uma parte do circuito realizaria teste sob um determinado componente, outras partes deste mesmo circuito poderiam ser reconfiguradas para desempenharem outras funções. Isto criaria um cenário em que algumas células seriam alocadas inicialmente por um algoritmo de teste e ao final deste poderiam ser reconfiguradas para desempenharem outras funções do sistema, como por exemplo um co-processador.

Este trabalho está organizado da seguinte forma. A seção 2 apresenta alguns conceitos básicos sobre teste e auto-teste de circuitos integrados bem como os algoritmos de teste abordados neste projeto. A seção 3 mostra alguns conceitos relativos a arquiteturas reconfiguráveis e arquiteturas paralelas bem como alguns trabalhos relacionados na área. Na seção 4 é apresentada a metodologia de projeto bem como é feita a descrição da célula básica do dispositivo proposto. A seção 5 trata do modelo de conexões utilizado e na seção 6 são feitas considerações à respeito do software para a programação da arquitetura. Na seção 7 conclui-se com a apresentação de alguns resultados e indicações de trabalhos futuros.

2 Teste e Auto-Teste de Circuitos

Integrados

Durante o seu tempo de vida útil, um circuito integrado pode ser testado em diversas situações. Tais situações devem ser previstas durante a fase de projeto desses sistemas, o que justifica o uso de técnicas de projeto que visam o teste ou a testabilidade (design for testability) do sistema final [COT 98].

A idéia básica da técnica de BIST é a aplicação de vetores de teste nas entradas do circuito e a verificação dos resultados nas saídas do mesmo.

Para a realização deste trabalho foram estudadas diversas técnicas de teste que pudessem ser aplicadas a maioria dos tipos de circuitos ou sistemas existentes, podendo-se destacar os seguintes: memórias RAM, memórias ROM, multiplexadores e partes operativas ([ABR 90], [AGR 93a], [AGR 93b], [COT 98]).

Neste trabalho, inicialmente excluiu-se métodos de teste para máquinas de estados finitos uma vez que tal tipo de teste é possível mediante a intervenção e recodificação dos próprios estados da

(3)

máquina, procedimento que, em uma arquitetura de projetos baseada em cores, não seria possível uma vez que estes teriam sido pré-projetados.

3 Arquiteturas Paralelas

Reconfiguráveis

Diversos parâmetros devem ser levados em consideração ao se projetar um PLD (Programmable Logic Device). Dentre eles estão a complexidade do bloco lógico e a flexibilidade de interconexão [BET 98], [BRO 96]. [DEH 96], [SHI 96].

3.1 Complexidade de um Bloco Lógico Teoricamente, quanto maior for a funcionalidade de um bloco, menor será o número de blocos necessários para implementar um determinado circuito [BRO 96].

Uma topologia baseada em granularidade fina implica numa boa utilização da lógica disponível no bloco, porém, neste caso, será necessária uma grande área destinada às conexões entre os blocos. Por outro lado, uma topologia baseada em alta granularidade implica em menos área destinada ao roteamento entre os blocos. Em contrapartida, pode haver um desperdício de área quando se quiser implementar funções simples no bloco, visto que se estará utilizando um bloco complexo inteiro para a implementação de uma função simples.

Portanto, durante o projeto de um dispositivo programável, é de vital importância a escolha de uma granularidade adequada para as aplicações às quais o dispositivo será destinado.

Tradicionalmente, os projetistas têm projetado FPGAs para uso geral, com blocos lógicos de granularidade fina (1 bit). Uma abordagem diferente (DP-FPGA – Data Path FPGA) é otimizar o chip para uma classe específica de circuitos e aplicações ([CHE 96] apud [BRO 96]). Nesse caso, cada bloco do DP-FPGA manipula um conjunto de bits, implementando operações aritméticas, multiplexadores, etc, sob esse conjunto de bits. O DP-FPGA é otimizado tanto a nível de blocos lógicos como estruturas de roteamento.

3.2 Flexibilidade de Interconexão

Além da complexidade dos blocos lógicos, outro parâmetro que determina a arquitetura de um FPGA é a sua estrutura de interconexão. Poucos recursos de interconexão podem comprometer o roteamento do circuito e recursos excessivos significam desperdício de área. Portanto, deve-se ter uma estrutura de interconexão que seja adequada para a resolução dos problemas propostos.

A topologia de interconexão também deve ser considerada. Partindo-se da idéia que em algoritmos de teste e processamento de sinais os padrões de comunicação podem ser previstos de maneira razoável, decidiu-se utilizar uma topologia de interconexão estática no dispositivo proposto [ALM 94].

Uma breve revisão de literatura levou a uma série de trabalhos correlatos nas áreas de hardware evolutivo ([NUS 98]), processamento digital de sinais [CHE 92] e também arquiteturas de propósito geral ([OGU 98] e [WAI 97]).

A topologia de [OGU 98] possui granularidade fina, ao contrário das abordagens de [NUS 98], [CHE 92] e [WAI 97], onde a capacidade de processamento individual de cada célula é muito mais elevada.

4 Metodologia e Descrição do

Hardware

4.1 Metodologia

Pretende-se propor uma arquitetura paralela de alta granularidade, dinamicamente e parcialmente reconfigurável, que seja adequada para a realização de teste de outros dispositivos (chips, cores, etc.) bem como o auto-teste da própria arquitetura.

Além disso, deve-se poder utilizar essa arquitetura para outras aplicações, que não teste. Num primeiro momento, pretende-se verificar a viabilidade de implementação de algoritmos de processamento digital de sinais (DSP-Digital Signal

Processing) na mesma. Dessa forma, poderão ser

desenvolvidos sistemas de processamento digital de sinais com auto-teste embutido, utilizando-se o dispositivo aqui proposto.

Para o desenvolvimento deste trabalho, adotou-se a metodologia experimental sugerida em [BRO 96], constituída das seguintes etapas:

• Definição dos parâmetros arquiteturais do PLD (complexidade do bloco lógico, flexibilidade de interconexão, etc.);

• Desenvolvimento de ferramentas de auxílio à programação do PLD;

• Mapeamento de circuitos de benchmark para a arquitetura hipotética;

• Avaliação a performance da arquitetura. Essas etapas são feitas continuamente, com ajustamento da arquitetura e das ferramentas de CAD.

Após obtida a primeira versão da descrição VHDL dessa arquitetura, serão realizadas simulações funcionais de algoritmos de teste e DSP para a validação da idéia proposta. Inicialmente pretende-se implementar o auto-teste do

(4)

microcontrolador 8051 [COT 98] e em seguida a implementação de filtros FIR.

Após isso, será realizada a síntese em

standard cells e respectiva avaliação em termos de

área ocupada, potência consumida, frequência de operação e performance. A partir dessa avaliação poderão ser realizados ajustamentos na arquitetura, visando a otimização da mesma.

Nossa proposta é a definição de uma arquitetura com granularidade menor que as abordagens de [NUS 98], [CHE 92] e [WAI 97] porém com maior capacidade de processamento local que a proposta de [OGU 98].

Procurou-se descrever o projeto de forma modular, visando a facilidade na modificação dos blocos sempre que necessário. Seguindo essa metodologia, buscou-se a definição de cada um dos blocos utilizando uma descrição VHDL (Very High

Speed Integrated Circuit Hardware Description Language) em alto nível e sempre que possível

parametrizável. Dessa forma, poderiam ser implementadas diversas versões do circuito, o que daria uma vasta gama de alternativas para a escolha da melhor arquitetura para a implementação final. 4.2 Requisitos da Arquitetura

Uma vez tendo sido definida a aplicação básica deste circuito (implementação de algoritmos BIST e DSP), realizou-se uma revisão de literatura a fim de melhor se definir o subconjunto de operadores e estruturas necessárias para implementar aplicações dessa classe.

No caso do teste do 8051, exemplo que será utilizado para validação das idéias propostas na seqüência deste trabalho de pesquisa, os algoritmos de teste que poderiam ser proveitosamente deslocados para uma área configurável de testes seriam: o teste da parte operativa e o teste das memórias RAM e ROM.

Nos algoritmos de teste de memória RAM, as operações em bit são parte significativa do processamento realizado. Pode-se com isso determinar que a parte operativa deveria apresentar facilidades na implementação dessas instruções. Para o teste de memórias ROM necessita-se basicamente de um acumulador. Além disso, a variabilidade nas larguras de endereçamento das memórias levou a necessidade de se definir blocos que pudessem ser configurados com 8, 16, 32 bits ou em palavras ainda maiores.

Alguns algoritmos de teste para parte operativa, implicam no uso de ao menos uma unidade multiplicadora quando a mesma não está presente na própria parte operativa do circuito a ser testado. Também podem ser utilizados LFSRs (Linear Feedback Shift Registers) para geração de padrões aleatórios e analisadores de assinatura.

Para algoritmos DSP, uma operação muito importante é a multiplicação. Sabe-se no entanto que um operador desse tipo é bastante custoso em termos de área e, a implementação do mesmo em cada célula representaria um desperdício de área já que para as aplicações de BIST dificilmente todos os multiplicadores estariam sendo utilizados ao mesmo tempo. Logo, com o objetivo de não aumentar em demasia o custo por célula, optou-se por implementar um multiplicador utilizando oito células básicas. A multiplicação é efetuada em 1 ciclo de relógio.

Além disso, cada célula deveria possuir seu próprio grupo de registradores locais a fim de facilitar a divisão de tarefas e maximizar a localidade de processamento. O uso de registradores de entrada e saída na ULA poderia ser definido a fim de permitir a implementação de

pipeline com profundidade 2. No entanto, a versão

inicial deste projeto possui apenas um registrador na saída da célula, sendo possível então a implementação de pipeline a nível de células.

Finalmente, o tamanho da palavra de dados tem importância considerável pois, se for excessivamente grande, trará desperdício de área quando se necessitar trabalhar com palavras menores, como por exemplo em testes de memórias que tenham largura de dados de 8 bits. Do mesmo modo, uma palavra de dados muito estreita implicará a necessidade de utilização de recursos de interconexão quando se for trabalhar com palavras maiores. Optou-se a priori por células de 8 bits, com possibilidade de cascateamento através de interconexão local até o tamanho de 32-bits.

A partir desse estudo feito, optou-se por implementar a célula básica como um processador simples, com uma unidade operativa capaz de executar as operações aritméticas de soma e subtração, operações lógicas do tipo NOT, AND, OR e XOR e deslocamentos para esquerda ou direita. Também seria útil a possibilidade de processar uma instrução por ciclo de relógio. O PLD seria formado por uma matriz de células, constituindo uma arquitetura do tipo FPPA (Field

Programmable Processor Array) [NUS 98].

4.3 A Célula Básica

Cada célula do FPPA aqui proposto é constituída por uma memória de programa, uma parte de controle e uma parte operativa, formando um pequeno processador ou Unidade de Execução (UE) como foi aqui chamada (Figuras 1 e 2).

Essa UE possui duas entradas (inA e inB) e duas saídas, uma registrada (out_R) e outra não registrada (out_nR). Além disso, também estão disponíveis os sinais para cascateamento com

(5)

células vizinhas (SRin, SRout, SLin, SLout, cin e cout).

Figura 1 – Célula básica.

Figura 2 – Detalhamento da célula básica. 4.4 Agrupamento de Células

A parte operativa do FPPA foi estruturada de maneira a poder ser agrupada formando partes operativas com uma maior largura de dados. Como cada célula comporta uma largura de 8 bits apenas, deve-se poder agrupar um conjunto maior de células para formar caminhos de dados de 16, 24 ou 32 bits. Desta forma, foi criado um agrupamento de 4 células o qual foi chamado de grupo local (Figura 3). Dois grupos locais formam um estrutura chamada bloco. O FPPA final será constituído por uma matriz de blocos conforme será visto na seção 5.

Também é interessante salientar que o dispositivo no todo se assemelha a uma arquitetura MIMD (Multiple Instruction Multiple Data) ([MOL 93], [ALM 94]), visto que cada célula é capaz de executar um programa independente.

Figura 3 - Cascateamento de células em um grupo local.

Figura 4 – Possíveis agrupamentos de células dentro de um grupo local.

Na Figura 4 podem ser vistas todas as associações de células possíveis utilizando-se a propagação célula a célula dentro de um grupo local. Como se pode ver, são possíveis diversas configurações para as larguras dos caminhos de dados. Essa configuração é feita através dos sinais ZCin e ZSin da palavra de instrução, sendo portanto, uma configuração dinâmica.

4.5 Memória de Instruções

Cada UE possui sua própria memória de instruções, a qual é formada por 256 palavras (instruções) de 32 bits. Nessa memória ficarão armazenadas as instruções que serão executadas pela célula. Cada bit da palavra de instrução, com exceção dos bits 0, 1 e 2, está associado a um sinal de controle da parte operativa, não necessitando decodificação na parte de controle.

4.6 Parte Operativa

A parte operativa é composta por um banco de registradores, 2 circuitos combinacionais deslocadores, 3 inversores e uma unidade lógica e aritmética(ULA) (Figura 5). A ULA e as unidades

(6)

de deslocamento podem ser cascateadas com as unidades do mesmo tipo das células vizinhas a fim de se aumentar a largura da parte operativa. Como cada operação é realizada em um ciclo, uma vez cascateadas as UEs, basta que elas executem a mesma instrução para que se realize a operação com o número de bits múltiplos de oito que se queira.

O banco de registradores é composto por 7 registradores de leitura e escrita (R1 a R7) e um registrador somente de leitura que armazena a constante zero (R0). Estão disponíveis duas portas de leitura e duas portas para escrita, sendo que a escrita ocorre na borda de subida do relógio.

Foram incluídos dois deslocadores combinacionais na parte operativa, um para cada operando. Esses blocos podem realizar o deslocamento do operando de uma posição (1 bit), tanto para a esquerda quanto para a direita. Além disso, existem sinais de propagação do bit mais significativo e do bit menos significativo para as células vizinhas (esquerda e direita, respectivamente). Essa propagação de sinal permite o cascateamento de células, possibilitando a manipulação de palavras de dados com mais de 8 bits (16, 24 ou 32). A habilitação/desabilitação da propagação desses sinais é feita utilizado-se o sinal de controle ZSin da instrução.

É importante salientar que os deslocadores são configurados como codificadores de Booth, quando o bloco ao qual pertence a UE for configurado como bloco multiplicador. Nesse caso, não é possível utilizar os deslocadores para as operações de deslocamento, ficando as UEs configuradas exclusivamente para executarem a operação de codificação de Booth (ver seção 5.2).

Existem dois inversores logo após a saída dos deslocadores, os quais são controlados pelos bits invA e invB da instrução. Os inversores não poderão ser utilizados quando a célula estiver configurada como bloco multiplicador.

Na saída registrada da célula também se encontra disponível mais um inversor.

Na ULA foram implementadas as operações lógicas AND, OR e XOR e a operação aritmética SOMA. A operação de subtração não foi implementada diretamente na ULA, visto que esta operação pode ser efetuada na célula da seguinte forma

Subtração = operando1 + NOT(operando2) + 1 ou seja, gerando o complemento do operando2, somando este ao operando1 e adicionando mais uma unidade através do sinal carry in. O carry in deverá ser colocado em 1 através do bit PCin da instrução.

Figura 5 - Parte Operativa.

Dentro de um grupo local são utilizados os sinais carry out e carry in para a propagação do “vai um”. Isto permite o cascateamento de células dentro de um grupo local visando aumentar a largura de dados da parte operativa. Para a habilitação/desabilitação da propagação de carry deverá ser utilizado o sinal de controle ZCin da instrução.

O registrador de saída (Rout) tem dupla função: funcionar como registrador ou como um circuito LFSR configurável. Atualmente, só está implementada a função de registrador. A função LFSR será implementada na seqüência deste trabalho de pesquisa.

Para a implementação do multiplicador foi adotada a estratégia de Booth baseada na descrição feita em [FRA 99]. A seção 5.2 descreve a implementação do multiplicador.

4.7 Parte de Controle

A parte de controle é responsável pelo seqüenciamento das instruções contidas na memória de instruções. Para descrever-se este bloco e determinar as estruturas operativas que o mesmo necessitaria, foi necessário primeiro determinar

(7)

quais tipos de controle de fluxo deveriam ser suportados por uma UE. Para isso, definiu-se que cada UE seria capaz de executar 3 tipos de operações básicas:

1. Carga de valor Imediato (LDI) – Serve para se fornecer um valor de 8 bits (dado imediato) à parte operativa. Esse valor se encontra na própria instrução, nos bits 24 a 31.

2. Desvios (Jmp, JmpZ e JmpNZ) – São possíveis 3 tipos de desvios, sendo dois condicionais (JmpZ e JmpNZ) e um desvio incondicional (Jmp). A instrução JmpZ salta se o sinal zero

da ULA estiver ativo (1) e JmpNZ salta se o sinal zero não estiver ativo (0). O endereço de desvio encontra-se na própria instrução (bits 24 a 31).

3. Operação normal (Op) – Qualquer instrução que não seja uma instrução de carga ou de desvio. Ex.: Operações na ULA, deslocamentos, carga de registradores, etc.

Também foi incluído um sinal de habilitação (enable) na parte de controle, com o intuito de se fazer o sincronismo entre as células. Este sinal quando ativo (1), habilita o funcionamento da PC e consequentemente o sequenciamento das instruções. Quando este sinal estiver em 0 (zero), o contador de programa pára e o sequenciamento das instruções é interrompido.

5 Matriz de Blocos

Uma vez que se determinou um agrupamento natural mínimo de quatro células, deve-se determinar qual o melhor sistema de conexão a utilizar que garanta a configurabilidade da troca de dados entre as células. Deve-se com isso especificar tanto o mecanismo de troca de dados, quanto a granularidade e hierarquia das conexões dos blocos.

5.1 Conexões

A interconexão do FPPA foi organizada de forma hierárquica. A determinação do número de conexões não locais é um fator que se deve à experimentação empírica, uma vez que a conexão um para um com qualquer célula do circuito não é apenas exagerada, como também é certamente desnecessária para as aplicações visadas.

No esquema de conexões de um bloco (Figura 6), é possível distinguir as células de conexão do grupo local bem como a conexão de 2 grupos locais para a formação de um bloco. A conexão em um grupo local é completa, ou seja, qualquer célula pode ser conectada com qualquer outra. Entre dois grupos locais do mesmo bloco são possíveis 8 conexões, 4 em cada sentido. A conexão de um bloco com outros blocos se dá

através das portas de entrada e saída do bloco, as quais são em 16 no total (8 de entrada e 8 de saída).

Figura 6 – Bloco formado por dois grupos locais. O circuito final é constituído por uma matriz de blocos conectados através de uma matriz de chaveamento. Essa matriz de chaveamento também realiza a conexão dos blocos com as portas de entrada e saída do FPPA (Figura 7). Ainda não foi determinado o número total de blocos para formar a matriz, isto dependerá principalmente da área disponível para implementar o circuito. Até o momento da escrita deste relatório, têm-se um circuito constituído por dois blocos (16 UEs), conforme assinalamento na Figura 7.

Figura 7 - Matriz de blocos.

5.2 Multiplicador de Booth

Uma operação de multiplicação binária é basicamente uma sucessão de somas de produtos parciais. No algoritmo Booth paralelo descrito em [FRA 99], os operandos (multiplicador(MR) e multiplicando(MD)) têm 8 bits de largura e o resultado final da multiplicação é obtido a partir da

(8)

soma de 4 parcelas. Cada parcela é uma versão codificada do multiplicando sendo que essa codificação é feita com base em 3 bits do multiplicador.

Figura 8 - Esquema para implementar um multiplicador de Booth.

Para a implementação da multiplicação deverá ser utilizado um bloco inteiro, sendo que o grupo local A será responsável pela geração das parcelas e o grupo local B será responsável pela soma das parcelas. No grupo local A, as 4 células receberão os operandos MR e MD em suas entradas A e B respectivamente. Nessa etapa ocorrerá a geração das parcelas, ou seja, nas saídas não-registradas das células 0,1, 2 e 3 estarão disponíveis as 4 parcelas que deverão ser somadas. No segundo grupo de células (grupo local B) serão realizadas as somas dessas parcelas. As células desse grupo são um pouco diferentes das células do grupo A, no sentido que existem mais dois bits na saída não-registrada, já que é necessário o deslocamento de 2 bits à esquerda do resultado parcial. A Figura 8 mostra a interconexão de células necessária para a implementação do multiplicador.

5.3 Configuração

Para a configuração do FPPA deverá ser implementado um controlador de configuração para cada bloco, permitindo dessa forma a programação parcial do circuito a nível de blocos. Isto permitirá a programação de alguns blocos do FPPA enquanto outros permanecem em funcionamento normal.

5.4 Sincronismo entre Células

Para o controle de sincronismo, cada célula dispõe de um sinal de entrada chamado Enable que permite habilitar/desabilitar o contador de programa e consequentemente o sequenciamento das instruções. Também existe um sinal de saída chamado SincOut o qual é simplesmente o bit 3 da palavra de instrução. Este bit será utilizado pela célula para o envio de um sinal que permitirá o sincronismo entre as células. Essas estruturas para controle de sincronismo parecem bastante limitadas, porém capazes de endereçar a gama de aplicações alvo dentro do escopo deste trabalho. Em desenvolvimentos futuros este é um dos blocos que deverá estar sujeito a revisões.

A partir dessas estruturas disponíveis em cada célula, estão sendo estudadas duas abordagens para a realização do sincronismo entre células de um grupo local:

1. Sincronismo Centralizado e 2. Sincronismo Distribuído

Na abordagem de Sincronismo centralizado seria utilizado um bloco de controle de sincronismo em cada grupo local (Figura 9). Na abordagem de sincronismo distribuído não existiria nenhum controle centralizado, e o sincronismo se daria de célula a célula (Figura 10).

Figura 9 - Sincronismo Centralizado.

Figura 10 - Sincronismo distribuído.

6 Software

De toda arquitetura apresentada até agora, é fácil identificar que a programação do FPPA é uma tarefa cansativa. Além dos programas de cada UE, tem-se também que programar as matrizes de chaveamento. Essa tarefa será tanto mais difícil quanto maior for o tamanho do FPPA.

(9)

Diante dessa situação, verificou-se já no início do projeto que seria necessário desenvolver alguma ferramenta de software que auxiliasse o projetista a gerar programas para uma UE bem como fazer a programação das matrizes de chaveamento.

O primeiro problema atacado foi o de geração de código para uma UE. Adotou-se a estratégia de desenvolver uma ferramenta simples, que pudesse ser desenvolvida em curtíssimo tempo mas que ao mesmo tempo auxiliasse na geração de código para uma UE. A partir disso definiu-se uma linguagem com um formato de instrução que possui relações diretas com a arquitetura da UE. A ferramenta desenvolvida analisa um programa com instruções nesse formato e gera as palavras, em formato hexadecimal, a serem carregadas na memória de programa da célula. O arquivo de saída dessa ferramenta é um arquivo de memória para o MaxPlusII (extensão .mif) [ALT 01].

A segunda ferramenta, em fase de desenvolvimento, é um micro-assembler para essa arquitetura [GON 01]. A linguagem de entrada será um programa no formato tree-address code [AHO 88] e a saída é o arquivo de memória (.mif) para o MaxPlusII.

7 Resultados Obtidos, Conclusões e

Trabalhos Futuros

Foram realizadas diversas simulações funcionais utilizando a ferramenta MaxPlusII da Altera. Os blocos até agora implementados estão funcionando perfeitamente (parte operativa, parte de controle, matriz de chaveamento, etc.). Como um exemplo é mostrado o resultado de uma simulação do bloco multiplicador, o qual utiliza 8 UEs (Figura 11). A validação do multiplicador de Booth foi um importante passo dado, visto que para aplicações DSP ele será imprescindível.

Em fase de conclusão encontram-se as seguintes tarefas:

• Implementação do LFSR configurável;

• Conclusão do processo de controle de sincronismo entre células;

• Implementação do controlador de configuração;

• Implementação de BIST no 8051 e filtros FIR para validação da arquitetura proposta

Como trabalhos futuros podem ser citados:

• Implementação de auto-teste do próprio FPPA proposto;

• Cascateamento de sinais entre grupos locais visando formar agrupamentos de células até 64 bits. Também pode ser implementado o cascateamento entre blocos para formar agrupamentos com mais de 64 bits;

• Desenvolvimento de ferramentas de CAD tendo este FPPA como arquitetura alvo. Dentre essas ferramentas pode-se destacar: Simuladores, compiladores, roteadores, etc;

• Desenvolvimento de um compilador de alto nível (C, C++, Java). A partir do momento que se concluir o micro-assembler, o qual terá como entrada uma linguagem

tree-address-code, ficará mais fácil o desenvolvimento de

compiladores de linguagens de alto nível para esta arquitetura. Tal compilador precisará gerar como saída uma linguagem no formato

tree-address-code, sem se preocupar com a

arquitetura alvo. A partir daí, esse formato de arquivo poderá ser utilizado como entrada do micro-assembler referenciado anteriormente, o qual então irá gerar o código para a UE do FPPA. Desse modo, tem-se um ambiente de programação em alto nível.

(10)

Referências Bibliográficas

[ABR 90] ABRAMOVICI, Miron; BREUER, Melvin A.; FRIEDMAN, Arthur D. Digital Systems Testing And Testable Design. New York: IEEE Press, 1990. 652p.

[AGR 93a] AGRAWAL, Vishwandi D.; KIME, Charles R.; SALUJA, Kewal K. A Tutorial on Built-In Self-Test - Part 1: Principles. IEEE Design and Self-Test of Computers, p.73-82, March 1993.

[AGR 93b] AGRAWAL, Vishwandi D.; KIME, Charles R.; SALUJA, Kewal K. A Tutorial on Built-In Self-Test - Part 2: Applications. IEEE Design and Self-Test of Computers, p.69-77, June 1993.

[AHO 88] AHO, Alfred; SETHI, Ravi; ULMAN, Jeffrey. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 1988.

[ALM 94] ALMASI, George S.; GOTTLIEB, Allan. Higly Parallel Computing. Benjamin/Cummings. 2a. ed. 1994. 689p.

[ALT 01] Altera Corporation. http://www.altera.com. 2001.

[BET 98] BETZ, Vaughn; ROSE, Jonathan. How Much Logic Should Go in an FPGA Logic Block. IEEE Design & Test of Computers, v.15, n.1, p.10-15. Jan-Mar 1998.

[BRO 96] BROWN, Stephen. FPGA Architectural Research: A Survey. IEEE Design & Test of Computers, v.13, n.4, p.9-15. Winter 1996.

[CAR 00] CARRO, Luigi; AGOSTINI, Luciano; PACHECO, Roberto; LUBASZEWSKI, Marcelo. Using Reconfigurability Features to Break Down Test Costs: a Case Study. In: 1st IEEE Latin American Test Workshop, Rio de Janeiro, Brasil. Proceedings... IEEE Computer Society Press, 2000. p. 209-214.

[CHE 92] CHEN, Dev C. A Reconfigurable Multiprocessor IC for Rapid Prototyping of Algorithmic-Specific High-Speed DSP Data Paths. IEEE Journal of Solid-State Circuits, v.27, n.12, p.1895-1904. Dec. 1992.

[CHE 96] CHEREPACHA, D.; LEWIS, D. DP-FPGA: An FPGA Architecture Optimized for Datapaths. VLSI Design, v.4, n.4, p.329-343. 1996.

[COT 98] COTA, Érika; Krug, MARGRIT; SUSIN, Altamiro; CARRO, Luigi; LUBASZEWSKI, Marcelo. Auto-Teste do Microprocessador 8051. Porto Alegre: UFRGS. 1998 (Technical Report). [DEH 96] DeHon, André. Reconfigurable Architectures for General-Purpose Computing. Massachussets

Institute of Technology, 1996. PhD Thesis. (AI Technical Report 1586).

[FRA 99] FRANCO, Denis. Um Estudo comparativo de Multiplicadores em FPGA para Filtros Adaptativos, UFRGS, Porto Alegre, 1999. (Relatório de Pesquisa-RP292). 41p.

[GON 01] GONSALES, Alex; REIS, André; REIS, Ricardo. Alocação de Registadores via Coloração de Grafos. Submetido ao VII Workshop Iberchip, 21-23 Mar. 2001. Montevideo, Uruguay. [MOL 93] MOLDOVAN, Dan I. Parallel Processing: From Applications to Systems. Morgan Kaufmann

Publishers, San Mateo, California, 1993. 567p.

[NUS 98] NUSSAUM, P.; GIRAU, B.;TISSERAND, A. Field Programmable Processor Arrays. Evolvable Systems: From Biology to Hardware. Lecture Notes in Computer Science –LNCS1478. Springer. Lausane, September 23-25.1998. p.311-322.

[OGU 98] OGURI, K.; IMLIG, .; ITO, H.; NAGAMI, K.; KONISHI, R.; SHIOSAWA, T. General Purpose Computer Architecture Based on Fully Progammable Logic. Evolvable Systems: From Biology to Hardware. Lecture Notes in Computer Science –LNCS1478. Springer. Lausane, September 23-25.1998. p.323-334.

[SHI 96] SHIRATSUCHI, Shinichi. FPGA as a Key Component for Reconfigurable System. In: Evolvable Systems: From Biology to Hardware. Lecture Notes in Computer Science-LNCS1259. First Internacional Conference, ICES96, Tsukuba, Japan, October 7-8, 1996. p.23-32.

[SOU 00] SOUZA, Adão A. Júnior; GONSALES, Alex D.; FURLANETTO, Elenirse; CARRO, Luigi; LUBASZEWSKI, Marcelo. Modeling of a Dinamically Reconfigurable Test Targeted EPLD - TTEPLD. Seminário Interno de Microeletrônica-UFRGS-SIM2000. Torres-RS, 4-5 Agosto, 2000. p.13-16.

[WAI 97] WAINGOLD, Elliot; et. al. Baring It All To Software: Raw Machines. IEEE Computer. p.86-93, Sep. 1997.

Referências

Documentos relacionados

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Principais fontes de financiamento disponíveis: Autofinanciamento: (corresponde aos fundos Principais fontes de financiamento disponíveis: Autofinanciamento: (corresponde aos

Feitiço do Segredo: deposita um segredo numa pessoa de confiança, essa pessoa fica deposita um segredo numa pessoa de confiança, essa pessoa fica sendo o "Fiel do sendo o

Relação mistura Base:Catalisador Tempo de mistura manual (23°C/73°F) Tempo de mistura mecânica (23°C/73°F) Tempo de trabalho (23°C/73°F) Tempo de presa (23°C/73°F) Dureza

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Reconhecimento de face utilizando banco de imagens monocromáticas e coloridas através dos métodos da análise do componente principal (PCA) e da Rede Neural Artificial (RNA)

c.4) Não ocorrerá o cancelamento do contrato de seguro cujo prêmio tenha sido pago a vista, mediante financiamento obtido junto a instituições financeiras, no

[r]