Um dispositivo lógico programável complexo (CPLD) é uma peça de hardware essencial em seu repertório. Como o nome sugere, você pode programar esses chips para fornecer as funções lógicas de que precisa. Isso pode ser para substituir chips obsoletos ou simplesmente uma maneira de aprender e experimentar diferentes tecnologias. E que melhor maneira de aprender do que usando um CPLD e colocando-o em prática?
Criei um módulo CPLD para poder conectá-lo a vários dispositivos, incluindo placas de ensaio sem solda, mas fiz uma besteira. Parece que o espaço disponível para conexão na placa de ensaio sem solda é de 1,1 polegadas. Fiz a área de contato com 1 polegada de largura, não deixando espaço para uma fileira de fios em ambos os lados. Hum.
Mas deixe-me voltar um pouco e mostrar mais sobre o que estou fazendo: quero criar uma lógica programável que possa ser montada como um kit, facilmente soldada em casa, programada em um circuito e que funcione com 3,3 ou 5 volts.
Para criar um kit fácil de soldar, utilizei um componente CPLD antigo, também disponível em versões de 3,3 V e 5 V, que mantém sua programação independentemente da fonte de alimentação. A lógica em si é um CI CPLD da série Altera Max, disponível em duas versões, adequadas para placas de circuito impresso com 32 ou 64 macrocélulas. Macrocélulas são os blocos de construção lógicos básicos que são programados usando "termos" lógicos e interconectados com outras macrocélulas por meio de interconexões programáveis.
Analisando o diagrama esquemático, percebe-se que ele não possui muitos componentes: basicamente o CPLD, o circuito de programação em circuito e o oscilador que aciona a lógica do CPLD.
Este componente é chamado de EPM7032 e EPM7064, utilizando um encapsulamento PLCC (Plastic Lead Chip Carrier) de 44 pinos, às vezes chamado de encapsulamento J devido ao formato em J dos terminais. Este encapsulamento pode ser inserido em um soquete de furo passante ou soldado diretamente à placa de circuito impresso (PCB).
Contém um oscilador integrado, permitindo que o CPLD execute operações com estado e crie contadores rápidos por conta própria, sem a necessidade de um clock externo. Caso um clock externo esteja disponível, o clock de alta velocidade do módulo pode ser utilizado para gerar um evento de clock a cada borda de subida ou descida do clock externo, seguindo as diretrizes de CPLD/FPGA. Ou seja, recomenda-se o uso da rede de clock global interna em vez de acionamentos "assíncronos" para a entrada de clock. A tensão de alimentação nominal deste oscilador varia entre 1,8 e 5,5 volts.
Se você assistir ao vídeo, verá que discuto minha preferência pessoal sobre como lidar com o pino "INH" do oscilador; resumindo, depois de verificar se a folha de especificações está de acordo com as regras, costumo deixá-lo flutuando.
Ao lidar com essas funções, os motivos que me vieram à mente incluíram minha aversão a conectar os pinos de entrada diretamente aos trilhos de alimentação (se possível). Ou seja, prefiro usar resistores em série para limitar a corrente durante transientes, mesmo que isso não seja necessário.
Ao longo dos anos, observei alguns problemas na produção (grandes lotes) e, ocasionalmente, coisas como reiniciar o circuito permitiam que os pinos conectados diretamente à linha de alimentação tivessem uma tensão maior do que a do próprio chip, o que é prejudicial. Por fim, conecte o pino à linha de alimentação através de um resistor (seja de alimentação ou de terra), e as pessoas podem mudar de ideia e usar o pino posteriormente. Isso é especialmente verdadeiro na minha experiência com portas não utilizadas; você provavelmente sabe que essas portas nunca devem ser deixadas flutuando ou desconectadas. Usando um resistor pull-up, você pode conectar o sinal e usar o circuito sem cortar as trilhas de cobre.
O conector de 10 pinos e alguns resistores formam o circuito de programação. Se todos os resistores fossem resistores de pull-up, eu usaria uma rede de resistores, mas infelizmente, um deles está aterrado.
Para programar um CPLD independente como esse, é necessário um programador dedicado. É fácil para mim dizer isso, pois geralmente tenho alguns por perto, mas se você não tiver um, não será muito difícil começar. O "Altera USB Blaster" homologado custa US$ 50 e pode ser adquirido na Digikey e em outros lugares. Tenho vários clones do eBay, um dos quais é um clone que suporta Altera, Xilinx e Lattice simultaneamente. Há um projeto e código na internet que podem ser usados para criar seu próprio clone; vou adicioná-lo à minha lista de possíveis vídeos para o projeto de criação de clones de programadores. Também mostrarei um projeto de shield no qual a placa-mãe, Arduino, PIC, etc., podem ser programados.
O software necessário para compilar e programar o CPLD está disponível gratuitamente na Altera, mas este componente antigo requer a versão 9.1. A boa notícia é que essa era a minha versão antiga favorita. Ela tinha um analisador de temporização intuitivo, mas esse recurso foi removido em uma versão posterior.
A placa de circuito impresso tem um design simples de dupla face; desde que a placa caiba, costumo usar cobre para aterramento e, às vezes, para a alimentação. Em alguns casos, a camada de cobre se rompe de forma tão irregular que pode causar problemas ou resultados finais insatisfatórios, então, refazer a camada de cobre é uma solução, mas precisa ser feita com cuidado.
Hoje em dia, muitos (senão a maioria) dos softwares CAD incluem visualizações 3D do produto final, embora a precisão das imagens dependa da precisão dos modelos 3D usados para representar as peças. Aqui você pode ver onde escolhi o modelo 3D para o soquete de 44 pinos, o conector de programação e o oscilador. Aqui estão alguns softwares 3D que gosto de usar:
Muitas empresas também possuem modelos 3D de seus componentes. A Molex é apenas um exemplo de empresa que fez um bom trabalho nessa área.
O erro que cometi não afeta a funcionalidade como a estética, e não é o principal problema, que é a inadequação para uma única placa de ensaio sem solda.
Assim que pensei em compartilhar o projeto com alguém, fiquei imediatamente insatisfeito com os símbolos esquemáticos do CPLD e com a pinagem do conector de 40 pinos, que define seu tamanho total. Peguei o símbolo de um conector de 40 pinos de fileira dupla e o ajustei para um tamanho de 1 polegada, mas a numeração dos pinos não é 1, 2, 3, 4... e sim 1 na lateral, como em um encapsulamento DIP, e 3, 5, 7... exatamente como em conectores de cabo plano. Portanto, o layout não é intuitivo para determinar como conectar o módulo e para solucionar problemas.
Da mesma forma, a atribuição dos pinos do CPLD é um pouco confusa, e usei um conjunto de utilitários que dependem da Linguagem de Descrição de Varredura de Limites (BSDL) para criar símbolos. A maioria dos principais fornecedores disponibiliza arquivos BSDL para seus componentes principais, o que permite criar símbolos e pacotes (semi)automaticamente. Como qualquer automação, ela precisa ser vista como uma ferramenta e pode exigir ajustes adicionais para obter os melhores resultados. Neste caso, deixei que listasse os pinos em ordem alfabética, o que é quase aleatório ao rastrear os pinos na placa. Só posso dizer que estava muito ansioso naquele dia.
Você paga por esses atalhos em algum momento. Quando eu for modificar este módulo, vou determinar e atribuir a ele um posicionamento de pinos que corresponda ao próprio componente, de forma que saber onde colocar a ponta de prova do osciloscópio seja tão fácil quanto dar uma olhada no símbolo do esquema elétrico.
Ao usar placas de circuito impresso, existem outras melhorias que são principalmente estéticas ou úteis. O indicador do pino 1 precisa ser mais comum em vários encapsulamentos, e eu sempre prefiro um ponto de aterramento simples para conectar o terra do osciloscópio ou o fio do multímetro. Eu poderia adicionar isso incluindo um conector de dois pinos para que a alimentação e o terra possam ser aplicados diretamente à placa, em vez de serem conectados aos pinos inferiores.
Antes de modificar a placa de circuito, quero garantir que ela funcione corretamente em termos físicos e estéticos. Depois de ligá-la e confirmar que o oscilador está funcionando corretamente, conectei o programador. Embora a versão de 3,3 V seja mais recente que o software de programação, ele detectou o CPLD e o exibiu como um dispositivo "desconhecido".
Em seguida, criei um contador no Quartus e atribuí números aos pinos. A compilação e o download rápidos, juntamente com a função do contador visualizada no osciloscópio, comprovam a viabilidade do projeto.
O circuito de teste rápido em Verilog é muito simples. O código está listado abaixo. Você pode baixar um arquivo ZIP contendo o esquema e o circuito de teste em Verilog como um projeto do Quartus II (requer a versão 9.1).
Como mencionei, farei uma segunda revisão da placa de circuito impresso para prestar mais atenção aos detalhes necessários ao compartilhar o projeto ou ao solucionar problemas. Como preciso definir a largura do conector inferior para 0,9 polegadas ou menos, posso continuar definindo-a para 0,6 polegadas, que é um encapsulamento DIP "largo" padrão. Isso significa deixar os pinos inferiores salientes para fora da área de contato do soquete CPLD. Eu não faria isso em uma situação de produção, pois a montagem foi feita manualmente na época, mas um dos objetivos era criar um kit para soldagem manual. A desvantagem da soldagem manual é que o oscilador precisa estar em um encapsulamento SMD de montagem em superfície; a versão com componentes de furo passante é muito grande e geralmente não suporta a faixa de tensão desejada.
É possível usar esses módulos para construir um computador simples completo? Acho que preciso adicionar memória.
Haha... sim, depende do tipo de computador. No entanto, microcontroladores/microcomputadores "de verdade" são afetados pela "conexão dos pinos" do módulo, o que significa que você não consegue obter terminologia suficiente do módulo para fazer nada muito útil.
Criei um controlador completo de temporização e modo para câmeras NTSC com tamanho de 64 bits, portanto, nenhum processador é necessário.
O Verilog estrutural e o HDL usados no livro Nand to Tetris são praticamente os mesmos.
Por que usar componentes de furo passante? Soldar alumínio 0805 é fácil! Agora é a hora de todo entusiasta aprender essa habilidade.
Se eu fizer o soquete superior sobrepor os pinos soldados na parte inferior, poderei usar centros de "6" (simulando um chip de 40 pinos) ou diagonal, etc. A soldagem dos componentes na parte inferior será estritamente manual. O soquete superior fica atrás dos pés.
Mas é difícil para iniciantes soldar por baixo. Quando soldo os pinos para a placa de circuito impresso da placa de ensaio (essas placas adaptadoras SMD baratas que você encontra no eBay podem ser usadas para prototipagem), insiro os pinos na placa de ensaio, depois coloco a placa de circuito impresso por cima, e assim consigo soldar facilmente. É muito prático para placas de ensaio. Se você precisar soldar por baixo, fica ainda mais difícil.
Se o CPLD estiver no meio (o que pode facilitar a fiação), ele pode ser instalado na diagonal sem sobreposição, em 4 fileiras, ou o CPLD pode ficar em um dos lados:
Obrigado pela dica de inserir o conector na placa de ensaio antes de soldar. A minha está um pouco instável.
Que tal usar pinos de prototipagem no formato DIP em uma extremidade e o soquete do chip tipo "dongle" na outra? O chip pode ser encaixado na extremidade da placa de prototipagem. O roteamento ficará bem compacto.
|####### ******************** |. Sim, decidi usar a versão "gratuita" da Altera, assim como a Xilinx e a Lattice têm versões "gratuitas". Preciso finalizar o ciclo com o Al Williams para entender o que todo o suporte aberto abrange, o que deve incluir os atributos específicos da série do dispositivo. Dito isso, já fiz muita coisa com a versão gratuita.
Sim, você está mostrando que o CPLD se sobrepõe aos pinos, acredito. Se entendi corretamente, isso pode parecer a revisão 2. Ao projetar para produção (em massa), sempre tenho aversão à etapa de "montagem com solda manual" porque os pinos se sobrepõem (na verdade, os pinos de solda no lado oposto ao componente). (O CPLD já é um componente soldado manualmente), mas este é apenas um pequeno kit, não um projeto voltado para produção. Tenho alguns hábitos difíceis de abandonar na minha idade. 
Acho que uma placa de circuito impresso em formato de T, com CPLD e componentes passivos, com uma parte larga em formato de T, seria muito útil quando fixada na borda da placa de ensaio. Algo semelhante ao Adafruit RasPi T-Cobbler (http://www.adafruit.com/products/2028). Isso aproveitaria ao máximo a área da placa de ensaio.
Infelizmente, a descontinuação limitará severamente seu uso em projetos paralelos, assim como todos aqueles geradores de funções baseados em XR2206 e ICL8038.
Ideia interessante. Gostei desses dois chips. O CPLD não está obsoleto, é apenas uma maneira mais barata de comprá-lo a 3,3 V.
Quanto ao seu "absurdo"... você realmente não criou um novo layout para colocar na placa de ensaio. Basta colocar o fio na placa de ensaio primeiro e depois conectar o cabo coaxial ao fio. Ou, se você puder remover as barras de alimentação e terra de uma delas, use duas placas de ensaio.
Sobre o Altium e o Eagle. Você já considerou o KiCad? Ele não tem nenhuma limitação que faça você preferir o Altium ao Eagle e, por padrão, gera erros de DRC para todos os pinos desconectados. Se você realmente quiser liberar um pino, terá que especificar isso. (Talvez apenas para entrada, não para saída, e isso ainda não foi verificado). Outra grande vantagem é a facilidade de aprendizado. Levei apenas uma tarde e o excelente manual introdutório me ajudou a começar.
Prefiro os componentes SMD (de maior porte) aos componentes de furo passante. São mais fáceis de usar. Não é preciso girar a placa de circuito impresso o tempo todo (alguns erros bobos foram cometidos por causa da espelhagem...). E não é preciso cortar o terminal do resistor. Ao compartilhar um projeto, vários componentes podem ser convenientemente colocados em uma placa de circuito impresso ou em um único componente. Resistor SMD de furo passante. (Isso torna o layout um pouco mais complexo).
Usei o guia "KiCad Getting Started" em formato PDF. A versão antiga que utilizei tem 29 páginas, e a versão mais recente tem 52 páginas. Você pode encontrá-lo em outros tutoriais (incluindo links para vídeos): http://kicad-pcb.org/help/tutorials/
Sei que [Chris Gemmell] do Hackaday e do The Amp Hour fez uma série sobre o KiCad http://kicad-pcb.org/help/tutorials/
O KiCad pode ser útil; vou ver o que acontece na versão 2. Obrigado pelas sugestões. Entradas desconectadas são boas para a verificação de regras de projeto (ERC) e, para conectores e outros elementos que mantêm as entradas ou saídas conectadas, a maioria das mensagens de desconexão do CAD geralmente pode ser evitada.
Faça um teste rápido, inserindo o conector em uma tabela vazia, execute as anotações e a verificação de regras de projeto (DRC). Isso me retornou erros de DRC para cada pino. No entanto, marcar pinos sabidamente desconectados é muito simples.
Configure para passivo. Preciso pesquisar (Editar Componente -> Editar com o Editor de Biblioteca). O editor de biblioteca abre e carrega seu componente em uma janela separada, permitindo que você verifique ou altere qualquer parte do componente. O componente alterado pode ser salvo ou atualizado no seu esquema. Isso facilita muito a alteração de componentes. Não me preocupo muito com a biblioteca. Por exemplo, se você usa o cpld, pode querer atribuir nomes significativos aos pinos. Mais importante ainda, existe uma boa interface para projetar seus próprios componentes.
No verificador de regras elétricas (ERC) do KiCad, pinos "desconectados" são um tipo diferente de pino de "pinos passivos", e todos os pinos "desconectados" gerarão erros. O funcionamento do ERC pode ser facilmente ajustado às suas preferências: Ferramentas -> Verificador de Regras Elétricas -> Opções.
Data da publicação: 18/11/2021





