I micro ColdFire® di Freescale a 32-bit

La gamma di microcontroller Freescale (ora NXP) a 32 bit per la connettività single-chip si propone come la soluzione ideale per i progettisti che necessitano delle elevate performance dei micro a 32 bit. Freescale Semiconductor ha presentato nel lontano 2006 la  gamma di prodotti basata sul core 68K/ColdFire®  per il controllo delle applicazioni industriali che variano dalla raccolta remota di dati, alla sicurezza, dalla domotica  fino al monitoraggio ambientale. Facciamo una panoramica su questi prodotti che hanno portato tanto successo a Freescale, e continuano a farlo ancora oggi.

La gamma MCF522xx

La Figura 1 rende l’idea di quelli che sono stati i principali campi applicativi verso cui si è orientata la progettazione di Freescale prima della fusione con NXP.

Figura 1. Settori chiave in cui si orientata la progettazione Freescale.

Figura 1: Settori chiave in cui si è orientata la progettazione Freescale

Con il passare del tempo vari modelli si sono presentati sul mercato, a cominciare dal suo debuto nel lontano 2006. La Figura 2 mostra, su di una scala temporale, i modelli degli anni passati ancora utilizzati e che proveremo ad analizzare in questo articolo.

Figura 2. Roadmap dei dispositivi ColdFire®.Figura 2: Roadmap degli anni passati dei dispositivi ColdFire

Alcuni modelli si dividono in due famiglie: MCF5222x e MCF5223x. Tutti i relativi modelli e le caratteristiche tecniche sono riportati rispettivamente in Tabella 1 ed in Tabella 2, mentre un dettaglio del package LQFP (Low profile Quad Flat Package) dei due chip è mostrato in Figura 3.

Figura 3. Dettaglio del package LQFP a 64 pin.Figura 3: Dettaglio del package LQFP a 64 pin
Tabella 1. I modelli e le caratteristiche tecniche della famiglie MCF5222x.

Tabella 1. I modelli e le caratteristiche tecniche della famiglie MCF5222x.

Tabella 2. I modelli e le caratteristiche tecniche della famiglie MCF5223x.

Tabella 2. I modelli e le caratteristiche tecniche della famiglie MCF5223x.

I modelli MCF5222x (basati sul già collaudato chip MCF5213) sono costruiti intorno  al core ColdFire® V2 e  rappresentano i primi microcontroller a 32 bit ad includere le prestazioni USB full-speed di  tipo host, device ed OTG (On-The-Go), consentendo a due dispositivi USB di comunicare senza interfacciarsi con il PC. Tale micro diventa dunque la risposta ideale alle esigenze di comunicazione system-to-system, senza la necessità di aggiungere ulteriore hardware esterno. La Figura 4 riporta ulteriori informazioni sui due modelli disponibili per questa famiglia.

Figura 4. Dettagli su ciascun modello della famiglia MCF5222x.

Figura 4. Dettagli su ciascun modello della famiglia MCF5222x.

I microcontrollori  MCF5222x sono particolarmente indirizzati a tutti  i progettisti  che necessitano della potenza e flessibilità di processori a 32 bit, uniti ad un ricco set di periferiche on-board, ad un costo relativamente basso. Di seguito alcune applicazioni per cui sono particolarmente indicati:

  • Nodo di controllo ZigBee™
  • Domotica
  • Automazione industriale
  • Apparati medicali
  • Raccolta remota di dati
  • Apparecchiatura per il testing

La famiglia MCF5223x sono la naturale evoluzione della serie MCF521x ed offre invece caratteristiche più orientate alle connessioni di rete, rendendo disponibili Fast Ethernet Controller (FEC) ed Ethernet Physical Layer (EPHY). Freescale garantisce con questi chip anche la sicurezza dei dati trasmessi tramite una unità di accelerazione crittografica in grado di aumentare le performance di esecuzione dei relativi algoritmi. Gli stessi chip sono dotati anche di un controller CAN che consente di realizzare numerose applicazioni in campo industriale. Ulteriori dettagli su ciascun chip di questa famiglia ed i relativi prezzi suggeriti sono riportati in Figura 5.

Figura 5. Dettagli su ciascun modello della famiglia MCF5223x.

Figura 5. Dettagli su ciascun modello della famiglia MCF5223x.

Tutti i processori ColdFire® sono supportati da un consistente   toolset  (chiamato CodeWarrior® Development Studio) progettato per accelerare lo sviluppo delle applicazioni, tramite un efficiente generatore di codice che aiuta a creare progetti di lavoro in pochi e semplici passi. Tutto ciò è coadiuvato da una discreta presenza di esempi di codice forniti a corredo, che permettono di ridurre il time-to-market nello sviluppo di applicazioni custom; per un rapido sviluppo  di  sistemi  basati  su  trasmissione dati  tramite Ethernet, Freescale rende disponibile lo stack TCP/IP (in forma gratuita) all’interno dei tools di valutazione, di cui si darà una descrizione nel seguito dell’articolo. Dopo  aver fornito  una  panoramica generale sulle potenzialità dei micro Freescale, si passerà ad una analisi più dettaglia che metterà in evidenza i vari blocchi  che  costituiscono  i  chip  MCF5223x  e MCF5222x. Molte delle caratteristiche descritte sono comuni ad entrambi i processori; la sostanziale differenza è nella   interfaccia Ethernet dell’MCF5223x e in quella USB del MCF5222x.

Caratteristiche del modello MCF5223x

MCF5223x nel dettaglio:

In Figura 6 è riportato lo schema a blocchi interno tipico dei chip MCF5223x. Si nota la possibilità di disporre o meno del controllo CAN a seconda dei modelli (così come riportato in Figura 5) e la notevole quantità di memoria programma (da 128KB a 256kB) disponibile per sviluppare le proprie applicazioni.

Figura 6. Schema a blocchi della famiglia MCF5223x.

Figura 6. Schema a blocchi della famiglia MCF5223x.

Questi micro lavorano ad una frequenza di 60MHz e sono dotati un PLL on-chip che consente loro di utilizzare un  quarzo  di  valore più  basso rispetto  al master clock; questo permette di ridurre le interferenze elettromagnetiche e selezionare differenti frequenze operative.  La possibilità di interfacciarsi con il mondo analogico è garantito da 8 canali utilizzati per la conversione A/D, con una risoluzione effettiva di 12 bit; in tutte le situazioni in cui è necessario garantire una elevata velocità di conversione è possibile utilizzare la modalità DMA (Direct Memory Access) che consente il trasferimento dei valori digitalizzati, direttamente verso una delle periferiche senza passare per la CPU, che può quindi eseguire altre operazioni in contemporanea. La disponibilità di ben tre porte seriali (UART) è notevole, in quanto consente di ridurre la circuiteria esterna nel caso in cui si voglia comunicare con più dispositivi contemporaneamente. È interessante osservare in Tabella 3, oltre alle linee TX ed RX, la predisposizione delle linee CTS e RTS necessarie per il controllo del flusso.

Tabella 3. Descrizione dei segnali del generico modulo UART.

Tabella 3. Descrizione dei segnali del generico modulo UART.

Il modulo MAC (Multiply and Accumulate) è ideale in tutti quei casi in cui è necessario implementare dei filtri digitali, quindi utilizzare il processore come un DSP (Digital Signal Control); per esempio, allo scopo di  realizzare, via software, un filtro digitale per elaborare  il  segnale analogico acquisito e convertito con l’ADC. La presenza di un FEC (Fast Ethernet Controller) ed ePHY (Ethernet PHY) che consentono lo sviluppo di applicazioni per la trasmissione dei dati su Ethernet (secondo lo standard IEEE 802.3); lo schema a blocchi dei due moduli è riportato rispettivamente in Figura 7 ed in Figura 8.

Figura 7. Schema a blocchi dell’unità FEC.

 

Figura 8. Schema a blocchi dell’unità ePHY

Il  blocco  FEC  permette  di  raggiungere  velocità  di 200Mbps in modalità full-duplex, con l’utilizzo di una frequenza minima di clock di 50MHz; in modalità half-duplex ovviamente la velocità di trasmissione si dimezza, così come la frequenza di clock necessaria per il corretto funzionamento. È importante evidenziare l’attenzione che Freescale ha posto nel facilitare lo sviluppo di applicazioni in cui la sicurezza dei dati  trasmessi sia garantita; infatti, la crittografia dei dati è ottenuta mediante l’unità CAU (Cryptographic Accelerator Unit), il cui schema di principio è presentato in Figura 9.

Figura 9. Schema a blocchi dell’unità CAU.

Il sistema di codifica dei dati supporta tutti i principali metodi di crittografia, tra cui vanno annoverati DES, 3DES, AES, MD5, SHA-1.

Caratteristiche del modello MCF5222x

Schema interno e caratteristiche elettriche:

La Figura 10 mostra le interconnessioni interne dei blocchi logici del chip, mentre la Tabella 4 riporta le condizioni elettriche massime che non bisogna superare per non degradare le prestazioni operative.

Figura 10. Diagramma a blocchi del MCF52223.

Figura 10. Diagramma a blocchi del MCF52223.

Tabella 4. Condizioni massime operative.

Tabella 4. Condizioni massime operative.

La Tabella 5 mostra le caratteristiche del chip in condizioni tipiche di funzionamento, mentre la Tabella 6 riporta i diversi tipi di alimentazione richiesti. La possibilità di utilizzare una alimentazione a 3V è perfetta per applicazioni a batteria, in cui il consumo di potenza è uno dei vincoli progettuali più stringenti.

Tabella 5. Condizioni di funzionamento raccomandate.

Tabella 5. Condizioni di funzionamento raccomandate.

Tabella 6. Pins di alimentazione e massa.

Tabella 6. Pins di alimentazione e massa.

La logica interna:

Il core del processore è basato su due pipeline separate (indicate  come IFP  e OEP), disaccoppiate mediante un instruction buffer (IB), che permettono di eseguire più operazioni nello stesso ciclo di clock e quindi  aumentare le prestazioni dell’intero sistema (Figura 11).

Figura 11. Funzionamento della pipeline del MCF52223.

Figura 11. Funzionamento della pipeline del MCF52223.

La IFP (Instruction Fetch Pipeline) è responsabile di generare l’indirizzo dell’istruzione ed eseguirne il fetch (prelievo). Il punto d’unione tra le due pipeline è rappresentato da IB che è un buffer di tipo FIFO (First In First Out) contenente l’istruzione prelevata dalla memoria  programma,  in  attesa di essere eseguita nell’altra pipeline. La OEP (Operand Execution Pipeline) è anch’essa costituita  da  due stadi, il primo incaricato di decodificare l’istruzione e l’altro che si occupa di eseguirla. Il modulo di SRAM, posizionato sul bus ad alta velocità, è un blocco di memoria pari a 32KB a cui il core può accedere con un solo ciclo di clock. Tale blocco è accessibile anche dal DMA. La memoria è di tipo dual-ported  e ciò la rende ideale per applicazioni basate su schemi a doppio buffer, in cui il processore ed il DMA accedono ad aree differenti per massimizzare le prestazioni dell’intero sistema. Notevole risulta la dimensione del modulo di memoria flash CFM (ColdFire®), pari a 256KB, destinato alla memorizzazione sia del codice che dei dati permanenti. Non sono richieste tensione di alimentazioni esterne per la programmazione di tale memoria.

Acquisizione dei segnali analogici:

Il  convertitore  analogico/digitale consiste di 8 linee di ingresso selezionabili tramite multiplexer interno e due sample&hold (S/H); la risoluzione è pari a 12 bit. I principali parametri che caratterizzano l’ADC sono riportati  in Tabella 7, mentre la Figura 12 mostra il circuito di ingresso dell’ADC.

Tabella 7. Parametri caratteristici dell’ADC interno

Tabella 7. Parametri caratteristici dell’ADC interno

Figura 12. Schema elettrico dell’ADC.

Figura 12. Schema elettrico dell’ADC.

Gli interruttori  S1 ed S2 sono sempre aperti/chiusi allo  stesso tempo, mentre S3 è chiuso/aperto. Quando S1 ed S2 sono chiusi mentre S3 è aperto, uno degli ingressi del S/H viene portato alla tensione (VREFH-VREFL)/2, invece l’altro si carica al valore della tensione di ingresso (quella da campionare); quando gli switch invertono la loro posizione, le cariche su C1 e C2 sono equamente ripartite tramite S3, con il risultato che l’ingresso analogico single-ended diventa differenziale e centrato  sulla tensione (VREFH-VREFL)/2. Dalla Figura 12 si nota pure la presenza di alcune capacità parassite sul percorso del segnale di ingresso. Comunque, è importante sottolineare che queste capacità non perturbano il segnale da campionare, in quanto lo switch S1 garantisce un isolamento durante la fase di ridistribuzione della carica. Il tempo minimo  richiesto per una conversione è di 1.125µs. Molto utile, per applicazioni che prevedono il controllo di motori, è la possibilità campionare due canali contemporaneamente. Gli 8 canali destinati agli ADC possono essere utilizzati anche in parte; in quest’ultimo  caso le linee inutilizzate posso essere configurate come ingressi/uscite digitali.

Il sistema del reset:

Per la inizializzazione dei registri del micro esistono 6 possibili sorgenti di reset:

  1. Esterna
  2. Power-on reset (POR)
  3. Watchdog timer
  4. Perdita di aggancio del PLL
  5. Perdita del clock del PLL
  6. Software
  7. Rilevamento tensione di alimentazione errata

La presenza di un flag per ciascuna di queste sorgenti di reset e di un controller dedicato permette di risalire alla causa del reset.

Registri integer e floating:

I principali registri utilizzati per l’esecuzione di operazioni di tipo integer (vedere Figura 13) sono:

  • 8 registri per usi generici a 32 bit (D0÷D7); tali registri sono destinati ad operazioni con bit, byte (8 bit), word (16 bit) e long word (32bit). Possono essere usati come registri indice ed in operazioni di indirizzamento indiretto.
  • 8 registri per usi generici a 32 bit (A0÷A7); tali registri sono utilizzati come stack pointer software e per operazioni di indirizzamento. In particolare, il registro A7 è utilizzato come stack pointer hardware, durante le chiamate a subroutine.
  • PC (Program Counter) a 32 bit;
  • CCR (Condition code register) a 8 bit; alcune operazioni con interi modificano i bit di tale registro.

Il core ColdFire® prevede anche l’esecuzione di operazioni floating-point,  grazie alla presenza di una unità logica dedicata. I rispettivi registri utilizzati sono:

  • 8 registri dati floating-point a 64 bit (FP0÷FP7);
  • FPCR (Floating Point Control Register) a 32 bit;
  • FPSR (Floating Point Status Register) a 32 bit;
  • FPIAR (Floating Point Instruction Address Register) a 32 bit;
Figura 13. Principali registri per operazioni integer dei micro MCF522xx.

Figura 13. Principali registri per operazioni integer dei micro MCF522xx.

USB On-the-Go:

Una caratteristica del modello MCF5222x è rappresentata dalla presenza di un’unità per la gestione del protocollo  USB OTG che permette di interfacciare il chip con qualsiasi dispositivo USB (hard disk, stampanti, fotocamere digitali e simili), sostituendosi al PC. Alcuni esempi di applicazioni di tale tecnologia sono riportati in Figura 14.

Figura 14. Esempi applicativi della tecnologia USB OTG.

Figura 14. Esempi applicativi della tecnologia USB OTG.

É dotato di 16 endpoint bidirezionali e di una interfaccia per il trasferimento dei dati tramite DMA, per aumentare la velocità di trasferimento dei dati trasmessi ed acquisiti. Lo schema a blocchi interno è illustrato in Figura 15

Figura 15. Schema a blocchi del modulo USB OTG.

Figura 15. Schema a blocchi del modulo USB OTG.

Schede di prototipazione e driver TCP/IP:

Freescale offre piattaforme complete di progettazione e valutazione sia per la gamma MCF522xx che per la MCF5223x. Attualmente sono disponibili le versioni:

  1. M52235EVB.
  2. M52233DEMO.

La M52235EVB rappresenta una completa scheda di valutazione con una licenza integrale dell'edizione speciale CodeWarrior Development Studio per architettura  ColdFire. Una caratteristica interessante è la possibilità di aggiungere una scheda figlia per il test di applicazioni con il protocollo Zigbee; essa inoltre è predisposta per l’utilizzo con la tecnologia Power Over Ethernet, che consente la trasmissione dei dati e dell’alimentazione sullo stesso cavo. Una immagine  di tale scheda è mostrata in Figura 16.

Figura 16. Immagine della scheda di valutazione M52235EVB.

Figura 16. Immagine della scheda di valutazione M52235EVB.

CodeWarrior Special Edition include un compilatore ColdFire sviluppato per massimizzare le performance e generare codice compatto. Fino a 128KB circa (salvo aggiornamenti) di codice C è completamente  gratuito. Gli sviluppatori che necessitano di strumenti più completi possono soddisfare le loro esigenze acquistando la versione Standard e Professional del CodeWarrior Development Studio. Freescale ha collaborato con diverse compagnie per lo sviluppo di driver ad hoc per la serie di microcontrollori MCF5223x, tra cui si ricordano:

  • Interniche (http://www.iniche.com/).
  • Cmx (http://www.cmx.com/).
  • Treck (http://www.treck.com/).

La collaborazione tra Interniche Technologies e Freescale ha portato allo sviluppo del cosiddetto ColdFire TCP/IP Lite di InterNiche. Tale driver presenta caratteristiche davvero attraenti, tra cui l’occupazione di memoria programma (appena 12KB). Tale risultato è stato ottenuto  anche grazie all’ottimizzazione del codice per l’architettura ColdFire. È  importante  evidenziare che tale driver è completamente compatibile con le specifiche  RFC. La Tabella 8 riporta  i layer implementati  della pila ISO/OSI, mentre la Figura 17 illustra gli altri protocolli opzionali che è possibile utilizzare per applicazioni specifiche, come per esempio FTP per il trasferimento di file o Telnet per il controllo remoto.

Figura 17. Protocolli supportati per applicazioni specifiche

Figura 17. Protocolli supportati per applicazioni specifiche

Tabella 8. Stack TCP/IP di Interniche

Tabella 8. Stack TCP/IP di Interniche

L’altra possibilità per sviluppare progetti  basati su TCP/IP è rappresentata dallo stack CMX-TCPIP™  della CMX. Tra le caratteristiche principali di tale driver si ricordano:

  • IP, ICMP/Raw IP, TCP, UDP, ARP, SNTP, DNS
  • Possibilità di utilizzare il protocollo SNMP con MIB file
  • Piena compatibilità RFC
  • Incluso un VFS (Virtual File System) con codifica Huffman, per ottener la massima efficienza della memoria
  • Specific Processor e Compiler port
  • Tutti i codici sorgente
  • Nessuna Royalty sui prodotti sviluppati
  • Documentazione e programmi di esempio
  • Supporto tecnico gratuito

Tra i possibili protocolli  che è possibile aggiungere vanno citati:

  • BOOTP, TFTP - Bootstrap Protocol, Trivial File
    Transfer(Client/Server)
  • DHCP - Dynamic Host Configuration Protocol Server
    (Client/Server)
  • Flash File System with support for Compact Flash,
    MMC, RAM disk, etc.
  • FTP - File Transfer Protocol (Client/Server)
  • IMAP4 – Internet Messaging Access Protocol, Version 4
  • NAT - Network Address Translation
  • POP3 Client – Post Office Protocol
  • PPP, SLIP - Point to Point Protocol, Serial Line Interface Protocol
  • PPPoE - PPP over Ethernet
  • SMTP Client – Simple Mail Transfer Protocol
  • SNMP V1 & V2c - Simple Network Management Protocol V1 and V2c Agent
  • Telnet Server
  • WEB Client (includes Web Server)
  • WEB Server - HTTP Server, includes CGI and SSI

Anche la società Treck Inc. ha avuto una stretta collaborazione con Freescale per mettere a punto una soluzione professionale per applicazioni Ethernet, basata su piattaforma ColdFire. Fornendo supporto sia per la versione IPv4 che IPv6, il protocollo di Treck offre le più alte performance e la migliore compatibilità RFC. Attualmente il driver è disponibile per ogni dispositivo ColdFire dotato di controllo fast ethernet (FEC). Sono inoltre disponibili dei driver che consentono di implementare protocolli di sicurezza, come SSL ed IPSEC, per sfruttare le capacità di criptaggio  dei dati dell’unità CAU. La M52233DEMO (Figura 18) presenta un entry cost particolarmente attraente, offrendo ricche funzionalità dimostrative per uno sviluppo immediato  e veloce delle applicazioni. Come la precedente, anche questa board prevede l’aggiunta di un plug-in per il protocollo Zigbee.

Figura 18. Immagine della scheda di valutazione M52233DEMO

Figura 18. Immagine della scheda di valutazione M52233DEMO

 

Tecnologia USB On-The-Go

Lo sviluppo di dispositivi portatili sempre più eterogenei ha portato alla creazione di differenti metodi di connessione, con la conseguente incompatibilità tra dispositivi. Per superare tale condizione alcuni produttori di dispositivi mobili hanno collaborato tra loro per sviluppare una tecnologia su misura per le applicazioni mobili. Il risultato di questa task force si chiama USB On-The-Go (OTG), i cui loghi sono simili a quelli del comune standard USB. USB OTG si inquadra come uno standard supplementare alle specifiche USB 2.0 (pubblicato nel 2001), aumentando le potenzialità dei preesistenti dispositivi mobili e periferiche USB, mediante l’aggiunta della funzionalità host. Infatti, tradizionalmente l’USB è caratterizzata da una topologia host-periferica, in cui il PC rappresenta l’host mentre la periferica è un dispositivo “passivo”.  Invece, l’USB OTG introduce  le seguenti novità:

  • Un nuovo standard per le dimensioni dei cavi e dei connettori USB (mentre l’USB 2.0 introduce i connettori mini-A e mini-B, con l’OTG si aggiunge il connettore mini-AB).
  • L’aggiunta della funzionalità host a dispositivi che tradizionalmente sono solo periferiche, garantendo in questo modo connessioni point-to-point.
  • La capacità di fungere sia da host che da periferica (dual-role device) e di passare dall’una all’altra modalità a seconda delle situazioni.
  • Ridotto consumo di potenza per permettere una maggiore durata della batteria ai dispositivi portatili (un dispositivo dual-role assorbe massimo 8mA).

Un esempio classico è rappresentato dalla possibilità di stampare foto dalla fotocamera digitale direttamente, senza passare dal PC. Secondo lo standard quando due dispositivi vengono connessi tramite cavo USB, viene impostato automaticamente il dispositivo che fungerà da host e quello che fungerà da periferica. Se l’applicazione è tale che i  due ruoli  devono essere  fissati a priori,  allora un apposito protocollo  detto  HNP (Host Negotiation Protocol) si incarica di gestire l’handshake tra i due dispositivi. Ovviamente, tutto  ciò risulta trasparente all’utilizzatore.

Per le specifiche complete ed ulteriori informazioni su tale tecnologia si rimanda al sito: http://www.usb.org/developers/onthego/

 

 

 

Una risposta

  1. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 9 gennaio 2017

Scrivi un commento