Artigo Ilha Digital - Controlador de Motor de Passo
Artigo - Dessincronização: Método de Conversão de Circuitos Síncronos para Assícnronos.
1. Dessincronização: Método de Conversão de
Sistemas Síncronos para Assíncronos
Engo
. Dênis Araújo da Silva
Departamento de Engenharia de Computação e Eletrônica
Instituto Tecnológico de Aeronáutica
CTA - São José dos Campos, São Paulo
Email: silvadenisaraujo@gmail.com
Abstract— Nowadays implementation techniques of Asynchro-
nous Systems are being developed to minimize the gap compared
to Synchronous Systems development inspired on all asynchro-
nous advantages, like low power comsuption, low electromagnetic
emisson, easy system-on-a-chip integration and so on. The Desyn-
chronization method is a good starting point for any engineer
that develops synchronous systems to start comprehending more
about the asynchronous paradigm.
I. INTRODUÇÃO
Inovações em computação em nuvem, criptografia, e-
commerce, medicina, entre outros, possuem raízes nos avan-
ços na tecnologia de semicondutores, aos quais continuam
reduzindo o tamanho do transistor e barramentos, o bloco
básico dos chips, [10]. Maioria dos circuitos desenvolvidos
hoje em dia são síncronos. Em essência, eles são baseados
em dois princípios que simplificam o design: (1) todos sinais
são binários, e (2) todos os componentes compartilham uma
noção de tempo discreto em comum, definido por um sinal de
clock distribuído em todo o circuito. Os circuitos assíncronos
são fundamentalmente diferentes, eles também assumem como
pressuposto que todos os sinais são binários, mas não há uma
noção de tempo discreto em comum [5]. Em vez da utilização
de clock, o circuito faz uso de circuitos de handshake para
necessárias comunicações, serialização de operação e sincroni-
zação. Expressado em "termos síncronos"esse comportamento
resulta em clock local de baixa granularidade, ao qual não
estão em fase e o período é definido por atrasos correntes no
circuito. A metodologia de dessincronização de circuitos sín-
cronos, aparece como proposta de minimizar as desvantagens.
A. Proposta do Artigo
A proposta de artigos é consolidar informações sobre o
método de dessincronização e disseminar o conhecimento
sobre circuitos assíncronos e principalmente a metodologia
de Dessincronização, sendo que esse tem como inspiração
vários outras contribuições passadas, onde cada um provê
um elemento chave para a metodologia. Muitos conceitos
desse artigos já são conhecidos há um certo tempo, como
protocolos de handshake, pipelines assíncronos, controladores
locais, latches, etc.
II. VANTAGENS E DESVANTAGENS DE SISTEMAS
ASSÍNCRONOS
Essa diferença provê algumas vantagens inerentes que ainda
estão sendo exploradas, comparada ao sistemas síncronos,
porém mesmo se beneficiando de diversas vantagens, algumas
desvantagens os tornam menos presentes em projetos de
circuitos atuais.
A. Vantagens
Iremos ilustrar algumas vantagens, de acordo com [5]:
• Baixo consumo de energia, devido a baixa granularidade
do sinal de sincronia e consumo zero de potência em
standby.
• Alta velocidade de operação, a velocidade de operação
é determinada pelas latências locais, em vez de ser
determinada pelo pior caso global.
• Menor emissão de ruído eletromagnético, os clocks locais
tendem a variar em pontos randômicos no tempo.
• Robustez em frente a variações de tensão de alimentação,
temperatura e parâmetros de processos de fabricação:
temporização é baseada em delays casados, sendo que em
alguns casos pode ser até insensível a atrasos do circuito
e das linhas.
• Melhor modularização, por causa das interfaces simples
de handshake e temporização local.
• Não há clock skew. Clock skew é um problema presente
em circuitos com clock global, que agrava-se cada vez
mais devido a miniaturização dos transistores, onde o si-
nal de clock chega em diferentes componentes do circuito
em diferentes tempos, causando assim uma defasagem
entre as entradas de clock, tal problema pode ser derivado
de diversas razões, como: rede de clock muito extensa,
variações de temperatura, acoplamento capacitivo, im-
perfeições no material, e diferença de capacitâncias de
entrada.
B. Desvantagens
Por outro lado, há algumas desvantagens a serem citadas,
de acordo há [5]:
• A lógica que controla o handshake geralmente representa
um overhead em termos de área de silício.
• Falta de ferramentas CAD e estratégias para geração de
circuitos.
2. • Falta de conhecimento dos profissionais que desenvolvem
circuitos em fundamentos de assíncronos.
• Dificuldade de realização de testes, devido a elementos
de atraso.
• Dificuldade de determinação de elementos de atraso.
III. DESINCRONIZAÇÃO
Como visto, infelizmente a utilização de sistemas assíncro-
nos possui alguns desvantagens que se tornam mais preponen-
tes dependendo do tamanho e finalidade do projeto, algumas
ferramentas já foram desenvolvidas para o desenvolvimento
de circuitos assíncronos, como o TANGRAM [2], o CHP
[9] e o TAST [4], mas eles fazem uso de uma linguagem
própria, e não necessariamente geram o circuito mais otimi-
zado. Portanto, a proposta do processo de dessincronização é
empregar os softwares de síntese de circuitos síncronos que
são amplamente utilizados, e converter o resultado no seu
correspondente assíncrono [7], como por exemplo na figura
1.
Fig. 1. Exemplo de um circuito síncrono, a) e seu correspondente assíncrono
b).
O processo de conversão não afeta quaisquer componentes
lógicos do sistema, ele somente substitui registradores de
clock por uma versão assíncrona e insere sinais de handshake
nesses componentes. A versão assíncrona resultante é um latch
mestre-escravo, conhecido como Doubly Latched Asynchro-
nous Pipeline (DLAP) [8]. Podemos verificar na figura 2 um
exemplo de DLAP, sendo que na figura 3 temos o devido grafo
de transição de sinal gerado pelo Petrify [3] e na figura 4 o
circuito gerado do latch mestre-escravo proposto.
IV. PROCESSO DE DESSINCRONIZAÇÃO
Como já descrito em seções anteriores, cada registrador
é substituído por um correspondente controlador assíncrono,
DLAP descrito na seção anterior, os controladores são inter-
conectados por sinais de handshake, request e acknowledge,
atrasos são introduzidos na linhas de request, para o devido
funcionamento do circuito e por fim, os blocos lógicos ficam
Fig. 2. Doubly Latched Asynchronous Pipeline (DLAP)
Fig. 3. Grafo de Transição de Sinal do DLAP
Fig. 4. Circuito de Controle do Latch mestre-escravo DLAP
inalterados. Esse método é baseado em single rail / bundled
data, onde bundled data consiste de uma única linha de request
empacotada em um barramento unidirecional único, que é
acoplado com uma linha de reconhecimento (acknowledge-
ment), em um típico canal bundled data ilustrado na figura 5,
o remetente inicia a comunicação e diz ao destinatário informa
que há um dado válido disponível no barramento, é apropriado
para circuitos onde todos os atrasos são conhecidos e podem
ser determinados. A principal vantagem deste método é sua
simplicidade e sua localidade, não é necessário redesenhar
todo o sistema novamente.
O processo de dessincronização pode ser separado em 5
etapas,identificação das entradas e saídas, identificação dos
Forks, identificação dos Joins, construção da malha de Request
3. e por fim a construção da malha de Acknowledge, que serão
detalhados nas seções à seguir, como base tomaremos o
exemplo de circuito síncrono da figura 6.
Fig. 5. Exemplo de um canal bundled data ??
Fig. 6. Exemplo de um circuito síncrono [1]
A. Conceito de Entrada/Saída
Primeiramente o método analisa todos os registradores e
indentifica todos as entradas e saídas dos blocos lógicos
combinacionais, por exemplo, na figura 6, possui três flip-flops
e três blocos combinacionais, podemos separar essas entradas
e saídas, como internas e externas, neste caso temos Entrada
Externa = I1 e Entradas Internas = I1, I2, I3, I4, Saída Externa
= O4 e Saídas Internas = O1,O2,O3.
B. Substituição dos Registradores por Latches
Nesta etapa, os registradores FF são substituídos por latches
DLAP, que possuem além da entrada e saída de dados, duas
entradas uma de request do latch mestre (Lm) e outra do latch
escravo (Ls), que os conecta cada um com um controlador que
será responsável pelo handshake, tal controlador possui duas
entradas e duas saídas, sendo uma entrada de request e de
acknowledge e uma saída de request e de acknowledge, após
a substituição obtemos o circuito descrito na figura 7.
Fig. 7. Circuito resultante após o passo de substituição dos regitradores. [1]
C. Forks e Joins
De acordo a [6] Um conjunto de Forks contém elementos
de saída, que são associados a cada elemento da estrutura de
entrada. Uma saída Oi pertencente ao conjunto de saídas, é um
membro de um Fork de entradas Ik que pertence ao conjunto
de entradas, se existe um caminho combinacional direto entre
Oi e Ik. Por exemplo, na figura 7 temos os seguintes con-
juntos de Forks: Fork(I1)=O1,O2, Fork(I2)=O3, Fork(I3)=O3,
Fork(I4)=O4. Similarmente um conjunto de Joins é criado
para cada elemento de saída, porém somente com elementos
de entrada na estrutura que são incluídos no conjunto, na
figura 7 temos os seguintes conjuntos de Joins, Join(O1)=I1,
Join(O2)=I2, Join(O3)=I2,I3 e Join(O4)=I4.
D. Rede de Request
Apos determinado os conjuntos de Forks e Joins, tem-se
condição de se desenvolver a rede de request. Nessa etapa
os sinais de requests de todos os controladores são gerados,
e são inseridos atrasos e elementos C para a devida união
de dois sinais. Vamos considerar o primeiro fork definido
neste artigo, Fork(i1) = O1, O2. I1 é o ponto de início
de dois caminhos combinacionais, levando a O1 e O2. As
respectivas linhas de request serão descritas como req_I1,
req_01 e req_O2, como descritas na figura 8 e depois temos
de considerar os atrasos que necessitam de ser colocados nas
linhas para o devido funcionamento do sistema, portanto os
atrasos d11 = atraso(I1,O1) e d12 = atraso(I1, O2) devem ser
determinados, sendo que a função de atraso sempre produz um
atraso considerando o atraso combinacional mais uma margem
de segurança, quando inserido, resulta na figura 9, para evitar
a duplicação dos atrasos uma estratégia de otimização pode ser
tomada, como no caso da figura 10 onde d11 < d12, inserimos
um atraso em comum e se caso necessário complementamos
o atraso em somente uma das linhas de request.
Formalmente, de acordo a [1]:
• Para cada par (entrada,saída) com nós (Ik, Oi), se Oi
pertence ao conjunto do Fork(Ik), então uma linha de
request é introduzida de Ik para Oi.
• Um atraso combinacional mais uma margem de segurança
é introduzido na linha de request entre (Ik,Oi).
Fig. 8. Exemplo de um fork. [1]
Fig. 9. Fork introduzido de atrasos. [1]
4. Fig. 10. Fork introduzido de atrasos com uma simples otimização. [1]
Um processo complementar agora deve ser aplicado aos
conjuntos de Join. Para exemplificar utilizaremos um conjunto
anteriormente definido Join(O3)=I2, I3. Uma linha da request
é gerada para cada par, (I2,O3) e (I3,O3), como na figura 11.
As duas linhas de request são combinados com um elemento-
C, ao qual serve como uma porta AND que responde a eventos
e por fim temos a devida malha de request resultante na figura
12
Fig. 11. Junção de duas linhas de request na geração da malha de request
[1]
Fig. 12. Circuito resultante após o passo de geração da malha de request
[1]
E. Rede de Acknowledge
Oposto ao processo de geração da rede de Request, a rede de
Acknowledge se baseia nos conjuntos de Forks anteriormente
definidos, De acordo a [1], a rede é definida pelo seguintes
princípios.
• Para cada par (entrada, saída) com nós (Ik, Oi), se
Oi pertencer ao conjunto Fork(Ik) então uma linha de
acknowledge é introduzida de Oi para Ik.
• Se n=||Fork(Oi)|| > 1 então um elemento-C de n-entradas
é empregado para combinar todas as n linhas de ackno-
wledge convergindo para Ik. A saída do elemento-C é o
acknowledge de Ik.
Após seguido todas as etapas anteriores, temos o circuito
resultante demonstrado na figura 14.
Fig. 13. Princípios para criação da rede de acknowledge [1]
Fig. 14. Circuito final [1]
V. ASYNCHRONOUS OPEN-SOURCE PROCESSOR IP OF THE
DLX ARCHITECTURE (ASPIDA)
Cortadella et al. demonstrou em [6] uma versão do pro-
cessador DLX dessincronizado, denomidado de ASynchronous
open-source Processor Ip of the Dlx Architecture(ASPIDA),
como podemos ver na figura 15, que é um processador de 4
etapas, IF, Instruction Fetch, ID, Instruction Decodification,
EX, Execution e MEM, Memorization. Tal processador ASIP,
foi sintetizado e até mesmo fabricado, podemos verificar que
o desempenho do processador de acordo com os estudos do
autor, foram satisfatórios em termos de energia por ciclo, e
variação da tensão de alimentação, como vemos no gráfico
16.
Fig. 16. Circuito final [1]
VI. CONCLUSÃO
A metodologia sugerida pela Dessincronização pode resul-
tar em uma integração SOC, silicon-on-a-chip, mais simples,
além de representar uma redução nos passos de design de
um circuito assíncrono. Como a arquitetura assíncrona oferece
baixo consumo de energia e possivelmente baixa emissão
eletromagnética, aos quais são importantes, pois reduzem o
5. Fig. 15. ASPIDA structure [6]
custo de fabricação, além de ser mais seguro e fácil de
integrar com circuitos analógicos. Assim como o processo
de dessincronização pode ser muito vantajoso, é relevante
ressaltar que mesmo com todas as vantagens é necessário
ter um conhecimento profundo sobre os possíveis atrasos
do sistema, assim se a determinação dos atrasos nas linhas
de request e acknowledge não for ideal, grande parte das
vantagens de se ter um projeto assíncrono podem não ser
alcançadas, devido ao excesso ou falta de atraso nas linhas.
REFERENCES
[1] Ran Ginosar Alex Branover, Rakefet Kol. Asynchronous design by
conversion: Converting synchronous circuits into asynchronous ones.
2004.
[2] Berkel et al. Vlsi programming and silicon compilation. page 150—166,
1988.
[3] Cortadella et al. Petrify. page 315—325, 1997.
[4] Renaudin et al. A design framework for asynchronous/synchronous
circuits based on chp to hdl translation. page 135—144, 1999.
[5] Steve Furber Jens Sparso. Principles of Asynchronous Circuit Design -
A Systems Perspective. Springer US, 2001.
[6] Luciano Lavagno Jordi Cortadella. Desynchronization: Synthesis of
asynchronous circuits from synchronous specifications. 2006.
[7] Ginosar Kol and Samuel. Statechart methodology for asynchronous
systems. 1996.
[8] Ginosar Kol and Samuel. A doubly-latched asynchronous pipeline. page
706—711, 1997.
[9] Martin. “programming in vlsi,” concurrency and communication. pages
1–64, 1990.
[10] Marcos Ferreti Peter A. Beerel, Recep O. Ozdag. A Designer’s Guide
to Asynchronous VLSI. Cambridge, 2010.