Você está na página 1de 17

PROGRAMA INSTITUCIONAL DE BOLSAS DE INICIAO EM DESENVOLVIMENTO

TECNOLGICO E INOVAO - PIBITI

PROJETO DE PESQUISA

Processador Java Reconfigurvel para Processamento Paralelo Real e


Assncrono de Imagens em Sistemas Embarcados de Tempo Real

ORIENTADOR DO PROJETO
CENTRO/UNIDADE
DEPARTAMENTO/SETOR
LOCAL DE EXECUO
DATA DE INCIO: Maio/2012

Prof. Dr. Paulo Cesar Cortez


Tecnologia
Engenharia de Teleinformtica
Departamento de Teleinformtica/LESC
DATA DA CONCLUSO: Julho/2013

APRESENTAO

GRANDE REA DO CONHECIMENTO(CNPq):

Engenharias

REA DO CONHECIMENTO (CNPq):

Engenharias

SUB-REA DO CONHECIMENTO (CNPq):

Circuitos Eletrnicos

ESPECIALIDADE DO CONHECIMENTO (CNPq):

Processamento Assncrono de Imagens

NOME DO GRUPO DE PESQUISA:


LESC - Laboratrio de Engenharia de
Sistemas de Computao

EQUIPE EXECUTORA:

Andr Washington Morais de Freitas (bolsista)

Prof. Paulo Cesar Cortez (orientador)

Resumo
Com o avano da tecnologia mvel, equipamentos portteis como tablets e smartphones esto
cada vez mais poderosos computacionalmente, e este poder computacional est atingindo nveis
de computadores convencionais, mas com volume consideravelmente reduzido. Toda essa portabilidade e o aumento de funes desempenhadas por estes dispositivos requer um consumo
de energia que tende a crescer com o aumento de processamento. Criar meios de aumentar o
nvel de processamento e reduzir o consumo de energia vindo da bateria do dispositivo mvel
o grande desafio. Atualmente estes dispositivos so projetados com base na tecnologia de
processadores sncronos no qual um nico sinal espalhado por todo o circuito insere uma noo
de tempo comum e que aciona todos os componentes, mas utilizar a abordagem de projetos assncronos torna o consumo de energia reduzido em relao ao sncrono [1], pois ao contrrio da
abordagem sncrona, no h uma noo de tempo comum a todos os componentes, e somente
aqueles que tm uma operao a fazer no momento so acionados e consomem energia. O preo
dessa abordagem, porm, o aumento da rea necessria e a complexidade no desenvolvimento
de projetos assncronos, pois para o sistema funcionar com autonomia de clock necessrio que
um protocolo assncrono seja implementado em nvel de hardware. Neste trabalho foram estudadas formas de projetar mdulos assncronos presentes nos processadores sncronos atuais,
de maneira a reduzir a complexidade de projeto de processadores assncronos. A abordagem
utilizada foi baseada no framework e linguagem de descrio de hardware assncrono Balsa,
desenvolvidos por pesquisadores na Universidade de Manchester UK.

Palavras-chave:
Circuitos Assncronos, Handshake, Balsa

Discusso
O desenvolvimento de dispositivos com sistemas embarcados de ponta, como os atuais smartphones e tablets requer que estes tenham seu poder de processamento elevado e, em benefcio da
portabilidade, seu consumo de bateria seja reduzido. A cada ano, uma nova linha destes dispositivos lanada com cada vez mais recursos e desempenho melhorado, o que torna o desafio
de reduzir o consumo de energia uma difcil tarefa para os projetistas de hardware embarcado.
A utilizao de tecnologia assncrona vem no sentido de obter circuitos complexos que atendam a estes requisitos, explorando as caractersticas de consumo/potncia e performance. A
abordagem sncrona de projeto de circuitos tem como caracterstica a utilizao do clock, que
relgio comum em todo o circuitos, todos os componentes tem essa noo comum e discreta de
tempo, o que causa problemas desde que a tecnologia VLSI, seguindo a lei de Moore, tem reduzido cada vez mais a rea dos microchips, e o atraso de propagao dos sinais em fios globais
vai excedendo o perodo do clock. A motivao de elevar a frequncia de operao do circuito
para aumentar o processamento traz consigo o aumento do consumo de potncia, o que para
dispositivos mveis, traz os problemas de autonomia de bateria versus processamento. Outros
problemas da utilizao de clock a gerao de rudo, consumo de potncia e distribuio do
clock em todo o circuito.
Os circuitos assncronos, da mesma forma que os sncronos, tambm utilizam sinais de bits
mas com a diferena de no haver um sinal global que d a noo comum de tempo discreto.
Para fazer a comunicao entre os componente, utilizado o handshake para fazer a sincronizao e operao desejada. Basicamente, os componentes sincronizam entre si, de acordo com
a necessidade, como se houvesse clocks locais independetes em todo o circuito. A utilizao
de handshake entre os componentes requer o projeto do circuito de handshake, o que causa o
aumento na rea do circuito final e a complexidade no projeto desse circuito. As vantagens
desse projeto exploram os requisitos mencionados anteriormente, entre eles[2]:
Baixo consumo de potncia, devido ao consumo zero dos circuitos em standby[3].
Alta velocidade de operao, definida pelo atraso local ao invs do pior-caso de atraso[4]
global
Baixa emisso de rudo eletromagntico, os clocks locais batem em pontos aleatrios no
tempo.[3]
Melho modularidade, devido simples interface dos circuitos de handshake e do clock
local.[5]
Sem distribuio de clock e problemas de distoro de fase.
Alguns problemas tambm so encontrados na abordagem assncrona, como o ganho considervel de rea de silcio ao se implementar os circuitos de handshake, que gera um consumo
de energia. Outras dificuldades tambm esto na falta de ferramentas CAD e para teste dos
circuitos assncronos.

Um exemplo de como o handshake substitui o sinal de clock pode ser visto na Figura 1, que
representa um simples pipeline, ou uma sequncia de registradores em srie.

Figura 1: Representao de clock (a) e handshake (b)

Aqui o clock substituido pelo handshake, que pode ser visto como um sinal que conecta
um registradores ao prximo, em um canal de handshake. Os dados caminha no canal Data
entre os registradores. Para controlar o fluxo de dados entre os registradores, uma regra deve
ser seguida: um registrador pode receber e armazenar um dado do seu predecessor se o seu
sucessor tiver recebido e armazenado o dado que este registrador estava previamente guardando.
Para saber o estado do predecessor e sucessor, o registrador manda e recebe sinais de request
e acknowledge. Os dados que caminham pelo canal Data geralmente chamado de Token, e
uma abstrao do fluxo de dados ser utilizado para separar a estrutura da funcionalidade do
circuito. importante observar que o handshake entre registradores que controla o fluxo de
dados (tokens), e os blocos de circuito combinacional so completamente transparentes a esse
handshake.

Os circuitos assncronos utilizam o handshake como forma de comunicao e controle do


fluxo de dados entre registradores, mais especificamente nesta pesquisa, o protocolo de handshake
utilizado o 4-phase bundled-data. O termo bundled-data refere-se ao fato dos sinais de dados
usarem nveis booleanos para codificar informao e onde os sinais de acknowledge e request
so empacotados junto com os sinais de dados.

Figura 2: Canal bundled-data (a), Protocolo 4-phase bundled-data

Um Muller pipeline, utilizando os C-elements, ou Muller C-gate criado por David E.Muller
em 1963, utilizado para gerar clocks locais, que na Figura 3 aparece como um FIFO e tambm
exibe os circuitos combinacionais (ou blocos de funes) que so adicionados entre os latches.
C-elements so portas propostas por Muller em 1958,utilizadas nos circuitos de handshake. A
sada do C-element exibe a entrada quando todas as entradas so iguais.

Figura 3: Uma representao do C-element de Muller, com uma possvel implementao

Figura 4: Um simples 4-phase bundled-data pipeline

Os circuitos assncronos podem ser classificados com self-timed, speed-independent ou delayinsensitive[6]. Basicamente, circuitos do tipo delay-insensitive funcionam corretamente assumindo que exitem atrasos, porm desconhecidos, nas portas e nos fios. Porm, somente circuitos compostos unicamente por C-elements e inversores pode ser delay-insensitive[7], ento, na
literatura comum se referir esses circuitos como quasi-delay-insensitive QDI.[8]
Com estes conceitos em mente, podemos tomar uma abordagem mais alto-nvel do design
de circuitos assncronos, a estrutura de fluxo de dados esttica, o que equivale ao RTL em
design sncrono[9]. Essa viso de fluxo de dados deixa o protocolo de handshake e os circuitos
implementados para este fim em um nvel mais baixo, e torna mais abstrato o funcionamento
do circuito. O fluxo de dados pode ser entendido como streams de dados vlidos(tokens) e
nulos(bubles) passando por latches que podem receber, armazenar e passar para frente o novo
dado. Os latches tem uma funo importante no handshake, pois so eles os nicos componentes
que podem iniciar e manter ativo um handshake, todos os outros componentes so transparentes
ao handshake.

Figura 5: Um estado possvel de um pipeline de 5 estgios.

Na Figura 5, um pipeline mostrado como uma estrutura de fluxo de dados. Os retngulos


so os latches, as setas representam o canal ou link, que contm os sinais de acknowledge,
request e os dados. Os crculos representam dados que acabaram de ser copiados, por exemplo,
o dado vlido em L1 acabou de ser copiado em L2, e o dado nulo em L3 acabou de ser copiado
em L4. Da mesma forma, L0 acabou de copiar um dado nulo de seu predecessor (que no
aparece na figura).
Um conjunto de componentes bsico para o desenvolvimento de circuitos assncronos so:
1. Latches - Armazenam variveis, implementam o handshake que suporta o fluxo de dados.
2. Blocos de Funes - Espera dados na entrada, executa a funo combinacional e lana os
dados na sada.
3. Controles de Fluxo Incondicionais - Fork (uma entrada copiada em vrias sadas) e Join
(vrias entradas em uma sada).
4. Controles de Fluxo Condicionais - MUX e DEMUX, que possuem entrada de controle.

Metodologia
Para modelar e sintetizar circuitos assncronos, que so altamente concorrentes e utilizam
handshake para comunicao entre os modulos, linguagens de auto nvel, como VHDL ou Verilog para circuito sncrono, so utilizadas. Na maioria dos trabalhos com sntese assncrona, so
utilizadas liguagens com base na famlia de linguagens CSP[10] , cujas caractersticas chave
so: processos concorrentes, composio de estados entre processos sequncial e concorrente
e mensagens sncronas passando em canais ponto a ponto. Exemplos de linguagens da famlia
CSP para programao concorrente so OCCAM[11], LOTOS[12] e CCS[13]. E tambm linguagens definidas especificamente para design assncrono: Tangram [14], CHP[15] e Balsa[16].
Esta ltima, baseada na linguagem Tangram, a utilizada nesta pesquisa para a modelagem e
sntese dos circuitos assncronos estudados.
Balsa tanto a linguagem como o framework utilizado para sintetizar circuitos assncronos,
cuja abordagem a da compilao direcionada sintaxe em componentes comunicando-se com
handshake. A vantagem dessa aborgagem que a compilao transparente: exite um mapeamento de um para um entre os contrutores da linguagem na especificao e o circuito de
handshake produzido. Isso importante pois incrementos em nvel de linguagem geram mudanas de implementao do circuito previsveis, em contraste com a sntese sncrona utilizando
VHDL, onde pequenas mudanas de especificao podem fazer mudanas radicais no circuito
resultante [17].
Basicamente, um circuito descrito e compilado em Balsa gera uma rede de componentes de
handshake ( cerca de 40), conectados por canais, que passam dados ou sinais de handshake, e
cada canal conecta uma porta passiva a uma ativa (porta que inicia o handshake) entre os componentes. Assim, uma porta ativa requisita uma transferncia, a porta passiva sinaliza com um
acknowledge que o dado esta disponvel. Na Figura 6 mostrado um diagrama de handshake,
com dois componentes de handshake, um Fetch simbolizado por e um Case simbolizado
por um @.

Figura 6: Dois componentes de handshake conectados.

As portas ativas esto representadas por um circulo preenchido, e portas passivas por circulos
livres. A ao desse circuito inicia com um request para o Fetch, que manda um request para
o ambiente (lado esquedo). O ambiente responde com um acknowledge indicando que o dado
est disponivel, o Fetch ento manda um request junto com o dado para o Case que, dependendo
do valor do dado (0 ou 1), manda um request para o ambiente (lado direito). Quando o ambiente
recebe o dado do Case e retorna um acknowledge, s ento o Case responde um acknowledge
para o Fetch, o handshake termina e o circuito est pronto para funcionar denovo.
5

O Balsa composto por vrias ferramentas, onde a maioria est centrada em manipular os
arquivos de handshake Breeze, gerados aps a compilao. A partir destes arquivos Breeze
possivel com uma srie de ferramentas obter o diagrama de handshake, bem como um arquivo
com netlist que sero posteriormente sintetizados. Neste estudo as ferramentas mais utilizadas
foram:
1. balsa-c: o compilador da linguagem Balsa. A partir dele obtido o arquivo Breeze.
2. balsa-netlist: com esta ferramenta possivel gerar um arquivo contendo o netlist descrito
em Verilog, EDIF ou Compass, a partir do arquivo Breeze.
3. breeze2ps: ferramenta utilizada para gerar os diagramas de handshake a partir do arquivo
Breeze.
4. balsa-mgr: abre o ambiente grfico de programao e simulao do Balsa, com editor de
cdigo, compilador, simulador e outras atividades.
Um overview do fluxo de design utilizando Balsa mostrado na Figura 7.

Figura 7: Fluxo de design Balsa.

A verso 4.0 do Balsa foi instalada em um sistema Linux XUbuntu 12.04, seguindo orientaes do arquivo INSTALL que acompanha o pacote balsa-4.0.tar.gz, disponvel em [http://apt.cs.man.ac.uk/p

Um exemplo simples da utilizao da linguagem Balsa no design de circuitos assncronos


apresentado na Figura 8, que descreve um buffer de 1 byte. O circuito faz um request pelo
canal de input ao ambiente para receber um byte, e quando pronto, recebe o byte no registrador
e recebe o acknowledge do ambiente. Aps receber o byte, o circuito manda um request no
output para o ambiente, que quando pronto, envia o acknowledge para o output do circuito
afirmando que recebeu o byte, liberando assim, o circuito para uma nova operao.

Figura 8: buffer1a.balsa

Este exemplo apresenta algumas caractersticas da linguagem Balsa:


1. comentrios: Balsa suporta comentarios de uma ou multiplas linhas.
2. compilao modular: O import neste exemplo inclui algumas definies de tipos de
dados, como byte, nibble, etc.
3. procedures: A declarao procedure em Balsa compilada em um circuito compreendendo uma rede de componentes de handshake. O parametro define a interface para o
ambiente fora do bloco, e o corpo define o comportamento do circuito, isso implica numa
implementao estruturada.

 

4. atribuio de canais: os operadores e so atribuies de canais de input ou output


e indica uma comunicao ou handshake sobre o canal. Um canal fica sempre do lado
esquerdo do operador, e a correspondente varivel fica do lado direito.
5. sequnciao: O ; entre as atribuies indica sequncialidade, ou seja, no exemplo o
contedo de x transferido para o output depois de a transfncia de input ser completada.
6. palavras reservadas: assim como outras linguagens, Balsa possui uma srie de palavras
reservadas, por exemplo, um erro comum utilizar a palavra reservada in como nome
de um canal de input, e isto geraria um erro de compilao.
Para compilar o cdigo do arquivo buffer1a.balsa diretamente pelo terminal de comandos
do linux executado o comando balsa-c buffer1a.balsa. O resultado o arquivo
intermedirio buffer1a.breeze. Para gerar um grfico de handshake bsico a partir do
arquivo .breeze o comando breeze2ps buffer1a.breeze executado, gerando a
representao na Figura 9 seguir.
7

Figura 9: buffer1a.balsa

Na Figura 9 esquerda est o resultado do comando anterior, cuja sada salva como o
arquivo buffer1a.breeze.ps. Na direita foi redesenhado para melhor observao do diagrama de handshake.
A partir deste exemplo bsico e de outros que seguem [18], foi possvel desenvolver outros mdulos assncronos em linguagem Balsa, como contadores, registradores, shifters, dentre
outros. A partir do arquivo compilado .breeze, foram gerados os netlists com o comando
balsa-netlist, e foram obtidos arquivos em linguagem Verilog descrevendo os circuitos
assncronos feitos em Balsa. Com o arquivo Verilog em mos, o prximo passo levar o Verilog
para ferramentas de CAD como Modelsim ou ISE, onde foram feitas simulaes e testes. Os
mesmo mdulos foram feitos tambm de maneira sncrona em linguagem Verilog para comparao dos resultados.
Para codificao dos arquivos Balsa, foi utilizado o prprio editor de texto do framework,
uma vez que o mesmo possui destaque em cores da sintaxe, facilitando bastante a visualizao
do cdigo. A partir do comando balsa-mgr a interface com o editor de cdigos balsa
exibida.
O prximo circuito a ser desenvolvido foi um Mux de 4 bits, mostrado como na Figura 10.
Ao lado est o diagrama de handshake do Mux.

O Mux a seguir foi feito seguindo a sequinte lgica: o canal de sada Y recebe um dos canais
de entrada A ou B (todos de 4 bits) de acordo com o valor do canal de entrada SEL. Se SEL =
0, ento Y = A, caso contrrio Y = B.

Figura 10: Arquivo mux.balsa esquerda, diagrama de handshake correspondente direita


obtido pela sequncia de comandos balsa-c mux.balsa e breeze2ps mux.breeze

Como no exemplo do buffer, o Mux possui a procedure principal que define os parmetros
de input (A, B e SEL) e output (Y), todos com suas respectivas declaraes de tipo. O corpo do
cdigo define as variveis que vo receber dos canais de entrada e escrever no canal de sada,
bem como sero utilizadas na lgica de funcionamento do circuito. Neste exemplo, as variveis
tem fundamental importncia, visto que os canais definidos como parmetros no podem ser
utilizados diretamente no corpo da procedure. Assim, os canais A, B e SEL so copiados para
as variveis (os latches de armazenamento descritos anteriormente) e a sada Y recebe o valor
de y, que por sua vez depende da varivel sel.
A partir do arquivo mux.breeze gerado pela compilao do cdigo Balsa, foi gerado o
arquivo de netlist no formato Verilog, que contm a descrio do circuito e dos componentes de
handshake prontos para serem simulados em ferramentas CAD como o ISE, a partir do qual o
circuito assncrono sintetizado e pode ser implementado em um FPGA.
O comando utilizado para gerar o arquivo em formato Verilog : balsa-netlist -n
verilog mux.breeze. A sada deste comando um arquivo contendo as informaes do
circuito e do handshake, so descritos os caminhos que levam os sinais de dados, de request e
acknowledge para cada canal de input e/ou output. Por exemplo, para o canal SEL, criado
o input SEL_Oa para acknowledge, SEL_Or para request e SEL_Od para dados. Assim, na
ferramenta escolhida para simulao do verilog, ISE, foi possvel obter o resultado em formato
de onda para validar o funcionamento do circuito. A Figura 11 exibe o resultado, onde possivel
observar o sinal SEL_0d, que carrega a informao propriamente dita necessria para a lgica
do circuito funcionar. Da mesma forma, A_0d, B_0d e Y_0d exibem os valores de entrada A e
B na interface do Mux, e o valor de sada em Y.
9

Figura 11: Formato de onda resultante da simulo do Mux no ISE

Pela Figura 11, vemos que quando o sinal SEL_0d esta em nivel zero, o valor de A_0d[3:0]
aparece em Y_0d[3:0] e permanece at que SEL_0d mude para nivel 1. Para testar o circuito,
na simulao inserimos o valor de B como sendo sempre 0, e o valor de A como sendo uma
sequncia de 1 at 15. Assim, pelo resultado exibido na sada Y_0d[3:0] vemos que o Mux est
funcionando corretamente.
Uma rpida visualizao de custo de rea do circuito pode ser obtida pelo front-end balsa-mgr
ou pelo comando breeze-cost, que apresenta uma noo de como mudanas na descrio
do circuito afetam o seu tamanho. Basicamente apresenta a quantidade de componentes de
handshake que foram utilizadas, incluindo o nome, custo e indentificadores de canais internos
aos quais o componente est conectado.

10

Resultados
A partir das fundamentaes apresentadas nas sees anteriores, uma srie de circuitos organizados em mdulos foram estudados e descritos em linguagem Balsa. Conforme a complexidade da lgica do circuito, o resultado obtido no formato final Verilog pde ser observado num
arquivo extenso. O tamanho grande da descrio obtida em Verilog a partir do Balsa, pode ser
entendido como o previsto anteriormente de que circuitos assncronos tem um ganho significativo de rea no chip. Esse aumento de rea se deve na maior parte para incluir na descrio do
hardware do circuito os componentes de handshake, bem como outros sinais necessrios para o
funcionamento da comunicao entre os mdulos.
A observao da diferena entre implementaes de um mesmo circuito de forma assncrona
e sncrona pode ser melhor vista com um exemplo onde a entrada de um sinal de clock substituda, e o handshake passa a controlar o comportamento do circuito em relao ao ambiente.
Para o exemplo, um registrador de 16 bits cujo funcionamento apresentado a seguir, foi implementado.

Figura 12: Mdulo de um registrador de 16 bits com entrada de clock.

Assim como mostrado antes, as entradas e sadas de dados so descritas como parametros
da procedure principal, identificando o tipo como 16 bits de dados, ou 2 bytes. No seu funcionamento bsico, se a entrada clr = 1 e clken = 0, ento a entrada in_reg ser copiada no
registrador. Em outros casos, se clr = 0, o registrador apagado. O sinal de clock utilizado
para definir o momento em que os dados so copiados ou apagados. Para eliminar a necessidade
de clock e tornar o circuito assncrono, um circuito de handshake entre o ambiente que fornece
os dados para a entrada in_reg e o ambiente que recebe os dados da sada out_reg deve ser
criado.
Um comando que trata de criar o necessrio para haver o handshake em um canal o comando sync, cuja sintaxe : sync <canal>. Esse comando faz com que o circuito espere
um handshake no canal indicado, e a atividade do circuito no continua at que o handshake
tenha terminado. O comando sync cria um canal de handshake puro, onde no h fluxo de
dados, apenas os sinais acknowledge e request. Dessa forma, criamos um circuito sem clock
funcionando com handshake.
Aps compilar o cdigo balsa e obter o arquivo Breeze, foi possvel analisar mais detalhadamente os diagramas de handshake e como as alteraes na descrio do cdigo modificavam
este diagrama. Testes foram feitos visando observar o funcionamento de um circuito de forma
paralela, atravs do operador || e de forma sequncial com o operador ;. Assim foi observado
que a utilizao de operaes em paralelo devem ser feitas de forma cuidadosa, tendo certeza
de que no haver operao de leitura ou escrita sobre um canal ao mesmo tempo. A operao
em paralelo especifica que os componentes iro funcionar de forma paralela, no significando
11

que esto independentes fisicamente. Em alguns casos representa uma sincronizao, pois a
atividade do circuito s continua quando os comandos em paralelo estiverem concludos.
A linguagem Balsa fortemente tipada, e durante os estudos sobre a forma de como declarar
um canal ou uma varivel, foi visto que de fundamental importancia declarar corretamente
o tipo de dado que ser utilizado, para garantir que o resultado da operaes iro encaixar
corretamente no range de um vetor, por exemplo. A linguagem aceita vrios tipos de dados
pr definidos alm de declaraes de vetores de bits, entre eles arrays, enumerateds, records
e constantes. Muitas vezes o casting tambm utilizado, por exemplo quando se quer obter
um bit de dentro de uma varives de 8 bits, e para isto a linguagem dispe do operador #, que
transforma algum objeto em um array de bits.
Para a definio de estruturas de fluxo de dados existem os comandos condicionais, de iterao, loop , etc. Os comandos for, loop..while, if..else e case so apresentados de maneira
prxima a de outras linguagens, exceto pelo cuidado, por exemplo no for, de tratar as iteraes
de forma paralela ou sequncial. A linguagem tambm apresenta uma srie de operadores binrios e unrios, como os operadores and, or, xor, etc. A definio das procedures tambm pode
ser feita de forma parametrizada e recursiva, o que permite a criao de vrios componentes
para utilizao posterior em outros projetos.
A partir de um estudo da linguagem Balsa, a modelagem de circuitos assncronos ficou mais
prtica e a validao por meio de simulao em ferramentas CAD padronizadas na industria
mostrou que os circuitos descritos em balsa e compilados em netlists Verilog so correspondentes em funcionamento aos circuitos feitos de forma sncrona. Os resultados obtidos pela
simulao dos mdulos descritos em balsa mostram que o design assncrono gera um grande
custo de rea, que deve ser levado em conta ao se fazer a anlise de viabilidade, visto que circuitos assncronos levam a vantagem de performance e economia de potncia sobre os sncronos.

12

Concluso
Aps a realizao dessa pesquisa foi possvel analisar as diferenas entre circuitos sncronos e assncronos, por meio de uma ferramenta desenvolvida para a modelagem de hardware
assncrono em linguagem de alto nvel. Tambm a partir dessa ferramenta foi possvel gerar
aquivos em Verilog tornando a atividade de testar o resultado assncrono utilizando uma ferramenta CAD uma tarefa mais prtica. O framework Balsa mostrou-se um forte aliado no projeto
de circuitos assncronos, mediante a utilizao da linguagem de alto nvel que leva o mesmo
nome, tornando possvel a rpida implementao de circuitos mais complexos, e alm de gerar
diagramas de handshake para anlise do comportamento do circuito, facilita a simulao por
meio de outras ferramentas do mercado, como o Modelsim ou ISE.
A utilizao da linguagem Balsa para descrever os circuitos assncronos torna mais eficiente
a modelagem dos projetos, sua interface grfica disponivel pelo comando balsa-mgr auxilia
bastante na codificao. No front-end do framework ainda contamos com algumas ferramentas
que auxiliam no desenvolvimento do projeto, como por exemplo uma rea para visualizao
dos arquivos do projeto, a possibilidade de abrir vrias abas, botes contendo acesso rpido
funo de compilao, clculo do custo de rea entre outros.
Com os circuitos desenvolvidos no framework Balsa e testados no ISE foi possvel constatar
que o desenvolvimento de projetos assncronos, apesar de seus benefcios no ganho de performance e no baixo consumo de energia, acarreta um grande aumento de rea no chip devido
implementao de circuitos que mantero o handshake e a comunicao entre os componentes
do projeto. Esse ganho de rea deve ser levado em conta na anlise de viabilidade do projeto.
Outras pesquisas tem sido realizadas no objetivo de otimizar a sntese dos circuitos gerados com
linguagem balsa e reduzir o custo de rea para o projeto, com reduo de cerca de 26% a 47%
[19].
Com a crescente busca por formas de reduzir o consumo de energia e obter ganho de processamento em dispositivos mveis cada vez mais requisitados no mercado, a abordagem assncrona
se torna uma escolha considervel para atingir os requisitos. Com as pesquisas nessa rea se
desenvolvendo no sentido de reduzir as suas principais desvantagens, que so o consumo de
muitos componentes lgicos aumentando a rea necessria, e a complexidade do design e testes
do sistema assncrono, as aplicaes dos sistemas assncronos tendem a crescer e se tornar uma
aliada no projeto de sistemas embarcados.

13

Referncias
[1] Shi, Y., Gwee B. and Chang, J., Asynchronous DSP for low-power energy-efficient embedded systems, Journal of Microprocessors and Microsystems, 2011, Elsevier.
[2] J. Sparso, S. Furber, Principles of Asynchronous Circuit Design, Spring, 2011, p. 3-5.
[3] C.H. van Berkel, R. Burgess, J. Kessels, A. Peeters, M. Roncken, and F. Schalij. Asynchronous circuits for low power: a DCC error corrector.IEEE Design & Test, 11(2):2232, 1994.
[4] T.E. Williams and M.A. Horowitz. A zero-overhead self-timed 160 ns. 54 bit CMOS divider.
IEEE Journal of Solid State Circuits, 26(11):16511661, 1991.
[5] D.E. Muller. Asynchronous logics and application to information processing. In H. Aiken
and W. F. Main, editors, Proc. Symp. on Application of Switching Theory in Space Technology,
pages 289297. Stanford University Press, 1963.
[6] C.J. Myers. Asynchronous Circuit Design. John Wiley & Sons, July 2001. ISBN: 0-47141543-X.
[7] A.J. Martin. The limitations to delay-insensitivity in asynchronous circuits. In W.J. Dally,
editor, Advanced Research in VLSI: Proceedings of the Sixth MIT Conference, pages 263278.
MIT Press, 1990.
[8] J. Sparso, S. Furber, Principles of Asynchronous Circuit Design, Spring, 2011, p. 26.
[9] Register Transfer Level RLT. Disponvel em < http:en.wikipedia.org/wiki/Registertransfer_level>.
Acessado em 07 de Julho de 2013. [10] J. Sparso, S. Furber, Principles of Asynchronous Circuit
Design, Spring, 2011, p. 123.
[11] G. Jones. Programming in OCCAM. Prentice-Hall international, 87.
[12] International Standards Organization. LOTOS a formal description technique based on
the temporal ordering of observational behaviour. ISO IS 8807, 1989.
[13] R. Milner. Communication and Concurrency. Prentice-Hall, 1989.
[14] C.H. van Berkel. Handshake Circuits: an Asynchronous Architecture for VLSI Programming, volume 5 of International Series on Parallel Computation. Cambridge University Press,
1993.
[15] A.J. Martin. Formal program transformations for VLSI circuit synthesis. In E.W. Dijkstra,
editor, Formal Development of Programs and Proofs, UT Year of Programming Series, pages
5980. Addison-Wesley, 1989.
[16] A. Bardsley and D.A. Edwards. The Balsa asynchronous circuit synthesis system. In Forum on Design Languages, September 2000.
[17] J. Sparso, S. Furber, Principles of Asynchronous Circuit Design, Spring, 2011, p. 155.
[18] D. Edwards, A. Bardsley, L. Janin, L. Plana, W. Toms, Balsa: A Tutorial Guide. V3.5.
2006. Cap. 2.
[19] Y.Komatsu, M. Hariyama, M. Kameyama, Area-Efficient Design of Asynchronous Circuits
Based on Balsa Framework for Synchronous FPGAs. Int. Conf. Reconfigurable Systems and
Algorithms ERSA12. 2012

14