terça-feira, 25 de novembro de 2014

Brincando sério com VHDL (I2C 8bits IO expander)


Uma empresa, para a qual presto serviços regularmente, me contatou para "clonar" um componente simples que estavam tendo dificuldades de obter. Até ai nada de mais, só que tinha um porém: precisavam de dois componentes clonados por encapsulamento PLCC44 e o desenvolvimento precisaria caber em um pequeno CPLD de 32 ou 64 macro células.

Encapsulamento Plastic Leaded Chip Carrier (PLCC):


O componente a ser clonado é um expansor de 8 bits com barramento I2C, e descobri várias implementações dele na internet. Assim dei uma olhada básica e fiz a minha implementação. Apanhei muito com a sintaxe do VHDL pois parece uma mistura de linguagem PASCAL com C.
Utilizei neste projeto um componente da família MAX3000 da fabricante ALTERA. Depois que implementei o componente em VHDL, descobri que podia armazená-lo como um componente de biblioteca e reutilizá-lo quantas vezes fosse necessário. Assim criei um novo projeto e adicionei dois elementos do componente que criei o componente clonado e duplo.
Para transformar uma implementação, seja esquemática ou VHDL, no QUARTUS que é o compilador da ALTERA é necessário:
Menu File --> Create / Update --> Create Symbol for Current File.
Depois é necessário dar um nome para o arquivo de extensão .BSF
 Em outro projeto posso utilizar quantos componentes eu precisar:


As áreas rasuradas são para preservar a confidencialidade do projeto.

Esse é o projeto final com os dois componente I2C que são responsáveis por expandir um novo conjunto de 8 bits. Pode-se notar que deixei cada componente com possibilidade de endereçamento individual através dos pinos A2 até A0. Ao lado são apresentados os resultados do projeto: 66% de uso do componente e 68% de pinos utilizados. É bem possível que possa ser inserido um terceiro componente, mais isso fica para uma próxima vez.

Foram gastos em torno de 20h neste projeto e o novo componente está sendo testado pelo cliente.

 
Agora o cliente tem um novo componente a sua disposição, totalmente reconfigurável dependendo somente de suas necessidades.


Nenhum comentário:

Postar um comentário