Aug 07, 2023
Lógica programável: construa você mesmo um módulo CPLD
Um Dispositivo Lógico Complexo Programável (CPLD) é uma ótima peça de hardware para ter em seu repertório. Como o próprio nome indica, você pode programar esses chips para atender às funções lógicas necessárias. Isso pode
Um Dispositivo Lógico Complexo Programável (CPLD) é uma ótima peça de hardware para ter em seu repertório. Como o próprio nome indica, você pode programar esses chips para atender às funções lógicas necessárias. Isso pode ser a substituição de um chip obsoleto ou talvez apenas uma maneira de aprender e experimentar técnicas diferentes. Qual a melhor maneira de aprender do que adquirir um CPLD e experimentá-lo?
Criei um módulo CPLD com a intenção de poder conectá-lo a muitas coisas, incluindo placas de ensaio sem solda, mas estraguei tudo. Parece que o espaço do plugin disponível em uma placa de ensaio sem solda é de 1,1”, eu fiz a pegada com 1” de largura, não deixando espaço para uma fileira de fios em ambos os lados. Dã.
Mas deixe-me voltar e mostrar mais sobre o que estou fazendo, eu queria fazer uma peça de lógica programável que pudesse ser construída como um kit que pudesse ser facilmente soldado em casa, pudesse ser programado no circuito e pudesse funcionar a 3,3 ou 5 volts.
Para implementar um kit facilmente soldável optei por uma peça CPLD mais antiga que também possui versões 3,3v e 5v que manterá sua programação independente da potência. A lógica em si é um CI CPLD da família Altera Max com duas versões que cabem na placa com 32 ou 64 macrocélulas. Uma macrocélula é o bloco de construção lógico básico e é programada com “termos” lógicos e então interconectada a outras macrocélulas por meio de uma interconexão programável.
Olhando o esquema você pode dizer que não há muito: basicamente o CPLD, o circuito para Programação In Circuit e um oscilador para acionar a lógica do CPLD.
Esta peça conhecida como EPM7032 e EPM7064, vem em um transportador de chip com chumbo de plástico (PLCC) de 44 pinos ou às vezes chamado de cabo J devido ao formato J dos cabos dos pinos. Este pacote pode ser inserido em um soquete passante ou soldado diretamente na placa de circuito impresso.
O oscilador integrado está incluído para que o CPLD possa fazer as coisas com estado e criar contadores rápidos por conta própria, sem a necessidade de um relógio externo. Se um relógio externo estiver disponível, o relógio de maior velocidade no módulo pode ser usado para criar um evento de relógio em cada borda ascendente ou descendente do relógio externo e ainda seguir as diretrizes para CPLD/FPGA que dizem que você realmente deve usar o rede de relógio global interna e não acionar uma entrada de relógio “assíncrona”. Este oscilador é classificado para uma tensão de alimentação entre 1,8 e 5,5 volts.
Se você assistir ao vídeo, você me verá discutir minha preferência pessoal sobre como trato o pino “INH” de ativação em um oscilador; Simplificando, tenho tendência a deixá-lo flutuando depois de verificar na folha de especificações se isso é legal.
O tipo de razão que passa pela minha mente ao lidar com esse tipo de função inclui o fato de que não gosto de amarrar um pino de entrada diretamente a um barramento de alimentação, se puder. Ou seja, prefiro usar um resistor em série que limite a corrente durante transientes, mesmo que não seja necessário.
Ao longo dos anos, tenho visto problemas na produção (quantidades em massa), onde ocasionalmente algo como desligar e ligar a energia permite que um pino conectado diretamente a um barramento de energia tenha uma tensão mais alta do que o próprio chip, o que é ruim. Por último, com um pino amarrado a um barramento de alimentação através de um resistor, seja de alimentação ou de aterramento, pode-se mudar de ideia mais tarde e usar o pino. Isto é especialmente verdadeiro em minha experiência com portões não utilizados, que, como você provavelmente sabe, nunca devem ser deixados flutuando ou desconectados. Ao usar um pull-up você tem um ponto onde pode conectar um sinal e usar o gate sem ter que cortar os traços de cobre.
O conector de 10 pinos e alguns resistores compõem o circuito de programação. Se todos os resistores fossem pull-ups, eu usaria uma rede de resistores, mas, infelizmente, uma é aterrada.
Para programar um CPLD autônomo como este, é necessário um programador dedicado. É fácil dizer isso, pois normalmente tenho vários por aí, mas se você não tiver um, não será muito doloroso entrar no jogo. Um “Altera USB Blaster” aprovado custa US$ 50 e está disponível em lugares como Digikey. Tenho vários clones que comprei no Ebay, incluindo um que é um clone que suporta Altera, Xilinx e Lattice, tudo em um. Existe um projeto e código disponível na Internet para fazer seu próprio clone e tenho na minha lista de possíveis vídeos para fazer um projeto de fazer um clone de programador. Também mostrarei um design de escudo onde a placa principal, Arduino, PIC, etc., pode fazer a programação