Simplificarea proiectării cu ajutorul logicii

by donpedro

Uneori, ceva simplu poate avea avantaje mari. Majoritatea inginerilor embedded au nevoie de o varietate de semnale sau logică pentru a răspunde necesităților aplicațiilor finale. Ei recurg la proiectarea de circuite logice pe plăci complexe. Dar ce-ar fi dacă ar exista o cale simplă de a face ceva mai complex? Unele microcontrolere au periferice flexibile pentru a realiza funcțiile necesare pentru aplicații complexe.

Aici este locul în care intervine celula logică configurabilă (CLC). Perifericul CLC (Configurable Logic Cell) a fost adăugat setului de periferice al microcontrolerelor (MCU) PIC® de la Microchip și permite utilizatorilor să proiecteze o funcție simplă care se poate interfața cu microcontrolerul. Acest periferic CLC permite utilizatorului să specifice combinații de semnale ca intrări într-o funcție logică și să utilizeze ieșirea logică pentru controlul altor periferice și pini de intrare/ieșire, oferind utilizatorilor flexibilitatea de a proiecta funcții după cum doresc.

Pentru a păstra lucrurile simple, CLC are asigurat suport în configuratorul de cod al MPLAB® (MCC) de la Microchip. Acesta permite proiectanților să selecteze și să mute cu ușurință (drag and drop) porți logice pentru a conecta intrările și ieșirile într-un format GUI (interfață grafică cu utilizatorul), iar apoi să genereze programul C printr-un singur click, simplificând substanțial implementarea modulelor CLC.

Perifericele independente de nucleu (CIP – Core Independent Peripherals) își îndeplinesc sarcinile fără cod suplimentar sau supervizare de la CPU pentru menținerea lor în operare. CLC este un astfel de CIP care simplifică implementarea de sisteme de control complexe și oferă în același timp dezvoltatorilor o amplă flexibilitate de proiectare, fără încărcarea unității centrale cu sarcini suplimentare în scopul de a îmbunătăți performanțele microcontrolerului. În continuare veți afla cum poate fi utilizat CLC-ul pentru a implementa detecție fază semnal, generare de forme de undă complementare sau monitorizarea parametrilor multipli într-o aplicație. Dispunând de o varietate mare de intrări, ieșiri și semnale de declanșare, posibilitățile cu un CLC sunt nelimitate.

Privire generală

CLC este un periferic configurabil de către utilizator, similar unui dispozitiv logic programabil (PLD), dar integrat într-un microcontroler. Intrările interne și externe pot fi alese ca intrări în CLC. CLC-ul primește semnale de la alte periferice sau de la un pin de intrare. Apoi execută operația logică dorită și furnizează o ieșire care poate fi utilizată pentru a controla alte periferice sau alt pin de intrare/ieșire.

CLC-ul poate recepționa diverse semnale, precum semnal de ceas intern, o ieșire de la alt periferic și evenimente periferice precum o intrare de temporizator. Semnalele de intrare selectate pot fi direcționate către funcția logică dorită printr-un etaj cu comandă de trecere a semnalului.

CLC-ul suportă diferite funcții logice precum AND, OR, NOT, XOR, NAND, NOR și XNOR. În CLC, ieșirile din etajul de trecere a datelor sunt intrări în etajul de selecție a funcției logice. Etajul polarității de ieșire este ultimul etaj din CLC, în cadrul căruia polaritatea dorită poate fi selectată.

CLC-ul poate fi utilizat ca un periferic de sine stătător pentru implementarea de funcții logice combinaționale și secvențiale, facilitând astfel declanșarea rapidă a evenimentelor și răspunsurilor. De asemenea, acesta poate fi utilizat cu alte periferice pentru a ajuta la extinderea capabilităților lor, prin facilitarea implementării particularizate de funcționalități complexe în hardware.

Fiind un periferic independent de nucleu, CLC-ul reduce efectiv cerințele de lățime de bandă ale unității centrale (CPU) pentru o aplicație, prin descărcarea de la CPU către periferic a numeroase sarcini de răspuns la evenimente simple și logice. Acesta reduce, de asemenea, cerințele de memorie flash și RAM, deoarece nu sunt necesari algoritmi software.

Funcțiile logice implementate în hardware au un răspuns la eveniment mai rapid comparativ cu funcțiile logice implementate în software. Suplimentar, CLC-ul suportă un înalt nivel de integrare fără componente externe, reducând dimensiunea globală a PCB-ului.

Figura 1: Detector de fază Note: 1. Pinii comparatorului necesită un circuit de siguranță la interfațarea cu o linie AC. Circuitul necesită rezistențe de limitare a curentului și diode Schottky de limitare a tensiunii. 2. Linia punctată prezentată în figură reprezintă conexiuni interne.

Detector de fază

Caracteristicile versatile și simplitatea CLC-ului extind capabilitățile de proiectare ale unui microcontroler PIC. Un bun exemplu care demonstrează capabilitățile unui CLC este un detector de fază. Un astfel de dispozitiv poate fi utilizat în numeroase aplicații, inclusiv în măsurarea distanțelor. Acesta operează pe principiul că, atunci când este transmisă o undă continuă RF către o țintă, distanța către țintă este proporțională cu diferența de fază dintre unda transmisă și cea recepționată. CLC-ul poate fi utilizat pentru a măsura diferența de fază dintre două semnale de aceeași frecvență. Undele transmisă și recepționată sunt utilizate ca intrări în CLC, iar diferența de fază dintre cele două semnale la ieșirea CLC poate fi utilizată pentru calculul distanței dintre sursă și țintă.

Atunci când utilizăm CLC-ul pentru implementarea detectorului de fază, funcția logică AND-OR din CLC poate fi folosită pentru a implementa o funcție XOR pentru a măsura mărimea diferenței de fază, iar funcția logică D-Flip Flop (D-FF – bistabil D) ajută la obținerea informației de avans și întârziere a semnalelor. Pe lângă formele de undă dreptunghiulare, este posibilă măsurarea fazei între alte tipuri de semnale analogice, precum forme de undă sinusoidale. Figura 1 prezintă configurația unui detector de fază utilizând un CLC.

Semnalele sursă, a căror diferență de fază trebuie măsurată, sunt furnizate ca intrări în două comparatoare, care sunt configurate ca detectoare de trecere prin zero (ZCD – Zero-Cross Detectors). Acestea convertesc semnalele analogice de intrare în unde dreptunghiulare de aceeași frecvență. Dacă semnalele sursă sunt dreptunghiulare, atunci ZCD-urile nu sunt necesare. Undele dreptunghiulare sunt trasate intern ca intrări în module CLC multiple.

CLC1 și intrarea de captură (IC – input capture) a perifericului sunt utilizate pentru determinarea amplitudinii diferenței de fază. CLC1 este configurat în funcția logică AND-OR din care este derivată funcționalitatea XOR. Ieșirea din XORed a lui CLC1 este conectată extern ca sursă de semnal la IC. Lățimea pulsului ieșirii din XORed oferă amplitudinea diferenței de fază dintre cele două unde și este măsurată de către IC. Dacă ieșirea CLC1 nu produce niciun semnal, atunci semnalele sursă sunt în fază.

(nred.: O intrare de captură a perifericului unui microcontroler este capabilă să citească un semnal digital pe un pin și să măsoare timpii între tranziția HIGH și LOW.)

Pentru a determina informația de avans/întârziere fază a celor două forme de undă, CLC-ul este configurat în mod D-FF cu o undă dreptunghiulară utilizată ca intrare D, iar cealaltă utilizată ca ceas. Dacă ieșirea CLC2 este de nivel „High” sau „Low” va determina dacă intrarea D are avans sau întârziere de fază față de intrarea de ceas. Măsurarea unghiului de fază între două semnale de aceeași frecvență este utilă în numeroase aplicații, precum măsurare, sisteme digitale de putere, comunicații și instrumente medicale.

Figura 2: Generator de formă de undă complementară în mod „edge-aligned”utilizând CLC

Generator de formă de undă complementară

O altă cale de a utiliza CLC-ul este cea a unui generator de undă complementară (CWG – Complementary Waveform Generator). CWG produce o formă de undă complementară cu controlul zonei neutre (numită și bandă moartă sau bandă de insensibilitate) de la sursa sa de intrare. Durata lățimii benzii de insensibilitate este inserată între două semnale pentru a preveni străpungerea de curent în diferite aplicații de surse de putere.

Această aplicație ilustrează utilizarea capabilităților de întrerupere și detecție ale perifericului CLC în generarea de forme de undă complementare cu un singur modul captură/comparație/PWM (SCCP).

Adesea, aplicații precum controlul motoarelor, necesită câteva generatoare de formă de undă complementare pentru a controla funcționalitatea. Modulele multiple captură/comparație/PWM (MCCP) pot produce forme de undă complementare cu semnale nesuprapuse prin controlul benzii moarte la ieșirile lor. Totuși, dacă aplicația necesită mai multe modele MCCP decât sunt disponibile în dispozitiv, atunci poate fi utilizat modulul SCCP în combinație cu CLC-ul.

Deoarece un modul SCCP, independent, nu poate genera semnale nesuprapuse, perifericele CLC cu modul SCCP pot fi utilizate pentru a genera o formă de undă complementară cu bandă moartă solicitată.

O bandă moartă poate fi adăugată pentru ambele tipuri de ieșiri ale SCCP: „edge-aligned” și „centre-aligned”. Figura 2 prezintă configurația CLC1, CLC2 și CLC3 pentru controlul benzii moarte a ieșirii SCCP în modul „edge-aligned”.

De exemplu, un circuit de comandă motor în punte poate fi comandat prin utilizarea unui periferic MCCP cu ieșirea sa producând o formă de undă complementară. Totuși, dacă trebuie comandate câteva astfel de drivere, iar numărul perifericelor MCCP disponibile pe dispozitiv este insuficient, atunci poate fi utilizat un SCCP în combinație cu CLC-ul.

Figura 3: Monitorizare mai multor parametri utilizând CLC

Monitorizare de parametri multipli

Adesea aplicațiile necesită monitorizarea unor parametri, precum temperatură, presiune și umiditate, în același timp. Dacă acești parametri ar începe să depășească praguri superioare sau inferioare, atunci ar trebui luate măsuri pentru a evita evenimente extreme.

Ca surse de intrare pentru CLC sunt disponibile multiple comparatoare. Într-un microcontroler, un comparator poate fi utilizat pentru a monitoriza numai un parametru. Ieșirea mai multor comparatoare poate fi combinată utilizând CLC-ul, pentru a monitoriza mai mulți parametri.

Măsurile necesare pot fi luate atunci când oricare sau toți parametrii monitorizați depășesc o limită clară. Figura 3 prezintă configurația CLC-ului pentru a monitoriza doi parametri diferiți.

În practică, această aplicație își găsește utilizarea în monitorizarea temperaturii și presiunii într-o instalație industrială, astfel încât instalația să poată fi închisă dacă vreunul dintre parametri depășește un prag prestabilit. Aceasta poate fi, de asemenea, utilizată pentru monitorizarea nivelelor de tensiune într-o sursă de tensiune ne-întreruptibilă offline.

Sumar

Adăugarea unei celule logice configurabile la setul de periferice, permite utilizatorilor să integreze proiecte de logică simplă într-un microcontroler PIC. Combinând ieșirile unor periferice diferite se îmbunătățesc capabilitățile perifericelor existente, extinzând astfel orizontul de aplicații pe care le poate îndeplini perifericul.

Deoarece funcțiile logice implementate în hardware au timpi de răspuns mai rapizi la eveniment prin comparație cu funcțiile logice implementate în software, CLC ajută la îmbunătățirea vitezei sistemului în general. Acesta oferă un nivel de integrare mai mare, fără necesitatea unor porți logice externe pentru implementarea funcțiilor logice, reducând în acest fel numărul de componente externe necesare și dimensiunea PCB-ului. De asemenea, prin combinarea diverselor surse de semnale pe intrare, CLC-ul, prin utilizarea unor porți logice, ajută la producerea altor diferite semnale.

Toate aceste intrări, ieșiri și funcții logice flexibile sunt ușor de implementat cu o unealtă bazată pe GUI, numită MPLAB Cod Configurator (MCC), care va genera pentru aplicația voastră un program C ușor de citit.

Resurse suplimentare:
Notă de aplicație privind extinderea capabilităților MCU PIC utilizând CLC: http://ww1.microchip.com/downloads/en/AppNotes/00002133a.pdf

Microchip Technology   |   https://www.microchip.com

Sigla-Microchip

S-ar putea să vă placă și

Adaugă un comentariu