Novos posts meus no Embarcados:
Dois mil processadores ou um FPGA?
VHDL Básico, parte 2 - Arquitetura
Open source hardware no Opencores
terça-feira, 26 de novembro de 2013
segunda-feira, 28 de outubro de 2013
Novos posts no embarcados! 28/10
Fala pessoal, como prometido meus novos posts:
"Hello World com FPGA - Piscando um led" http://lnkd.in/bcDTRFY
"VHDL Básico Parte 1 - Entidade" - http://lnkd.in/bPV22XB
"Treinamentos gratuitos em FPGA" - link
"Hello World com FPGA - Piscando um led" http://lnkd.in/bcDTRFY
"VHDL Básico Parte 1 - Entidade" - http://lnkd.in/bPV22XB
"Treinamentos gratuitos em FPGA" - link
quinta-feira, 10 de outubro de 2013
Novos posts no embarcados
Como previamente dito estou participando como colaborador do portal embarcados, ultimamente tenho feito crossposts do meu blog no embarcados e por isto não estou colocando os novos posts aqui, para quem quiser acompanhar os crossposts:
Para se manter atualizado em FPGA: clique aqui
Kits de desenvolvimento em FPGA: clique aqui
O próximo deve ser inédito sobre otimização de espaço em FPGA :)
abs
Para se manter atualizado em FPGA: clique aqui
Kits de desenvolvimento em FPGA: clique aqui
O próximo deve ser inédito sobre otimização de espaço em FPGA :)
abs
segunda-feira, 16 de setembro de 2013
Novo site e TIMING em FPGA
Fala pessoal! Fui convidado pelo Diego Sueiro a fazer parte do portal http://www.embarcados.com.br/ . É um projeto bem interessante, a intenção é ser um portal de referencia na área de sistemas embarcados, para isto uma equipe foi montada com especialistas nas diversas competências necessárias para desenvolver sistemas embarcados. Vou escrever lá sobre a parte de FPGA e como não tenho pique para manter dois blogs este vai ficar um pouco de lado, devo postar aqui os títulos dos meus artigos do embarcados e apontar para lá.
Este é meu post inicial: http://www.embarcados.com.br/posts/arquiteturafpgatiming/
Espero que curtam e que este projeto dê muitos frutos!
Abraços
Este é meu post inicial: http://www.embarcados.com.br/posts/arquiteturafpgatiming/
Espero que curtam e que este projeto dê muitos frutos!
Abraços
quinta-feira, 5 de setembro de 2013
FPGAs substituindo microcontroladores simples?
Muito se fala de se utilizar FPGA onde se faz necessário processar uma grande quantidade de dados, em produtos de alto valor agregado como eu coloquei aqui no artigo introdutório sobre FPGA:
domingo, 25 de agosto de 2013
Simulando o Nios II. Processador softcore da Altera.
Olá pessoal,
Em um tutorial passado apresentei a vocês a ferramenta Modelsim, que possibilita simular o comportamento de circuitos descritos em linguagens de descrição de hardware, tais como VHDL e Verilog. O exemplo apresentado foi simples, mas possivelmente já serviu de ponto de partida para o aprendizado de linguagens de descrição de hardware , pois possibilita testar os conceitos sem a utilização de um FPGA físico.
O tutorial de hoje dará mais um passo no mundo da simulação, e de quebra seremos apresentados ao processador softcore Nios II. Este tutorial fará parte de um conjunto de artigos onde pretendo apresentar a vocês o processador Nios. Neste conjunto de tutoriais pretendo apresentar:
Este primeiro artigo irá contemplar os dois primeiros itens da lista.
Em um tutorial passado apresentei a vocês a ferramenta Modelsim, que possibilita simular o comportamento de circuitos descritos em linguagens de descrição de hardware, tais como VHDL e Verilog. O exemplo apresentado foi simples, mas possivelmente já serviu de ponto de partida para o aprendizado de linguagens de descrição de hardware , pois possibilita testar os conceitos sem a utilização de um FPGA físico.
O tutorial de hoje dará mais um passo no mundo da simulação, e de quebra seremos apresentados ao processador softcore Nios II. Este tutorial fará parte de um conjunto de artigos onde pretendo apresentar a vocês o processador Nios. Neste conjunto de tutoriais pretendo apresentar:
- Arquitetura do Nios II;
- Simulação do Nios no Modelsim;
- Implementação de Componentes customizados que fazem interface com o Nios;
- Port do uClinux para o Nios.
Este primeiro artigo irá contemplar os dois primeiros itens da lista.
sexta-feira, 16 de agosto de 2013
Tipos de Reset em FPGA: Reset síncrono, Reset assíncrono e Reset híbrido.
A escolha de um esquema de reset tem grande impacto no desempenho, utilização de lógica e robustez de um projeto. Ainda hoje não há uma unanimidade de um melhor reset para todas as situações então é necessário verificar qual o melhor reset para as suas necessidades, discussões sobre esquemas de reset são quase como discutir religião.
No geral existem três opções: Reset síncrono, Reset assíncrono e um híbrido dos dois resets. Neste artigo pretendo discutir um pouco sobre os pros e cons de cada um deles
No geral existem três opções: Reset síncrono, Reset assíncrono e um híbrido dos dois resets. Neste artigo pretendo discutir um pouco sobre os pros e cons de cada um deles
sábado, 3 de agosto de 2013
Livros em FPGA
Como bem sabemos na nossa área é MUITO importante estar sempre se aperfeiçoando para não ficar para trás, acabou de chegar aqui em casa o livro Advanced FPGA Design...
quinta-feira, 1 de agosto de 2013
Gerador de código VHDL!
Como bem sabido VHDL é uma linguagem extremamente tipada o que faz a gente escrever muito para dizer pouco :)
90% dos meus designs em VHDL seguem um padrão, eles tem uma máquina de estados, dois processes sendo um para a parte combinacional e outra para a parte sequencial do design, bibliotecas básicas de aritmética (numeric.std) e lógica (1164) a parte combinacional recebendo a sequencial e etc. Esse estilo de codificação segue muito do que o Pong. P Chu propõe em seu livro RTL Hardware Design using VHDL. E quando algo é padrão nada melhor do que fazer um script para diminuir a parte burocrática de escrever um novo módulo em VHDL e ir direto ao que interessa.
90% dos meus designs em VHDL seguem um padrão, eles tem uma máquina de estados, dois processes sendo um para a parte combinacional e outra para a parte sequencial do design, bibliotecas básicas de aritmética (numeric.std) e lógica (1164) a parte combinacional recebendo a sequencial e etc. Esse estilo de codificação segue muito do que o Pong. P Chu propõe em seu livro RTL Hardware Design using VHDL. E quando algo é padrão nada melhor do que fazer um script para diminuir a parte burocrática de escrever um novo módulo em VHDL e ir direto ao que interessa.
domingo, 28 de julho de 2013
VHDL: Lista de sensibilidade de um process
O process é um dos elementos básicos de qualquer descrição de hardware em VHDL, pode ser utilizado tanto para a representação de circuitos combinacionais como de circuitos sequenciais (com memória).
Sintaxe do process:
Sintaxe do process:
process(lista_sensibilidade)
-- Declaração de variables
begin
-- Declaracao 1
-- Declaracao 2
end process;
sábado, 20 de julho de 2013
Implementação de um shift register em VHDL
Boa noite,
Shift registers são elementos comuns em sistemas digitais utilizados para os mais diversos fins, como por exemplo: conversão de dados serial-paralelo e vice-versa; geração de atrasos; contadores e etc.
Um shift register nada mais é do que um array de flip-flops conectados em um mesmo clock de forma que a cada pulso de clock a entrada de um flip-flop recebe o valor da saída de seu anterior. Desta forma a cada pulso de clock o flip-flop n+1 recebe o valor de n. A Figura 1 retirada da wikipedia retrata o circuito.
Shift registers são elementos comuns em sistemas digitais utilizados para os mais diversos fins, como por exemplo: conversão de dados serial-paralelo e vice-versa; geração de atrasos; contadores e etc.
Um shift register nada mais é do que um array de flip-flops conectados em um mesmo clock de forma que a cada pulso de clock a entrada de um flip-flop recebe o valor da saída de seu anterior. Desta forma a cada pulso de clock o flip-flop n+1 recebe o valor de n. A Figura 1 retirada da wikipedia retrata o circuito.
Figura 1. Shift register de 4 bits. |
sábado, 13 de julho de 2013
Tutorial de Modelsim: Verificando o VHDL antes de programar o FPGA.
Olá pessoal,
Ferramentas de debug e simulação são grandes aliados no desenvolvimento de aplicações embarcadas, pois facilitam a vida do desenvolvedor, em FPGA é extremamente recomendado que todo o código seja testado em um simulador antes de ser sintetizado em um FPGA.
O processo de gravar o FPGA e testar é muito mais demorado do que simplesmente rodar o simulador. Além disso não existem muitas interfaces da FPGA com o mundo externo, é praticamente impossível saber tudo que está acontecendo no seu sistema em tempo real. Alguns bugs são difíceis de serem encontrados em tempo de execução pois podem ocorrer só em situações especificas que demoram muito a acontecer ou por necessitar de vários equipamentos externos para simular a situação em que ocorreriam.
O Modelsim é um simulador de HDL (Hardware Description Language) desenvolvido pela Mentor Graphics. Ele suporta a simulação das linguagens VHDL e Verilog e pode simular o código a nível de RTL (Register Transfer Level) e Gate Level. Em nível de RTL é analisado o circuito a nível de comportamento dos registradores e em Gate Level é analisado a nível de netlist com inclusão de atrasos das portas lógicas e etc.
Vamos por partes, começando do mais simples. Neste tutorial, como exemplo, irei apresentar o que é necessário para realizar a simulação da aplicação mostrada no tutorial anterior (clique aqui) a nível de comportamento.
Ferramentas de debug e simulação são grandes aliados no desenvolvimento de aplicações embarcadas, pois facilitam a vida do desenvolvedor, em FPGA é extremamente recomendado que todo o código seja testado em um simulador antes de ser sintetizado em um FPGA.
O processo de gravar o FPGA e testar é muito mais demorado do que simplesmente rodar o simulador. Além disso não existem muitas interfaces da FPGA com o mundo externo, é praticamente impossível saber tudo que está acontecendo no seu sistema em tempo real. Alguns bugs são difíceis de serem encontrados em tempo de execução pois podem ocorrer só em situações especificas que demoram muito a acontecer ou por necessitar de vários equipamentos externos para simular a situação em que ocorreriam.
O Modelsim é um simulador de HDL (Hardware Description Language) desenvolvido pela Mentor Graphics. Ele suporta a simulação das linguagens VHDL e Verilog e pode simular o código a nível de RTL (Register Transfer Level) e Gate Level. Em nível de RTL é analisado o circuito a nível de comportamento dos registradores e em Gate Level é analisado a nível de netlist com inclusão de atrasos das portas lógicas e etc.
Vamos por partes, começando do mais simples. Neste tutorial, como exemplo, irei apresentar o que é necessário para realizar a simulação da aplicação mostrada no tutorial anterior (clique aqui) a nível de comportamento.
sábado, 6 de julho de 2013
Funcionamento de signal e variable em VHDL ou porque evitar variables.
Muita gente se confunde na hora de utilizar signal e variable em VHDL. Acabam fazendo besteira por não entender bem os conceitos, já adianto que para quem não sabe exatamente o que está fazendo e o que vai ser gerado o ideal é não utilizar variable.
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.
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.
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.
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.
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.
Assinar:
Postagens (Atom)