• Aucun résultat trouvé

Ensure programmes and services are accessible

O modelo FSM e seus derivados, tais como o HFSM, PFSM e HaPFSM, usados na descrição de unidades de controlo são normalmente utilizados de forma inflexível. Isto significa que uma vez terminado o projecto as características do circuito resultante não são facilmente modificáveis, isto é, qualquer alteração ou adição de funcionalidade obriga à repetição de todos os passos de projecto. Em muitos casos é importante tornar o circuito projectado flexível e extensível de forma a permitir actualizações futuras, nalguns casos durante a sua fabricação mas cada vez mais depois da sua aquisição pelo cliente e muitas das vezes em pleno funcionamento. Como é a unidade

de controlo que estabelece a sequência de operações realizadas por um dado circuito ou equipamento e os modelos atrás descritos não permitem atingir estes objectivos, torna-se necessária a adopção de outros modelos mais apropriados.

Um dos modelos mais indicados para este fim é designado por Máquina de Estados Finitos Virtual (Virtual Finite State Machine – VFSM). Este modelo é baseado nos anteriores e diz-se que uma FSM é virtual quando a sua funcionalidade ou mais concretamente um ou vários parâmetros, tais como o conjunto dos estados e dos vectores de entrada/saída assim como as funções de transição e de saída podem ser alteradas facilmente, ou seja, sem que seja necessário repetir todos os passos de projecto. Se a modificação puder ser realizada sem que para tal seja necessário suspender a operação da máquina, a VFSM designa-se por VFSM dinâmica. Se, por outro lado, for necessário interromper a sua operação a VFSM designa-se por VFSM estática.

Quando comparada com uma FSM tradicional (não virtual) uma VFSM possui vantagens importantes, das quais se destacam:

• A flexibilidade, permitindo alterar o comportamento da unidade de controlo, bem como corrigir erros de projecto durante ou após a conclusão do seu desenvolvimento, sendo para tal necessários tempo e esforço mínimos;

• A extensibilidade, a qual torna possível adicionar funcionalidades ao circuito após o projecto ter sido concluído;

• A reutilização de hardware, fazendo com que os mesmos recursos físicos possam ser utilizados para implementar diferentes componentes da unidade de controlo que não sejam necessárias simultaneamente.

Conceptualmente a passagem de um modelo tradicional para um modelo virtual é bastante simples, sendo necessárias apenas algumas considerações bastantes abstractas. O aspecto fundamental das unidades de controlo virtuais reside nas suas arquitecturas de implementação, as quais serão discutidas mais à frente.

Apesar de teoricamente o modelo VFSM poder ser baseado em qualquer dos anteriores, na prática é preferível adoptar modelos hierárquicos. A razão é bastante simples; como estes decompõem a máquina global em sub-máquinas mais simples, relativamente independentes e na generalidade dos casos com um funcionamento em intervalos de tempo distintos, torna-se muito mais fácil alterar uma máquina inactiva num dado instante, do que uma em pleno funcionamento. Este facto deve-se à dificuldade de em muitos casos estabelecer a correspondência entre uma alteração ao nível comportamental e a respectiva alteração ao nível do circuito, devido às técnicas de síntese e optimização utilizadas no projecto do sistema.

A virtualização de uma FSM (HFSM/HaPFSM) pode ser realizada de várias formas, correspondendo cada uma à modificação dos elementos do seu tuplo de definição:

• Adição ou remoção de elementos do conjunto F, ou seja, de sub-máquinas dentro da HFSM;

• Alteração das funções g e h, ou seja das transições entre estados e das saídas respectivamente;

• Modificação dos conjuntos de vectores de entrada (I) e saída (O) usados pelas funções g e h;

• Adicionar ou remover estados dos conjuntos S e T (estados atómicos ou macroestados respectivamente);

• Alterar os estados iniciais e finais de cada sub-máquina.

Do ponto de vista formal uma VFSM possui a mesma representação que o modelo tradicional subjacente, com a excepção de que todos os elementos do tuplo de definição podem ser alterados dinamicamente.

A Figura 3.10 ilustra as representações gráfica e textual de uma VFSM obtida por modificação do exemplo da Figura 3.8, onde se mostram as seguintes transformações: (a) modificação do estado inicial, (b) alteração de um macroestado; (c) adição de um estado atómico; (d) remoção de um estado atómico; (e) substituição de uma sub-máquina.

f

4

f

4'

f

3

f

2

f

1 s12 t11 s11 t21 t21 s21 s22 s31 t31 s32 t32 s41 s42 S1 = {s11, s12} T1 = {t11} t11 = f2 s1b = s12 s1e não existe S4 = {s41, s42} T4 = ∅ s4b = s41 s4e = s42 Início S2 = {s21, s22} T2 = {t21} t21 = f3 s2b = s21 s2e = s22 S3 = {s31, s32, s33} T3 = {t31} t31 = f4' s3b = s31 s3e = s32 s4'1 s4'2 S4' = {s4'1, s4'2, s4'3} T4' = ∅ s4'b = s4'1 s4'e = s4'3 s4'3 s33 Início F = {f1, f2, f3, f4'} Invocação Retorno (a) (b) (c) (d) (e)

Figura 3.10 – Exemplo de um modelo VFSM.

3.3 Arquitecturas

Depois da funcionalidade do sistema e mais concretamente da unidade de controlo ter sido capturada usando um dos modelos comportamentais acima apresentados, o passo seguinte consiste na execução das tarefas de síntese do circuito, ou seja, na transformação do modelo comportamental numa arquitectura ou modelo estrutural que descreva a forma como o sistema deve ser implementado. Uma arquitectura deve descrever a estrutura do sistema, mais concretamente, o número e tipo de componentes, bem como as suas interconexões.

De uma forma geral, as arquitecturas de sistemas electrónicos podem variar desde simples unidades funcionais e controladores até processadores com uma elevada

capacidade de cálculo. As arquitecturas podem ser específicas da aplicação ou de uso geral. Exemplos das primeiras são os coprocessadores e os processadores específicos, tais como os processadores digitais de sinal (Digital Signal Processors - DSPs). Os exemplos mais populares das arquitecturas de uso geral são os processadores CISC (Complex Instruction Set Computer) e RISC (Reduced Instruction Set Computer).

Nas próximas subsecções vão ser apresentados exemplos de arquitecturas utilizadas para implementar unidades de controlo em hardware. Estas arquitecturas são consideradas dependentes da aplicação, uma vez que as unidades de controlo são normalmente específicas de cada projecto. As arquitecturas aqui apresentadas estão vocacionadas para implementar alguns dos modelos orientados ao estado atrás descritos.

3.3.1 Controlador

Uma das arquitecturas mais simples destinada a implementar modelos orientados ao estado é a do controlador. Esta implementa de forma directa o modelo

FSM definido pelo sêxtuplo <S, I, O, g, h, s0> [GajVahNarGon94]. Tal como

mostrado na Figura 3.11, um controlador consiste num registo e dois circuitos ou blocos de lógica combinatória. O registo é normalmente designado por registo de estado e é utilizado para armazenar um dos estados de S. Os blocos combinatórios denominados por Função de Transição e Função de Saída implementam as funções g e h, respectivamente. A entradas e saídas do controlador são sinais Booleanos, sobre os quais são definidos os conjuntos I e O. O sinal de inicialização é responsável por

carregar no registo de estado o estado inicial s0. As transições entre estados são

sincronizadas por um sinal de relógio.

Função de Saída Função de Transição Saídas Y Entradas X Registo de Estado Sinal de Relógio Sinal de Inicialização Na máquina de Mealy Estado Seguinte Estado Actual

Figura 3.11 – Arquitectura de um controlador.

Tal como mencionado acima, existem dois tipos distintos de FSMs, as baseadas em transições (Mealy) e as baseadas em estados (Moore). Estes tipos diferem na forma como é definida a função h e afectam a ligação das entradas na arquitectura (ver Figura 3.11). Para controladores baseados em transições, h é definida como o mapeamento S×I→O, o que significa que a função de saída depende de duas variáveis, o estado

actual e as entradas. Por outro lado, para controladores baseados em estados, h é definida como o mapeamento S→O, o que significa que a função de saída depende somente do estado actual. Uma vez que tanto as entradas como as saídas são sinais Booleanos, esta arquitectura é apropriada para implementar controladores que não requeiram manipulações complexas de dados. A síntese do controlador consiste na minimização e codificação de estados, minimização lógica e mapeamento na tecnologia das funções de estado seguinte e de saída.