• No results found

Òrbites, espins i strain, VTK: POLYDATA, LINES i VECTORS

3. El conjunt de dades computacionals i l'ús de UNIX 14

3.3 Òrbites, espins i strain, VTK: POLYDATA, LINES i VECTORS

No que concerne ao hardware, já foi examinada a programação de PROMs, EPROMs, EEPROMs em capítulos anteriores, e PLDs no presente capítulo. Agora serão abordados alguns detalhes concernentes ao software para o processo de programação de um PLD.

São necessários os elementos para projetar e construir circuito usando PLDs: um computador, software de desenvolvimento para PLD, programador de dispositivo, software para acionar o programador e o próprio dispositivo de lógica programável.

A figura seguinte exibe um sistema típico para desenvolvimento.

O Software de Desenvolvimento para PLD traduz o projeto inicial em arquivo chamado “mapa de fusíveis”. Este mapa indica quais fusíveis devem permanecer abertos e quais devem ficar intactos. Este arquivo é então encaminhado para o software de programação. O software de programação é que se

comunica com o programador de dispositivos. O software de programação repassa ao programador as informações fornecidas pelo usuário via o computador, tais como dados do dispositivo a ser programado. Finalmente, o PLD é colocado no soquete do programador para efetivar sua programação. Programadores universais podem programar praticamente todos os tipos de dispositivos, incluindo PROMs, EPROMs, microcontroladores e vários tipos de PLDs, disponíveis por diversos fabricantes. Em função da intensificação de uso dos componentes programáveis, foi criado o Conselho Unificado de Engenharia de Dispositivos Eletrônicos - JEDEC (Joint Electronic Engineering Council), que estabeleceu o padrão JEDEC3, um formato para transferência de dados de programação para PLDs, independentemente do fabricante ou software de programação. Assim, o software que permite ao projetista especificar a configuração para um PLD precisa simplesmente produzir um arquivo de saída segundo o padrão JEDEC, que será aceito por qualquer programador PLD compatível JEDEC.

SOFTWARE DE DESENVOLVIMENTO

Muitos pacotes de softwares foram desenvolvidos para permitir aos usuários um modo conveniente para projetar seus circuitos e gerar automaticamente o arquivo JEDEC. O mercado atualmente tem produzido software para projeto com PLDs muito poderosos, denominados Compiladores Lógicos. Tanto compiladores, como montadores são programas que rodam em computadores pessoais. Um programa montador necessita de um arquivo de entrada que defina de um modo bastante específico a operação do dispositivo em termos mais próximos ao hardware que está sendo programado, como por exemplo, as equações lógicas booleanas. Um programa compilador pode aceitar uma representação mais abstrata do mesmo projeto e traduzi-la em termos mais próximos ao hardware a ser programado. Os compiladores lógicos permitem a entrada do projeto na forma de tabelas-verdades ou de tabelas de estados, ou mesmo em alguns compiladores, diagramas de tempo. O compilador realiza todos os passos de redução, de geração das expressões lógicas e da produção do tipo apropriado de arquivo de saída para a programação do PLD planejado.

COMPILADOR UNIVERSAL PARA LÓGICA PROGRAMÁVEL

Para fornecer um exemplo real de desenvolvimento simples com PLD, será abordado um compilador lógico fornecido pela Logical Devices, denominado CUPL (Compilador Universal para Lógica Programável). O CUPL produz arquivos para programação de grande variedade de dispositivos e possui muitos modos de entradas de dados.

O arquivo de entrada contém um cabeçalho padrão que é usado pelo software para produzir o arquivo de saída e para fornecer a documentação do projeto. A próxima figura exibe um modelo para um arquivo de entrada típico, incluindo o cabeçalho. As sintaxes /* e */ são usadas para delimitar comentários. Toda linha de comando é delimitada por ponto-e-írgula (;).

O CUPL permite que a declaração de cada pino seja fornecida de modo individual ou para um conjunto de pinos. As entradas e saídas ativas em nível baixo podem ser especificadas na seção de definição dos pinos, precedidas por um ponto de exclamação (!). A tabela seguinte exibe exemplos de declaração de pinos feita de modo individual e no modo de conjunto.

As operações lógicas que definem a operação do circuito devem ser apresentadas, no seguinte formato geral: variável = expressão lógica. A sintaxe dos operadores lógicos utilizados na expressão está exposta na tabela abaixo.

O CUPL e outros sistemas de desenvolvimento permitem o uso de extensões numa variável de saída para identificar sua aplicação. Por exemplo, o sinal DECODE.OE no circuito da figura seguinte, define que o sinal será aplicada como controle de habilitação (Output Enable) do buffer tristate de saída do GAL 16V8A. Como exemplo de expressões lógicas de definição das funções de circuito temos aquelas do circuito de exemplo abaixo: DECODE=A&!B, ou seja, (DECODE=A.B) e DECODE.OE=!C, ou seja, (DECODE.OD=C). Caso se quisesse definir o nível da entrada de habilitação do driver de saída permanentemente em alto, ou seja, saída habilitada a seguinte expressão seria usada DECODE.OE=”b”1, a expressão “b” notifica ao compilador que o valor 1 em seguida é binário.

CICLO DE DESENVOLVIMENTO DO PROJETO

O primeiro passo no ciclo de desenvolvimento consiste na determinação de todas as entradas e saídas necessárias, e no estabelecimento da relação entre todas as saídas e entradas, que podem ser expressas em diversos modos, tais como: tabelas-verdade, tabelas de estado, equações lógicas ou diagramas lógicos.

O segundo passo consiste na criação de um arquivo fonte no formato exigido pelo compilador. A seguir é dado ao compilador o comando para processar o arquivo fonte. O processo de compilação resulta vários arquivos de saída diferentes, dentre eles o arquivo de documentação extensão .DOC e o arquivo de mapa de fusíveis que mostra os fusíveis que serão queimados no PL. Este último é convertido no arquivo JEDEC para ser utilizado pelo programador.

Como exemplo do resultado do primeiro passo do ciclo de desenvolvimento, a tabela seguinte exibe as relações estabelecidas para o resultado da descrição de um problema e da especificação do escopo de um determinado projeto.

Como visto no segundo passo, é necessária a criação de um arquivo fonte (de entrada) usando um editor de texto. A figura a seguir é um exemplo de um arquivo fonte gerado para o circuito da tabela acima. Ao final do arquivo está descrita a expressão na forma de soma de produtos para especificar a operação do pino de saída. Os símbolos usados na equação são aqueles definidos na sintaxe aceita pelo compilador.

O compilador ao processar o arquivo fonte, simplifica as equações e gera um arquivo de documentação que mostra as equações simplificadas e o mapa de fusíveis para a programação do dispositivo. Parte desse arquivo de documentação para esse projeto para o dispositivo GAL 16V8A pode ser vista a seguir.

Finalmente, a figura a seguir mostra as primeiras duas colunas do mapa de fusíveis superposto ao diagrama interno do GAL 16V8A para este projeto. O mapa de fusíveis mostra as conexões na matriz de entrada, identificando cada bit programável por um endereço. Cada posição marcada com um “x”indica uma conexão da linha com a coluna na matriz (fusível não deve ser aberto). Cada posição marcada com um “-“ indica um fusível aberto e que, portanto, não há conexão entre a linha e a coluna.

Os bits de seleção de modo (SYN=1, AC0=0) estão configurados para o modo simples, e AC1=0 para a OLMC19 faz com que a saída seja combinacional.

CAPÍTULO 8

CIRCUITOS CONVERSORES A/D E D/A

Uma quantidade digital é um valor especificado entre duas possibilidades, tais como, 0 ou 1, alto ou baixo, falso ou verdadeiro, etc. Na prática, uma quantidade digital como tensão pode ter dois valores, cada um, dentro de uma faixa especificada. Cada faixa então representa um dos dois possíveis valores digitais. Uma quantidade analógica pode assumir qualquer valor de uma faixa contínua de valores, sendo que seu valor exato é significativo.

1) INTERFACE ANÁLOGICA-DIGITAL-ANALÓGICA

A maioria das quantidades físicas é analógica e qualquer informação a ser processada por um sistema digital deve estar na forma digital. Assim o controle de sistemas do mundo real por computadores, por exemplo, necessitam da conversão de valores analógicos de entrada para o processamento digital e, por fim a conversão dos valores digitais processados para valores analógicos de saída para controle. A figura seguinte ilustra esta situação.

O transdutor (1) é dispositivo que converte uma variável física em uma variável elétrica. Alguns transdutores comuns são termistores, fotocélulas, fotodiodos, medidores de fluxo, transdutores de pressão e tacômetros.

O conversor analógico-digital (A/D) (2) é alimentado pela saída analógica do transdutor e converte os valores de sua entrada analogia em valores proporcionais de saída digital.

O computador (3) é um sistema digital destinado ao processamento do valor digital recebido do conversor A/D. Ele irá, após o devido processamento, gerar uma saída, também digital para o eventual controle da grandeza física que está sendo tratada.

O conversor digital-analógico (D/A) (4) recebe os valores digitais processados pelo computador e os converte em valores analógicos de saída de corrente ou tensão proporcionais ao valor de suas entradas digitais.

O atuador (5) é o dispositivo que irá realizar o controle da variável física que está sendo tratada.