André Castelan
"Em teoria não há diferença entre a pratica e a teoria, já na pratica..."

domingo, 30 de junho de 2013

Tutorial Quartus II: Piscando um LED

Boa noite pessoal, vamos a um post mais prático!

Com este post vou introduzir a ferramenta Quartus II da Altera para vocês e mostrar um pouco do que ela pode fazer.
Para começar você pode fazer o download do Quartus II direto do site da Altera em http://www.altera.com/ na seção de downloads (é necessário criar uma conta), a versão paga tem 30 dias de uso liberado mas recomendo baixar a versão grátis (Web Edition) que vem com tudo que é necessário para desenvolver projetos em FPGA, também é necessário realizar o download de um pacote de devices, dê uma olhada em qual kit você tem a disposição e qual FPGA ele possui, caso não possua kit algum escolha o Cyclone pois é a FPGA de entrada e provavelmente você vai encontrar uma Cyclone no seu primeiro kit.

Neste tutorial vou utilizar a versão Web Edition 13.0 (mais recente no momento do post) em um Windows 7 64 bits mas a interface é a mesma para Windows e Linux. Também vou utilizar o kit BeMicroSDK (falei sobre ele aqui) mas não é necessário ter o Kit para realizar as atividades.

segunda-feira, 24 de junho de 2013

Para se manter atualizado

Boa noite pessoal!

Vou deixar aqui uma lista de referências para se manterem atualizados em FPGA e sistemas embarcados em geral, julgo MUITO importante estar sempre atento as últimas novidades tecnológicas, como sabemos na nossa área tudo é muito dinâmico e quem não se mantém atualizado fica pra trás.

sábado, 15 de junho de 2013

Kits de desenvolvimento

Na minha opinião o melhor jeito de se aprender algo é botando a mão na massa! E quando se trata de FPGA não há nada mais indicado do que a compra de um Kit para iniciar a aventura!

Existem diversos kits de FPGA com muitas características diferentes como por exemplo: tipos de interface, capacidade de lógica, memória, preços e etc. Vou analisar os kits com a FPGA de entrada da Altera(Cyclone) pois possuem o melhor custo-beneficio e são as mais indicadas para iniciantes, mas não se engane, elas são bem poderosas e utilizadas em muitos produtos de alto valor agregado. Vou me limitar a analisar os que já utilizei.

domingo, 9 de junho de 2013

O que é um FPGA?

Vou tentar seguir uma postura meio "evolutiva" no blog antes de falar sobre assuntos mais complicados/interessantes, então começando pelo básico...

FPGA ou field-programmable gate array ou ainda matriz de portas programáveis é um dispositivo lógico programável que suporta a implementação de circuitos digitais. A estrutura geral de uma FPGA está ilustrada na Figura 1 onde os três componentes básicos de um FPGA se fazem presentes os retângulos representam blocos de entrada e saída, os quadrados brancos blocos lógicos e os azuis Switches.

Hoje já são comuns blocos de memória, DSP e até mesmo um processador ARM na arquitetura de FPGAs.


Os blocos lógicos são arranjados em uma matriz bidimensional, e os fios de interconexão
são organizados como canais de roteamento horizontais e verticais entre as linhas e colunas do
bloco lógico. Os canais de roteamento contém fios e switches programáveis que permitem que os
blocos lógicos se conectem de várias formas diferentes.

Cada bloco lógico em FPGA tipicamente tem um pequeno número de entradas e saídas, um dos blocos lógicos normalmente se chama LookUp Table(LUT) que contém células de armazenamento que são usadas para implementar uma pequena função lógica. Cada célula é capaz de guardar um valor lógico, 0 ou 1. O valor guardado é produzido como saída da célula de armazenamento. LUTs de vários tamanhos podem ser criadas, aonde o tamanho é definido pelo número de entradas.

Resumidamente são diversas funções lógicas, memória, DSP, blocos de E/S que podem se conectar de diversas formas diferentes para representar um hardware descrito em uma linguagem de descrição de hardware (HDL) ou em um diagrama de blocos.

O arquivo de entrada, seja ele HDL ou diagrama de blocos é sintetizado por uma ferramenta normalmente fornecida pelo fabricante do FPGA e é gerado um arquivo binário com a configuração de hardware que aquele FPGA deve adotar.

Onde se utiliza FPGA?

FPGA é utilizado em diversos setores da industria, está presente em setores onde desempenho, paralelismo e tempo real são cruciais. Por se tratar de hardware é possível realizar uma instrução por ciclo de clock! Você pode ter, por exemplo, N cálculos rodando em paralelo e entregando o resultado no mesmo pulso de clock. Algo completamente impossível para um software realizar.

Para citar alguns mercados em que FPGA é forte:
  • Setor elétrico para processamento digital de sinal em tempo real;
  • Setor de telecom em switches e roteadores de alto desempenho;
  • Setor de multimédia para processamento de imagens em tempo real e alto desempenho;
  • Setor militar;
  • Setor automotivo dentre outros.
Basicamente sempre que alto processamento, paralelismo e tempo real forem necessários a utilização de um FPGA deve ser considerada. Segundo a pesquisa realizada pela UMB 31% dos projetos dos seus leitores que participaram da pesquisa utilizam FPGA em seu produto.

Quais são os principais fabricante de FPGA?

Hoje as duas principais empresas fabricantes de FPGA são a Altera e a Xilinx, segundo a mesma pesquisa da UMB 64% dos projetos utilizam Xilinx enquanto 42% utilizam Altera. A terceira colocada é a Lattice com 10% de uso em projetos dos que realizaram a pesquisa. 
Lembrando que o resultado pode passar de 100% pois alguém que participa da pesquisa pode trabalhar em projetos diferentes com vendedores de FPGA diferentes ou até mesmo diferentes FPGA em um mesmo projeto.

quarta-feira, 5 de junho de 2013

Introdução ao blog

Olá!
Me chamo André e sou um engenheiro de computação com experiência em sistemas embarcados que utilizam FPGA (field-programmable gate array).

Com este blog pretendo difundir o conhecimento que aprendi para mais pessoas, é incrível como existe um grande número de pessoas e empresas na área de tecnologia que nunca ouviram falar em FPGA. Já tive que explicar o que era uma para o dono de uma empresa em uma entrevista de emprego e olha que seria de grande valia para empresa dele utilizar FPGA! Muitos não sabem para que serve, quando usar e os benefícios da tecnologia. Pretendo mudar isto.

Em universidades é comum que as aulas sobre sistemas digitais contenham um pouco de FPGA mas salvo em raríssimas ocasiões o conteúdo é muito básico e não capacita ninguém a desenvolver produtos com esta tecnologia. Também não é de se esperar muito quando o corpo docente não se atualiza, não raros os casos é ensinado somente a como transformar códigos em linguagens de descrição de hardware em portas lógicas que acendem um LED quando alguma condição de switchs está ativa.

Há também o problema da academia ser muito teórica, já ajudei alguns cidadãos que estavam trabalhando com isto em suas dissertações e os códigos eram simplesmente... teóricos, voltados totalmente para a simulação, com diversos problemas de timing, erros de conceitos em lógica sequencial e combinacional, incapazes de serem sintetizados na vida real ou ocupavam todos os recursos de um FPGA caríssima desnecessariamente.

Com FPGAs sendo cada vez mais baratos, mais densos (custo de lógica por dólar menor) e agora até com processadores ARM embutidos é de se esperar que o uso desta tecnologia no mercado aumente consideravelmente (desde que as pessoas conheçam a tecnologia!).

Bem vindos ao mundo programável, nos vemos nos próximos posts.