Come Creare Rapidamente Simboli Schematici a Elevato Numero di Pin

Mark Harris
|  Creato: December 3, 2021
Come Creare Rapidamente Simboli Schematici a Elevato Numero di Pin

creare rapidamente simboli schematici a elevato numero di pin

La mia libreria open-source di componenti di Altium contiene centinaia di simboli schematici, con oltre 100.000 componenti pronti per essere utilizzati. Molti rimangono sorpresi quando dico loro che bastano pochi minuti per creare un simbolo schematico usando Altium, anche per componenti con un elevato numero di pin. In questo articolo, voglio mostrare come sfruttare al meglio alcuni degli strumenti di Altium per creare rapidamente simboli schematici.

Prerequisiti

Prima d’iniziare, avrai bisogno di un paio di cose:

  • Un buon foglio dati o un comune file di testo per la definizione dei pin. In questo articolo esamineremo una scheda tecnica in formato PDF.
  • Una minima conoscenza delle espressioni regolari. Preferisco lavorare con il .NET in quanto offre alcune funzionalità davvero interessanti.
  • Un'applicazione per i fogli di calcolo. Userò Google Sheets, ma Microsoft Excel o OpenOffice funzionano altrettanto bene.

Inizializzazione del Simbolo

Per trovare una parte da utilizzare per questo articolo, sono andato su Digi-Key e ho cercato nella categoria Microcontrollori embedded, alla ricerca di un microcontrollore serie ARM Cortex M con FLASH integrato e più di 100 pin di GPIO. Ho quindi ordinato i dispositivi in base alla quantità disponibile e il vincitore è stato un NXP MK64FN1M0VLQ12. Sembra un bel microcontrollore in un package LQFP-144. Copiare e incollare le descrizioni dei pin per ciascun pin di questo package richiederebbe molto tempo, sarebbe noioso e suscettibile a errori, quindi evitiamolo!

Osservando il foglio dati per questo componente, la tabella dei pin out (5.1, pagina 68) non è l'ideale per questo processo, ma va bene così: i fogli dati sono raramente la soluzione ideale per la creazione di simboli.

Prima di entrare nei dettagli della creazione di questo componente, ho esaminato il foglio dati per assicurarmi di non saltare alcun passaggio durante la stesura di quest'articolo. Ho impiegato poco più di 7 minuti per creare questo componente con 144 pin, il che è un po' lento per i miei standard. Se i dati nel foglio dati non avessero avuto bisogno di così tanto riordino, sarebbero bastati circa 4-5 minuti. Tuttavia, aver già creato quasi 500 simboli come questo mi ha permesso di portare a termine il lavoro un po' più velocemente!

La prima cosa che faremo in Altium è creare una nuova libreria schematica navigando su File -> New -> Library -> Schematic Library.

Schermata Altium: creare simboli schematici ad alto numero di pin


Quindi posizioniamo un rettangolo nel nuovo componente. Posizionare subito il rettangolo per il corpo del componente ci eviterà di doverlo spostare dietro ai pin in seguito, risparmiando un po' di tempo. La dimensione del rettangolo è indifferente. Quello che ho creato sarà troppo piccolo per il componente finale!

Schermata Altium: creare simboli schematici ad alto numero di pin

Dopo il rettangolo, creeremo il nostro primo pin, che fungerà da modello per tutti gli altri.

Schermata Altium: creare simboli schematici ad alto numero di pin

È buona prassi impostare le proprietà del pin in modo che sia facile da utilizzare in seguito. Io, per esempio, ho semplicemente impostato il numero del pin (Designator) come 1 e il nome come "P1". La parte numerica del nome può essere incrementata automaticamente, mentre la lettera P ci ricorderà che questo è il nome del pin.

Schermata Altium: creare simboli schematici ad alto numero di pin

Dovresti, a questo punto, aver ottenuto qualcosa di simile a questo:

Schermata Altium: creare simboli schematici ad alto numero di pin

Ci mancano però ancora 143 pin, quindi diamoci da fare. Per prima cosa, copiamo il pin.

Schermata Altium: creare simboli schematici ad alto numero di pin

Quindi useremo la potente funzione Incolla Array (Paste Array) dal menu di modifica (Edit menu).

Schermata Altium: creare simboli schematici ad alto numero di pin

Dobbiamo aggiungere 143 pin, quindi inseriamo 143 per il conteggio degli elementi (Item Count), assicurandoci che la spaziatura verticale sia impostata su -100mil. Questo genererà pin verso il basso a partire dal punto scelto con il click del mouse, anziché verso l’alto.

Visto l'elevato numero di pin, suggerisco di ridurre lo zoom e cliccare in un punto a circa 7000 mil di altezza dal simbolo schematico!

Schermata Altium: creare simboli schematici ad alto numero di pin

Ho organizzato i pin in colonne, ma ora abbiamo 144 pin da usare!

Schermata Altium: creare simboli schematici ad alto numero di pin

Impostazione dei Dati dei Pin

Aver aggiunto tutti questi pin non è molto utile per quanto riguarda il simbolo schematico, poiché dobbiamo ancora dare loro un nome. Per fare questo, andremo alla scheda tecnica.

Quindi selezioniamo la tabella dei pin e facciamo copia incolla di tutti i dati in un documento notepad++. Il risultato è sicuramente pessimo a vedersi, ma per ora non ce ne preoccupiamo troppo.

Scheda tecnica componente


Come ho detto prima, questo non è ideale come foglio dati, quindi prima di proseguire voglio riordinare i dati copiati. Il problema principale è che molte delle funzioni sono state suddivise su più righe e hanno un simbolo “/” o “_” nel nome. Avere a disposizione dati ordinati ci semplificherà il lavoro in seguito.

Userò la funzionalità Trova e sostituisci (Find and Replace) per cercare _\r\n, e sostituirli con _. La modalità di ricerca avanzata troverà i nomi in cui _ divide la funzione in due righe e la sostituirà con un semplice _. Clicchiamo quindi su Sostituisci tutto (Replace All) per apportare tutte le modifiche in un colpo solo.

Creare simboli schematici ad alto numero di pin


Facciamo lo stesso per /\r\n, sostituendolo solo con /.

TIl foglio dati include anche molte colonne con la parola "DISABLED", quindi cerchiamo "DISABLED " (seguito da uno spazio) e lo sostituiamo con niente.

Creare una Tabella per Pin e Descrizioni

Ora passiamo alle espressioni regolari per ordinare questo pasticcio di lettere e numeri in una bella tabella di numeri pin e descrizioni. Siamo fortunati ad avere il package su cui stiamo lavorando posizionato nella prima colonna della tabella dei pin. Questo rende l'espressione regolare un po' più semplice.

Userò la pagina di prova delle espressioni regolari di RegexStorm per elaborare l'elenco dei pin. Puoi fare affidamento sulla loro guida alle espressioni regolari se hai bisogno di rispolverare la sintassi.

Pulizia dei Dati Avanzata

Prima di abbinare i dati, sarebbe bello avere tutti gli elementi di descrizione dei pin su una singola riga, anziché separati su più righe come sono attualmente. Possiamo usare un semplice pattern su RegexStorm per sistemare il testo su cui stiamo lavorando.

Userò il pattern \r\n(\D) per trovare tutte le nuove righe che non sono seguite da una cifra (\D è la sequenza regex per 'non una cifra'). La 'non cifra' abbinata deve rientrare in un gruppo, cosa che avviene attraverso l'uso delle parentesi, quindi possiamo sostituire ciò che viene abbinato solo con quel carattere. La nostra sostituzione è quindi $1, poiché $1 il primo gruppo abbinato.

Dopo aver cliccato su Sostituisci (Replace), il tab Contesto (Context) mostrerà i dati di input fissi; possiamo ora copiarli nell'input per eseguire ulteriori operazioni.

espressioni regolari su RegexStorm

Ma non abbiamo ancora finito. Sono molti, 127 per la precisione, i casi in cui il nome del pin, la funzione predefinita e la funzione ALT0 sono identici. Non vogliamo creare un pin 5 VDD VDD VDD, non è vero? Pin 5 VDD può bastare.

creare simboli schematici ad alto numero di pin

Possiamo utilizzare un'espressione regolare per ripulire i nomi duplicati, usando il pattern:
\b([A-Z\d/_]{3,})\s*\1\s*\1? *

Questo troverà un delimitatore di parola con \b e individuerà corrispondenze in un gruppo di tre o più lettere maiuscole, cifre (\d), barre o caratteri di sottolineatura con ([A-Z\d/_]). Quindi cercherà un numero facoltativo di caratteri di spaziatura con \s* seguito dallo stesso del primo gruppo (\1), un altro spazio opzionale e infine, facoltativamente (il ?) il primo gruppo di nuovo seguito da un numero qualsiasi di spazi. Non troverà quindi pin ripetuti come EE EE, ma troverà 2-3 ripetizioni di fila come VDD VDD VDD.

Possiamo quindi sostituire nuovamente gli elementi trovati con ‘$1 ‘, questa volta con uno spazio dopo $1. Infine, possiamo copiare tutto nella casella di Input.

creare simboli schematici ad alto numero di pin


Pattern di Ricerca

Stiamo cercando d’individuare un pattern capace di trovare questo:
115 C7 C6 82 PTC10 ADC1_SE6b
ADC1_SE6b
PTC10 I2C1_SCL FTM3_CH6 I2S0_RX_FS
FB_AD5

Oppure

89 F10 D11 — PTB8 PTB8 UART3_RTS_b
FB_AD21

La principale differenza tra i due, per quanto ci riguarda, è il carattere '—' presente dove il package non ha il pin.

La mia espressione di ricerca è:
(?:(?<Pin>\d{1,3})\s+(?:[A-Z\d—]{1,2}\s+){2}(?:[\d—]{1,3}\s+))

Questo funziona bene nella vista tabella. Ho adesso una tabella per i pin e sono riuscito ad abbinare l'intera sezione del numero di pin dei dati del foglio. Questo vuol dire che qualunque altra informazione corrisponderà alla descrizione.

espressioni regolari su RegexStorm

Cosa Significa Questa Espressione?!

Uso le espressioni regolari da circa 20 anni, da quando programmavo in PERL ai tempi del liceo, ecco perché sono così a mio agio nell'usarle. Analizziamo questa prima ricerca per rispolverare un po' le nostre conoscenze sulle espressioni regolari.

(?:\b(?<Pin>\d{1,3})\s+(?:[A-Z\d—]{1,3}\s+){2}(?:[\d—]{1,3}\s+))

(?:) indica un gruppo non di cattura che mi permette di raggruppare tutto senza che questo finisca nella Vista tabella su RegexStorm. Poter creare gruppi è importante per quello che vogliamo fare!

\b è un delimitatore di parola, ad esempio una nuova riga, uno spazio, una tabulazione, ecc. Questo impedisce a qualcosa come:
LPTMR0_ALT1
74 L12 J11 52 

di abbinare l'1 alla fine di ALT1, impedendo la corrispondenza dei primi 3 designatori.

(?<Pin>\d{1,3}) cattura un gruppo denominato Pin con ?<Pin>. Non tutti i motori di espressioni regolari supportano i gruppi denominati, il che è uno dei motivi per cui scelgo di utilizzare RegexStorm. Quel gruppo avrà da 1 a 3 ({1,3}) cifre (\d). Il nostro numero di pin avrà sempre tra 1 e 3 cifre (da 1 a 144), quindi questo sarà sufficiente per trovarli.

\s+ Trova qualsiasi gruppo di uno o più caratteri di spaziatura consecutivi. Se i dati che abbiamo copiato dal foglio dati hanno uno spazio, una tabulazione o un'interruzione di riga tra i pin, questo pattern permetterà di trovarli, anche se ci sono più spazi o tabulazioni.

Successivamente, vogliamo trovare i due designatori di pin del package BGA. L’espressione (?:[A-Z\d—]{1,3}\s+){2} fa proprio questo. Il quantificatore ({2}) posto alla fine indica che cerchiamo due elementi del gruppo non catturato. Quel gruppo sta trovando da uno a tre di qualsiasi cosa contenuta nelle parentesi quadre. Le parentesi quadre nelle espressioni regolari corrispondono a "qualsiasi cosa qui." Nel nostro caso, utilizziamo tutte le lettere maiuscole (A-Z), tutti i numeri (\d), e il trattino lungo (—) usato nel foglio dati per esprimere che la funzione non è in quell'opzione del package. Infine, abbiamo uno o più spazi proprio come dopo la corrispondenza pin.

(?:[\d—]{1,3}\s+) corrisponde al nostro numero di pin finale. Fondamentalmente, è lo stesso pattern usato nella corrispondenza Pin, ma dobbiamo includere anche il trattino lungo, nel caso in cui tale funzionalità non sia inclusa nel package.

Se non hai esperienza con le espressioni regolari, non preoccuparti, bastano pochi anni per cominciare a capirci qualcosa…

Trovare la Descrizione dei pin

Per individuare la descrizione dei pin, possiamo elaborare sulla sintassi corrente, in modo che tutto sia contenuto in un gruppo. Questo è ora il mio pattern:
(?:\b(?<Pin>\d{1,3})\s+(?:[A-Z\d—]{1,3}\s+){2}(?:[\d—]{1,3}\s+)(?<Desc>[\w\d_/\s]+?\b(?=\d{1,3}\b)))

Il pattern aggiunto per individuare solo la parte della descrizione è:
(?<Desc>[\w\d_/\s]+?\b(?=\d{1,3}\b))

espressioni regolari su RegexStorm

Fatto questo, avremo ottenuto una tabella con 144 corrispondenze e dati sufficientemente ben organizzati. Ora possiamo copiare e incollare il tutto sul foglio di calcolo.

Impostare i Dati dei Pin

Tornando ad Altium Designer, possiamo ora inserire alcuni dati nell'array di pin che abbiamo precedentemente creato. Selezioniamo tutti i pin (ma non il rettangolo) nella finestra dei simboli schematici.

Apriamo il pannello SCHLIB List facendo clic sul pulsante dei pannelli nella finestra in basso a destra di Altium.

Schermata Altium: creare simboli schematici ad alto numero di pin

Tutti i pin dovrebbero essere selezionati nel simbolo schematico.

Schermata Altium: creare simboli schematici ad alto numero di pin

Cliccando con il pulsante destro del mouse in un punto qualsiasi della griglia, è possibile scegliere di passare alla modalità di modifica (Edit mode).

Schermata Altium: creare simboli schematici ad alto numero di pin

Ora possiamo cliccare sulla griglia e premere Ctrl-A, o fare clic con il pulsante destro del mouse e scegliere Seleziona tutto (Select All).

Schermata Altium: creare simboli schematici ad alto numero di pin

Quindi copiamo e incolliamo il tutto nel foglio di calcolo, un po' più in basso rispetto alla tabella incollata da RegexStorm.

creare simboli schematici ad alto numero di pin

Ora che abbiamo entrambe le tabelle sullo stesso foglio di calcolo, possiamo copiare la colonna del numero di pin dai dati copiati da RegexStorm, e sostituirla ai numeri di pin di Altium Designer, quindi fare lo stesso per la colonna delle descrizioni. Questo simbolo presenta tutti i pin per il package su cui stiamo lavorando in ordine, ma potrebbe non essere sempre così. La soluzione migliore è quindi quella di sostituire sempre entrambe le colonne, in modo da non ritrovarsi con descrizioni e nomi di pin non corrispondenti.

creare simboli schematici ad alto numero di pin

Prima di riportare questi dati su Altium Designer®, voglio sistemare velocemente la colonna dei nomi, sostituendo eventuali spazi con / per adattarla agli standard della mia libreria. Per fare questo, seleziono l'intera colonna nella tabella Altium Designer, quindi utilizzo lo strumento Trova e sostituisci (Find and Replace) per cercare eventuali spazi e sostituirli con una barra. Scelgo "Sostituisci tutto" (Replace All) dopo aver verificato che la ricerca sia impostata sull'intervallo specifico delle celle selezionate.

creare simboli schematici ad alto numero di pin


Abbiamo finalmente a disposizione una tabella con tutti i nomi dei pin e i designatori pronti per tornare su Altium Designer. Sarà sufficiente selezionare l'intera tabella e incollarla nuovamente nella SCHLIB List. Questo sovrascriverà l'intera tabella, creando un disordine infernale nell'editor dei simboli schematici.

creare simboli schematici ad alto numero di pin

Ma la cosa importante è aver finalmente riportato i dati all'interno di Altium Designer, e siamo riusciti a farlo molto più velocemente che non copiando i dati un pin alla volta.

Raggruppare i Pin Rapidamente

Mi piace raggruppare tutti i pin nel foglio dei simboli schematici, in modo da poter decidere se mantenere il simbolo come una parte singola, o se invece creare un simbolo multiparte. Per questo componente da 144 pin dovrò per forza creare un simbolo multiparte, ma raggrupperò comunque tutto insieme per poter copiare e incollare i pin in ciascuna parte ordinatamente.

Possiamo utilizzare il pannello SCHLIB Filter per selezionare gruppi specifici di pin. Non esiste uno strumento specifico per organizzare rapidamente i pin insieme, ma dopo aver selezionato tutti i pin, è possibile trascinarli in un'area libera del foglio e ordinarli manualmente.

Per trovare tutti i pin come VSS o VSSA, posso usare il filtro: Name LIKE 'VS*' che eseguirà una corrispondenza con caratteri jolly per selezionare tutti i pin desiderati.

Schermata Altium: creare simboli schematici ad alto numero di pin

È possibile ripetere questa operazione con filtri come Name LIKE 'VD*' per raggruppare gli altri pin di alimentazione. I pin della porta su questo componente iniziano tutti con PTA/PTB/PTC ecc, è quindi possibile utilizzare lo stesso tipo di filtro per individuare tutti i pin della porta A e così via.

Schermata Altium: creare simboli schematici ad alto numero di pin

Dopo un po' di lavoro, ho adesso tutti i miei pin raggruppati.

Schermata Altium: creare simboli schematici ad alto numero di pin
Voglio che tutti i pin ACC, DAC, tensione, massa, USB e cristallo siano sulla parte principale del componente, quindi li ho spostati nel rettangolo creato all'inizio, ridimensionandolo secondo necessità. Sono solito mettere sempre i miei pin VDD in alto a sinistra e i pin VSS/GND in basso a sinistra, nonché raggruppare i pin per funzione piuttosto che secondo il loro posizionamento sul simbolo. Trovo che questo renda il simbolo più facilmente utilizzabile in uno schematico, molto più che non provare a copiare il suo layout fisico.

Schermata Altium: creare simboli schematici ad alto numero di pin

Aggiungere Parti

Ora che la parte principale è terminata, dobbiamo aggiungere le sottoparti al simbolo schematico. Possiamo farlo navigando su Tools -> New Part.

Schermata Altium: creare simboli schematici ad alto numero di pin

La nuova parte verrà visualizzata nel pannello SCH Library, annidata sotto il componente principale.

Schermata Altium: creare simboli schematici ad alto numero di pin

Una volta create le sottoparti, sarà sufficiente creare un rettangolo in ciascuna sottoparte e quindi tagliare e incollare i pin dalla parte principale. Dividere un enorme microcontrollore in parti logiche consente agli ingegneri di utilizzare il simbolo per creare uno schema più pulito e ordinato, rispetto all'utilizzo di un foglio dominato da un enorme simbolo schematico singolo.

Schermata Altium: creare simboli schematici ad alto numero di pin


Ulteriori Opzioni di Riordino

Il simbolo creato potrebbe essere già perfetto così, ma mi piace esagerare. Ho stilato alcune espressioni regolari su cui possiamo fare affidamento per riordinare ulteriormente i nomi o aggiungere barre basse attive alle funzioni che iniziano con n_ o finiscono con _b presenti sulla parte su cui abbiamo lavorato.

Con questi pattern a portata di mano, è possibile ottimizzare i nomi dei simboli in pochi minuti. È anche possibile utilizzarli come base per creare pattern di riordino personalizzati.

Negli screenshot precedenti, ho rimosso manualmente le funzioni duplicate sui pin, ma è possibile automatizzare il processo se i duplicati sono troppi per essere efficientemente eliminati a mano.

Innanzitutto, rimuoviamo i duplicati della funzione iniziale, come ‘PTA12’. Usiamo l'espressione regolare:
^([A-Z\d/_]{3,})/(?<inbetween>(?:(?:[^/])+/){1,5})\1/?
Con l 'opzione Options -> Multiline option. Questo tratterà ogni riga nel campo di input come un'entità propria perché il carattere ^ corrisponda all'inizio della riga.
Sostituiamo le corrispondenze trovate con:
$1/${inbetween}

Quindi sostituiamo qualsiasi funzione dopo la prima funzione utilizzando l'espressione regolare:
/([A-Z\d/_]{3,})/(?<inbetween>(?:(?:[^/])+/){1,5})\1/?
È possibile disattivare l'opzione multilinea, ma lasciarla attiva non influenzerà il funzionamento dell'espressione. Quindi sostituiamo le corrispondenze con:
/$1/${inbetween}

Continuiamo a sostituire le corrispondenze finché non ne troviamo più. Ho dovuto ripetere l'operazione tre volte per individuare tutti i duplicati.

Sono due le espressioni utilizzate per sostituire i duplicati, poiché l'espressione deve sapere da dove iniziare a cercare una corrispondenza. Non possiamo sostituire /RMII0_RXER/MII0_RXER/ con /RMII0_RXER/, dal momento che la seconda funzione è uguale alla prima tranne che per la R. Avendo due funzioni, possiamo usare / come carattere iniziale, o come inizio della riga.

L'aggiunta di barre basse attive al nome di una funzione è più in linea con gli standard di Altium Designer rispetto all'utilizzo di n_ o _b. È possibile farlo aggiungendo un \ dopo ogni carattere, utilizzando un'espressione regolare con i gruppi lookahead.

Per le funzioni che terminano con _b, usiamo l'espressione:
([^/](?=[A-Z\d_]*_b[/\r]))
e sostituiamo tutte le corrispondenze con: $1\

Quindi usiamo l'espressione:
\_b
e sostituiamo tutte le corrispondenze con:  \

Per le funzioni che iniziano con n_, è possibile usare l'espressione:
((?<=/n_[A-Z\d_]*)[^/])
e sostituire tutte le corrispondenze con: $1\

Successivamente, dovremo cercare utilizzando l'espressione:
n_(\w)
e sostituire le corrispondenze con: $1
per rimuovere n_ dall'inizio del nome della funzione.

Le espressioni regolari sono uno strumento davvero potente da utilizzare quando si creano simboli in Altium Designer a partire da fogli dati. È possibile trasformare abbastanza rapidamente un copia e incolla incomprensibile tratto da un PDF, in un foglio di calcolo fruibile implementando solo poche espressioni. Molti nuovi utenti mi dicono di essere intimiditi dalla sintassi delle espressioni regolati. A prima vista, potrebbe sembrare solo un'accozzaglia di simboli e numeri, ma è in realtà una sintassi molto ben definita e anche abbastanza facile da imparare. Bastano poche ore di pratica per sentirsi a proprio agio nell'utilizzo delle espressioni regolari.

Conclusioni

Questo componente è stato scelto più o meno casualmente per creare quest'articolo. Sebbene i dati abbiano richiesto parecchio lavoro di riordino, più di quanto non sia solitamente necessario per importare i dati in Altium Designer, mi auguro di aver mostrato con chiarezza e precisione alcuni metodi innovativi per lavorare con i simboli schematici.

Se hai suggerimenti per la creazione rapida dei simboli schematici, lascia un commento qui sotto in modo che anche altri possano trarre vantaggio dalla tua esperienza.

Segui altri tutorial Altium o leggi di più dell'esperto di settore Mark Harris. Vuoi saperne di più su come Altium può aiutarti nel tuo prossimo progetto PCB? Parla con un esperto Altium.

Sull'Autore

Sull'Autore

Mark Harris è un ingegnere eccezionale con oltre 12 anni di esperienza diversificata nel settore dell'elettronica, che va dai contratti aerospaziali e di difesa ai prodotti start-up, passatempi, ecc. Prima di trasferirsi nel Regno Unito, Mark ha lavorato per uno dei più grandi istituti di ricerca del Canada. Ogni giorno portava con sé un progetto o una sfida diversa che coinvolgeva l'elettronica, la meccanica e il software. È responsabile della pubblicazione della “Celestial Database Library”, la più grande libreria di componenti di database open source per Altium Designer. Mark è attratto dall'hardware e dal software open source, nonché a trovare soluzioni innovative per le sfide quotidiane di questi progetti. L'elettronica è pura passione: seguire la trasformazione di un'idea in realtà e interagire con il mondo è fonte di infinito piacere.
Puoi contattare Mark direttamente a: mark@originalcircuit.com

Articoli Più Recenti

Tornare alla Pagina Iniziale