zif-sokkel 14-pinners

En kompleks programmerbar logikkenhet (CPLD) er en viktig del av maskinvaren din. Som navnet antyder, kan du programmere disse brikkene til å gi de logikkfunksjonene du trenger. Dette kan være å erstatte utdaterte brikker, eller bare en måte å lære og prøve forskjellige teknologier på. Finnes det en bedre måte å lære på enn å bruke CPLD og prøve det ut?
Jeg lagde en CPLD-modul for å kunne koble den til mange ting, inkludert loddefrie brytebrett, men jeg rotet det til. Det ser ut til at den tilgjengelige plugin-plassen på det loddefrie brytebrettet er 3,8 cm. Jeg har laget fotavtrykket 2,5 cm bredt, slik at det ikke er plass til en rad med ledninger på begge sider. Eh.
Men la meg gå tilbake og vise mer om hva jeg driver med. Jeg vil lage en programmerbar logikk som kan bygges som et byggesett, enkelt kan loddes hjemme, kan programmeres i en krets, og som kan fungere på 3,3 eller 5 volt.
For å realisere et lettloddesett brukte jeg en gammel CPLD-komponent, som også er tilgjengelig i 3,3 V og 5 V versjoner, og som vil beholde programmeringen uavhengig av strømforsyningen. Selve logikken er en CPLD-IC fra Altera Max-serien, tilgjengelig i to versjoner, egnet for kretskort med 32 eller 64 makroceller. Makroceller er de grunnleggende logiske byggeklossene som programmeres ved hjelp av logiske "termer" og deretter kobles sammen med andre makroceller gjennom programmerbare sammenkoblinger.
Når du ser på skjemaet, kan du se at det ikke har mye innhold: i utgangspunktet CPLD, programmeringskretsen i kretsen og oscillatoren som driver CPLD-logikken.
Denne delen kalles EPM7032 og EPM7064, og bruker en 44-pinners plastledningsbrikkeholder (PLCC), noen ganger kalt J-ledning på grunn av J-formen til ledningen. Denne pakken kan settes inn i en gjennomgående hullsokkel eller loddes direkte til kretskortet.
Inneholder en innebygd oscillator, slik at CPLD-en kan utføre operasjoner tilstandsmessig og opprette raske tellere på egenhånd uten behov for en ekstern klokke. Hvis en ekstern klokke er tilgjengelig, kan høyhastighetsklokken på modulen brukes til å opprette en klokkehendelse på hver stigende eller synkende kant av den eksterne klokken, og fortsatt følge CPLD/FPGA-retningslinjene, det vil si at du virkelig bør bruke det interne globale klokkenettverket i stedet for "asynkrone" drivere for klokkeinngangen. Den nominelle strømforsyningsspenningen til denne oscillatoren er mellom 1,8 og 5,5 volt.
Hvis du ser videoen, vil du se at jeg diskuterer min personlige preferanse for hvordan man skal håndtere "INH"-pinnen på oscillatoren; enkelt sagt, etter at jeg har sjekket at spesifikasjonsarket er lovlig, pleier jeg å la det flyte.
Når jeg jobbet med slike funksjoner, var grunnene som slo meg blant annet at jeg ikke likte å koble inngangspinnene direkte til strømskinnene (hvis mulig). Det vil si at jeg foretrekker å bruke seriemotstander for å begrense strømmen under transienter, selv om det ikke skulle være nødvendig.
Opp gjennom årene har jeg sett noen problemer i produksjonen (store partier), og av og til har ting som strøm- og strømskift ført til at pinnene som er direkte koblet til strømskinnen, har en høyere spenning enn selve brikken, noe som er dårlig. Til slutt kobler du pinnen til strømskinnen via en motstand (enten strøm eller jord), så kan folk ombestemme seg og bruke pinnen senere. Dette gjelder spesielt i min erfaring med ubrukte dører. Du vet sikkert at disse dørene aldri bør stå flytende eller frakoblet. Ved å bruke en pull-up-motstand kan du koble til signalet og bruke porten uten å kutte kobberspor.
10-pinnerskontakten og noen få motstander danner programmeringskretsen. Hvis alle motstandene er pull-up-motstander, ville jeg brukt et motstandsnettverk, men dessverre er én jordet.
For å programmere en slik uavhengig CPLD kreves det en dedikert programmerer. Dette er lett for meg å si, fordi jeg vanligvis har noen få liggende ved siden av meg, men hvis du ikke har en, vil det ikke være for smertefullt å komme inn i spillet. Den godkjente "Altera USB Blaster" selges for $50 og kan kjøpes fra Digikey og andre steder. Jeg har flere kloner fra Ebay, hvorav en er en klon som støtter Altera, Xilinx og Lattice samtidig. Det finnes et prosjekt og kode på Internett som kan brukes til å lage din egen klon, jeg vil liste det opp i listen min over mulige videoer for prosjektet med å lage programmererkloner. Jeg vil også vise et skjolddesign der hovedkortet, Arduino, PIC osv. kan programmeres.
Programvaren som kreves for å kompilere og programmere CPLD-en er fritt tilgjengelig fra Altera, men denne gamle delen krever den gamle versjonen 9.1. Den gode nyheten er at det var min favorittversjon. Den hadde en intuitiv tidsanalysator, men den ble fjernet i en senere versjon.
Kretskortet har en enkel dobbeltsidig design, så lenge kretskortet passer. Jeg pleier å bruke kobber til jording og noen ganger strømforsyning. Noen ganger blir støpingen så ødelagt at det faktisk kan forårsake problemer eller slurvete sluttresultater, så kobberstøping er igjen et verktøy, men det må håndteres.
I dag inneholder mange (om ikke de fleste) CAD-programvarepakker 3D-visninger av det ferdige produktet, selv om nøyaktigheten til bildene bare er så nøyaktig som 3D-modellene som brukes til å representere delene. Her kan du se hvor jeg valgte 3D-modellen for 44-pinners sokkel, programmeringskontakt og oscillator. Her er noen 3D-pakker jeg liker å bruke:
Mange selskaper har også 3D-modeller av komponentene sine. Molex er bare ett eksempel på et selskap som har gjort en god jobb på dette området.
Feilen jeg gjorde påvirker ikke funksjonen som estetikken, og det er ikke hovedproblemet, det vil si at det ikke er egnet for et enkelt loddefritt brødbrett.
Da jeg tenkte at jeg kanskje kunne dele designet med noen, ble jeg umiddelbart misfornøyd med CPLD-ens skjematiske symboler og pinout-en til 40-pinners kontakten, som er dens totale størrelse. Jeg tok et 40-pinners dobbeltrads kontaktsymbol og justerte det til et 1-tommers størrelse, men pinnumrene er ikke 1, 2, 3, 4 ... men nummerert 1 på siden som en DIP-pakke 3, 5, 7 ... akkurat som båndkabelkontakter. Derfor er det et ikke-intuitivt størrelsesforhold for å bestemme hvordan man kobler til modulen og feilsøker.
På samme måte er CPLD-pintildelingene litt forvirrende, og jeg brukte et sett med verktøy som er avhengige av Boundary Scan Description Language (BSDL) for å lage symboler. De fleste større leverandører har BSDL-filer tilgjengelig for sine vanlige komponenter, som lar deg (semi-)automatisk lage symboler og pakker. Som all automatisering må det sees på som et verktøy og kan kreve ytterligere justering for best resultat. I dette tilfellet lot jeg det liste pinnene i alfabetisk rekkefølge, noe som er nesten tilfeldig når man sporer pinnene på brettet. Jeg kan bare si at jeg var veldig engstelig den dagen.
Du betaler for disse snarveiene en gang underveis. Når jeg skal modifisere denne modulen, vil jeg bestemme og gi den en pinplassering som matcher selve delen, slik at det å vite hvor du skal plassere oscilloskopproben er like enkelt som å se på det skjematiske symbolet.
Når man bruker kretskort, finnes det andre forbedringer som hovedsakelig er estetiske eller nyttige. Pinne 1-indikatoren bør være mer vanlig i flere pakker, og jeg foretrekker alltid et enkelt jordpunkt for å koble til oscilloskopets jord eller VOM-ledning. Jeg kan legge til dette ved å legge til en topinners kontakt slik at strøm og jord kan påføres direkte på kortet i stedet for å være klemt til de nederste pinnene.
Før jeg modifiserer kretskortet, vil jeg forsikre meg om at det fungerer som det skal, både fysisk og estetisk. Etter å ha slått på strømmen og bekreftet at oscillatoren fungerer som den skal, koblet jeg til programmereren. Selv om 3,3 V-versjonen er nyere enn programmeringsprogramvaren, oppdaget den CPLD-en og viste den som en "ukjent" enhet.
Deretter opprettet jeg en teller i Quartus og tilordnet PIN-numre. Den raske kompileringen og nedlastingen og tellerfunksjonen som oscilloskopet ser, bekrefter at designet er gjennomførbart.
Hurtigtestkretsen i Verilog er veldig enkel. Koden er listet opp nedenfor. Du kan laste ned en ZIP-fil som inneholder skjemaet og Verilog-testkretsen som et Quartus II-prosjekt (krever versjon 9.1).
Som nevnt skal jeg gjøre en andre revisjon av kretskortet for å legge mer vekt på detaljene som trengs når jeg deler designet eller utfører en rekke feilsøkinger. Siden jeg må sette bredden på den nederste kontakten til 0,9 tommer eller mindre, kan jeg fortsette å sette den til 0,6 tommer, som er en standard "bred" DIP-pakke. Å gjøre dette betyr å la de nederste pinnene stikke ut fra CPLD-sokkelens fotavtrykk. Jeg ville ikke gjort dette i en produksjonssituasjon fordi det ble satt sammen for hånd på den tiden, men et av målene var å lage et håndloddesett. Kompromisset med håndlodding er at oscillatoren må være i et SMD-overflatemonteringshus, mens versjonen med gjennomgående hull er veldig stor og støtter vanligvis ikke spenningsområdet jeg ønsker.
Er det mulig å bruke disse modulene til å bygge en komplett, enkel datamaskin? Jeg tror jeg må legge til minne.
Lol ... ja, det kommer an på hva slags datamaskin det er snakk om. Imidlertid påvirkes "ekte" mikrokontrollere/mikrodatamaskiner av modulens "pin-binding", noe som betyr at du ikke får nok terminologi fra modulen til å gjøre noe særlig nyttig.
Jeg lagde en komplett NTSC-kameratiming- og moduskontroller med en størrelse på 64, så ingen prosessor er nødvendig.
Den strukturelle verilogen og HDL-en som brukes i boken Nand til Tetris er mer eller mindre de samme.
Hvorfor er deler gjennomgående hull? Sveising av 0805 er enkelt! Nå er det på tide at alle mekkere lærer seg denne ferdigheten.
Hvis jeg får den øverste sokkelen til å overlappe pinnene som er loddet nedenfra, kan jeg bruke "6 sentre" (simulerer en 40-pinners brikke) eller diagonal, osv. Dette vil være strengt tatt manuell lodding av komponenter for lodding av de nederste ledningene. Den øverste sokkelen bak føttene.
Men det er vanskelig for nybegynnere å lodde det nedenfra. Når jeg lodder headere til kretskortet på breadboardet (disse billige SMD-adapterkortene som du kan bruke på eBay kan brukes til prototyping), setter jeg headerne inn i breadboardet, setter deretter kretskortet på det, og så kan jeg lodde enkelt. Det er veldig godt egnet for breadboards. Hvis du trenger å lodde det nedenfra, er det enda vanskeligere.
Hvis CPLD-en er i midten (kan være enklere å koble), kan den installeres diagonalt uten overlapping, det er 4 rader, eller CPLD-en kan være på én side:
Takk for tipset om å sette kontakten inn i koblingsbrettet før lodding. Min er litt ustabil.
Hva med DIP-formaterte breadboard-pinner i den ene enden og "dongle"-typen til selve chip-sokkelen i den andre enden? Brikken kan henges på enden av breadboardet. Rutingen vil være stram.
|####### ******************** |. Ja, jeg bestemte meg for å bruke Alteras «gratis»-versjon, akkurat som Xilinx og Lattice har «gratis»-versjoner. Jeg må avslutte syklusen med Al Williams for å forstå hva all åpen støtte støtter, som må inkludere de spesifikke attributtene til enhetsserien. Når det er sagt, har jeg gjort mye med gratisversjonen.
Ja, du viser at CPLD-en overlapper med pinnene, tror jeg. Hvis jeg følger det riktig, kan dette se ut som rev. 2. Når jeg designer for (masse)produksjon, er jeg alltid allergisk mot trinnet med «håndlodding» fordi de overlapper (faktisk loddepinnene på ikke-komponentsiden). ) er allerede en håndloddet komponent), men dette er bare et lite sett, ikke et produksjonsorientert design. Jeg har bare noen uvaner som er vanskelige å bli kvitt i min alder. :)
Jeg tror et T-formet kretskort med CPLD og passive komponenter med en bred T-formet del vil være veldig nyttig når det henges på kanten av breadboardet. Noe som ligner på Adafruit RasPi T-Cobbler (http://www.adafruit.com/products/2028). Dette vil gjøre mesteparten av breadboard-området tilgjengelig.
Dessverre vil avviklingen begrense bruken i sideprosjekter sterkt, akkurat som alle de funksjonsgeneratorene basert på XR2206 og ICL8038.
Interessant idé. Jeg liker disse to brikkene. CPLD er ikke utdatert, det er bare en billigere måte å kjøpe den på til 3,3 V.
Angående "tullet" ditt ... du lagde egentlig ikke et nytt oppsett for å legge det på koblingsbrettet. Bare legg ledningen på koblingsbrettet først, og legg deretter cpld-en på ledningen. Eller, hvis du kan trekke av strøm- og jordlistene på ett av dem, bruk to koblingsbrett.
Angående Altium og Eagle. Har du vurdert KiCad? Den har ingen begrensninger som at du foretrekker Altium fremfor Eagle, og genererer som standard DRC-feil for alle utilkoblede pinner. Hvis du virkelig vil åpne en pin, må du si det til den. (Kanskje bare for input, ikke for output, og det har ikke blitt sjekket ennå). En annen flott funksjon er at den er veldig enkel å lære. Det tok bare en ettermiddag, og den utmerkede introduksjonsmanualen fikk meg i gang.
Jeg foretrekker (den større delen) SMD-en over det gjennomgående hullet. De er enklere å bruke. Du trenger ikke å snu kretskortet hele tiden. (Noen dumme feil ble gjort på grunn av speiling...). Og du trenger ikke å kutte ledningen til motstanden. Når du deler et design, kan flere pakker enkelt plasseres på et kretskort eller en enkelt del. SMD-motstand TH. (Det gjør oppsettet litt mer komplisert).
Jeg brukte «KiCad Getting Started» i pdf-format. Den gamle versjonen jeg brukte er på 29 sider, og den nyeste versjonen har 52 sider. Du finner den i andre veiledninger (inkludert videolenker): http://kicad-pcb.org/help/tutorials/
Jeg vet at [Chris Gemmell] fra Hackaday og The Amp Hour lagde en serie om Kicad http://kicad-pcb.org/help/tutorials/
Kicad kan være nyttig, la meg se hva som skjer i Rev 2. Takk for forslagene dine. Utilkoblede innganger er bra for DRC (ERC), og for kontakter og andre ting som holder dem myke eller IO, kan de fleste CAD-frakoblingsmeldinger vanligvis unngås.
Kjør en rask test og legg kontakten i en tom tabell, kjør annoteringer og DRC. Det ga meg drc-feil for hver pin. Det er imidlertid veldig enkelt å markere kjente, utilkoblede pinner.
Sett til passiv. Jeg må søke (Rediger komponent -> Rediger med bibliotekredigering). Bibliotekredigeringen åpnes og laster inn komponenten din i et eget vindu, du kan sjekke eller endre hvilken som helst del av komponenten. Den endrede komponenten kan lagres eller oppdateres i skjemaet ditt. Dette gjør det veldig enkelt å endre komponenter. Jeg bryr meg ikke så mye om biblioteket. Hvis du for eksempel bruker cpld, vil du tilordne meningsfulle navn til pinnene. Enda viktigere er det at det er et godt grensesnitt for å designe dine egne komponenter.
I KiCads ERC er "ikke-tilkoblede" pinner en annen type pin enn "passive pinner", og alle "ikke-tilkoblede" pinner vil generere feil. Måten ERC fungerer på kan enkelt justeres etter dine egne preferanser: Verktøy -> Elektrisk regelkontroll -> Alternativer.


Publisert: 18. november 2021