Browsed by
Categoria: Uncategorized

VHDL como linguagem para sistemas embarcados e circuitos reprogramáveis

VHDL como linguagem para sistemas embarcados e circuitos reprogramáveis

sistema embarcadoMuitas faculdades de engenharia, principalmente engenharia elétrica, ensinam diversas linguagens de programação para seus alunos. Algumas das mais complexas incluem Assembly e VHDL, esta última é a que discutiremos nesse artigo.

O VHDL, acrônimo para “Linguagem de descrição de hardware VHSIC”, do inglês Very High Speed Integrated Circuits, é uma linguagem de processamento paralelo de alta performance e velocidade, utilizada para construção de circuitos digitais por meio de hardwares FPGA, ASICs e CPLDs. A versão mais recente do protocolo padronizado é a IEEE 1076-2008. Semelhantemente às linguagens sequenciais, o VHDL também possui pacotes (packages) que traz libraries prontas.

Boa parte da descrição de um código VHDL é feito diretamente para manipular portas lógicas, como os comandos wait, after, shift left logical, entre outros. Na prática, a manipulação de portas lógicas é útil pois os circuitos integrados vendidos em lojas de eletrônicos são imutáveis, ou seja, sua construção não permite alteração das portas lógicas, a única coisa que pode ser feita é a construção de blocos de diversos CIs para a montagem de um circuito digital completo. Alguns exemplos de circuitos integrados e suas respectivas portas lógicas são:

  • 7400: quatro portas NAND de duas entradas
  • 7430: uma porta NAND de oito entradas
  • 7402: quatro portas NOR de duas entradas
  • 7404: seis inversores com porta NOT
  • 7419: seis inversores Schmitt trigger
  • 7408: quatro portas AND de duas entradas
  • 7411: três portas AND de três entradas
  • 7425: duas portas NOR de quatro entradas com strobe
  • 7442: decodificador BCD para Decimal

O VHDL, além de manipular portas lógicas criando novos circuitos integrados a cada mudança no código, também permite na sua linguagem a utilização de operadores aritméticos, condicionais (como if then), entre outros. A utilização de vhdl para sistemas embarcados é útil pelo fato dos sistemas embarcados serem sistemas computacionais completos e independentes de outras conexões, diferentemente dos computadores de propósito geral (mais complexos), e se encarregam de executar apenas determinadas tarefas pré-definidas, repetidas vezes.

Outra definição para esse tipo de sistema é “sistema embutido”, pois nele constam todos os encapsulamentos e dedicações ao dispositivo controlado. Alguns exemplos de sistemas embarcados incluem: câmera digital, televisão, aparelho de som, brinquedos digitais, modems ADSL, e basicamente qualquer dispositivo com foco em uma única tarefa principal. Os sistemas embarcados surgiram quando a eletrônica como um todo barateou os equipamentos e possibilitou a construção de inúmeros aparelhos portáteis que há 20 anos atrás seriam considerados “de outro mundo”.

Geralmente, a ligação entre o VHDL e o sistema embarcado se inicia na programação feita em um computador desktop que transfere o código para o sistema embarcado nos estágios finais de desenvolvimento, por meio de uma porta USB ou mesmo através da gravação de um chip EPROM (erasable programmable read-only memory).

Manipulando banco de dados em Python

Manipulando banco de dados em Python

estrutura de um banco de dadosDados estão por toda a parte, desde relatórios de empresas tentando catalogar seus produtos físicos até dados 100% virtuais como textos gerados na internet. Acredita-se que um percentual muito pequeno de tudo o que se gera de informação acabe sendo analisado na prática, e para isso que passou a existir a profissão de cientista de dados, ou analista de dados.

Tal profissão utiliza recursos como linguagem Python e linguagem R para tratar os dados antes de conseguir extrair informações úteis. Quando a quantidade de dados é muito extensa, esse trabalho se enquadra na categoria de “Big Data”, um ramo da computação e análise de sistemas que está crescendo vertiginosamente nos últimos anos.

Antes de tudo, para manipular corretamente um banco de dados, é preciso saber a diferença entre dados e informações. Dados são quantificáveis, atributos que podem ser categorizados e tratados via código de programação. Informações não necessariamente podem ser trabalhadas com linguagens de programação a ponto de serem categorizadas, seria necessário para tanto utilizar ferramentas mais avançadas de processamento e compreensão de linguagem que foge um pouco do escopo da análise de dados e avança no escopo da inteligência artificial. Na prática, um cientista de dados precisa aprender a trabalhar com um sistema de gerenciamento de banco de dados (SGBD).

Um SGBD é o conjunto de softwares que irão permitir o gerenciamento do seu banco de dados. Por exemplo, existe o banco de dados MongoDB, que é uma ferramenta muito popular no ramo de análise de dados. Também é possível analisar dados em Python utilizando o pacote Pandas e o Scikit-learn. Em todo caso, um requisito básico para iniciar nesse ramo é ter conhecimento em SQL e noSQL. Um curso para aprender linguagem SQL serve como pré-requisito dentro do processo de compreensão de como tratar bancos de dados em geral.

Os primeiros passos são:

1) Instale o MySQL driver usando um método específico de instalação (para Linux ou Windows).

2) Configure o database, certificando-se de que você possui acesso de administrador com usuário e senha.

3) Obtenha os dados via Python através do módulo MySQLdb. Um código possível para realizar essa ação está listado abaixo:

#!/usr/bin/python
import MySQLdb
 
db = MySQLdb.connect(host="localhost",  # your host 
                     user="root",       # username
                     passwd="root",     # password
                     db="pythonspot")   # name of the database
 
# Create a Cursor object to execute queries.
cur = db.cursor()
 
# Select data from table using SQL query.
cur.execute("SELECT * FROM examples")
 
# print the first and second columns      
for row in cur.fetchall() :
    print row[0], " ", row[1]

Outros assuntos que devem ser estudados nesse ramo incluem: a documentação SQLite e SQLite Browser, SQL para big data, DB-Engines, Big Data Real Time Analytics usando Python e Spark. A partir dessas informações, você estará apto para gerenciar bancos de dados e se aperfeiçoar em uma das áreas mais promissoras do mercado atualmente.