Il mondo dei Dispositivi Programmabili ( PD programmable devices)
I prerequisiti richiesti sono : il conoscere elementi di analisi e sintesi di reti logiche ed essere in grado di poter definire un modello di un problema con diagramma di flusso o BUBBLE DIAGRAMS, si intende verificare :
il concetto di dispositivo programmabile più comune, analizzarne la tecnologia e l'architettura;
apprendere i concetti essenziali rivolti alla progettazione digitale ed il passaggio dalla logica cablata alla logica programmabile;
introdurre una delle tecniche di progettazione mediante l'impiego di IDE e Burner
consolidare le nozioni sul progetto delle RLC (reti logiche combinatorie) e RLS (...sequenziali) già apprese;
La tecnica di progettazione è condizionata in modo determinante dall'impiego di tali strumenti, per cui al progettista è richiesto non tanto un diverso approccio al problema ma un diverso modo di pervenire ad una soluzione che verrà poi elaborata da vari programmi che produrranno il prodotto finale. La soluzione del problema è generalmente costituita dalla realizzazione di un mini-programma con riferimento ad un bubble-diagram (da cui si ottengono le equazioni booleane oppure la macchina di stato), dalla strategia di simulazione, e nella messa in punto di opportuni attrezzi di collaudo per il test finale. Il tempo richiesto per modificare un progetto è sempre piuttosto limitato per cui risulta pratica comune progettare con in mente modifiche future.
D1 Cosa si intende per PD ( dispositivo programmabile ) e cosa significa “WINDOWED PD”?
R1 Un (PD) è un circuito integrato, il cui package può essere sia di tipo DIP che PLCC , che puo' essere modificato dall'utente al fine di realizzare la rete logica-analogica desiderata. Il costruttore fornisce un dispositivo generico vuoto (blank), contenente funzioni elementari che possono essere interconnesse dal progettista , ciò si realizza scaricando un file di programma (burning PD) con estensione tipicamente : .hex o .jed. oppure .bin
Per Windowed PD, o dispositivo programmabile finestrato, si intende un IC che presenta una piccola apertura ( finestra da 10mm X 10mm ca ) ricoperta di materiale trasparente, che permette la cancellazione del programma entro contenuto tramite raggi ultravioletti (UV) ; l'apparecchiatura che effettua la cancellazione è detta “ EPROM ERASER”.
Spesso un PD finestrato presenta nella sigla di identificazione, nella parte finale, i caratteri ( JW), ma non è sempre così.
D2 Quale è stato il primo PD disponibile per l'utente finale ?
R2 Storicamente i primi circuiti programmabili apparsi sul mercato furono le PROM, (memorie programmabili a sola lettura) che resero il progettista di sistemi in grado di costruire rapidamente e a basso costo le memorie ROM. In precedenza l'unica possibilita' per fare ciò era quella di rivolgersi ad un fabbricante di circuiti integrati, specificando il contenuto della ROM (custom service) ; quindi richiedendo un IC personalizzato. Ciò era estremamente costoso, richiedeva tempi lunghi di consegna ed era idoneo solo per progetti realizzati in grande serie. Era, ed è , da evitare nella fase di costruzione del prototipo, dove ogni errore o modifica comportava danni sia in termini di tempo che di denaro. Le PROM furono la soluzione essendo memorie a sola lettura in cui una semplice procedura permette di alterare stabilmente le connessioni interne al fine di memorizare i dati desiderati.
D3 Cosa è di fatto una PROM ?
R3 Benchè siano pensate come elementi di memoria , essendo costituita da una matrice fissa di AND (che decodificano gli indirizzi della memoria) seguito da una matrice di OR programmabili. La PROM è di tipo non cancellabile a differenza della EPROM ( detta anche parallel EPROM.)
D4 Quante sono le categorie dei PD ?
R4 Diverse, le più note sono i PLD ( dispositivi logici programmabili ) , le Memorie (EPROM,EEPROM,...), i SOC (Psoc...) ed i uC ( micro-controllori )
D5 Una volta programmato un PD può essere cancellato e riprogrammato cioè è RW ?
R5 No se è di tipo OTP ( One Time Programmable; programmabile una sola volta ), sì viceversa .
D6 I dispositivi di tipo non OTP quale inconveniente risolvono ?
R6 Quello della cancellabilità elettrica ( vedi riscrittura ), che non impone la rimozione del PD dal circuito di utilizzo, consentendone la riconfigurabilità .
D7 Quali sono le tecniche OTP più diffuse ?
R7 Fra le tecniche OTP (che stanno però andando in disuso, tranne in poche applicazioni) la prima introdotta è stata quella "a fusibile", nella quale le interconnessioni di tipo programmabile sono costituite da metallizzazioni in titanio-tungsteno (dette "fuse-link") che vengono interrotte da un impulso di corrente, quasi come avveniva nelle vecchie fuse-Prom. Alcuni costruttori utilizzano la tecnica dei fuse-link evoluta, detta ad "antifusibile", in grado di consentire una maggior affidabilità e sicurezza di programmazione, in cui le interconnessioni , sono giunzioni rese bidirezionali da un impulso di corrente .
D8 Quante volte un PD può essere riprogrammato ?
R8 Dipende dai cicli di riprogrammazione (RW cycles) dichiarati nel data-sheet del costruttore del PD, molto spesso questo valore, puramente teorico, è 1000 volte, esistono PD con RW-cycles di 100 volte e di 10.000 volte ed anche di milioni di volte.
D9 Cosa occorre per programmare un PD ( fase di burning del file di personalizzazione )?
R9 Dipende dal tipo, sono diverse le modalità di programmazione e quindi esistono diversi PROGRAMMATORI ( BURNER PD ) hardware
a) STAND-ALONE = dotato, solitamente, di tastiera e display alfanumerico si immettono i dati riga per riga per ogni tipo di PD
b) PC-BASED = necessita di un PC più accessori
D10 Quali sono le modalità di programmazione (burning) PC-BASED più diffuse ?
R10 Sono almeno tre e dipendono dal produttore :
a) Programmatore esterno, con TARGET autoalimentato, collegato tramite DOWN-LOAD CABLE (cavo scaricamento programma) ad una scheda ISA oppure PCI installata sul PC.
b) Programmatore esterno con TARGET autoalimentato collegato tramite DOWN-LOAD CABLE alla porta esterna del PC che può essere COM, LPT oppure USB.
c) Programmatore IN-SYSTEM oppure FIELD-TYPE collegato tramite DOWN-LOAD CABLE ad opportuni PIN del PD montato direttamente sulla scheda di utilizzazione finale.
D11 Cosa è di fatto un PLD ?
R11 Un dispositivo PLD generico, quindi, consiste di una struttura di AND a matrice (array) seguita da una di OR con interconnessioni programmabili
Si può affermare, quindi, che un PLD dispone di un certo numero di funzioni logiche elementari e complesse inizialmente non interconnesse, dormienti , che l'utente può interconnettere per la realizzazione della RLC o RLS desiderata mediante un Software opportuno ed un Programmatore hardware ( Burner PD ).
I PLD possono quindi contenere anche FF e blocchi logici evoluti.
Gli ingressi sono applicati alla matrice di AND, le cui uscite diventano tramite le interconnessioni ingressi della matrice OR. Storicamente i primi PLD, detti comunemente PAL sono stati prodotti per la prima volta dalla Monolithic Memories negli anni 70 e furono introdotti come alternativa ai circuiti logici TTL serie 74xx
I motivi principali del successo dei PLD sono :
facilità di progetto
modifiche veloci senza riprogettare il circuito stampato
minima obsolescenza ( non invecchiano facilmente)
In pratica si dividono nei seguenti tipi SPLD e CPLD
D12 Cosa si intende per ASIC e cosa può realizzare ?
R12 Significa letteralmente applicazione specifica circuito integrato, può contenere blocchi e funzioni analogiche, digitali e miste, non è programmabile direttamente, ma solo dal produttore ha costi iniziali elevati è quindi idoneo' ed è questo il suo campo di utilizzo, solo per produzioni in grandi quantità.
D13 Cosa si intende per CPLD e come è fatta essenzialmente ?
R13 Significa PLD Complesso, è considerato una PAL evoluta, ed ha alcune caratteristiche della PLA, può integrare tipicamente da 32 fino a 560 macrocelle (blocco logico che può contenere OR, AND, e FF solitamente di tipo D oppure T ed oltre
Sono anche noti , a seconda del costruttore, come :EPLD (Erasable Programmable Logic Device) , PEEL, EEPLD (Electrically-Erasable Programmable Logic Device), MAX (Multiple Array matriX, Altera)
D14 Cosa si intende per SPLD ?
R14 Significa PLD semplice e raccoglie le famiglie GAL, PAL, PLA. sono dotati di una ventina di macro celle (blocco logico che può contenere OR, AND, e FF solitamente di tipo D oppure T).
L'impiego più frequente per un SPLD è per la sostituzione delle tradizionali porte logiche di tipo 74xx.
D15 Quando un PD si considera SPLD invece di CPLD ?
R15 Se contiene più di una ventina di macro-celle è già considerato un CPLD e viceversa.
D16 Cosa si intende per FPIC ?
R16 Significa dispositivo con interconnessioni programmabili sul campo è considerato un CPLD .
D17 Cosa si intende per FPGA e come è fatta essenzialmente ?
R17 Significa dispositivo programmabile sul campo a matrice di porte è considerato un CPLD.
Si programma con il programmatore in system, si usa quando sono richieste alte performance, alta densità, contiene dei CLB ( blocchi logici configurabili ) contenenti FF di tipo D e T con configurazioni evolute.
Gli FPGA hanno normalmente da 10 mila a 25 mila gate, con punte di oltre 200 mila gate equivalenti ( vedi Altera ).
Sono noti anche come : LCA (Logic Cell Array), pASIC (programmable ASIC), FLEX, APEX (Altera), ACT (Actel), ORCA (Lucent), Virtex (Xilinx), pASIC (QuickLogic).
D18 Cosa si intende per LPGA e come è fatta essenzialmente ?
R18 Significa Prototipo Gate Array Laser è un CPLD che viene prodotto in tecnologia laser consentendone la fornitura in tempi brevi, tipicamente una settimana.
Ha prestazioni, in termini di velocità di funzionamento e densità, simili a quelle di un FPGA.
D19 Cosa si intende per MACH e come è fatta essenzialmente ?
R19 Significa Macro Array Cmos High density fa parte della famiglia dei CPLD , è costituito da un matrice di fusibili programmabili realizzata in tecnologia EEprom Cmos.
D20 Cosa sono le PAL e quali sono le caratteristiche principali ?
R20 E' un SPLD costituito, di solito, da una matrice di AND programmabili seguiti da una di OR fissi; permette la diminuzione delle dimensioni e dei costi di progetto rispetto ai tradizionali TTL. E' dotato di molti IO ed è molto veloce.
D21 Cosa sono le PLA e quali sono le caratteristiche principali ?
R21 E' un SPLD in cui entrambe le matrici sono programmabili e, quindi, ha una struttura estremamente flessibile però le dimensioni del chip ed i costi sono superiori alle PAL ( GAL6002).
D22 Cosa sono le GAL e quali sono le caratteristiche principali ?
R22 E' un SPLD considerato una PAL riprogrammabile con una architettura logica più flessibile, può sostituire le PAL.
Ha un alto numero di cicli RW ed una lunga durata di ritenzione dei dati.
La denominazione GAL è stata coniata da Lattice.
La GAL22V10 ha il diagramma logico compatibile ad esempio con la PALCE22V10 di AMD ed in generale con la PAL22V10 (OTP).
La sigla GAL22V10 significa : dispositivo con numero di ingressi massimo = 22, compresi IO, e numero massimo di uscite = 10
La (V) tra 22 e 10 indica la presenza di una uscita di tipo a macrocella, con altra lettera il significato cambiava in :
H significa va con uscita attiva in logica (H)
L significava con uscita attiva in logica (L)
P significava con uscita attiva programmabile sia in logica (H) che in logica (L)
X significava con uscita tipo XOR
D23 Quali differenze ci sono tra un PLD di tipo ISP ed uno tradizionale ?
R23 Un dispositivo ISP è programmabile direttamente on-board-target (sulla scheda di utilizzo finale) , dove deve essere prevista una apposita circuitazione, mentre un PLD tradizionale deve essere tolto dalla scheda finale per essere ri-programmato, in questo caso le interconnessioni sono costruite in tecnologia CMOS o Flash.
D24 Quale è il migliore software di programmazione per PLD ?
R24 Non esiste in assoluto un software migliore di altri per questi dispositivi, tra quelli che lavorano in ambiente Windows è da tenere in considerazione WinCUPL Atmel Version completamente Free senza limiti di tempo che ha un ulteriore vantaggio : la semplicità in SIMULAZIONE.
In commercio sono disponibili SW che lavorano in diverse modalità : testo, grafica a bolle, CAD e grafica a blocchi.
Per un utilizzo professionale sui PLD il linguaggio VHDL è considerato lo standard di fatto, ma esiste anche il Verilog.
D25 Quando il PLD è inserito nel circuito d'utilizzo finale i Pins di input non utilizzati in fase di programmazione come si collegano ?
R25 Non esiste una regola ferrea, ma in questi casi è preferibile collegarli a massa per evitare malfunzionamenti
D26 Cosa si intende per macrocella ?
R26 Un Blocco Logico contenente FF,AND,OR e non sempre, NOT
D27 Cosa si intende per modalità Registered (Registred Mode)?
R27 Un PLD che in uscita può utilizzare dei registri (tipicamente dei FF)
D28 Cosa si intende per modalità Combinatorial (Combinatorial Mode)?
R28 Un PLD che in in uscita può utilizzare porte logiche standard (praticamente tutti i PLD)
D29 Cosa si intende per EEPROM o E2prom ?
R29 Si intende Electrically-Erasable Programmable Read-Only Memory ed è un PD (memoria) che si può cancellare elettricamente
D30 Cosa si intende per Serial EEPROM ?
R30 Si intende un PD di tipo Eeprom con accesso dati in modo seriale, possono essere riscritte per circa 1 milione di volte (teorico) e possono mantenere i dati, teoricamente, anche per 200 anni, sono molto diffuse per l'uso in simbiosi con un microcontrollore (micro).La tecnologia è di tipo CMOS evoluta. Solitamente sono in contenitore DIP 8, in alcuni casi DIP 16
D31 Cosa si intende per MICROcontrollore, o semplicemente micro (uC), e quali sono le sue caratteristiche ?
R31 Si intende un PD di tipo con un certo numero di PINs, GPIO chiamati di solito PORTE di Ingresso e di Uscita, le cui funzioni ed i relativi stati logici sono controllati direttamente dal programma inserito nel micro stesso.
D32 Quale è la differenza sostanziale tra un MICROcontrollore ed un MICROprocessore ?
R32 Per MICRO si intende un Microcontrollore (uC) e mentre un Microprocessore (uP) è chiamato CPU (central processing unit)
ed in realtà il Microcontrollore deriva dal Microprocessore, in quanto il MICRO altro non è che un Microprocessore (CPU) con l'integrazione nello stesso chip di :
sezioni di memoria di tipo :
EPROM o EEPROM o FLASHROM, in cui vengono memorizzati i programmi,
RAM in cui vengono allocati i dati temporanei
dispositivi di interfaccia col mondo esterno.
In alcuni Micro più evoluti si possono trovare integrati sullo stesso chip anche alcune funzioni accessorie quali :
TIMER
Convertitori A/D
Dispositivi per comunicazione seriale
e funzioni evolute in genere...
Quindi un MICRO è in grado di interfacciarsi con altri dispositivi senza necessità di alcun IC supplementare
D33 Quale è la caratteristica principale che differenzia un MICRO dall'altro ?
R33 La prima evidente è il numero di bit che questi dispositivi sono in grado di elaborare, la maggioranza di questi PD è ad 8 bit , ma esistono versioni anche a 16bit e 32 bit..ed il fatto di essere RISC (set d'istruzioni ridotto , circa 30-35) o CISC (set d'istruzioni completo, qualche centinaio)
D34 Quale è stato il primo MICRO prodotto ?
R34 Il capostipite di questa categoria di PD può essere considerato l'80x31 progenitore dell'80x51, attualmente in declino, prodotto inizialmente da INTEL e clonato poi da diversi altri produttori.
ST produce la famiglia ST6xx e successivi, Zilog la serie Z86xx, mentre Microchip produce la serie PICxx diventati praticamente lo standard di riferimento nel mondo dei MICRO per il bassissimo costo, la facilità di programmazione, la grande reperibilità e soprattutto per l'enorme disponibilità di SOFTWARE GRATUITO o a bassissimo costo (il primo di questa fortunata serie è stato il PIC16C84).
Microchip è stata anche la prima azienda al mondo a produrre un MICRO in contenitore DIP8.
Da segnalare infine la serie AVRxx di ATMEL caratterizzata da notevoli prestazioni velocistiche in termini di frequenza operativa e mota soprattutto per ATMega328P inserito in arduino.
D35 Quale è il miglior linguaggio di programmazione per i MICRO ?
R35 Solitamente si usa l'ASSEMBLY che ha una sintassi differente da un produttore all'altro ed a volte anche da una famiglia all'altra dello stesso produttore.
E' un linguaggio a basso livello a volte indispensabile per applicazioni “ REAL TIME ”.
Sono però disponibili, spesso in versione FREE , LITE o COMMERCIALI, compilatori di “ TERZE PARTI ”, che permettono l'utilizzo di linguaggi come il BASIC ed il C.
Questi ultimi sono linguaggi ad alto livello che producono programmi più lenti e di maggiori dimensioni in BYTE, ma in assoluto il C ed ultimamente il python sono i 2 linguaggi più usati al mondo nei micontrollori.