Un dispositivo lóxico programable complexo (CPLD) é unha peza de hardware esencial no teu repertorio. Como o nome indica, podes programar estes chips para proporcionar as funcións lóxicas que necesitas. Isto pode substituír chips obsoletos ou simplemente unha forma de aprender e probar diferentes tecnoloxías. Que mellor xeito de aprender que usando CPLD e probándoo?
Creei un módulo CPLD para poder conectalo a moitas cousas, incluídas placas de probas sen soldadura, pero equivoqueime. Parece que o espazo de conexión dispoñible na placa de probas sen soldadura é de 1,1 polgadas. Fixen a pegada de 1 polgada de ancho, sen deixar espazo para unha fila de cables a ambos os dous lados. Eh.
Pero permítanme volver atrás e mostrar máis sobre o que estou a facer. Quero crear unha lóxica programable que se poida construír como un kit, se poida soldar facilmente na casa, se poida programar nun circuíto e poida funcionar a 3,3 ou 5 voltios.
Para conseguir un kit doado de soldar, empreguei un compoñente CPLD antigo, que tamén está dispoñible en versións de 3,3 V e 5 V, e que manterá a súa programación independentemente da fonte de alimentación. A lóxica en si é un circuíto integrado CPLD da serie Altera Max, dispoñible en dúas versións, axeitado para placas de circuíto con 32 ou 64 macrocélulas. As macrocélulas son os bloques de construción lóxicos básicos que se programan usando "termos" lóxicos e logo se interconectan con outras macrocélulas mediante interconexións programables.
Observando o esquema, pódese ver que non ten moito contido: basicamente o CPLD, o circuíto de programación en circuíto e o oscilador que impulsa a lóxica CPLD.
Esta peza chámase EPM7032 e EPM7064, e emprega un portachips de plástico de 44 pines (PLCC), ás veces chamado chumbo en J debido á forma de J do chumbo. Este paquete pódese inserir nun socket de orificio pasante ou soldar directamente á placa de circuíto impreso.
Contén un oscilador integrado, polo que o CPLD pode realizar operacións con estado e crear contadores rápidos por si mesmo sen necesidade dun reloxo externo. Se hai un reloxo externo dispoñible, o reloxo de alta velocidade do módulo pódese usar para crear un evento de reloxo en cada flanco ascendente ou descendente do reloxo externo e, ao mesmo tempo, seguir as directrices de CPLD/FPGA; é dicir, deberías usar a rede de reloxos global interna en lugar de que a entrada de reloxo sexa "asíncrona". A tensión de alimentación nominal deste oscilador está entre 1,8 e 5,5 voltios.
Se ves o vídeo, verás que comento as miñas preferencias persoais sobre como manexar o pin "INH" no oscilador; en poucas palabras, despois de comprobar que a folla de especificacións é legal, adoito deixalo flotar.
Ao tratar con tales funcións, as razóns que me viñeron á cabeza incluían a miña aversión a conectar os pines de entrada directamente aos raís de alimentación (se era posible). É dicir, prefiro usar resistencias en serie para limitar a corrente durante os transitorios, mesmo que non fose necesario.
Co paso dos anos, vin algúns problemas na produción (grandes lotes) e, ocasionalmente, cousas como o ciclo de alimentación permitían que os pines conectados directamente ao riel de alimentación tivesen unha voltaxe máis alta que o propio chip, o cal é malo. Finalmente, conecta o pin ao riel de alimentación a través dunha resistencia (xa sexa de alimentación ou de terra) e a xente pode cambiar de opinión e usar o pin máis tarde. Isto é especialmente certo na miña experiencia con portas sen usar; probablemente saibas que estas portas nunca deben deixarse flotando ou desconectadas. Ao usar unha resistencia de pull-up, podes conectar o sinal e usar a porta sen cortar as pistas de cobre.
O conector de 10 pines e unhas cantas resistencias forman o circuíto de programación. Se todas as resistencias fosen resistencias de tracción, usaría unha rede de resistencias, pero por desgraza, unha está conectada a terra.
Para programar un CPLD independente deste tipo, requírese un programador dedicado. Isto é doado de dicir para min, porque normalmente teño uns cantos ao meu carón, pero se non tes un, non será demasiado doloroso entrar no xogo. O "Altera USB Blaster" aprobado véndese por 50 dólares e pódese mercar en Digikey e noutros sitios. Teño varios clons en Ebay, un dos cales é un clon que admite Altera, Xilinx e Lattice ao mesmo tempo. Hai un proxecto e código en Internet que se pode usar para facer o teu propio clon, o listarei na miña lista de posibles vídeos para o proxecto de facer clons de programadores. Tamén mostrarei un deseño de escudo no que se pode programar a placa base, Arduino, PIC, etc.
O software necesario para compilar e programar o CPLD está dispoñible de balde en Altera, pero esta parte antiga require a versión antiga 9.1. A boa noticia é que era a miña versión antiga favorita. Tiña un analizador de tempo intuitivo, pero foi eliminado nunha versión posterior.
A placa de circuíto impreso (PCB) ten un deseño sinxelo de dobre cara, sempre que a placa de circuíto se axuste a ela. Eu adoito usar cobre para a conexión a terra e ás veces para a alimentación. Ás veces, o vertido faise tan irregular que pode causar problemas ou resultados finais descuidados, polo que o vertido de cobre volve ser unha ferramenta, pero hai que xestionalo.
Hoxe en día, moitos paquetes de software CAD (se non a maioría) conteñen vistas en 3D do produto final, aínda que a precisión das imaxes só é tan precisa como os modelos 3D empregados para representar as pezas. Aquí podes ver onde elixín o modelo 3D para o enchufe de 44 pines, o conector de programación e o oscilador. Estes son algúns paquetes 3D que me gusta usar:
Moitas empresas tamén teñen modelos 3D dos seus compoñentes. Molex é só un exemplo dunha empresa que fixo un bo traballo neste eido.
O erro que cometin non afecta á función como a estética, e non é o principal problema, é dicir, non é axeitado para unha única placa de probas sen soldadura.
Unha vez que pensei que podería compartir o deseño con alguén, quedei inmediatamente insatisfeito cos símbolos esquemáticos do CPLD e a distribución de pines do conector de 40 pines, que é a súa superficie total. Collín un símbolo de conector de dobre fila de 40 pines e axusteino a unha superficie de 1 polgada, pero os números de pines non son 1, 2, 3, 4... senón que están numerados 1 no lateral como un paquete DIP 3, 5, 7... igual que os conectores de cable plano. Polo tanto, non é unha superficie intuitiva para determinar como conectar ao módulo e solucionar problemas.
Do mesmo xeito, as asignacións de pines de CPLD son un pouco confusas e empreguei un conxunto de utilidades que se basean na linguaxe de descrición de exploración de límites (BSDL) para crear símbolos. A maioría dos principais provedores teñen ficheiros BSDL dispoñibles para os seus compoñentes principais, o que permite crear símbolos e paquetes de forma (semi)automática. Como calquera automatización, debe verse como unha ferramenta e pode requirir máis axustes para obter os mellores resultados. Neste caso, deixei que listase os pines por orde alfabética, o que é case aleatorio ao rastrexar os pines na placa. Só podo dicir que estaba moi ansioso ese día.
Estes atallos pagaranse nalgún momento no camiño. Cando vaia modificar este módulo, determinarei e colocarei os pines que coincidan coa propia peza, de xeito que saber onde colocar a sonda do osciloscopio sexa tan sinxelo como botar unha ollada ao símbolo do esquema.
Ao usar placas de circuíto, hai outras melloras que son principalmente estéticas ou útiles. O indicador do pin 1 debe ser máis común en varios paquetes, e sempre prefiro un punto de terra simple para conectar a terra do osciloscopio ou o cable VOM. Podería engadir isto engadindo un conector de dous pines para que a alimentación e a terra se poidan aplicar directamente á placa en lugar de estar fixadas aos pines inferiores.
Antes de modificar a placa de circuítos, quero asegurarme de que funciona correctamente en canto a problemas físicos e estéticos. Despois de acender e confirmar que o oscilador funciona correctamente, conectei o programador. Aínda que a versión de 3,3 V é máis recente que o software de programación, detectou o CPLD e mostrouno como un dispositivo "descoñecido".
A continuación, creei un contador en Quartus e asignei números de pines. A rápida compilación e descarga e a función de contador que se ve no osciloscopio verifican que o deseño é viable.
O circuíto de proba rápida en Verilog é moi sinxelo. O código móstrase a continuación. Podes descargar un ficheiro ZIP que contén o esquema e o circuíto de proba de Verilog como un proxecto de Quartus II (require a versión 9.1).
Como xa mencionei, farei unha segunda revisión da placa de circuíto para prestar máis atención aos detalles necesarios ao compartir o deseño ou ao realizar calquera tipo de resolución de problemas. Dado que preciso configurar o ancho do conector inferior en 0,9 polgadas ou menos, podo seguir configurándoo en 0,6 polgadas, que é un encapsulado DIP "ancho" estándar. Facer isto significa deixar que os pines inferiores sobresaian da pegada do zócalo CPLD. Non faría isto nunha situación de produción porque se montou a man naquel momento, pero un dos obxectivos era facer un kit de soldadura manual. O compromiso da soldadura manual é que o oscilador necesita estar nunha carcasa de montaxe superficial SMD, a versión de orificio pasante é moi grande e normalmente non admite o rango de tensión que quero.
É posible usar estes módulos para construír un ordenador sinxelo completo? Creo que preciso engadir memoria.
Jajaja... si, depende do tipo de ordenador. Non obstante, os microcontroladores/microordenadores "reais" vense afectados pola "conexión de pines" do módulo, o que significa que non se pode obter suficiente terminoloxía do módulo para facer nada demasiado útil.
Fixen un controlador de modo e temporización de cámara NTSC completo cun tamaño de 64, polo que non se require procesador.
O Verilog estrutural e o HDL empregados no libro Nand to Tetris son máis ou menos os mesmos.
Por que son as pezas de orificio pasante? Soldar 0805 é doado! Agora é o momento de que calquera mecánico aprenda esta habilidade.
Se fago que o zócalo superior se solape cos pines soldados desde abaixo, entón podo usar "6 centros" (simulando un chip de 40 pines) ou diagonal, etc. Isto será estritamente manual. Os compoñentes para soldar os cables inferiores serán o zócalo superior detrás dos pés.
Pero para os principiantes é difícil soldalo desde abaixo. Cando soldo os conectores para a placa de circuíto impreso da placa de probas (estas placas adaptadoras SMD baratas que podes usar en eBay pódense usar para prototipos), insiro os conectores na placa de probas, logo coloco a placa de probas enriba e logo podo soldalo facilmente. É moi axeitado para placas de probas. Se necesitas soldalo desde abaixo, é aínda máis difícil.
Se o CPLD está no medio (pode ser máis doado de cablear), pódese instalar en diagonal sen solapamento, hai 4 filas ou o CPLD pode estar nun lado:
Grazas polo consello de inserir o conector na placa de probas antes de soldalo. A miña é un pouco inestable.
Que tal os pines da placa de probas en formato DIP nun extremo e o tipo "dongle" do propio socket do chip no outro extremo? O chip pódese colgar no extremo da placa de probas. O cableado será axustado.
|######## ******************** |. Si, decidín usar a versión "gratuíta" de Altera, igual que Xilinx e Lattice teñen versións "gratuítas". Necesito rematar o ciclo con Al Williams para entender o que admite todo o soporte aberto, o que debe incluír os atributos específicos da serie de dispositivos. Dito isto, fixen moito coa versión gratuíta.
Si, estás a demostrar que o CPLD se solapa cos pines, creo. Se o sigo correctamente, isto podería parecerse á revisión 2. Ao deseñar para a produción (en masa), sempre son alérxico ao paso de "montaxe de soldadura a man" porque se solapan (en realidade, os pines de soldadura do lado que non é o compoñente). ) Xa é un compoñente soldado a man) pero este é só un kit pequeno, non un deseño orientado á produción. Simplemente teño algúns hábitos dos que é difícil desfacerse á miña idade. 
Creo que unha placa de circuíto en forma de T con CPLD e compoñentes pasivos cunha parte ancha en forma de T será moi útil cando se colga no bordo da placa de probas. Algo semellante ao Adafruit RasPi T-Cobbler (http://www.adafruit.com/products/2028). Isto fará que a maior parte da área da placa de probas estea dispoñible.
Desafortunadamente, a descontinuación limitará gravemente o seu uso en proxectos paralelos, igual que todos eses xeradores de funcións baseados en XR2206 e ICL8038.
Idea interesante. Gústanme estes dous chips. O CPLD non está desactualizado, é só unha forma máis barata de compralo a 3,3 V.
En canto ás túas "parvadas"... realmente non fixeches un novo deseño para poñelo na placa de probas. Simplemente coloca primeiro o cable na placa de probas e despois coloca o condensador no cable. Ou, se podes desconectar as regletas de alimentación e terra dunha delas, usa dúas placas de probas.
Sobre Altium e Eagle. Consideraches KiCad? Non ten ningunha limitación que che faga preferir Altium a Eagle e, por defecto, xera erros DRC para todos os pines non conectados. Se queres abrir un pin de verdade, tes que dicirllo. (Quizais só para a entrada, non para a saída, e aínda non se comprobou). Outra gran característica é que é moi doado de aprender. Só levou unha tarde e o excelente manual introdutorio axudoume a comezar.
Prefiro o SMD (parte máis grande) por riba do orificio pasante. Son máis fáciles de usar. Non tes que xirar a placa de circuíto impreso todo o tempo. (Cometéronse algúns erros estúpidos por mor da creación de espellos...). E non tes que cortar o cable da resistencia. Ao compartir un deseño, pódense colocar comodamente varios paquetes nunha placa de circuíto impreso ou nunha soa peza. Resistencia SMD TH. (Fai que o deseño sexa un pouco máis complicado).
Usei "KiCad Getting Started" en formato PDF. A versión antiga que empreguei ten 29 páxinas e a última versión ten 52. Podes atopalo noutros tutoriais (incluíndo ligazóns a vídeos): http://kicad-pcb.org/help/tutorials/
Sei que [Chris Gemmell] de Hackaday e The Amp Hour fixo unha serie sobre Kicad http://kicad-pcb.org/help/tutorials/
Kicad pode ser útil, a ver que pasa na Rev 2. Grazas polas túas suxestións. As entradas non conectadas son algo bo para DRC (ERC), e para conectores e outras cousas que os manteñen suaves ou E/S, a maioría das mensaxes de desconexión de CAD normalmente pódense evitar.
Executa unha proba rápida e coloca o conector nunha táboa baleira, executa anotacións e DRC. Deume erros de drc para cada pin. Non obstante, marcar os pines desconectados coñecidos é moi sinxelo.
Definido como pasivo. Teño que buscar (Editar compoñente -> Editar co editor da biblioteca). O editor da biblioteca abre e carga o teu compoñente nunha xanela separada, podes comprobar ou cambiar calquera parte do compoñente. O compoñente modificado pódese gardar ou actualizar no teu esquema. Isto facilita moito o cambio de compoñentes. Non me importa moito a biblioteca. Por exemplo, se usas cpld, queres asignar nomes significativos aos pines. Máis importante aínda, hai unha boa interface para deseñar os teus propios compoñentes.
No ERC de KiCad, os pines "desconectados" son un tipo diferente dos "pinnes pasivos" e todos os pines "desconectados" xerarán erros. O funcionamento do ERC pódese axustar facilmente ás túas propias preferencias: Ferramentas -> Verificador de regras eléctricas -> Opcións.
Data de publicación: 18 de novembro de 2021





