+ All Categories
Home > Documents > Indrumator ASDN 2009

Indrumator ASDN 2009

Date post: 14-Dec-2014
Category:
Upload: iurie-covali
View: 331 times
Download: 5 times
Share this document with a friend
187
PREFAŢĂ Îndrumătorul de laborator constituie materialul de bază pentru pregătirea lucrărilor practice la disciplina Analiza şi Sinteza Dispozitivelor Numerice (ASDN) şi este destinat în principal studenţilor secţiilor de Automatică şi de Calculatoare din cadrul Facultăţii de Automatică şi Calculatoare a Universităţii Tehnice din Cluj-Napoca. Cele 13 lucrări din cuprins urmăresc însuşirea de către studenţi a cunoştinţelor referitoare la conceptele de bază din proiectarea sistemelor numerice. Se prezintă, în ordine, porţile logice fundamentale, circuitele logice combinaţionale, circuitele basculante bistabile, numărătoarele şi registrele de deplasare. În îndrumător există de asemenea lucrări pentru instrumente software specifice proiectării sistemelor numerice cu circuite cu grad foarte mare de integrare (VLSI), de tip PLD şi FPGA, precum şi pentru metodologiile de proiectare cu acestea. Fiecare lucrare urmăreşte următoarea succesiune logică: scopul lucrării, consideraţii teoretice, desfăşurarea lucrării şi, acolo unde este cazul, anexă. Lucrările se realizează atât pe panourile didactice cât şi pe simulatoarele software specifice şi pe plăci cu FPGA-uri. În desfăşurarea lucrărilor de laborator se acordă atenţie atât realizării schemelor cu circuite numerice cât şi operaţiilor de testare şi depanare a funcţionării schemelor. Varietatea soluţiilor expuse, uneori pentru implementarea aceleiaşi funcţii, permite efectuarea unei analize comparative a acestora. Întrebările suplimentare de la sfârşitul lucrărilor, al căror răspuns nu se găseşte în mod explicit în consideraţiile teoretice, au rolul de a suscita interesul pentru proiectarea sistemelor numerice, în vederea dezvoltării capacităţii creative a studenţilor. Documentaţia instrumentelor software din pachetul ACTIVE-HDL este anexată la sfârşitul îndrumătorului, pentru a nu încărca prea mult conţinutul lucrărilor. Tot în anexe se găseşte şi o scurtă prezentare a sistemelor de numeraţie, a codurilor (cu accent mai mare pe codurile binar- zecimale) şi a reprezentării numerelor în calculatoarele numerice. Autorii
Transcript
Page 1: Indrumator ASDN 2009

PREFAŢĂ Îndrumătorul de laborator constituie materialul de bază pentru pregătirea lucrărilor practice la disciplina Analiza şi Sinteza Dispozitivelor Numerice (ASDN) şi este destinat în principal studenţilor secţiilor de Automatică şi de Calculatoare din cadrul Facultăţii de Automatică şi Calculatoare a Universităţii Tehnice din Cluj-Napoca. Cele 13 lucrări din cuprins urmăresc însuşirea de către studenţi a cunoştinţelor referitoare la conceptele de bază din proiectarea sistemelor numerice. Se prezintă, în ordine, porţile logice fundamentale, circuitele logice combinaţionale, circuitele basculante bistabile, numărătoarele şi registrele de deplasare. În îndrumător există de asemenea lucrări pentru instrumente software specifice proiectării sistemelor numerice cu circuite cu grad foarte mare de integrare (VLSI), de tip PLD şi FPGA, precum şi pentru metodologiile de proiectare cu acestea. Fiecare lucrare urmăreşte următoarea succesiune logică: scopul lucrării, consideraţii teoretice, desfăşurarea lucrării şi, acolo unde este cazul, anexă. Lucrările se realizează atât pe panourile didactice cât şi pe simulatoarele software specifice şi pe plăci cu FPGA-uri. În desfăşurarea lucrărilor de laborator se acordă atenţie atât realizării schemelor cu circuite numerice cât şi operaţiilor de testare şi depanare a funcţionării schemelor. Varietatea soluţiilor expuse, uneori pentru implementarea aceleiaşi funcţii, permite efectuarea unei analize comparative a acestora. Întrebările suplimentare de la sfârşitul lucrărilor, al căror răspuns nu se găseşte în mod explicit în consideraţiile teoretice, au rolul de a suscita interesul pentru proiectarea sistemelor numerice, în vederea dezvoltării capacităţii creative a studenţilor. Documentaţia instrumentelor software din pachetul ACTIVE-HDL este anexată la sfârşitul îndrumătorului, pentru a nu încărca prea mult conţinutul lucrărilor. Tot în anexe se găseşte şi o scurtă prezentare a sistemelor de numeraţie, a codurilor (cu accent mai mare pe codurile binar-zecimale) şi a reprezentării numerelor în calculatoarele numerice.

Autorii

Page 2: Indrumator ASDN 2009
Page 3: Indrumator ASDN 2009

CUPRINS

Abstract.....................................................................................................7

Glosar ........................................................................................................9

Lucrarea nr. 1 Circuite logice fundamentale.........................................11

Lucrarea nr. 2 Editorul schematic şi simulatorul Active-HDL (I) ......24

Lucrarea nr. 3 Editorul schematic şi simulatorul Active-HDL (II).....30

Lucrarea nr. 4 Circuite logice combinaţionale ......................................38

Lucrarea nr. 5 Circuite logice combinaţionale MSI..............................48

Lucrarea nr. 6 Circuite combinaţionale complexe ................................58

Lucrarea nr. 7 Sinteza circuitelor logice combinaţionale cu dispozitive

logice programabile........................................................67

Lucrarea nr. 8 Circuite basculante bistabile .........................................77

Lucrarea nr. 9 Numărătoare (I)..............................................................87

Lucrarea nr. 10 Numărătoare (II) ..........................................................95

Lucrarea nr. 11 Registre şi registre de deplasare................................103

Lucrarea nr. 12 Familia de circuite FPGA XILINX...........................110

Lucrarea nr. 13 Sinteza circuitelor numerice cu dispozitive

programabile de tip FPGA........................................131

Anexa 1 Sisteme de numeraţie şi coduri.............................................150

Anexa 2 Editorul schematic şi simulatorul ACTIVE-HDL ..............164

Bibliografie ...........................................................................................189

Page 4: Indrumator ASDN 2009

TABLE OF CONTENTS

Abstract.....................................................................................................7

Glossary.....................................................................................................9

Lab Work 1 Basic Logic Circuits ...........................................................11

Lab Work 2 ACTIVE-HDL Schematic Editor and Simulator (I) ......24

Lab Work 3 ACTIVE-HDL Schematic Editor and Simulator (II).....30

Lab Work 4 Combinatorial Logic Circuits ...........................................38

Lab Work 5 MSI Combinatorial Logic Circuits ..................................48

Lab Work 6 Complex Combinatorial Logic Circuits...........................58

Lab Work 7 Synthesis of Combinatorial Logic Circuits using

Programmable Logic Devices ...........................................67

Lab Work 8 Flip-flops .............................................................................77

Lab Work 9 Counters (I) ........................................................................87

Lab Work 10 Counters (II).....................................................................95

Lab Work 11 Registers and Shift Registers ........................................103

Lab Work 12 The XILINX FPGA Family ..........................................110

Lab Work 13 Synthesis of Digital Circuits using FPGA Devices......131

Appendix 1 Number Systems and Codes ............................................150

Appendix 2 ACTIVE-HDL Schematic Editor and Simulator ..........164

References .............................................................................................189

Page 5: Indrumator ASDN 2009

ABSTRACT The Laboratory Work Support is addressed to the students studying Logic Design at the Computer Science Faculty. First are presented the fundamental logical circuits: basic logical gates, practical works being suggested in such order that students get acquainted with manipulation of these components. One of the characteristics of Logic Design lab session is the simultaneous working on didactic panels, where circuits can be observed and manipulated on-line, as well as on computers, using computer aided design software for digital circuits of ALDEC Company (ACTIVE-HDL schematic editor and simulator). After getting acquainted to the software, lab works are accomplished both on panels and by using the software. Following this, the MSI combinatorial circuits are presented with applications, and then the sequential logical circuits (flip-flops, counters, registers as well as shift registers) are studied. The last part of the Lab Work Support deals with the design methodology in VLSI technology, mainly on the basis of PAL/PLA programmable logical circuits as well as FPGA. Also the package ISE Foundation Series of XILINX Company is being deeply studied along with the generic structure of FPGA. Lab Work Support includes 2 appendices: the first one about number systems and codes and the second regarding the ACTIVE-HDL package. Appendix 1 makes a brief presentation of the numerical systems and codes (binary codes mainly) used in the computer field, being described weighted codes, unweighted codes, correctors and error detectors, etc. It also deals with number representation in computers (floating point and fixed point representations, etc.). Appendix 2 includes a large description of the ACTIVE-HDL schematic editor and simulator, thereby helping students to get acquainted with these products.

Page 6: Indrumator ASDN 2009
Page 7: Indrumator ASDN 2009

GLOSAR Adnotarea înapoi (back annotation) Procesul încorporării unor valori de întârziere de propagare temporală a semnaleleor într-o listă de conexiuni (netlist) a unui proiect. ASIC Application Specific Integrated Circuit. Circuit integrat proiectat pentru o aplicaţie specifică. Construirea unui circuit ASIC se face prin conectarea în moduri diferite a blocurilor constructive ale circuitelor existente. BCD Binary Coded Decimal. Cod binar în care fiecărei cifre zecimale (de la 0 la 9) i se atribuie codul de 4 cifre binare care exprimă numărul respectiv în baza 2. Celulă O funcţie logică, care poate fi o poartă logică, un bistabil, o unitate de RAM sau altă structură. De regulă, dimensiunea unei celule este mică în comparaţie cu alte blocuri constructive de circuit. CLB Configurable Logic Block. Este blocul logic constructiv de bază al familiei de dispozitive FPGA a firmei XILINX. El poate conţine mai multe slice-uri. CMOS Complementary Metal Oxide Semiconductor. Tehnologie de realizare fizică a circuitelor numerice. Completitudine funcţională Proprietate a anumitor funcţii logice de a permite realizarea oricărei funcţii logice utilizând numai acea funcţie. CPLD Complex Programmable Logic Device. Combinaţie între o matrice programabilă de porţi ŞI/SAU şi un set de macrocelule care sunt blocuri cu funcţii logice combinaţionale şi secvenţiale. FPGA Field Programmable Gate Array. O matrice regulată de celule care este fie completă funcţional, fie universală, situată în interiorul unei reţele de interconectare de canale de rutare a semnalelor. HDL Hardware Description Language - limbaj de descriere hardware. Limbaj de modelare a proiectelor hardware, analog limbajelor de programare software clasice, având însă trăsături (construcţii program, sintaxă, semantică etc.) specifice hardware.

Page 8: Indrumator ASDN 2009

10 LCA Logic Cell Array. Denumirea matricei de celule logice programabile din dispozitivele FPGA produse de firma XILINX. LUT Look Up Tables. Memorii RAM folosite ca şi blocuri combinaţionale în slice-uri. Netlist Fişier text care descrie un proiect. Cerinţele minime sunt: identificarea elementelor funcţionale, intrări şi ieşiri şi conexiuni. PAL Programmable Array Logic. Marcă înregistrată a firmei Monolithic Memories. Desemnează o matrice programabilă standard de porţi logice. PLA Programmable Logic Array. PLD Programmable Logic Device. Clasa generică de dispozitive programabile, alcătuită din PLA-uri, PAL-uri, FPGA-uri etc. PROM Programmable Read Only Memory. Memorie care păstrează informaţia şi dacă nu este alimentată. Poate fi doar citită. Programarea memoriei depinde de tipul ei constructiv. Slice Celula logică fundamentală din cadrul blocurilor logice ale FPGA-urilor. Conţine elemente combinaţionale, memorii LUT şi unul sau mai mulţi bistabili. Simulare Procesul de modelare a unui proiect logic şi a stimulilor săi de intrare. Implică un program care compilează o descriere a proiectului sub formă de netlist şi generează un model, după care aplică modelele semnalelor, modelului circuitului. Simulatorul calculează modelele semnalelor de ieşire. TTL Tranzistor-Tranzistor Logic. Tehnologie de realizare fizică a circuitelor numerice. Vectori de test Modele binare ale stimulilor de intrare ai unui circuit. Uneori includ modelele semnalelor de răspuns corespunzătoare şi sunt similari vectorilor de simulare, cu excepţia faptului că vectorii de test sunt în general aplicaţi numai unor proiecte sincronizate cu semnalele de strobe sau de selecţie folosite de un tester electronic.

Page 9: Indrumator ASDN 2009

LUCRAREA NR. 1 CIRCUITE LOGICE FUNDAMENTALE

1. Scopul lucrării

Se studiază experimental funcţionarea porţilor logice fundamentale: NU (NOT), ŞI (AND), ŞI-NU (NAND), SAU (OR), SAU-NU (NOR), SAU-EXCLUSIV (XOR), COINCIDENŢĂ (NXOR) şi utilizarea lor pentru implementarea unor funcţii booleene elementare. Se analizează şi se verifică funcţionarea unor circuite combinaţionale simple, stabilindu-se legăturile dintre algebra booleană şi porţile logice fundamentale. Se prezintă funcţionarea unei porţi logice TTL, care realizează funcţia logică ŞI-NU.

2. Consideraţii teoretice

Algebra booleană este un instrument simbolic de tratare a funcţiilor logice formale. Ea s-a impus ca fiind cel mai important mijloc matematic de analiză şi sinteză a circuitelor de comutaţie, deoarece între logica formală şi circuitele de comutaţie există următoarele analogii:

• logica studiază valoarea de adevărat sau fals a unor afirmaţii; • circuitele de comutaţie sunt realizate prin interconectarea unor

comutatoare, iar starea acestora nu poate fi decât închis sau deschis. 2.1 Concepte de bază O funcţie booleană este o funcţie de n variabile y = f(x1,x2,…,xn) definită de relaţia:

)1.1(1,01,0: →nf Funcţia f va pune în corespondenţă fiecărui element al produsului cartezian n-dimensional valorile 0 sau 1. Funcţiile booleene pot fi folosite la descrierea funcţionării unor dispozitive construite cu elemente de circuit având două stări. Acestea din urmă pot fi implementate printr-un întrerupător închis sau deschis, printr-un tranzistor blocat sau în conducţie etc.

Page 10: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 12

Funcţionarea unui astfel de element de circuit va fi descrisă de o variabilă booleană xi aşa cum se arată în figura 1.1.

ki

ki deschis => xi=0NM

xiNM

ki închis => xi=1 NM ki

Figura 1.1 Descrierea unui element de circuit cu 2 stări folosind o variabilă booleană xi

Funcţiile booleene elementare sunt funcţii booleene de una sau două variabile şi descriu funcţionarea circuitelor logice fundamentale. O poartă logică este un circuit care realizează o funcţie booleană elementară. Pentru realizarea cu circuite electronice a funcţiilor booleene este necesară punerea în corespondenţă a valorilor unei mărimi fizice electrice (tensiune sau curent) cu elementele mulţimii 0,1 sau Fals, Adevărat. Cele 2 valori sunt implementate sau reprezentate de 2 domenii disjuncte ale mărimii fizice alese.

Nivele de tensiune (curent)

Nivel High

Nivel Low

Figura 1.2 Reprezentarea variabilelor booleene prin tensiuni Situaţia în care valorile maxime de tensiune corespund lui “1” logic, iar cele minime lui “0” logic, defineşte ceea ce se numeşte logică pozitivă. Situaţia în care valorile maxime de tensiune corespund lui “0” logic, iar cele minime lui “1” logic, defineşte logica negativă.

Page 11: Indrumator ASDN 2009

CIRCUITE LOGICE FUNDAMENTALE

13

Tabelul 1.1 Nivelele logice de tensiune

1 sau H (high) 1 sau L (low) 0 sau L (low) 0 sau H (high) Logică pozitivă Logică negativă

NOTĂ: Schimbarea convenţiei este echivalentă cu o negare a variabilelor booleene. În continuare vom lucra în logică pozitivă. 2.2 Tehnologii de implementare Circuitele logice pot fi clasificate după tehnologia de implementare fizică (vezi anexa lucrării):

a) circuite logice TTL (Tranzistor-Tranzistor Logic): - circuite logice TTL standard; - circuite logice TTL low-power; - circuite logice TTL rapide; - circuite logice TTL Schottky.

b) circuite logice cu tranzistoare MOS (Metal Oxid Semiconductor):

- circuite logice MOS; - circuite logice CMOS (Complementary MOS).

Circuitele logice mai pot fi clasificate şi după tipul ieşirii: - ieşire în contratimp; - ieşire cu colector în gol; - ieşire cu 3 stări (tri-state).

Ultimele două tipuri de circuite logice sunt cele mai folosite la implementarea magistralelor.

2.3 Porţi logice elementare

a) Poarta NU (NOT)

Poarta NU (inversor) este definită de funcţia booleană elementară de o variabilă: ( ) aaf = . Simbolul funcţiei este prezentat în figura 1.3, iar tabelul de adevăr în tabelul 1.2.

Page 12: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 14

f a=a

Figura 1.3 Simbolul porţii logice NU Tabelul 1.2 Tabelul de adevăr al funcţiei logice NU

a f 0 1 1 0

b) Poarta ŞI (AND)

Ieşirea circuitului ŞI cu 2 intrări este definită de funcţia booleană: ( ) babaf •=, . Simbolul funcţiei este prezentat în figura 1.4, iar tabelul de

adevăr în tabelul 1.3.

a

b

f a b= •

Figura 1.4 Simbolul porţii logice ŞI Tabelul 1.3 Tabelul de adevăr al funcţiei logice ŞI

a b f 0 0 0 0 1 0 1 0 0 1 1 1

c) Poarta ŞI-NU (NAND) Funcţia booleană care descrie funcţionarea circuitului ŞI-NU este: ( ) babaf •=, . Simbolul funcţiei este prezentat în figura 1.5.

Page 13: Indrumator ASDN 2009

CIRCUITE LOGICE FUNDAMENTALE

15

a

b

f a b= •

Figura 1.5 Simbolul porţii logice ŞI-NU NOTĂ: Această poartă poate fi realizată folosind un inversor şi o poartă ŞI astfel:

a a f f

b b

Figura 1.6 Realizarea porţii logice ŞI-NU

d) Poarta SAU (OR)

Ieşirea circuitului SAU cu 2 intrări a şi b este definită de funcţia booleană: ( ) babaf +=, . Simbolul funcţiei este prezentat în figura 1.7, iar tabelul de adevăr în tabelul 1.4.

a

b f = a + b

Figura 1.7 Simbolul porţii logice SAU Tabelul 1.4 Tabelul de adevăr al funcţiei logice SAU

a b f 0 0 0 0 1 1 1 0 1 1 1 1

Page 14: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 16

e) Poarta SAU-NU (NOR) Funcţia booleană care descrie funcţionarea porţii SAU-NU este: ( ) babaf +=, . Simbolul funcţiei este prezentat în figura 1.8.

a

b baf +=

Figura 1.8 Simbolul porţii logice SAU-NU NOTĂ: Realizarea porţii SAU-NU se poate face folosind un inversor şi o poartă SAU, astfel:

a af f

b b

Figura 1.9 Realizarea porţii logice SAU-NU

f) Poarta SAU EXCLUSIV (XOR) şi poarta COINCIDENŢĂ (NXOR)

Funcţia booleană SAU-EXCLUSIV (XOR) este descrisă de: ( ) ;, babaf ⊕= ( ) bababaf •+•=, . Simbolul funcţiei este prezentat în

figura 1.10, iar tabelul de adevăr în tabelul 1.5.

a f a b= ⊕

b

Figura 1.10 Simbolul porţii logice SAU-EXCLUSIV

Page 15: Indrumator ASDN 2009

CIRCUITE LOGICE FUNDAMENTALE

17

Tabelul 1.5 Tabelul de adevăr al funcţiei logice SAU-EXCLUSIV

a b f a b= ⊕ 0 0 0 0 1 1 1 0 1 1 1 0

Funcţia booleană COINCIDENŢĂ (NXOR) este descrisă de:

( ) ;, babaf ⊗= ( ) bababaf •+•=, . Simbolul funcţiei este prezentat în figura 1.11, iar tabelul de adevăr în tabelul 1.6.

a f a b= ⊗

b

Figura 1.11 Simbolul porţii logice COINCIDENŢĂ Tabelul 1.6 Tabelul de adevăr al funcţiei logice COINCIDENŢĂ

a b f a b= ⊗ 0 0 1 0 1 0 1 0 0 1 1 1

2.4 Poarta TTL Vom studia poarta TTL (Transistor-Transistor Logic) care realizează funcţia ŞI-NU, deoarece este cea mai folosită.

Pentru înţelegerea modului de funcţionare a circuitelor logice este necesară o bună cunoaştere atât a regimurilor de funcţionare ale dispozitivelor semiconductoare (diode, tranzistoare bipolare şi tranzistoare MOS) cât şi a polarizărilor necesare a fi aplicate acestora pentru a obţine funcţiile dorite. Principalii parametri sunt: timpul de (întârziere la) propagare a informaţiei logice de la intrare la ieşire (tpd), puterea medie consumată de poartă (Pd) şi factorul de calitate (Pa), care se defineşte ca

Page 16: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 18

fiind produsul dintre Pd şi tpd. Schema porţii TTL de tip ŞI-NU este prezentată în figura 1.12.

VccR1 R2 R4

P M T4

A T2 D3T1

B VILmax

D1 D2 R3 VOHmin

T3

Figura 1.12 Schema internă a porţii TTL ŞI-NU Principiul de funcţionare a porţii TTL ŞI-NU este prezentat în continuare. Presupunem că toate intrările se află la un potenţial corespunzător valorii minime asociate nivelului logic „1“ la intrare (2V); rezultă că joncţiunea emitor-bază a tranzistorului T1 este polarizată invers, deci T1 lucrează în regiunea activă inversă. Circuitul este proiectat astfel încât când T1 conduce invers, T2 să fie saturat şi, datorită căderii de tensiune pe R3, T3 să se deschidă şi să tindă să se satureze. Rezultă la ieşire o tensiune VOH egală cu VCEsat= 0,2V a tranzistorului T3. Asociind la intrare unei tensiuni mai mare de 2 V nivelul logic „1“ şi la ieşire unei tensiuni mai mică de 0,4V nivelul logic „0“ rezultă că acest circuit asigură la ieşire „0“ logic dacă toate intrările sunt „1“ logic. Dacă intrarea B este „0“ logic (0V), atunci joncţiunea emitor-bază a tranzistorului T1 este deschisă şi potenţialul punctului P, Up= 0,7V, este insuficient pentru deschiderea tranzistoarelor T2 şi T3 (care rămân blocate). Atunci potenţialul punctului M este ridicat şi T4 conduce. Rezultă valoarea tensiunii de ieşire VOH = VCC - VBEsat4 - R2 IB4 – VD3 = 3,6V, care se asociază cu 1 logic.

Tranzistorii T3 şi T4 conduc deci în contratimp şi valorilor de tensiune corespunzătoare obţinute pe ieşire li se asociază valorile de “0” logic, respectiv “1” logic.

Caracteristicile porţii TTL ŞI-NU sunt: tpdHL = 8 ns pentru comutare H → L tpdLH = 12 ns pentru comutare L → H Pd = 10 mW

Page 17: Indrumator ASDN 2009

CIRCUITE LOGICE FUNDAMENTALE

19

2.5 Particularităţi în utilizarea porţilor logice Considerăm că avem intrările a, b şi o poartă disponibilă de tip ŞI-NU cu patru intrări. Trebuie să realizăm funcţia f a b= • , care pe baza teoremelor algebrei booleene se mai poate scrie: f a b= • • •1 1 sau f a a b b= • • • , de unde rezultă conexiunile din figura 1.13:

a

fb

ab f

1

Figura 1.13 Realizări posibile ale funcţiei ŞI-NU Observaţie: Intrările neutilizate se conectează la „1“ logic. Lăsate neconectate (în “gol” sau în “vânt”, în “aer”), ele introduc capacităţi parazite, care produc întârziere şi duc la o funcţionare defectuoasă a circuitului. În cazul lucrărilor de laborator, pe panoul didactic, aceste intrări pot fi totuşi neconectate, deoarece în acest caz parametrii de performanţă nu sunt atât de importanţi.

Funcţia NU se poate obţine dintr-o poartă ŞI-NU cu trei intrări în mai multe moduri, după cum scriem expresia inversorului: f a= • •1 1 sau f a a a= • • .

af

af

1

Figura 1.14 Realizări posibile ale funcţiei NU

Funcţia ŞI de 2 variabile se poate realiza pornind de la expresia:

f a b a b a b= • = • = + (dublă negare, teorema lui De Morgan), astfel (figura 1.15):

Page 18: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 20

a

f

b

Figura 1.15 Realizare posibilă a funcţiei ŞI

O altă componentă utilizată în sinteza circuitelor combinaţionale

este poarta ŞI-SAU-NU, care realizează funcţia: f a b c d= • + • , având simbolul:

451a

bf

c

d

Figura 1.16 Circuitul ŞI-SAU-NU

Funcţia SAU-EXCLUSIV efectuează suma modulo doi între două variabile: f a b a b a b= ⊕ = • + • . Prin transformarea expresiei rezultă:

f a b a b a b a b= • + • = + • +( ) ( ) , deci avem încă două posibilităţi de materializare a acestei funcţii:

ab

f

ab

f

Figura 1.17 Posibilităţi de materializare a funcţiei SAU-EXCLUSIV

Page 19: Indrumator ASDN 2009

CIRCUITE LOGICE FUNDAMENTALE

21

3. Desfăşurarea lucrării 1. Identificaţi elementele funcţionale ale panoului didactic. 2. Verificaţi funcţionarea corectă a porţilor ŞI cu 2 sau 4 intrări, a porţii

SAU-NU cu 2 intrări şi a componentei ŞI-SAU-NU parcurgând următoarele etape: a) Identificaţi tipul componentei TTL; b) Identificaţi modul de alimentare al componentei alese la 2.a); c) Verificaţi funcţionarea circuitelor.

3. Realizaţi şi verificaţi funcţionarea porţilor cu număr de intrări mai mare decât numărul variabilelor funcţiei.

4. Realizaţi circuitele XOR şi NXOR cu porţi ŞI-NU respectiv ŞI-SAU-NU.

5. Desenaţi şi implementaţi (realizaţi cu circuite integrate) următoarele funcţii, folosind porţi ŞI, SAU, NU. a) x y z• +( ) b) x y x z• + • c) x y z• +( ) d) x y z+ • e) w x y z• + •( )

6. Desenaţi şi implementaţi următoarele funcţii:

a) ( ( ))x y z+ +

b) ( ) ( )x y x y+ + +

Page 20: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 22

Anexă 1. Familia TTL Există câteva subfamilii TTL care realizează aceleaşi funcţii, dar care diferă din punctul de vedere al timpului de propagare a informaţiei şi al puterii consumate. Circuitele integrate TTL au de la 14 până la 62 de pini. Tabelul 1.7 Familia de circuite integrate TTL

Familia TTL Putere medie consumată pe poartă Pd

Timp de propagare tpd

Notaţie în catalog

Standard 20 10 74xxHigh Speed 30 6 74HxxSchottky 20 3 74SxxTTL Low-Power 2 35 74LxxLow-Power Schottky

2 15 74LSxx

GND 7 6 5 4 3 2 1

8 9 10 11 12 13 14 Vcc

Figura 1.18 Familia de circuite integrate TTL

Pinii circuitului integrat sunt numerotaţi în sens contrar acelor de ceasornic. Pentru alimentarea circuitului, la majoritatea circuitelor TTL de 14 pini, pinul 7 este GND (masa = 0Vcc), iar pinul 14 este Vcc (+5Vcc). 2. Familia MOS Principalele avantaje faţă de familia TTL sunt:

• imunitatea la zgomot (marginea de zgomot este de 1,5V faţă de 0,4V la TTL);

• consumul de putere redus. Cea mai răspândită familie MOS este CMOS.

Page 21: Indrumator ASDN 2009

CIRCUITE LOGICE FUNDAMENTALE

23

În figura 1.19 se prezintă diferenţele între valorile tensiunilor care se asociază nivelelor logice la familia TTL şi familia CMOS.

TTL CMOS5V Intrare 1 5V

Nivel 1 logiclogic la 3,5Vieşire VOHmin Regiune de

2,4V nedeterminare1,5V

Intrare 00,4V VOLmax logic0V 0V Nivel 0 logic la ieşire

Figura 1.19 Nivele logice TTL şi CMOS

Page 22: Indrumator ASDN 2009

LUCRAREA NR. 2 EDITORUL SCHEMATIC ŞI SIMULATORUL

ACTIVE-HDL (I)

1. Scopul lucrării

Se prezintă editorul schematic şi simulatorul din mediul de proiectare ACTIVE-HDL, urmărindu-se însuşirea stilului de editare a schemelor numerice şi a modului în care acest mediu poate fi folosit la simularea circuitelor numerice. Se realizează câteva scheme elementare, parcurgând-se paşii necesari în vederea simulării funcţionale viitoare. 2. Consideraţii teoretice 2.1 Mediul de proiectare ACTIVE-HDL ACTIVE-HDL, produs al firmei ALDEC, este un mediu integrat pentru dezvoltarea de proiecte schematice sau bazate pe limbaje de descriere hardware: VHDL, Verilog, EDIF sau mixte. Mediul cuprinde mai multe componente care servesc la editare, compilare, simulare, depanare, managementul resurselor, execuţie, sinteză şi implementare (figura 2.1). Enumerăm câteva dintre principalele componente ale acestui mediu: 1. Instrumente de introducere a proiectului:

• Editor schematic (Block Diagram): permite introducerea proiectului sub formă de schemă de părţi componente (porţi logice, circuite MSI etc.);

• Editorul de limbaje de descriere hardware (HDL Source): permite specificarea proiectului direct în VHDL sau Verilog;

• Editorul de simboluri (Symbol): permite crearea de noi simboluri şi modificarea celor existente.

• Editorul de automate finite (State Diagram): permite introducerea proiectului într-o formă grafică. Stările şi tranziţiile automatelor pot fi descrise prin enunţuri scrise în limbaje de descriere hardware.

Page 23: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL (I) 25

Figura 2.1 Componentele ACTIVE-HDL

2. Instrumente de verificare a proiectului:

Simulatorul – permite verificarea funcţionării prin vizualizarea formelor de undă. Pentru simulare se pot crea şi vectori de test. 3. Instrumente de control:

• Workspace / Design Explorer – gestionează proiectele; • Design Browser – conţine resursele, biblioteca curentă, structura

proiectului care se simulează, obiecte HDL sau EDIF selectate; • Library Manager – gestionează toate bibliotecile ACTIVE-HDL

şi conţinutul lor; • Console – permite introducerea de macrouri sau script-uri sub

formă de text şi vizualizarea mesajelor generate.

Page 24: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 26

2.2 Editorul schematic

2.2.1 Introducere

Editorul schematic (Block Diagram) este un utilitar de introducere grafică a schemelor cu circuite numerice şi se activează din meniu sau cu

pictograma . Un editor schematic este folosit în general la crearea schemelor

electrice, descriind componentele folosite şi conexiunile lor. Desenarea schemelor poate fi folosită în forma "hard copy" (tipărită) ca documentaţie pentru asamblarea proiectului.

Desenul schematic poate fi convertit în forme electronice, pentru folosirea cu alte utilitare CAE (Computer Aided Engineerig), precum programele de machetare PCB (placă de cablaj) sau FPGA sau simulatoarele logice. Fişierul care conţine informaţii despre componentele şi conexiunile din desen este numit netlist. Acest fişier nu conţine nici o informaţie grafică despre desen, dar este suficient pentru a crea o placă fizică sau un desen FPGA. Există câteva formate diferite de netlist folosite de diferite echipamente.

În editorul schematic, pentru descrierea schemelor şi a simbolurilor logice, se utilizează formatul EDIF. Rezultatele simulării pot fi vizualizate şi în editorul schematic, iar din diagramele bloc se poate crea cod HDL şi se pot obţine fişiere grafice.

2.2.2 Simboluri şi biblioteci

Componentele folosite în desenarea circuitului trebuie să aibă o reprezentare grafică simbolică. Editorul schematic ACTIVE-HDL vine cu un set de biblioteci de simboluri grafice cu foarte multe elemente. În plus ACTIVE-HDL are un editor de simboluri (Symbol ) pentru crearea unor simboluri noi şi modificarea celor existente.

Simbolul schematic constă din corpul simbolului şi pini. Corpul simbolului este un desen grafic care poate fi folosit la descrierea funcţiei logice a componentei. Pinul este un obiect grafic (o linie) care reprezintă punctul de conectare a dispozitivului, folosit la legarea de alte dispozitive. Pinul poate fi folosit pentru o singură conectare sau pentru un şir de legături (pinul de magistrală).

Simbolurile vor fi conectate între ele prin conexiuni fizice (fire de cablaj vizibile pe ecran), sau logice (acestea sunt realizate tot prin fire de cablaj, dar care nu sunt afişate pe ecran).

Page 25: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL (I) 27

2.2.3 Conexiunile fizice şi logice

Există două moduri de a conecta dispozitivele pe o schemă: • Conexiunea fizică este un obiect grafic (numit fir) desenată

pe o schemă între doi sau mai mulţi pini; • Conexiunea logică este o conexiune făcută între doi sau mai

mulţi pini fără a desena firul de legătură. Acest tip de conexiune este în general realizat atribuind nume identice la două sau mai multe legături conectate la pinii dispozitivului.

Un alt exemplu de conexiune este magistrala, care este o colecţie de conexiuni fizice sau logice având acelaşi nume.

2.2.4 Proiecte schematice multiple şi ierarhice

Desenele care nu intră pe o pagină schematică pot fi uşor realizate sau folosind pagini (ecrane) multiple sau ca o structură ierarhică de desen. Pagina schematică multiplă nu este diferită de o pagină simplă, doar că nu se pot face conexiuni fizice între pinii de pe două pagini diferite. În schimb trebuie să folosim conexiuni logice ca nume de legături sau nume de magistrală. NOTĂ: Pentru conectarea circuitelor plasate pe pagini multiple, trebuie să folosim conexiunile logice. Nu putem folosi legarea directă sau terminalele de intrare-ieşire (I/O).

Desenele ierarhice sunt bazate pe divizarea desenului în secţiuni mai mici (macro-uri). Secţiunile sunt desene pe o singură pagină convertite de editorul schematic în simboluri schematice şi salvate în biblioteca proiectului. Macro-simbolurile pot fi folosite în alte scheme şi conectate la alte simboluri. Acelaşi macro-simbol schematic poate fi folosit de oricâte ori în cadrul aceluiaşi proiect. Nivelul schematic superior ocupă mai puţin spaţiu şi este de obicei mai clar pentru utilizator, deoarece foloseşte blocurile de nivel înalt pentru a construi desene complexe. Conexiunile dintre blocurile ierarhice pot fi făcute doar prin intermediul pinilor de intrare-ieşire. NOTĂ: Macrourile ierarhice (pagini schematice) pot fi conectate la un nivel ierarhic superior doar prin terminalele de intrare-ieşire. În desenele ierarhice nu sunt permise conexiunile logice prin nume identice.

Page 26: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 28

Proiectele ierarhice pot fi create începând de sus în jos (abordarea top-down) sau de jos în sus (abordarea bottom-up).

2.2.5 Verificarea desenului

Una din problemele majore care apar la editoarele schematice este numărul de paşi necesar verificării chiar şi a celui mai simplu proiect. Procesul de verificare constă întâi din compilarea programului pentru generarea de netlist, care verifică dacă toate conexiunile făcute pe schemă sunt corecte din punct de vedere electric şi apoi din testarea comportării circuitului cu ajutorul simulatorului logic. Dacă este găsită vreo greşeală, schema trebuie corectată şi întregul proces trebuie repetat.

Este permisă vizualizarea simulării în editorul schematic. Putem selecta puncte de test pe schemă (probes), rula simularea şi observa cum pinii dispozitivului îşi schimbă stările logice.

2.3 Operaţiile editorului schematic

Operaţiile editorului schematic ACTIVE-HDL (Block Diagram) sunt controlate prin activarea pictogramelor şi butoanelor din barele de instrumente sau a comenzilor din meniul Diagram. Principalele operaţii realizate în cursul editării unui proiect sunt:

• iniţializarea editorului schematic; • operaţii de introducere a desenelor; • operaţii de gestionare a paginilor schematice; • operaţii de tip Cut and Paste (decupare şi lipire); • operaţii zoom (de mărire/micşorare); • operaţii de editare; • operaţii pentru verificarea desenului etc. Toate operaţiile sunt prezentate în detaliu în cadrul Anexei 2.

2.4 Construirea unei scheme

Fiecare schemă este alcătuită din următoarele componente: • Cadrul şi tabelul paginii; • Simboluri / componente; • Conexiuni (fire sau magistrale); • Terminale şi nume de conexiuni; • Grafice şi text.

Page 27: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL (I) 29

Setările paginii sunt controlate folosind opţiunea Page Setup din meniul File.

Fiecare simbol al unui obiect constă din simbolul grafic, numele componentei, tipul componentei şi atributele. De exemplu, o poartă NAND cu 2 intrări constă din simbolul grafic cunoscut pentru poarta logică de tip NAND, numele (de exemplu U3), tipul NAND2 şi atribute grafice specifice, cum ar fi, de exemplu, unghiul de rotire şi oglindirea.

Conexiunile de fire pot fi desenate: • de la pin la pin; • de la pin la un terminal de intrare-ieşire (I/O); • de la un pin la o legătură existentă; • de la o legătură existentă la un pin. Putem termina un fir la orice locaţie de pe schemă făcând dublu clic

pe butonul mouse-ului. Acesta va produce un terminal fictiv, numit şi terminalul firului, reprezentat ca un pătrăţel cu culoarea magenta.

Toate legăturile sunt validate în timp ce sunt desenate şi editorul nu permite începerea sau terminarea unei legături dacă nu reprezintă o conexiune electrică validă. 3. Desfăşurarea lucrării 1. Lansaţi în execuţie editorul schematic al mediului ACTIVE-HDL şi

experimentaţi diversele moduri de lucru ale acestuia conform prezentării din lucrare.

2. Editaţi toate schemele numerice elementare din lucrarea 1: a) desenându-le ca ansamblu de porţi logice; b) extrăgându-le din bibliotecile proprii mediului ACTIVE-HDL. Care mod de lucru este preferabil?

3. Realizaţi principalele operaţii disponibile în editorul schematic ACTIVE-HDL asupra porţilor logice fundamentale prezentate în lucrarea 1.

Page 28: Indrumator ASDN 2009

LUCRAREA NR. 3 EDITORUL SCHEMATIC ŞI SIMULATORUL

ACTIVE-HDL (II) 1. Scopul lucrării Se prezintă caracteristicile avansate ale mediului de proiectare ACTIVE-HDL (editorul schematic şi simulatorul). Se oferă exemple de scheme şi un exemplu de proiect ierarhic, parcurgând-se apoi paşii necesari în vederea simulării funcţionale şi temporale a acestora. 2. Consideraţii teoretice

2.1 Net-uri

Un net reprezintă o reţea multi-terminal de fire de cablaj care interconectează componentele logice în cadrul schemelor. Un fir poate fi desenat activând pictograma Wire . Numele de net sunt folosite pentru a lega paginile schematice multiple. Toate net-urile care folosesc acelaşi nume sunt conectate împreună. Iniţial firelor le sunt asignate numere ascunse, care sunt folosite intern de ACTIVE-HDL. Oricum, pentru clarificare şi documentare, putem asocia un nume oricărui fir de pe schemă. Acest nume poate descrie funcţia semnalului în desen (de exemplu Clock, Enable, Reset etc.).

Modul detaliat de utilizare a net-urilor este prezentat în Anexa 2.

2.2 Magistrale

O magistrală reprezintă un set de fire metalice de cablaj grupate sub un nume generic. Pictograma Bus activează editarea magistralelor. Magistralele pot să înceapă şi să se termine la orice locaţie de pe ecran. Ele pot să se termine la terminalele şi pinii componentelor.

Legarea pinilor la magistrale se activează dacă este setat modul de legare automată (din Tools → Preferences). „Bus taps” sunt o reprezentare

Page 29: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL (II) 31

grafică prin care se desenează legătura dintre un fir şi o magistrală. Făcând clic dreapta cu mouse-ul pe magistrala selectată şi selectând apoi Add Taps se generează automat „bus taps”. Pinii dispozitivului pot fi astfel conectaţi, rând pe rând, la magistrală.

Mai multe detalii referitoare la utilizarea magistralelor se găsesc în Anexa 2. 2.3 Plasarea punctelor de alimentare Pentru a asocia semnalul de alimentare (GND sau PWR) cu un pin sau cu un fir selectat de pe schemă, activaţi pictograma corespunzătoare. Ca răspuns, ACTIVE-HDL va permite selectarea semnalului de alimentare şi a reprezentării sale grafice. Simbolul pentru GND sau PWR se plasează la pinul sau firul dorit, unde se va produce o conectare a alimentării. 2.4 Simulatorul ACTIVE-HDL Simularea funcţionării schemelor editate cu Editorul Schematic (Block Diagram) se face sub aspectul formelor de undă, care se vizualizează în ferestre de simulare (Waveform Window). Formele de undă pot fi salvate în fişiere şi reutilizate ca şi vectori de test pentru alte simulări.

O fereastră de simulare se deschide folosind comanda din meniu sau

pictograma . Editorul schematic poate opera on-line cu simulatorul (ambele

aplicaţii sunt active în acelaşi timp). Orice schimbare din editorul schematic este transmisă simulatorului care ne atenţionează asupra modificării şi cere acordul utilizatorului pentru a face compilarea necesară pentru a putea relua simularea.

2.4.1 Simularea unei scheme Pentru a exemplifica funcţionarea simulatorului edităm schema unui bistabil de tip D (figura 3.1). După compilare, în Desing Browser selectăm din lista de sus „bistabil”. În fereastra de forme de undă adăugăm semnalele din schemă (Intrare1, Intrare2 şi Ieşire) din meniu sau prin pictograma şi apoi asociem valori logice pentru cele 2 intrări, din meniu sau cu pictograma .

Page 30: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 32

C

D Q

FD

Intrare1

Intrare2

Iesire

Figura 3.1 Circuitul bistabil D

Dacă simulatorul este activat (Initialize Simulation) putem simula

paşi simpli (singulari) din schemă apăsând unul dintre butoanele Run , Run Until sau Run For . Simulatorul arată stările logice ale punctelor de test din editor după fiecare pas de simulare.

Putem selecta puncte de test (probes) în schema din editor, dacă simulatorul este activ (figurile 3.2 şi 3.3).

C

D Q

FD

Intrare1

Intrare2

Iesire

0

0 X0

0

X

Figura 3.2 Pini cu puncte de test (1)

C

D Q

FD

Intrare1

Intrare2

Iesire

0

1 11

0

1

Figura 3.3 Pini cu puncte de test (2)

Rezultatele simulării sunt afişate chiar pe pinii selectaţi (figura 3.2)

atât sub formă de caractere alfanumerice cât şi în culori diferite. Un eveniment de simulare este o schimbare a stării logice în oricare din punctele de test monitorizate. Culorile şi simbolurile afişate pe punctele de test sunt prezentate în tabelul 3.1.

Page 31: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL (II) 33

Tabelul 3.1 Simbolurile şi culorile punctelor de test din schemă

Simbol Culoare Descriere 1 Roşu high 0 Verde low X Albastru închis nedeterminată Z Galben înaltă impedanţă sau neconectată L Verde activitate necunoscută low H Roşu activitate necunoscută high U Alb neasignată sau necunoscută - Gri stare nedefinită sau indiferentă

2.4.2 Bibliotecile de componente

Bibliotecile de componente ale sistemului ACTIVE-HDL sunt

stocate intern de către programul Library Manager şi de baza de date asociată. Simbolurile schematice şi modelele de IC (circuite integrate) corespunzătoare, pachetele etc. sunt toate legate împreună în cadrul bazei de date Library Manager.

Pentru a vedea directoarele şi conţinutul acestor biblioteci, se selecteză programul Library Manager din meniul View sau cu pictograma

. Librăria implicită a proiectului apare în Design Browser.

2.5. Gestiunea schemelor de proiect

În ACTIVE-HDL se pot crea următoarele structuri de proiect: • proiect mono-pagină; • proiect multi-pagină; • proiect ierarhic. Selectarea unei anumite structuri de proiect depinde de mărimea

proiectului (număr de simboluri şi de conexiuni), de scopul acestuia (pentru o placă sau un circuit integrat) şi de standardele companiei. Următoarele secţiuni descriu fiecare tip de proiect amintit şi utilizarea sa.

2.5.1 Schema mono-pagină

Proiectele mono-pagină sunt folosite de obicei pentru proiecte de dimensiuni mici. Cea mai mare dimensiune a planşei este 44”×34” (mărimea E). Marele avantaj al unei scheme mono-pagină este faptul că se

Page 32: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 34

pot folosi conexiuni fizice pentru întregul proiect şi astfel urmărirea conexiunilor este mai uşoară atunci când se creează o placă sau când se optează pentru modul de lucru ierarhic.

Dezavantajele folosirii unor planşe de mari dimensiuni sunt: • Redesenarea se face încet. O schemă cu un număr mare de

simboluri este mai greu de defilat pe ecran decât o schemă cu mai puţine componente;

• Sunt dificil de tipărit cu o imprimantă laser. Planşele mari trebuie tipărite cu ajutorul unui plotter.

2.5.2 Schema multi-pagină de tip “flat”

Dacă proiectul devine prea mare pentru o singură pagină, se poate folosi o structură de proiect multi-pagină. Când se creează o nouă planşă, aceasta devine automat parte a proiectului curent. Orice s-ar desena pe această planşă, aparţine aceleiaşi plăci sau cip (circuit integrat) ca şi prima planşă. Pentru a face conexiuni între paginile schemei, trebuie executate conexiuni logice prin folosirea aceloraşi nume de net, terminale de intrare-ieşire sau “bus taps” în toate planşele schemei. De exemplu, introducând terminalul de I/O numit CLOCK pe planşa 1 şi numele de net CLOCK pe planşa 2, se vor conecta automat cele două obiecte. Avantajele în cazul folosirii unor structuri de proiect multi-pagină sunt următoarele:

• Se pot folosi mărimi mici de planşă, care sunt mai uşor de tipărit cu imprimante laser şi mai uşor de mânuit în producţie, testare sau alte departamente;

• Se poate lucra cu mărimi de proiect nelimitate, fără a se condensa schemele.

Folosirea schemelor multi-pagină are următoarele dezavantaje: • Erorile de conectare între planşe sunt detectate doar atunci când

este creată lista de componente (netlist); • Toate numele de net sunt globale. Aceasta înseamnă că se pot

conecta accidental două net-uri prin asignarea aceluiaşi nume. NOTĂ: Toţi specificatorii de referinţă pentru simboluri într-o schemă multi-pagină trebuie să fie unici. ACTIVE-HDL asociază automat numere unice. Dacă se asociază manual aceeaşi referinţă la două dispozitive diferite, la crearea listei de componente se semnalează eroare.

Page 33: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL (II) 35

2.5.3 Schema ierarhică Datorită numărului mare de simboluri folosite în proiectele ASIC (în mod normal câteva mii), este foarte dificil să se lucreze cu asemenea proiecte folosind structuri de proiect mono sau multi-pagină. Proiectele cer, în mod normal, mii de primitive simple, precum porţi şi bistabili, pentru a fi folosite pentru dispozitive PLD, FPGA sau ASIC. Pentru a simplifica schemele, proiectanţii preferă să folosească componente de nivel înalt, care au o funcţionalitate clară, de exemplu dispozitive echivalente TTL. Soluţia pentru această problemă este conceptul de macro ierarhic. Un astfel de macro este un dispozitiv din bibliotecă, dispozitiv care apare ca o componentă standard, dar care este implementat intern ca o schemă sau ca o listă de componente. De exemplu, se poate crea un echivalent pentru numărătorul TTL 4162 prin desenarea unei scheme macro doar cu porţi şi bistabili. Acest macro poate fi salvat în bibliotecă şi folosit de mai multe ori în proiecte. Câteva biblioteci FPGA sunt deja livrate cu un anumit număr de macro-uri ierarhice, astfel încât utilizatorul nu mai este nevoit să le creeze el însuşi. Proiectele ierarhice sunt foarte eficiente la proiecte de mari dimensiuni (PLD, FPGA, ASIC etc.). În schemele macro ierarhice toate numele de net-uri şi cele de referinţă sunt locale. Aceasta înseamnă că se pot folosi aceleaşi nume de semnal de câteva ori în macro-uri diferite, iar acestea nu vor fi automat conectate. Conexiunile dintre schemele ierarhice şi restul proiectului sunt făcute prin terminale de intrare-ieşire (I/O). Aceste terminale sunt convertite în simboluri de pini ierarhice, şi, după ce simbolul este plasat pe planşa schemei, conexiunile pot fi făcute la aceşti pini. Astfel se permite afişarea explicită a tuturor conexiunilor în schema ierarhică.

Figura 3.4 Structura de proiect ierarhică

Page 34: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 36

Deoarece doar semnalele prezentate ca şi pini terminali trebuie conectate, trebuie plasate puţine fire, simplificându-se astfel proiectarea. Schema ierarhică este convertită într-un simbol de bibliotecă care poate fi plasat în orice altă schemă. Avantajele folosirii proiectelor ierarhice sunt următoarele:

• Simbolurile din biblioteci pot reprezenta blocuri funcţionale de dimensiuni mari, implementate în detaliu la niveluri ierarhice inferioare. Examinând schema de nivel înalt, proiectantul poate vedea structura generală de proiectare fără a fi copleşit de detaliile de implementare;

• Metodologiile “top-down” sau “bottom-up”, disponibile la proiecte ierarhice permit lucrul în grup. Fiecare secţiune de proiectare poate fi repartizată unui proiectant diferit. Toate conflictele între diferitele secţiuni de proiectare sunt eliminate deoarece interfeţele sunt făcute prin pini simbolici definiţi explicit;

• Se pot folosi mai multe instanţieri ale aceluiaşi macro. Dacă aceeaşi schemă ar fi trebuit să fie folosită într-o proiectare de tip “flat”, ar fi trebuit să fie duplicată pentru fiecare instanţiere. Fiecare corecţie la schema macro înseamnă editarea tuturor apariţiilor. Macro-ul ierarhic este modificat doar o singură dată pentru că toate apariţiile sale vor fi automat modificate de către editorul de proiect ierarhic;

• Macro-urile pot fi folosite în proiecte multiple. Se poate proiecta un set de module reutilizabile care pot fi păstrate în macro-uri ierarhice fiind folosite ulterior în mai multe proiecte.

Dezavantajele folosirii proiectelor ierarhice sunt următoarele: • Numele de net-uri pot deveni foarte lungi. Multe utilitare de

proiectare a circuitelor nu acceptă liste de componente ierarhice. Acest lucru cere producerea unei liste de tip “flat” din proiectul ierarhic. Metoda folosită pentru crearea identificatorilor de referinţă unici adaugă numele de referinţă al ierarhiei la fiecare referinţă de simbol. De exemplu, un simbol U58 într-un macro numit H8, va fi denumit H8/U58. În proiectul ierarhic multinivel, aceste nume pot deveni foarte lungi, depinzând de numărul de nivele ierarhice;

• Post-adnotarea este dificil de implementat, în special pentru proiecte PCB. De asemenea, nu există programe de proiectare PCB care să accepte liste de componente ierarhice. Din acest motiv, toate numele de net-uri şi numele de referinţă trebuie

Page 35: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL (II) 37

convertite în identificatori unici. Metoda implicită de realizare a acestui lucru este de a adăuga prefixul ierarhiei la fiecare nume ierarhic (de exemplu H50/H2/U30);

• Este imposibilă separarea în macro-uri a secţiunilor de circuit ale aceluiaşi dispozitiv. Secţiunile pot fi grupate manual într-un singur dispozitiv în programul de aranjare (creare a layout-ului) al PCB, dar nu şi în schema ierarhică;

• Modificarea macro-urilor necesită, de multe ori, schimbarea simbolurilor lor. De exemplu, dacă se doreşte adăugarea sau eliminarea unor semnale din macro-ul ierarhic, simbolul pentru acel macro va fi schimbat. Aceasta poate duce la corecţii ale conexiunilor în toate paginile schemei în care se foloseşte acel macro.

Gestiunea proiectelor multi-pagină, cu principalele operaţii şi reguli ce trebuie respectate la crearea unor astfel de proiecte, precum şi un exemplu detaliat de proiect ierarhic sunt prezentate pe larg în Anexa 2. 3. Desfăşurarea lucrării

1. Realizaţi toate proiectele din lucrarea precedentă folosind noile caracteristici prezentate în această lucrare.

2. Realizaţi o schemă complexă folosind pentru conectare magistrale în loc de fire simple. Cum se modifică viteza de introducere şi simplitatea proiectului?

3. Simulaţi schemele realizate: a) schemele cu conexiuni din fire singulare; b) schemele cu conexiuni prin magistrale.

Care variantă este mai avantajoasă? 4. Creaţi, după model, un proiect ierarhic, parcurgând toţi paşii

prezentaţi în Anexa 2. 5. Implementaţi toate schemele din lucrările anterioare

descompunându-le în componente şi lucrând cu proiecte ierarhice şi apoi şi cu magistrale. Ce constataţi referitor la uşurinţa în proiectare şi la eficienţă?

Page 36: Indrumator ASDN 2009

LUCRAREA NR. 4 CIRCUITE LOGICE COMBINAŢIONALE

1. Scopul lucrării Se prezintă circuitele logice combinaţionale fundamentale. Se realizează circuite combinaţionale pentru implementarea unor funcţii booleene în formă canonică şi minimală. Se studiază şi se verifică funcţionarea unor circuite combinaţionale: circuit care realizează incrementarea cu 1 a codului BCD, comparator de numere pe 2 biţi, sumator de numere pe 2 biţi. 2. Consideraţii teoretice Circuitele logice combinaţionale constituie clasa dispozitivelor numerice fără memorie, circuite ale căror ieşiri, la un moment dat, sunt complet determinate de intrări. Ele sunt alcătuite din arbori de porţi logice elementare. Pentru realizarea lor sunt suficiente unul sau mai multe tipuri de porţi logice elementare. 2.1 Logică pozitivă şi logică negativă La implementarea funcţiilor logice cu dispozitive electronice, acestea operează cu tensiuni şi nu cu nivele logice. Există întotdeauna două interpretări ale oricărui tabel de adevăr care descrie funcţionalitatea unei porţi, bazate pe logica pozitivă şi respectiv pe logica negativă. Valorile de tensiune pot fi interpretate ca nivele logice numai prin prisma acestor convenţii. Tensiunile de la ieşire sunt fizic aceleaşi, numai interpretarea logică diferă. Până acum am presupus că "1" logic este reprezentat prin nivelul de tensiune mai mare decât "0" logic. Această convenţie se numeşte logică activă pe 1 (active high) sau logică pozitivă. Când dorim activarea unui anumit semnal (de exemplu "deschide uşa"), aplicăm un nivel de tensiune mai mare (High) pe acea linie de semnal şi acesta este interpretat ca "1" logic. Convenţia opusă este însă uneori preferabilă, mai ales atunci când

Page 37: Indrumator ASDN 2009

CIRCUITE LOGICE COMBINAŢIONALE 39

folosim porţi ŞI-NU sau SAU-NU pentru implementarea logicii care iniţiază evenimentul (logică de validare) sau îi împiedică manifestarea sau apariţia (logică de invalidare). Această convenţie se numeşte logică activă pe 0 sau logică negativă. În acest caz, se foloseşte nivelul de tensiune coborât (Low) pentru a indica faptul că semnalul este activat, în timp ce nivelul de tensiune mai mare (High) indică faptul că semnalul este inactiv. În figura 4.1 se prezintă un tabel de adevăr exprimat în termenii a două valori de tensiune relative, High şi Low. În interpretarea logicii pozitive, tabelul de adevăr descrie o funcţie ŞI, dar în interpretarea logicii negative, obţinem funcţia SAU. Fiind dată o funcţie în logică pozitivă, putem afla funcţia sa echivalentă în logică negativă aplicând teoremele lui De Morgan:

)1.4(BABA

BABA

•=+

•=+

Logică negativă

F low low low high

F 0 0 0 1

F 1 1 1 0

A low low high high

B low high low high

B 0 1 0 1

A 0 0 1 1

A 1 1 0 0

B 1 0 1 0

F

Tabel de adevăr al tensiunilor Logică pozitivă

Figura 4.1 Interpretările tabelului de adevăr în logică pozitivă şi negativă

Din cauza realelor posibilităţi de confuzie, este de preferat să se evite folosirea amestecată a logicii pozitive şi a celei negative într-un acelaşi proiect. Însă acest fapt nu este întotdeauna posibil, de aceea trebuie verificată întotdeauna cu mare atenţie convenţia folosită pentru fiecare semnal în parte, pentru a evita situaţii de genul conectării unui semnal de ieşire activ pe "1" la un semnal de intrare activ pe "0".

Page 38: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 40

2.2 Funcţii incomplet specificate Până acum am presupus că trebuie să definim o funcţie de n variabile pentru toate cele 2n combinaţii posibile ale variabilelor de intrare. În realitate, lucrurile nu stau întotdeauna astfel. Să considerăm o funcţie care are drept intrări un semi-octet în codul BCD (vezi Anexa 1). Reamintim că numerele BCD sunt cifre zecimale din intervalul [0-9] care sunt reprezentate de numere binare pe patru biţi, folosind combinaţiile 00002 (0) până la 10012 (9). Celelalte combinaţii, de la 10102 (10) până la 11112 (15) nu vor fi niciodată întâlnite. Putem simplifica expresiile booleene presupunând că funcţia are în aceste cazuri un comportament indiferent (sau don't care). Tabelul 4.1 reprezintă tabelul de adevăr al unui circuit care realizează cod BCD incrementat cu 1. Fiecare număr BCD este reprezentat cu patru variabile booleene, A, B, C şi D. Ieşirea circuitului de incrementare este reprezentată de funcţii booleene de patru variabile: W, X, Y şi Z. Tabelul 4.1 Tabelul de adevăr al circuitului cod BCD incrementat cu 1

A B C D W X Y Z 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 ∅ ∅ ∅ ∅ 1 0 1 1 ∅ ∅ ∅ ∅ 1 1 0 0 ∅ ∅ ∅ ∅ 1 1 0 1 ∅ ∅ ∅ ∅ 1 1 1 0 ∅ ∅ ∅ ∅ 1 1 1 1 ∅ ∅ ∅ ∅

Valorile funcţiilor sunt "∅" (indiferente sau don't care) pentru toate combinaţiile variabilelor de intrare care nu apar niciodată. A nu se confunda această valoare "∅" cu valoarea "∅" sau "X" raportată de multe simulatoare logice, unde ea reprezintă o valoare nedefinită (sau don't know). Orice implementare practică a circuitului va genera totuşi o anumită ieşire pentru

Page 39: Indrumator ASDN 2009

CIRCUITE LOGICE COMBINAŢIONALE 41

cazurile indiferente. Folosind într-un tabel de adevăr valoarea "X" sau "∅" înseamnă că avem posibilitatea de a alege între a atribui valoarea 0 sau 1 logic respectivei ieşiri din tabelul de adevăr. În general urmărim să alegem acea valoare care va duce la cea mai simplă implementare fizică. 2.3 Simplificarea circuitului Simplificarea circuitului este operaţia de găsire a unui circuit care este funcţional echivalent cu circuitul dat, dar care este mai simplu într-un anumit sens. Putem oricând aplica legile algebrei booleene pentru a simplifica o expresie, dar atunci apar mai multe probleme. În primul rând, nu există algoritm care să determine dacă soluţia obţinută este optimă - atunci înseamnă că nu ştim când putem să încetăm să mai căutăm soluţii simplificatoare. În al doilea rând, de multe ori este necesar să complicăm expresiile înainte de a le putea simplifica. Este împotriva firii umane de a căuta un "minim local" în speranţa găsirii unei soluţii globale mai bune, dar este exact ceea ce suntem nevoiţi să facem. În fine, este mult prea riscant să manipulăm manual expresii booleene, mai ales de mari dimensiuni. Deoarece există suficient de multe unelte software de simplificare a expresiilor booleene, de ce trebuie să învăţăm metode manuale, mai ales atunci când acestea sunt inaplicabile pentru probleme cu multe variabile (mai mult de şase)? Este totuşi necesară cunoaşterea principiilor fundamentale utilizate în simplificare. Pe măsură ce instrumentele CAD devin tot mai sofisticate, trebuie să avem o cunoaştere mai profundă a algoritmilor pe care ele le aplică pentru a le putea utiliza efectiv. Şi să nu uităm că instrumentele CAD au fost scrise tot de oameni şi că ele nu funcţionează întotdeauna fără greşeală! Trebuie să fim în măsură să verificăm rezultatul generat de aceste instrumente. Criteriul tradiţional al simplificării îl constituie numărul de porţi, iar în vederea satisfacerii lui au fost descoperite mai multe metode şi algoritmi. Însă odată cu apariţia noilor tehnologii, adeseori nu numărul de porţi este cel care contează atât de mult, ci numărul sau lungimea firelor de cablaj. Acest aspect schimbă radical procesul de simplificare. Nu vom insista aici asupra acestor criterii; vom prezenta în continuare câteva reguli simple de simplificare, care sunt cel mai des folosite şi care sunt adeseori suficiente pentru proiecte mai mici.

Page 40: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 42

a) introducerea de variabile auxiliare Această metodă se mai numeşte şi partajarea semnalelor. Să luăm de

exemplu două definiţii:

)2.4(wzyxb

wzyxa

•+•=

•+•=

Vom introduce variabilele auxiliare u şi v definite astfel:

)3.4(wzvyxu

•=•=

Atunci:

)4.4(vub

vua

+=

+=

b) aplicarea teoremelor algebrei booleene Practic, prin aplicarea teoremelor se obţine un circuit echivalent (nu neapărat mai simplu). Trebuie însă ţinut cont de faptul că în termenii electronicii, porţile ŞI-NU sunt întrucâtva mai simple decât porţile ŞI şi SAU, astfel încât uneori aplicarea teoremelor conduce într-adevăr la un circuit mai simplu.

c) eliminarea termenilor redundanţi Rezultă în urma aplicării următoarelor echivalenţe:

)5.4()( yxyxxyyxyxyxyxxxx

•=+•=•+•+=•+=

Există mai multe metode utilizate pentru simplificarea expresiilor

booleene, dintre care cele mai cunoscute sunt metoda lui M. Karnaugh (construirea diagramelor Karnaugh) şi metoda iterativă Quine-McCluskey (larg răspândită în programele de simplificare automată a expresiilor booleene). 2.4 Aplicaţii: implementarea funcţiilor logice 2.4.1 Funcţia multidimensională cod BCD incrementat cu 1 Am prezentat în secţiunea 2.3 funcţia cod BCD incrementat cu 1 ca un exemplu de funcţie cu combinaţii indiferente. Pe baza tabelului de adevăr 4.1 se generează diagrame Karnaugh de 4 variabile (figura 4.2):

Page 41: Indrumator ASDN 2009

CIRCUITE LOGICE COMBINAŢIONALE 43

AB 00 01 11 10

0 0 X 1

0 0 X 0

0 1 X X

0 0 X X

00

01

11

10 C

CD

A

D

B

AB 00 01 11 10

0 1 X 0

0 1 X 0

1 0 X X

0 1 X X

00

01

11

10 C

CD

A

D

B

AB 00 01 11 10

0 0 X 0

1 1 X 0

0 0 X X

1 1 X X

00

01

11

10 C

CD

A

D

B

AB 00 01 11 10

1 1 X 1

0 0 X 0

0 0 X X

1 1 X X

00

01

11

10 C

CD

A

D

B

Z Y

X W

Figura 4.2 Diagramele Karnaugh ale funcţiei cod BCD incrementat cu 1

Urmărim să realizăm cele mai mari grupări posibile de celule adiacente, profitând de prezenţa locaţiilor indiferente pentru a mări suprafaţa sub-cuburilor. Obţinem următoarele expresii pentru fiecare funcţie de ieşire unidimensională (W, X, Y şi Z) din componenţa circuitului:

W B C D A D X B D B C B C DY A C D C D Z D= • • + • = • + • + • •= • • + • =

; ;; .

(4.6)

2.4.2 Comparator de numere pe doi biţi Se cere proiectarea unui circuit care primeşte la intrare două numere pe doi biţi, N1 şi N2, şi generează trei ieşiri: F1 dacă N1 = N2, F2 dacă N1 < N2 şi F3 dacă N1 > N2. Vom nota biţii constituenţi ai numerelor N1 şi N2 prin A, B şi respectiv C, D.

Primul pas în abordarea problemei este de a înţelege foarte clar funcţionalitatea circuitului. Vom construi aşadar o schemă bloc a circuitului

şi vom determina tabelele de adevăr ale funcţiilor (figura 4.3):

Page 42: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 44

AB = CD

N2

N1 A B

C D

F1

F2

F3

AB < CD AB > CD

A B C D F1 F2 F3

0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 1 0 0 0 0 1 1 1 0 1 0 0 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0

Figura 4.3 Schema bloc şi tabelul de adevăr al comparatorului pe 2 biţi În continuare, pe baza tabelului de adevăr, vom obţine următoarele

diagrame Karnaugh (figura 4.4) pentru ieşiri:

F3F1 F2

AB00 01 11 10

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

00

01

11

10C

CD

A

D

B

AB00 01 11 10

0 0 0 0

1 0 0 0

1 1 0 1

1 1 0 0

00

01

11

10C

CD

A

D

B

AB00 01 11 10

0 1 1 1

0 0 1 1

0 0 0 0

0 0 1 0

00

01

11

10C

CD

A

D

B

Figura 4.4 Diagramele Karnaugh pentru comparatorul pe 2 biţi

Vom obţine următoarele expresii pentru funcţii:

F A B C D A B C D A B C D A B C D

F A C B D

F A B D B C D A C

F A C A B D B C D

1

1

2

3

= • • • + • • • + • • • + • • •

= ⊕ • ⊕

= • • + • • + •

= • + • • + • •

( ) ( ) (4.7)

2.4.3 Sumator de numere pe doi biţi Se cere proiectarea unui circuit care primeşte la intrare două numere pe doi biţi, N1 şi N2, şi generează la ieşire un număr binar pe 3 biţi, N3. Şi

Page 43: Indrumator ASDN 2009

CIRCUITE LOGICE COMBINAŢIONALE 45

aici, numărul N1 este reprezentat de biţii A şi B, N2 prin C şi D, iar N3 prin funcţiile booleene X, Y şi Z, unde X reprezintă transportul (carry), iar Y şi Z sunt biţii propriu-zişi constituenţi ai rezultatului.

Vom construi de asemenea o schemă bloc a circuitului şi vom determina tabelele de adevăr ale funcţiilor (figura 4.5):

X

N2

N1 A B

C D

N3 Y Z

A B C D X Y Z0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 0

Figura 4.5 Schemă bloc şi tabel de adevăr pentru sumatorul pe 2 biţi În continuare, pe baza tabelului de adevăr, vom obţine următoarele diagrame Karnaugh (figura 4.6) pentru ieşiri: AB

00 01 11 10 0 0 0 0

0 0 1 0

0 1 1 1

0 0 1 1

00

01

11

10 C

CD A

D

B

AB 00 01 11 10

0 0 1 1

0 1 0 1

1 0 1 0

1 1 0 0

00

01

11

10 C

CD A

D

B

AB 00 01 11 10

0 1 1 0

1 0 0 1

1 0 0 1

0 1 1 0

00

01

11

10 C

CD

A

D

B

X Y Z Figura 4.6 Diagramele Karnaugh pentru sumatorul pe 2 biţi

Page 44: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 46

Vom obţine următoarele expresii pentru funcţiile de ieşire:

DCBADCBADCADCACBACBAYsau

DCABCABY

DBDBDBZ

DBADCBCAX

•••+•••+••+••+••+••=

⊕⊕•+⊕•=

⊕=•+•=

••+••+•=

:

)()((4.8)

Observăm că putem reduce şi mai mult expresiile finale dacă

utilizăm operatorul SAU-EXCLUSIV. Acest lucru se vede foarte clar dacă examinăm expresia lui Y minimizată cu SAU-EXCLUSIV şi apoi minimizată doar în formă de sumă de produse. În figura 4.7 sunt prezentate cele două variante posibile de implementare a funcţiei Y:

A

B

C

D

Y1

Y2

CA B D

Figura 4.7 Două variante de implementare pentru funcţia Y

Page 45: Indrumator ASDN 2009

CIRCUITE LOGICE COMBINAŢIONALE 47

3. Desfăşurarea lucrării 1. Se vor realiza şi se vor verifica schemele logice care implementează

funcţiile W, X, Y şi Z ale circuitului cod BCD incrementat cu 1. 2. Se vor implementa funcţiile F1, F2 şi F3 constituente ale comparatorului

de numere binare pe 2 biţi, potrivit expresiilor obţinute după minimizare. Se va verifica funcţionarea comparatorului. Pot să fie active mai multe semnale de ieşire simultan?

3. Se vor implementa funcţiile X şi Z constituente ale sumatorului de numere binare pe 2 biţi, conform expresiilor obţinute după minimizare. Se va verifica funcţionarea sumatorului.

4. Se va implementa funcţia Y din cadrul aceluiaşi sumator potrivit celor două scheme din figura 4.7. Care variantă este mai avantajoasă?

5. Se va construi un convertor de cod din 8421 în 2421, parcurgându-se toţi paşii succesivi prezentaţi la comparator şi la sumator. Se vor implementa funcţiile constituente ale convertorului şi se vor verifica din punct de vedere funcţional.

6. Pentru problemele enunţate anterior, se va realiza implementarea numai cu porţi ŞI-NU; cu porţi SAU-NU; cu porţi ŞI-SAU-NU. Comparaţi implementările respective. Care este implementarea cea mai avantajoasă din punctul de vedere al preţului, al numărului de porţi şi a suprafeţei ocupate de circuitele integrate?

Page 46: Indrumator ASDN 2009

LUCRAREA NR. 5 CIRCUITE LOGICE COMBINAŢIONALE MSI

1. Scopul lucrării Se studiază şi se verifică funcţionarea unor componente integrate pe scară medie (MSI – Medium Scale Integration): demultiplexor, multiplexor, decodificator. Se studiază şi se verifică funcţionarea convertorului de cod din binar natural în cod Gray (binar reflectat). Se studiază comportarea unor circuite combinaţionale MSI conform descrierii funcţionale din catalog: detector de paritate, codificator prioritar. 2. Consideraţii teoretice Blocurile constitutive ale dispozitivelor numerice sunt unităţi mai mari decât porţile logice obişnuite. În tehnologia MSI se încadrează circuitele integrate pe scară medie, şi anume cele care cuprind 50-500 de tranzistori integraţi.

Circuitele integrate MSI oferă utilizatorului structuri logice mai complexe, disponibile ca module standard. Din acest motiv, sinteza cu circuite integrate SSI (Small Scale Integration) se utilizează în prezent numai acolo unde nu pot fi folosite circuitele cu înalt grad de integrare. În mod obişnuit circuitele logice elementare sunt necesare pentru a realiza adaptări sau interfaţări ale circuitelor integrate MSI şi LSI (Large Scale Integration) standardizate, care nu satisfac întotdeauna cu exactitate toate cerinţele proiectului.

Anumite combinaţii ale unui număr relativ mic de porţi logice reprezintă funcţii care se întâlnesc foarte des şi constituie ceea ce am putea numi un al doilea nivel de circuite elementare - MSI. Întotdeauna forma ecuaţiilor logice care dorim să fie implementate cu circuite MSI trebuie corelată cu circuitele integrate MSI disponibile în cataloage. Din acest motiv, un sistem de proiectat trebuie definit mai întâi sub formă de blocuri MSI şi LSI, iar momentul în care se trece la scrierea ecuaţiilor logice trebuie amânat cât mai mult.

Page 47: Indrumator ASDN 2009

CIRCUITE LOGICE COMBINAŢIONALE MSI 49

2.1 Demultiplexorul (DMUX) Demultiplexarea este operaţia de distribuire a unui semnal sursă x la mai multe destinaţii yi în funcţie de valoarea unor semnale de selecţie s. În mod evident, semnalul s denotă un index, un număr. Pentru a deriva un circuit dintr-un demultiplexor, este necesar să stabilim o codificare a întregilor în termenii semnalelor numerice. Codificarea standard este cea binară, care se bazează pe ipoteza de pornire că valoarea binară a unui semnal (“0” sau “1”) este luată drept valoare numerică şi că fiecare componentă a semnalului (s0, s1, …) este un termen ponderat în suma s, şi anume:

)1.5(...2...222 22

11

00 +•+•+•+•= i

isssss Funcţia demultiplexorului o exprimăm ca:

yi = (if i = s then x else 0) ( )y x i si = • =

Circuitul rezultant are două ieşiri şi este prezentat în figura de mai jos, împreună cu simbolul utilizat pentru demultiplexor.

X

S0

X

Y1 1

0

S0

Y x s1 0= •

Y x s0 0= • Y0

Figura 5.1 Demultiplexorul 1:2 Pentru a obţine un demultiplexor cu mai multe ieşiri, se foloseşte tehnica de cascadare: un demultiplexor cu 2n ieşiri poate fi într-adevăr obţinut prin cascadarea a n nivele de demultiplexoare cu 2 ieşiri, cum se poate vedea în figura 5.2. Se vorbeşte despre un demultiplexor 1-la-2n.

Page 48: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 50

S1

x

Y x s s3 1 0= • •

S0

Y x s s2 1 0= • •

Y x s s1 1 0= • •

010 ssxY ••=

Figura 5.2 Cascadarea demultiplexoarelor Dacă intrarea x este menţinută constantă la valoarea 1 logic, atunci ys = 1 şi toate celelalte ieşiri sunt 0. În acest caz, demultiplexorul acţionează ca un decodificator al cuvântului de cod binar s (iar x este numit semnal de validare (enable)). Aşadar, termenii de demultiplexor şi decodificator sunt adeseori folosiţi ca echivalenţi în practică. Există mai multe tipuri de demultiplexoare disponibile: 1-la-2 (prezentat anterior), 1-la-4, 1-la-8 etc. (figura 5.3):

O 0 O 1 O 2 O 3

A 0A 1

I

D M U X 1 :4

D M U X 1 :8

O 0 O 1 O 2 O 3

A 0

A 1

I

O 4 O 5 O 6 O 7

A 2

Figura 5.3 Demultiplexoare 1:4 şi 1:8 2.2 Multiplexorul (MUX) Circuitele de multiplexare sunt circuite logice combinaţionale care permit trecerea datelor de la una din intrări spre o ieşire unică. Un multiplexor este inversul demultiplexorului. Funcţia sa constă în a uni mai multe surse xi într-o destinaţie unică y în funcţie de semnalul de selecţie s. Din acest motiv el mai este numit şi selector. Funcţia multiplexorului poate fi exprimată astfel:

y = (if s then x1 else x0) y x s x s= • + •0 1

Circuitul rezultant are două intrări şi este prezentat în figura următoare, împreună cu simbolul utilizat pentru multiplexor.

Page 49: Indrumator ASDN 2009

CIRCUITE LOGICE COMBINAŢIONALE MSI 51

X1

Y

X0

X1

X0

Y1

0

SS0

Figura 5.4 Multiplexor 2:1

Cascadarea se face în mod analog cu cea a demultiplexoarelor. Aceste circuite se găsesc şi în formă integrată, în capsule MSI. Prezentăm în continuare un multiplexor cu 4 intrări: selectarea intrărilor se face cu 2 biţi:

M U X 4 :1

I0 I1 I2 I3

A 0A 1

Y

Figura 5.5 Multiplexor 4:1

Implementarea din 3 MUX 2:1 (prin cascadare) duce la realizarea unui MUX 4:1 folosind schema bloc:

S1

X3

S0

X2

X1

X0

YS0

1

1

0

0

0

1

Figura 5.6 Multiplexor 4:1 obţinut prin cascadarea a trei multiplexoare 2:1

Circuitul poate fi implementat cu porţi TTL sau folosind 3 circuite integrate specializate MUX 2:1.

Page 50: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 52

Prezentăm simbolul circuitului multiplexor MSI 4151 cu trei intrări de selecţie (adresă) care realizează funcţia:

5 6 70 1 2 3 4Y C B A D C B A D C B A D C BA D C B A D C B A D CB A D CBA D= • + • + • + • + • + • + • + •

când ENABLE = 0. Pentru ENABLE = 1 ieşirea circuitului este Y = 0.

D0D1D2D3D4D5D6D7

ABCENABLE

WY

4151

Figura 5.7 Multiplexor MSI 8:1 (4151) 2.3 Decodificatorul Decodificatorul este un circuit logic combinaţional cu funcţia de a asigura o singură ieşire a circuitului activă la un moment dat, pentru o combinaţie (cuvânt de cod binar) corespunzătoare a variabilelor de intrare. În general ieşirile decodificatoarelor sunt active pe “0” logic, deoarece implementarea lor este realizată cu porţi de tip ŞI-NU. Vom studia ca exemplu decodificatorul BCD-zecimal, care decodifică intrările din cod BCD în zecimal. Circuitul MSI corespunzător este 442. În figura 5.8 este prezentat simbolul circuitului 442, iar în tabelul 5.1 tabelul de adevăr.

A

B

C

D

01

442

23456789

Figura 5.8 Decodificator MSI BCD-zecimal (442)

Page 51: Indrumator ASDN 2009

CIRCUITE LOGICE COMBINAŢIONALE MSI 53

Tabelul 5.1 Tabelul de adevăr al decodificatorului BCD-zecimal

Intrări - BCD Ieşiri - zecimal Nr D C B A 0 1 2 3 4 5 6 7 8 9

0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 2 0 0 1 0 1 1 0 1 1 1 1 1 1 1 3 0 0 1 1 1 1 1 0 1 1 1 1 1 1 4 0 1 0 0 1 1 1 1 0 1 1 1 1 1 5 0 1 0 1 1 1 1 1 1 0 1 1 1 1 6 0 1 1 0 1 1 1 1 1 1 0 1 1 1 7 0 1 1 1 1 1 1 1 1 1 1 0 1 1 8 1 0 0 0 1 1 1 1 1 1 1 1 0 1 9 1 0 0 1 1 1 1 1 1 1 1 1 1 0

1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 IN

VA

LID

1 1 1 1 1 1 1 1 1 1 1 1 1 1 2.4 Convertor de cod din binar natural în binar reflectat (Gray) Un convertor de cod este un circuit combinaţional cu ieşiri multiple care realizează conversia unui cuvânt dintr-un cod în alt cod. Se consideră că la intrare se aplică un cuvânt în cod binar natural pe 4 biţi B3B2B1B0, iar la ieşire se obţine cuvântul în cod Gray (binar reflectat), tot pe 4 biţi, G3G2G1G0. În tabelul 5.2 se prezintă funcţionarea convertorului de cod din binar natural în binar reflectat (Gray).

Page 52: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 54

Tabelul 5.2 Tabelul de adevăr al unui convertor de cod din binar în binar reflectat

B3 B2 B1 B0 G3 G2 G1 G0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 0 0

Expresiile funcţiilor de ieşire, după minimizare, sunt:

0110010 BBBBBBG ⊕=•+•= 1221121 BBBBBBG ⊕=•+•=

2332232 BBBBBBG ⊕=•+•= (5.2)

33 BG = Implementarea funcţiilor obţinute pentru ieşirile convertorului de cod se poate face cel mai simplu utilizând porţi logice SAU-EXCLUSIV, ca în figura 5.9.

Page 53: Indrumator ASDN 2009

CIRCUITE LOGICE COMBINAŢIONALE MSI 55

B0

B1

B2

B3

486

486

486

G3

G1

G0

G2

Figura 5.9 Convertor de cod din binar în binar reflectat (Gray) 2.5 Detector / generator de paritate Circuitul integrat 4180 din figura 5.10 reprezintă un detector / generator de paritate pe 9 biţi (8 biţi în cuvântul de cod transmis + bitul de paritate), a cărui comportare este descrisă în tabelul 5.3. Acest gen de circuite se foloseşte mai ales în transmisii de date, pentru verificarea corectitudinii transmisiei. Tabelul 5.3 Tabelul de adevăr al unui detector / generator de paritate

Intrări Ieşiri Σ de valori de 1 de la A la H

EI OI Σpar Σimpar

Par 1 0 1 0 Impar 1 0 0 1

Par 0 1 0 1 Impar 0 1 1 0

X 1 1 0 0 X 0 0 1 1

În funcţie de operaţia efectuată, generare sau detectare de paritate, intrările EI (pentru paritate pară) şi OI (pentru paritate impară) sunt folosite ca şi bit de paritate (bitul 9). Lungimea cuvintelor a căror paritate se generează / verifică poate fi extinsă prin cascadarea circuitelor 4180.

Page 54: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 56

ABCDEFGHEIOI

4180

ΣEVEN

ΣODD

Figura 5.10 Detector/generator de paritate 4180 2.6 Codificator prioritar Circuitul din figura 5.11 reprezintă un codificator prioritar, iar în tabelul 5.4 este prezentată funcţionarea lui. Dacă intrarea de activare EI = 0 şi cel puţin una dintre intrările 0 - 7 este activă (nivel logic 0) atunci ieşirile A2, A1, A0 iau valoarea corespunzătoare codului celei mai prioritare intrări active (7 este intrarea cea mai prioritară). În cazul în care cel puţin o intrare este activă, ieşirea GS este 0. Dacă EI = 0 şi nici o intrare nu este activă, atunci ieşirea EO = 0. Tabelul 5.4 Tabelul de adevăr al codificatorului prioritar

Intrări Ieşiri EI 0 1 2 3 4 5 6 7 A2 A1 A0 GS EO1 X X X X X X X X 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 X X X X X X X 0 0 0 0 0 1 0 X X X X X X 0 1 0 0 1 0 1 0 X X X X X 0 1 1 0 1 0 0 1 0 X X X X 0 1 1 1 0 1 1 0 1 0 X X X 0 1 1 1 1 1 0 0 0 1 0 X X 0 1 1 1 1 1 1 0 1 0 1 0 X 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1

Page 55: Indrumator ASDN 2009

CIRCUITE LOGICE COMBINAŢIONALE MSI 57

01234567

EI

A0

4148

A1A2

GS

EO

Figura 5.11 Codificatorul prioritar integrat MSI 4148 3. Desfăşurarea lucrării 1. Se realizează circuitul din figura 5.1 şi i se verifică funcţionarea

conform ecuaţiilor. 2. Se realizează circuitele din figurile 5.2, 5.4 şi 5.6 şi se verifică

funcţionarea lor. 3. Verificaţi comportarea circuitului multiplexor 8:1, 4151 (figura 5.7) şi a

circuitului decodificator BCD – zecimal 442 (figura 5.8). 4. Verificaţi comportarea circuitului detector / generator de paritate 4180 şi

extindeţi domeniul la 16 biţi (figura 5.10). 5. Verificaţi comportarea circuitului codificator prioritar 4148 (figura

5.11). 6. Implementaţi funcţia:

( )f A B C D E A C D B D B D B C E, , , , = + • + • + • + • • folosind numai un multiplexor. Sunt disponibile semnalele “0”, “1” şi variabilele numai în forma directă, nu şi negate. Verificaţi practic corectitudinea implementării.

7. Verificaţi practic comportarea convertorului de cod din codul binar natural în codul Gray (binar reflectat) (figura 5.9), conform tabelului de adevăr şi ecuaţiilor.

Page 56: Indrumator ASDN 2009

LUCRAREA NR. 6 CIRCUITE LOGICE COMBINAŢIONALE COMPLEXE

1. Scopul lucrării Se studiază şi se verifică funcţionarea unor componente integrate pe scară medie (MSI – Medium Scale Integration) cu funcţii mai complexe: multiplexor cu calea de date pe mai mulţi biţi, sumator, unitate aritmetico-logică, decodificator BCD – 7 segmente. Se proiectează un sumator – scăzător având la bază un sumator şi apoi se studiază şi se verifică funcţionarea lui. 2. Consideraţii teoretice Prin gradul de integrare şi funcţionalitatea lor unele circuitele integrate MSI sunt mai complexe. Dintre acestea se utilizează des în aplicaţii şi de aceea este bine ca funcţionarea lor să fie aprofundată: multiplexoare cu calea de date pe mai mulţi biţi, sumatoare, unităţi aritmetico-logice, decodificatoare BCD - 7 segmente.

2.1 Multiplexoare cu calea de date pe mai mulţi biţi Multiplexoarele sunt circuite logice combinaţionale care permit trecerea datelor de la una dintre intrări (I) spre o ieşire unică (Y). Trecerea datelor se face în funcţie de valorile semnalelor de pe intrările de selecţie (S). La multiplexoarele studiate în lucrarea 5, pe datele de intrare exista câte un singur bit, deci şi pe ieşirea multiplexorului se obţinea un singur bit. Dacă multiplexoarele se construiesc astfel încât căile de date şi ieşirea să permită existenţa mai multor biţi, funcţionarea lor de bază (ca acţiune de multiplexare) nu se schimbă, dar vom avea informaţia vehiculată pe mai mulţi biţi. În figura 6.1 este prezentat un multiplexor de tipul 4:1, cu calea de date pe 3 biţi. Multiplexorul are 4 intrări, fiecare pe câte 3 biţi, o ieşire tot pe 3 biţi şi 2 intrări de selecţie. Intrările de selecţie sunt doar pe câte 1 bit.

Page 57: Indrumator ASDN 2009

CIRCUITE COMBINAŢIONALE COMPLEXE

59

I0 I1 I2 I3

S1

S0 Y

3 3 3 3

3

Fig. 6.1 Multiplexor 4: 1 cu calea de date pe 3 biţi 2.2 Multiplexor MSI 4157 Un circuit integrat MSI care are funcţia de multiplexare de tipul 2:1 şi are calea de date pe 4 biţi este circuitul 4157. Simbolul acestui circuit este prezentat în figura 6.2.

A1 A2 A3 A4 B1 B2 B3 B4

S Select

G Strobe

Y1Y2

4157

Y3 Y4

Figura 6.2 Multiplexor 2: 1 pe 4 biţi (4157) Intrările de date ale multiplexorului sunt A1 ÷ A4 şi B1 ÷ B4, iar ieşirea este Y1 ÷ Y4. Intrarea de selecţie este S. Multiplexorul este prevăzut şi cu o intrare de validare (enable) numită Strobe G, activă pe 0 logic. Dacă această intrare are valoarea logică 1 multiplexorul este nefuncţional, deci vom avea pe ieşirea Y tot timpul valori logice 0, indiferent de valorile de pe intrările A şi B şi de pe selecţia S. Funcţionarea multiplexorului 4157 este prezentată în tabelul de adevăr prescurtat 6.1. Se observă din tabel că funcţionarea nu diferă de cea a unui multiplexor de tipul 2:1 care are calea de date doar pe 1 bit.

Page 58: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

60

Tabelul 6.1 Tabelul de adevăr al multiplexorului MSI 4157

Intrări Ieşire Strobe

G Select

S A B Y

H X X X L L L L X L L L H X H L H X L L L H X H H

2.3 Sumator MSI 483 Sumatorul integrat 483 este un circuit combinaţional de tip MSI care permite adunarea cu transport a 2 numere binare exprimate fiecare pe 4 biţi. Simbolul sumatorului este prezentat în figura 6.3.

A1 A2 A3 A4

B1 B2 B3 B4

C0

∑1∑2

483

∑3 ∑4

C4

Figura 6.3 Sumator pe 4 biţi (483) Sumatorul pe 4 biţi are ca intrări 2 seturi de câte 4 biţi, A1 ÷ A4 şi B1 ÷ B4 pentru operanzi (numerele care se adună), iar rezultatul însumării apare pe ieşirile ∑1 ÷ ∑4. El are şi o intrare de bit de transport C0 (Carry In) de la rangul anterior şi o ieşire de transport C4 (Carry Out) către rangul superior.

Operaţia de adunare se realizează conform tabelului 6.2.

Page 59: Indrumator ASDN 2009

CIRCUITE COMBINAŢIONALE COMPLEXE

61

Tabel 6.2 Operaţia de adunare la circuitul 483

Operaţie Descriere Adunare (C4, Σ4, Σ3, Σ2, Σ1) = (A4, A3, A2, A1) +

+ (B4, B3, B2, B1) + (0,0,0,C0)

Prezenţa biţilor de transport permite ca acest sumator să se poată utiliza în cascadare, pentru obţinerea unor scheme de adunare de numere binare cu număr mai mare decât de 4 biţi. 2.4 Sumator-scăzător pe 4 biţi În sistemele numerice sunt frecvente operaţiile de adunare şi scădere. De aceea este util să existe circuite care să asigure atât adunarea cât şi scăderea numerelor binare. Conform teoriei referitoare la reprezentarea numerelor întregi cu semn în sistemul de numeraţie Complementul lui 2, scăderea a două numere binare poate fi privită ca şi o adunare cu cel de-al doilea număr inversat plus 1 (vezi Anexa 1). Atunci, pentru a realiza un sumator-scăzător pe 4 biţi avem nevoie de un sumator pe 4 biţi de tipul 483 şi de circuite logice adiţionale care să permită ca la momente diferite de timp să se efectueze operaţia de adunare sau de scădere. Este nevoie de asemenea de un semnal exterior, pe care îl vom nota Sel, pentru a face selecţia între momentul în care sistemul face adunarea celor 2 numere binare pe 4 biţi şi momentul în care se face scăderea celor două numere. Operaţiile se efectuează conform tabelului 6.3. Tabel 6.3 Operaţiile pentru sumator-scăzător

Operaţie Descriere Sel Adunare (C4, Σ4, Σ3, Σ2, Σ1) = (A4, A3, A2, A1) +

+ (B4, B3, B2, B1) + (0,0,0,0) 0

Scădere (C4, Σ4, Σ3, Σ2, Σ1) = (A4, A3, A2, A1) + + (B4, B3, B2, B1) + (0,0,0,1)

1

Din tabelul 6.3 se observă că valoarea care se aplică pe semnalul de intrare de transport de la rangul anterior C0 (vezi tabelul 6.2, la 483) coincide ca valoare cu semnalul de selecţie Sel. Mai rămâne să rezolvăm negarea biţilor celui de-al doilea operand (B). Pentru această operaţie ne vom folosi de modul de funcţionare al unei porţi logice SAU-EXCLUSIV

Page 60: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

62

486. Dacă valorile 1 logic, respectiv 0 logic sunt introduse într-o poartă SAU-EXCLUSIV cu oricare dintre biţii B, obţinem:

BB =⊕1 şi BB =⊕ 0

Cum semnalul Sel folosit pentru selectarea operaţiei are valoare

logică 0 pentru adunare şi 1 pentru scădere, legarea lui la porţile SAU-EXCLUSIV asigură valori adevărate, respectiv negate pentru biţii de date B.

Figura 6.4 prezintă schema circuitului sumator-scăzător pe 4 biţi.

A4 A3 A2 A1 Sel B4 B3 B2 B1 7486 Y4 Y3 Y2 Y1 C0 7483 C4 Σ4 Σ3 Σ2 Σ1

Figura 6.4 Sumator-scăzător pe 4 biţi

2.5 Unitate aritmetico-logică MSI 4181 O unitate aritmetico-logică (ALU) este un circuit logic combinaţional care efectuează atât funcţii aritmetice cât şi funcţii logice asupra numerelor binare. Un astfel de circuit integrat MSI este 4181.

Simbolul pentru circuitul 4181 este prezentat în figura 6.5 şi corespunde variantei cu operanzi activi pe 0 logic.

Page 61: Indrumator ASDN 2009

CIRCUITE COMBINAŢIONALE COMPLEXE

63

A0 A1 A2 A3

B0 B1 B2 B3

S0

F0F1

4181

F2 F3

Cn+4S1 S2 S3

M

Cn

A=BG P

Figura 6.5 Unitate aritmetico-logică (4181) Funcţionarea unităţii aritmetico-logice este descrisă în tabelul de adevăr 6.4. Operaţiile aritmetice sunt exprimate în notaţiile de reprezentare a numerelor binare în complement faţă de 2. Tabel 6.4 Funcţionarea unităţii aritmetico-logice 4181

Selecţii Ieşiri

S3 S2 S1 S0 Logice M = H

Aritmetice M = L

L L L L A A minus 1 L L L H AB AB minus 1 L L H L BA+ BA minus 1 L L H H logic 1 minus 1 L H L L BA+ A plus ( BA+ ) L H L H B AB plus ( BA+ ) L H H L A B A minus B minus 1 L H H H BA + BA + H L L L BA A plus (A + B) H L L H BA⊕ A plus B H L H L B BA plus (A + B) H L H H A + B A + B H H L L logic 0 A + A (shift) H H L H BA AB plus A H H H L AB BA minus A H H H H A A

Page 62: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

64

Operanzii unităţii aritmetico-logice se aplică pe intrările A şi B. Pentru a selecta care tip de operaţii se efectuează (aritmetice sau logice) se foloseşte un semnal de control M (mode control). Dacă valoarea lui M este 1 logic, atunci se efectuează operaţii logice asupra biţilor individuali. Dacă valoarea lui M este 0 logic, atunci se execută operaţii aritmetice pe 4 biţi.

Semnalele de selecţie (S) stabilesc care dintre operaţii se execută. La operaţiile aritmetice există mai multe semnale folosite ca intrare (Cn) sau ca ieşiri de transport: P (propagare), G (generare), Cn+4). Utilizând semnalele de transport circuitele pot fi legate în cascadă, pentru a permite mărirea numărului de biţi asupra cărora se efectuează operaţiile aritmetice. Ieşirea A = B indică un rezultat de egalitate şi fiind realizată open collector poate fi şi ea utilizată pentru cascadare, dacă se verifică egalitatea pentru cuvinte mai lungi de 4 biţi.

2.6 Decodificator BCD - 7 segmente Pentru afişarea informaţiei binare în zecimal se utilizează afişoare care au 7 leduri grupate ca în figura 6.6 şi un punct zecimal. Cu ajutorul acestor segmente se pot scrie cifrele zecimale ca în figura 6.7.

f

a

b

c

d

e

g

Figura 6.6 Afişor 7 segmente

Figura 6.7 Combinaţiile binare pe 4 biţi afişate pe 7 segmente

Page 63: Indrumator ASDN 2009

CIRCUITE COMBINAŢIONALE COMPLEXE

65

Afişoarele pot fi construite cu anod sau cu catod comun. Fiecare segment este comandat separat de către o intrare a afişorului. Valoarea logică (0 sau 1 logic) pe care o aplicăm pe cele 7 segmente şi pe punctul zecimal, le va aprinde sau stinge, în funcţie de tipul afişorului. Informaţia binară pe 4 biţi, codificată în BCD, se poate transforma în informaţie care să comande cele 7 segmente, dacă se utilizează un decodificator adecvat. Circuitele integrate care asigură funcţia logică de decodificare sunt circuitele MSI 446 şi 447, care au ieşirile active pe 0 logic pentru a comanda afişoarele 7 segmente cu anod comun. Pentru afişoarele 7 segmente cu catod comun se utilizează circuitele integrate MSI 448. Simbolul pentru decodificatorul 447 este prezentat în figura 6.8.

A0 A1 A2 A3

LT RBI

BI/RBO

a

447

cd

g

b

e

f

Figura 6.8 Decodificator BCD - 7 segmente (447) Dacă intrarea LT ia valoarea 0 logic, atunci toate segmentele afişorului sunt comandate cu valoarea 0 logic. BI/RBO are rol dublu, de intrare sau ieşire. Dacă RI/RBO primeşte valoarea 0 logic, atunci, indiferent de valorile celorlalte intrări, ieşirile afişorului vor fi comandate cu 1 logic. Dacă intrările RBI şi A1 ÷ A4 au valoarea 0, atunci ieşirile vor avea valoarea 1 logic şi BI/RBO devine 0 logic.

Page 64: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

66

3. Desfăşurarea lucrării 1. Verificaţi pe panourile didactice comportarea circuitului multiplexor

4157. 2. Verificaţi funcţionarea decodificatorului BCD-7 segmente pe afişorul 7

segmente de pe panourile didactice. 3. Verificaţi pe panourile didactice comportarea circuitului sumator 483.

Realizaţi cascadarea a două circuite de acest tip. 4. Realizaţi pe panourile didactice un sumator-scăzător pe 4 biţi conform

schemei din figura 6.4. 5. Verificaţi în ACTIVE-HDL toate funcţiile unităţii aritmetico-logice

4181. 6. Realizaţi şi verificaţi funcţionarea în ACTIVE-HDL a unui sumator-

scăzător pe 8 biţi folosind rezultatele de la punctul 4.

Page 65: Indrumator ASDN 2009

LUCRAREA NR. 7 SINTEZA CIRCUITELOR LOGICE COMBINAŢIONALE CU

DISPOZITIVE LOGICE PROGRAMABILE

1. Scopul lucrării Se urmăreşte familiarizarea cu tipurile de dispozitive logice programabile existente (clasificarea lor, avantajele şi dezavantajele fiecărora). Se prezintă câteva exemple de dispozitive PAL/PLA şi se va proiecta un circuit logic combinaţional, în mai multe variante, utilizând un dispozitiv logic programabil (PLD). Se studiază apoi modul de implementare şi simulare a circuitelor logice combinaţionale utilizând instrumentele software ACTIVE-HDL şi XILINX, în ideea unei implementări independente de dispozitiv sau cu FPGA.

2. Consideraţii teoretice 2.1 Noţiuni generale Dispozitivele logice programabile PLD (Programmable Logic Devices) fac parte din familia circuitelor numerice ASIC (Application Specific Integrated Circuit - circuite integrate specifice aplicaţiei). Ele se bazează pe circuite logice combinaţionale (CLC) formate din două nivele logice, dintre care cel puţin unul este programabil. Un PLD este format din:

• o matrice de porţi ŞI; • o matrice de porţi SAU.

Cel puţin una din aceste două matrice este programabilă, programarea realizându-se de fapt la nivel de conexiune. Deoarece, în cazul PLD-urilor reale, numărul intrărilor porţilor logice este extrem de mare (ajungând până la 60...80), reprezentarea lor în forma clasică este greoaie. Se introduce deci un sistem de notaţii specific. Intrările porţilor sunt simbolizate printr-o linie comună, care este intersectată de liniile semnalelor de intrare. Legăturile fixe sunt simbolizate prin punct, cele programabile prin cruce (figura 7.1):

Page 66: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

68

C

C

B

B

A

A CBA

Legături programabile (fuse)Legătură fixă

Figura 7.1 Notaţii utilizate pentru reprezentarea circuitelor PLD

2.2 Metodologia proiectării cu circuite PLD Oricare ar fi destinaţia unui circuit logic programabil, în decursul proiectării trebuie să se parcurgă următoarele etape:

• determinarea configuraţiei de mapat în PLD; • programarea efectivă a acestei configuraţii.

Primul pas face parte din proiectarea logică a dispozitivului. Înainte de a începe proiectarea propriu-zisă, trebuie aleasă familia de PLD utilizată. În această fază nu este obligatorie desemnarea tipului concret de dispozitiv. În general pentru aplicaţii de complexitate mică şi medie cele mai indicate sunt circuitele programabile pe bază de porţi logice. Acestea au avantajul preţului scăzut faţă de FPGA-uri (Field Programmable Gate Array) - care sunt circuite ce au la bază o matrice de celule logice + o reţea complexă de interconectare - şi al utilizării mai simple. FPGA-urile sunt adecvate mai ales pentru proiecte mari şi complexe. De multe ori se pot utiliza cu succes în aplicaţii pentru înlocuirea microprocesoarelor. Un domeniu în care creşte vertiginos numărul implementărilor cu FPGA este de exemplu cel al microcontrolerelor. Pentru a uşura considerabil programarea logică a PLD-urilor şi FPGA-urilor au fost create instrumente CAD puternice care permit o specificare formală a schemei de proiectat şi care apoi pot translata această schemă într-un format standard, în funcţie de tipul de dispozitiv care trebuie programat fizic. Exemple de astfel de instrumente CAD sunt: PALASM pentru PAL-uri, ABEL-HDL pentru PAL/PLA, editorul schematic şi simulatorul ACTIVE-HDL al firmei ALDEC, pachetul de programe Foundation Series al firmei XILINX (pentru FPGA-uri), compilatorul LOLA împreună cu editorul AT.Edit (sub OBERON) pentru FPGA-uri Atmel sau XILINX etc.

Page 67: Indrumator ASDN 2009

SINTEZA CLC CU PLD

69

2.3 Structura dispozitivelor PLA/PAL Pentru a se putea utiliza cu succes instrumentele CAD de programare a circuitelor PLA/PAL este absolut necesar să cunoaştem structura internă a acestor circuite. Există la ora actuală următoarele tipuri de dispozitive PAL:

1. Circuit de bază combinaţional. Un număr n de porţi ŞI sunt legate la porţile SAU. În cazul îndeplinirii condiţiilor logice ieşirea devine 1 logic. Numărul porţilor ŞI conectate la porţile SAU este variabil, chiar şi în interiorul aceluiaşi dispozitiv.

2. Circuit de bază combinaţional cu ieşiri inversate. Este asemănător cu varianta 1, cu deosebirea că ieşirile sunt active pe 0 logic.

3. Circuit de bază combinaţional cu ieşiri complementare. În acest caz sunt disponibile atât ieşirile active pe 0 logic cât şi cele active pe 1 logic.

4. Circuit de bază combinaţional cu intrări/ieşiri programabile şi cu reacţie inversă. Varianta 1 este completată cu buffere tri-state de ieşire. Controlul unui buffer este efectuat direct de către o poartă ŞI din matricea de intrare. Ieşirea, împreună cu valoare ei negată, este rerutată pe coloana corespunzătoare a matricei de intrare. Dacă bufferul de ieşire este în starea activă, pinul corespunzător este ieşire, iar dacă bufferul este invalidat, pinul se poate folosi ca intrare (prin calea de reacţie). Această soluţie măreşte considerabil flexibilitatea circuitului (figura 7.2):

OE

PIN I/O

Buffer

Figura 7.2 Schema de principiu a circuitelor PAL cu intrări-ieşiri programabile şi cu reacţie inversă

5. Ieşire prin registru cu reacţie inversă programabilă. Se bazează

pe un circuit combinaţional a cărui ieşire este conectată la intrarea unui bistabil D. Una dintre ieşirile bistabilului este rerutată în matricea de intrare, cealaltă este legată la un buffer tri-state de ieşire. Semnalul de validare a bufferului şi semnalul de ceas al bistabilului trebuie furnizate din exterior. Această variantă este utilă în implementarea reţelelor secvenţiale sincrone (figura 7.3):

Page 68: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

70

OE

Feedback

QD Buffer3-state

Q

CLK

D Buffer3-state

Ieşire

Ieşire

Intrări

Feedback

OE

CLK Q

Q

Figura 7.3 Schema de principiu a circuitelor PAL cu ieşire prin registru, cu

reacţie inversă programabilă

6. Ieşire prin registru şi prin poartă XOR cu reacţie inversă programabilă. În acest caz două circuite de bază combinaţionale sunt cuplate la intrarea unui bistabil D prin intermediul unei porţi XOR. Celelalte aspecte sunt asemănătoare cu varianta 5. Folosirea porţii XOR oferă posibilităţi suplimentare: comparare de funcţii, generarea de sume logice etc. (figura 7.4):

CLC1

Feedback

Q

CLK

D Buffer3-state

Ieşire

Intrări

CLC2

OEQ

Figura 7.4 Schema de principiu a circuitelor PAL cu ieşire prin registru şi

prin poartă XOR, cu reacţie inversă programabilă

7. Ieşire cu reacţie inversă prin porţi. Diferă de varianta 6 prin faptul că în calea de reacţie se intercalează o reţea de porţi adiţionale, lărgind astfel domeniul de aplicare al circuitului.

Page 69: Indrumator ASDN 2009

SINTEZA CLC CU PLD

71

2.4 Notaţia circuitelor integrate de tip PAL

Fiecare tip de circuit PAL este identificat printr-un număr care îi exprimă caracteristicile. Vom prezenta notaţia folosită de Texas Instruments şi apoi cea folosită de Monolithic Memories, putându-se astfel remarca similitudinile dintre notaţii şi faptul că aproape că se poate vorbi despre o notaţie standard.

Tipul capsulei

Domeniul de temperatură

Indicator de performanţăNumărul de ieşiri ale configuraţiei

Numărul de intrări ale matricii

Identif. familiei produsului

Tipul configuraţiei de ieşire

Prefix

-5 -6 -7 -10 -12 -25 -15

NC-158R16PALTIB

FK = Ceramic Chip Carrier FN = Plastic Chip Carrier NW = 24 Pin 600 mil Plastic Dip JW = 24 Pin 600 mil Ceramic Dip

W = Ceramic Flat Pack JT = 24 Pin 300 mil Ceramic Dip NT = 24 Pin 300 mil Plastic Dip J = 20 Pin Ceramic Dip N = 20 Pin Plastic Dip

M = militar (-55°C-125°C) C = comercial (0°C-70°C)

V = ieşire variabilă / de tip macrocell L = ieşire activă pe 0 R = ieşire prin registru

PSG = Programmable Sequence Generator PSL = Programmable Sequence Logic PAD = Programmable Address Decoder PAL = Programmable Logic Array

TIC = PAL CMOS TIB = PAL bipolar

TIE = PAL ECL

Figura 7.5 Notaţia circuitelor PAL Texas Instruments

Prefixul este specific numai circuitelor Texas Instruments.

Page 70: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

72

Capsula

Bit Pattern Number

Optional HI-REL Processing

Viteză / alimentareNumărul de ieşiri

Domeniul de temperatură

Numărul de intrări ale matriciiTipul configuraţiei de ieşire

Identif. familiei produsului

P01234-2 M8L16PAL J 883B

C = MIL-STD - 883, metoda 5004 echivalentăB = MIL-STD - 883, metoda 5004 echivalentă883C = MIL-STD - 883, metoda 5004 & 5005, nivel C883B = MIL-STD - 883, metoda 5004 & 5005, nivel B

C = Leadless Chip CarrierF = Flat PackJ = Ceramic DipN = Plastic Dip

M = -55°C-125°CC = 0°C-70°C

A-2 = viteză mare şi 1/2 power

-2 = 1/2 power-4 = 1/4 power

A = viteză mare

A = ieşiri prin registru cuporţi adiţionale

X = ieşiri prin registru cu XORC = ieşiri complementare

H = ieşire activă pe 1L = ieşire activă pe 0R = ieşire prin registru

HAL = Hard Array FamilyPAL = Programmable Logic Array

Figura 7.6 Notaţia circuitelor PAL Monolithic Memories

2.5 Exemple de circuite PAL Cel mai uşor mod de a înţelege clasificarea tipurilor de PAL existente este de a considera două exemple semnificative care ilustrează un circuit PAL cu ieşire prin registru (tipul 5 din clasificare) şi respectiv un circuit PAL cu ieşire prin registru şi cu poartă XOR (tipul 6 din clasificare), acestea fiind două dintre cele mai complexe dispozitive existente pe piaţă.

Page 71: Indrumator ASDN 2009

SINTEZA CLC CU PLD

73

1

11

0 4 8 12 16 20 24 28

INCREMENT

0

19

2

326496

128160192224

256

18

3

288320352384416448480

D Q

Q

512

17

4

544576608640672704736

D Q

Q

768

16

5

800832864896928960992

D Q

Q

1024

15

6

1056108811201152118412161248

D Q

Q

1280

14

7

1312134413761408144014721504

D Q

Q

1536

13

8

1568160016321664169617281760

D Q

Q

1792

12

9

1824185618881920195219842016

FIRSTFUSENUMBERS

Figura 7.7 Exemplu de PAL cu ieşiri prin registru

Page 72: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

74

1

04080

120

23D Q

Q

2

160200240280

22D Q

Q

3

320360400440

21D Q

Q

4

480520560600

20D Q

Q

5

640680720760

19D Q

Q

6

800840880920

18D Q

Q

7

960100010401080

17D Q

Q

8

1120116012001240

16D Q

Q

9

1280132013601400

15D Q

Q

10

1440148015201560

14D Q

Q

11 13

0 4 8 12 16 20 24 28 32 36

0 4 8 12 16 20 24 28 32 36NOTE: FUSE NUMBER = FIRST FUSE NUMBER

INCREMENT

INCREMENT

FIRSTFUSE

NUMBER

INCREMENT

Figura 7.8 Exemplu de PAL cu ieşiri prin registru şi cu porţi XOR

Page 73: Indrumator ASDN 2009

SINTEZA CLC CU PLD

75

2.6 Implementarea CLC cu PLD şi FPGA Etapele care trebuie parcurse în decursul proiectării cu PLD sau FPGA variază în funcţie de tipul dispozitivului fizic în care se va face implementarea şi de firma producătoare a instrumentelor software de susţinere a acestei proiectări. Totuşi, se pot distinge, în linii mari, următorii paşi care se regăsesc în toate abordările în care se folosesc instrumente software specifice: a) introducerea proiectului. Aceasta se poate face:

a1) printr-un editor schematic (se introduce schema desenată a proiectului);

a2) prin ecuaţii; a3) prin tabele de adevăr etc. b) simularea proiectului, care poate fi:

b1) funcţională (ne interesează doar aspectele funcţionale şi le neglijăm pe cele temporale); b2) temporală (ne interesează întârzierile de propagare a semnalelor etc.); b3) a defectelor (impunem în mod artificial anumite defecte în proiect şi urmărim să vedem dacă acestea se reflectă în ieşirile pe care le obţinem în acest caz).

c) implantarea proiectului în dispozitivul programabil ales. De obicei, revenirile în diverse etape ale proiectării sunt permise (această flexibilitate fiind unul dintre principalele avantaje ale utilizării instrumentelor software). În cazul utilizării instrumentelor software pentru proiectarea circuitelor logice combinaţionale, există posibilitatea implementării bazate pe porţi şi cea a implementării în care se folosesc obiecte software echivalente cu circuitele integrate MSI, acestea din urmă fiind modelate în biblioteci specifice fiecărui pachet de programe (de exemplu, în mediul ORCAD, circuitele TTL se găsesc într-o bibliotecă diferită de circuitele MOS etc.). Majoritatea acestor instrumente software permit optimizarea proiectului după introducerea sa.

Page 74: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

76

3. Desfăşurarea lucrării 1. Implementaţi un circuit logic combinaţional care să realizeze funcţia

unui convertor de cod din cod 2421 în cod binar natural, cu circuite TTL convenţionale şi apoi cu PAL. Ce dispozitiv PAL veţi alege? Care sunt criteriile folosite pentru efectuarea acestei alegeri? Care este raportul reducerii circuitelor integrate? Ce remarcaţi privitor la procesul de proiectare prin cele două metode alternative?

2. Memoriile PROM sunt circuite programabile la care matricea ŞI este fixă. În cazul implementării cu PROM-uri mai este necesară minimizarea funcţiilor logice? Dar în cazul implementării cu PAL/PLA?

3. Implementaţi toate schemele din figurile din lucrare în ACTIVE-HDL şi realizaţi simularea acestora.

Page 75: Indrumator ASDN 2009

LUCRAREA NR. 8 CIRCUITE BASCULANTE BISTABILE

1. Scopul lucrării Se studiază caracteristicile unor bistabile uzuale, realizate cu porţi din familia circuitelor integrate TTL. Se verifică funcţionarea unor bistabile integrate şi se studiază metode de modificare a tipului unui bistabil folosind circuite combinaţionale adiţionale. Se construiesc şi se simulează bistabile uzuale cu ajutorul ACTIVE-HDL comparându-se metodele de implementare specifice, din punctul de vedere al eficienţei, vitezei şi costului.

2. Consideraţii teoretice 2.1 Noţiuni introductive Bistabilul (celula fundamentală de memorie binară) este un circuit cu două stări distincte, care păstrează o informaţie formată dintr-un singur bit. Realizarea electronică a elementului de memorie binară o reprezintă circuitul bistabil. Deci circuitele basculante bistabile (CBB) au două stări stabile, trecerea dintr-o stare în alta (comutarea) făcându-se numai la aplicarea unei comenzi din exterior. Ele sunt de fapt automate de ordinul 1 (se obţin din automate de ordin 0 prin introducerea legăturii inverse). Un bistabil poate memora un timp nedefinit informaţia binară şi în acelaşi timp starea sa poate fi citită în orice moment. El are două ieşiri: Q şi complementul său Q . Precizarea stării în care se află bistabilul la un moment dat (0 sau 1) se face relativ la valoarea ieşirii Q în logica pozitivă. Bistabilele pot fi sincrone sau asincrone. Un bistabil este de tipul sincron dacă are comanda condiţionată de un semnal de sincronizare numit tact sau ceas şi este de tipul asincron dacă semnalele de comandă sunt aplicate pe intrări la momente de timp aleatoare, aceasta făcând ca starea circuitului să depindă de ordinea în care se schimbă semnalele. La bistabilul sincron, în afară de intrările de condiţionare a stării următoare, putem întâlni intrări de forţare care sunt asincrone, pentru

Page 76: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 78

poziţionarea pe 0 sau 1. Aceste intrări asincrone sunt prioritare fată de intrările sincrone. Vom prezenta în continuare pe larg modul de construcţie a bistabilelor. 2.2 Bistabile realizate cu porţi a) Bistabilul RS asincron Circuitul are două intrări notate cu R (reset) şi S (set) şi două ieşiri notate cu Q şi Q . Schema bistabilului corespunzător, implementată cu porţi SAU-NU este prezentată în figura 8.1:

SQ

QR

Figura 8.1 Bistabilul RS asincron Semnalul 1 logic aplicat pe intrarea S (setare) aduce bistabilul în starea Q = 1 şi Q = 0, iar semnalul 1 logic aplicat pe intrarea R (resetare) aduce bistabilul în starea Q = 0 şi Q = 1. Circuitul este de tip asincron, deoarece comutarea bistabilului se face imediat după aplicarea semnalului pe una din intrări. Pentru bistabilul RS asincron condiţia de funcţionare normală este S•R = 0. Notăm cu Qn şi Qn+1 starea bistabilului la momentul "n" respectiv la momentul următor. Tabelul pentru definirea ecuaţiei bistabilului RS asincron este:

Tabelul 8.1 Tabelul de adevăr al bistabilului RS asincron

S R Qn+1 0 0 Qn 0 1 0 1 0 1 1 1 *

Page 77: Indrumator ASDN 2009

CIRCUITE BASCULANTE BISTABILE 79

Se observă că ultima combinaţie nu este posibilă (nu putem seta şi reseta simultan bistabilul). Rezultă egalităţile:

nnn QRQRQ •=+=+1 )1.8(1 nnn QSQSQ •=+=+

b) Bistabilul RS sincron Bistabilul RS sincron se obţine din cel asincron prin adăugarea unor porţi suplimentare, cu scopul de a obţine un răspuns al bistabilului numai în prezenţa unui impuls de ceas (tact). Atât timp cât semnalul de ceas este 0 logic, bistabilul păstrează starea şi ia în considerare intrările R şi S doar când ceasul trece pe 1 logic. Bistabilul RS sincron realizat cu porţi ŞI-NU este prezentat în figura 8.2:

S

CLK

R

Q

Q

Figura 8.2 Bistabilul RS sincron Utilizarea bistabilelor în aplicaţii impune cunoaşterea valorilor ieşirilor acestora. Din acest motiv se defineşte tabelul de excitaţie, care arată cum trebuie să fie intrările pentru a realiza o anumită tranziţie pe ieşiri. Tabelul 8.2 Tabelul de excitaţie al bistabilului RS sincron

Qn Qn+1 S R 0 0 0 X 0 1 1 0 1 0 0 1 1 1 X 0

Rămân valabile tabelele de adevăr de la RS asincron.

Page 78: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 80

Putem avea la bistabilele sincrone şi intrări RS asincrone, care intervin la ultimul nivel de porţi forţând bistabilul în 0 sau 1 în mod asincron (indiferent de valoarea ceasului). c) Bistabilul D (Delay) sincron Bistabilul D (Delay) se poate realiza dintr-un bistabil RS sincron după cum se prezintă în figura 8.3:

Q

Q

D

CLK

D

CLK

S

R

Q

Q

Figura 8.3 Bistabilul D realizat cu porţi şi simbolul său Tabelul 8.3 Tabelul de excitaţie al bistabilului D sincron

D Qn+1 0 0 1 1

Ecuaţiile caracteristice ale bistabilului D sunt:

Q Dn+ =1 )2.8(1 DQn =+

Bistabilele D întârzie data de la intrare cu un impuls de ceas. Sunt cele mai răspândite bistabile folosite în realizarea registrelor de date. Când semnalul de ceas este în 1 logic, ieşirea ia aceeaşi valoare ca şi intrarea. La trecerea semnalului de ceas din 1 în 0 ieşirea rămâne în aceeaşi stare, până la revenirea ceasului în 1. Schema internă a unui bistabil D acţionat de frontul pozitiv al ceasului este reprezentată în figura 8.4 (circuitul integrat 474). Efectul de comutare (basculare) are loc în momentul tranziţiei semnalului de ceas, după care ieşirea este blocată.

Page 79: Indrumator ASDN 2009

CIRCUITE BASCULANTE BISTABILE 81

D

CLK

Q

Q

400

400

400

400

400

410

Figura 8.4 Bistabil D care comută pe frontul pozitiv al semnalului de ceas

d) Bistabilul JK sincron Pentru a elimina neajunsul menţionat la bistabilul RS asincron, care conduce la stări nedeterminate pentru condiţia R = 1 şi S = 1, se introduc reacţii suplimentare, obţinându-se bistabilul JK sincron. Tabelul 8.4 Tabelul de adevăr al bistabilului JK sincron

J K Qn+1 0 0 Qn 0 1 0 1 0 1 1 1 Qn

Şi la acest bistabil intrările S şi R sunt prioritare fiindcă sunt asincrone.

Page 80: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 82

K Q

Q

CLK

S

R

J

Figura 8.5 Bistabilul JK sincron Bistabilul JK sincron se obţine din bistabilul RS sincron cu condiţiile R = K•Q şi S = J•Q. În momentul sosirii impulsului de comandă, bistabilul îşi schimbă starea conform tabelului său de adevăr. Dacă semnalul de ceas persistă la valoarea logică 1, după stabilirea noii stări urmează o altă schimbare a stării, sau altfel spus, bistabilul va intra în oscilaţie atâta timp cât semnalul de ceas este 1. Pentru a exista o singură basculare, durata impulsului de comandă trebuie să fie mai mare ca timpul de propagare printr-un nivel de porţi şi mai mică decât timpul de propagare a semnalului prin 2 nivele de porţi. Problema oscilaţiilor este eliminată la bistabilele de tip JK master-slave, care au în structură 2 celule de memorie.

J

CLK

CL

Q

Q

473

K

Figura 8.6 Simbolul bistabilului JK sincron (integratul 473) Bistabilele JK master-slave comută pe frontul descrescător al semnalului de ceas (când ceasul trece din 1 în 0 logic).

Page 81: Indrumator ASDN 2009

CIRCUITE BASCULANTE BISTABILE 83

e) Bistabilul T sincron Bistabilul T sincron reprezintă o variantă cu o singură intrare a bistabilului sincron JK prezentat anterior. Bistabilul comută în starea complementară dacă, în momentul sosirii impulsului de ceas, la intrarea T se află aplicat semnalul 1 logic. El prezintă aceeaşi deficienţă referitoare la oscilaţii ca şi bistabilul JK. Bistabilul T se obţine din JK sincron cu J legat la K (figura 8.7). Bistabilul T realizează divizarea de frecvenţă cu factorul 2.

J

CLK

R

Q

QK

T S

Figura 8.7 Obţinerea bistabilului T Tabelul 8.5 Tabelul de adevăr al bistabilului T

T Qn+1 0 Qn 1 Qn

Ecuaţiile caracteristice ale bistabilului T sunt:

Q T Qn n+ = ⊕1 )3.8(1 nn QTQ ⊕=+

Bistabilul T este foarte utilizat în sinteza numărătoarelor. f) Bistabilul JK master-slave (stăpân-sclav) Inconvenientul arătat la bistabilele JK şi T este eliminat de către bistabilul JK master-slave.

Page 82: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 84

CLK

Q

Q

J

K

MASTER SLAVE

1

2

3

4

5

6

7

8

Figura 8.8 Bistabilul JK Master-Slave Această soluţie conduce la comutarea bistabilului pe frontul posterior (descendent) al impulsului de ceas. În esenţă un bistabil master-slave este alcătuit din două bistabile sincrone şi eventuale reacţii suplimentare. Primul bistabil denumit master (stăpân) citeşte informaţia după frontul anterior al impulsului de comandă, iar cel de-al doilea denumit slave (sclav) - ale cărui ieşiri corespund cu ieşirile bistabilului luat în ansamblu - comută pe frontul posterior al impulsului de comandă. Revenind la schema dată, identificăm bistabilul master prin porţile 3 şi 4 şi bistabilul slave prin 7 şi 8. Atât timp cât impulsul de comandă se află la valoarea logică 0, ieşirile porţilor 1 şi 2 sunt la valoarea logică 1, ceea ce împiedică semnalul de pe J, respectiv K, să acţioneze asupra bistabilului master. După tranziţia 0→1 a impulsului de comandă, informaţia este citită de bistabilul master. În acelaşi timp porţile 5 şi 6 sunt blocate şi prin aceasta bistabilul master este izolat de slave, datorită semnalului logic 0 aplicat pe intrările acestor porţi prin intermediul inversorului 9. După tranziţia 1→0 porţile 1 şi 2 devin din nou blocate, adică bistabilul master este izolat de exterior, iar porţile 5 şi 6 sunt blocate, ceea ce permite bistabilului slave să citească informaţia înscrisă în master. Reacţiile de la slave la master asigură funcţionarea de tip JK conform celor menţionate anterior. De reţinut că principiul master-slave poate fi aplicat oricărui tip de bistabil. 2.3 Bistabile integrate Caracteristicile de funcţionare ale bistabilelor studiate mai sus se regăsesc în diferite bistabile integrate. Dintre acestea enumerăm: 473 (realizează JK), 474 (D), 476 (JK), 4112 ( JK). În proiectarea cu dispozitive logice programabile (PLD) sau FPGA, bistabilele au o importanţă deosebită. De altfel, unul dintre criteriile cele

Page 83: Indrumator ASDN 2009

CIRCUITE BASCULANTE BISTABILE 85

mai importante de evaluare a performanţelor acestor circuite este numărul de bistabile disponibile în capsulă. Bistabilele pot fi implementate în două moduri:

• folosind bistabilele integrate deja disponibile în capsulă; • „construind” fiecare bistabil pe baza schemei interne (cu porţi),

în funcţie de tipul de bistabil dorit (JK, D, T, RS etc.). Cele două metode pot fi folosite şi în proiectarea susţinută de instrumente software. Aceste instrumente pot alege una dintre cele două variante în faza de optimizare a proiectului, mapând un bistabil din proiect într-un bistabil existent în capsula care conţine circuitul programabil sau “construindu-l” pe baza matricei de porţi ŞI şi a matricei de porţi SAU. 2.4 Modificarea tipului unui bistabil Transformarea (conversia) unui bistabil JK într-un bistabil D sau T se face ţinând cont de ecuaţiile caracteristice (figura 8.9):

J

CLK

R

Q

QK

D S

J

CLK

R

Q

QK

T S

a) b)

Figura 8.9 Conversii de bistabile: a) bistabil D realizat cu un JK; b) bistabil T realizat cu un JK.

Se poate realiza un bistabil de tip T cu ajutorul bistabilului de tip D, cu ieşirea Q disponibilă (figura 8.10):

D

CLK

CL

Q

Q

PRT

Figura 8.10 Conversie de bistabile: bistabil T realizat cu un bistabil D, cu

ieşirea Q disponibilă.

Page 84: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 86

3. Desfăşurarea lucrării 1. Să se realizeze cu porţi bistabilul RS asincron şi bistabilul RS sincron şi

să se verifice ecuaţiile acestora. 2. Să se realizeze şi să se verifice bistabilele de la punctele c), d), e), f) din

paragraful 2.2. Se va urmări comportarea fiecăruia observând trecerea dintr-o stare în alta relativ la impulsul de comandă.

3. Să se verifice comportarea bistabilelor integrate 473, 474, 476 şi să se scrie tabelul de excitaţie pentru fiecare bistabil.

4. Să se realizeze un bistabil D utilizând un bistabil T, unul JK cu D şi unul JK cu T.

5. Bistabilul din figura 8.11 reprezintă bistabilul de tip A-B. Acest bistabil are o intrare de informaţie A şi o intrare de program B. Când B = 0 acest bistabil lucrează ca un bistabil de tip D, iar când B = 1, lucrează ca un bistabil de tip T. În unele aplicaţii folosirea bistabilului de tip A-B duce la simplificarea schemei logice.

A

CLK

Q

Q

B

Figura 8.11 Bistabilul A-B

Ecuaţia caracteristică a bistabilului A-B este:

Q A B Qn n+ = ⊕ •1 Realizaţi bistabilul A-B folosind un bistabil T şi apoi un bistabil D.

6. Implementaţi şi simulaţi toate tipurile de bistabile prezentate în lucrare cu ajutorul ACTIVE-HDL. Care metodă de implementare este preferabilă şi în ce context?

Page 85: Indrumator ASDN 2009

LUCRAREA NR. 9 NUMĂRĂTOARE (I)

1. Scopul lucrării Se realizează numărătoare asincrone, sincrone, binare şi zecimale, directe, indirecte şi reversibile, sintetizate cu bistabile D, T sau JK. Se studiază avantajele şi dezavantajele proprii fiecărei implementări. Numărătoarele prezentate sunt apoi implementate cu ajutorul ACTIVE-HDL. 2. Consideraţii teoretice Numărătoarele sunt circuite logice secvenţiale specializate pentru probleme de temporizare şi control. Se pot realiza numărătoare pentru a număra în orice mod de codificare a informaţiei, cu condiţia ca pentru fiecare număr cuprins în gama de înregistrare (bucla) numărătorului, acesta să prezinte câte o stare distinctă. Numărătoarele se clasifică după următoarele criterii:

• modul de codificare a informaţiei (binare, binar-zecimale, modulo p); • modul de comutare a bistabilelor din numărător (asincrone, sincrone); • modul de modificare a stărilor numărătorului (directe, indirecte,

reversibile). Un numărător binar înregistrează în sistemul de numeraţie binar succesiunea impulsurilor aplicate la intrare. Capacitatea de numărare a numărătorului binar depinde de numărul bistabilelor. Considerând pentru fiecare număr o stare distinctă, rezultă că acesta poate număra în gama "0" ÷ "2n - 1", n fiind numărul bistabilelor. Există multe situaţii în care nu sunt necesare "2n" stări. Dacă numărătorul are p = 2n - k stări în bucla sa de numărare înseamnă că este un numărător modulo p. Se defineşte capacitatea unui numărător ca fiind numărul de stări distincte pe care le are. Factorul de divizare al numărătorului este raportul dintre numărul impulsurilor de la intrare şi numărul impulsurilor de la ieşire. Astfel, unul dintre domeniile de largă aplicabilitatea a numărătoarelor îl constituie divizoarele de frecvenţă.

Page 86: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

88

2.1. Numărătoare asincrone binare şi zecimale La începuturile proiectării numărătoarelor electronice s-a folosit modul de funcţionare asincron sau cu transport intern. În acest mod de funcţionare, impulsul de numărare este introdus în prima secţiune a numărătorului, iar ieşirea fiecărei secţiuni comandă intrarea de tact a următoarei secţiuni, ca în figura 9.1, unde numărătorul este realizat cu bistabile T.

J

CLK

R

Q

QK

S

IN

1

J

CLK

R

Q

QK

S

1

J

CLK

R

Q

QK

S

1

J

CLK

R

Q

QK

S

1

Z Y X W

Figura 9.1 Numărător asincron binar

Funcţionarea acestui tip de numărător este asincronă în raport cu impulsul de numărare recepţionat la intrare. Schema prezintă dezavantajul că numărătorul urmăreşte impulsul de intrare cu o întârziere variabilă. Atunci când procesul trebuie oprit într-o stare, dificultatea care apare este că următorul impuls de numărare e generat de procesul comandat înainte ca numărătorul să poată genera impulsul de oprire. Acesta este un serios factor de limitare în utilizarea numărătoarelor asincrone. Numărătorul asincron binar există şi sub formă de circuit integrat, în mai multe variante constructive MSI. Un exemplu este circuitul 493, unde ieşirea secţiunii Z (QA) este legată direct la intrarea secţiunii Y (B). În figura 9.2 este reprezentată structura internă a numărătorului asincron integrat 493, iar în figura 9.3 este prezentat modul de conectare a terminalelor circuitului 493, pentru realizarea unui numărător binar direct pe 4 biţi, la fel cu cel din figura 9.1.

Page 87: Indrumator ASDN 2009

NUMĂRĂTOARE (I)

89

B

RO(2)

A QA

QB

QC

QD

J

K

J

K

J

K

J

K

CLK

CLK

CLK

CLK

RO(1)

Figura 9.2 Schema internă a numărătorului asincron 493

A

R0 (1)

QA

493

B

R0 (2)

R0

QBQCQD

CLK

Figura 9.3 Numărător direct pe 4 biţi realizat cu 493 Pentru extinderea domeniului de numărare se conectează circuitele în cascadă. Prin conectarea circuitelor ca în figura 9.4 se obţine un numărător asincron binar direct pe 8 biţi, care va număra de la 0 la 255.

Page 88: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

90

A

R0 (1)

QA

493

B

R0 (2)R0

QBQCQD

A

R0 (1)

QA

493

B

R0 (2)

QBQCQD

CLK

Figura 9.4 Numărător pe 8 biţi obţinut prin cascadare Circuitul integrat 490 (figura 9.5) este un numărător asincron a cărui comportare este asemănătoare cu cea a circuitului 493, cu deosebirea că 490 este zecimal (are 10 stări distincte).

A

R0 (1)

QA

490

B

R0 (2)R0

QBQCQD

CLK

R9 (1)

R9 (2)R9

Figura 9.5 Numărătorul MSI 490

Extinderea domeniului de numărare se face tot prin cascadare. 2.2 Numărător sincron binar serie Numărătorul sincron binar a fost realizat după tipul asincron şi, deoarece creează mai puţine probleme în aplicaţii, a devenit în scurt timp foarte utilizat. Multe tipuri de numărătoare sincrone ca: binar de 4 biţi, BCD, decadice (zecimale), reversibile, toate cu încărcare paralelă, au devenit larg răspândite. O parte dintre acestea sunt disponibile comercial ca circuite integrate. Unele sunt implementate cu bistabile de tip JK, T, iar altele sunt o combinaţie de bistabile RS şi JK. În figura 9.6 este prezentată implementarea unui numărător sincron binar serie, cu bistabile JK conectate în configuraţie de bistabile de tip T. În

Page 89: Indrumator ASDN 2009

NUMĂRĂTOARE (I)

91

tabelul 9.1 este prezentată succesiunea celor 16 stări ale numărătorului binar serie direct. Tabelul 9.1 Succesiunea stărilor pentru numărătorul binar sincron

NR Q0 Q1 Q2 Q30 0 0 0 0 1 1 0 0 0 2 0 1 0 0 3 1 1 0 0 4 0 0 1 0 5 1 0 1 0 6 0 1 1 0 7 1 1 1 0 8 0 0 0 1 9 1 0 0 1 10 0 1 0 1 11 1 1 0 1 12 0 0 1 1 13 1 0 1 1 14 0 1 1 1 15 1 1 1 1

J

CLK

R

Q

QK

S

CLK

1

J

CLK

R

Q

QK

S J

CLK

R

Q

QK

S J

CLK

R

Q

QK

S

Reset

Q0 Q1 Q2 Q3

P1P2

Figura 9.6 Numărător sincron binar serie direct, cu bistabile JK în configuraţie de bistabile de tip T

Page 90: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

92

Intrările J şi K sunt comandate cu ajutorul porţilor P1 şi P2 în conformitate cu tabelul de adevăr (tabelul 9.1). Conform tabelului, respectiv coloanei Q0, intrările primului bistabil trebuie legate la nivel 1 logic. Al doilea bistabil basculează din două în două impulsuri de ceas, conform coloanei Q1, adică atunci când Q0 trece din 1 logic în 0 logic. Deci vom lega intrările J1 = K1 la ieşirea Q0 a primului bistabil. Al treilea bistabil basculează din 4 în 4 impulsuri, conform coloanei Q2, adică atunci când Q0 şi Q1 trec din 1 logic în 0 logic. Această coloană este asigurată de poarta P1, la ieşirea căreia au fost legate J2 şi K2. La fel se petrec lucrurile şi pentru bistabilul al patrulea, care este comandat de poarta P2. 2.3 Numărător sincron binar paralel O mărire suplimentară a vitezei de lucru a numărătorului sincron binar direct de tip serie se poate obţine dacă porţile ŞI nu se leagă în cascadă. Fiecare poartă ŞI are cuplate direct pe intrările sale ieşirile bistabilelor care condiţionează deschiderea bistabilului următor (figura 9.7). Acest fapt determină utilizarea unor porţi ŞI cu un număr mai mare de intrări.

J

CLK

R

Q

QK

S

CLK

1

J

CLK

R

Q

QK

S J

CLK

R

Q

QK

S J

CLK

R

Q

QK

S

Reset

P1 P2

Figura 9.7 Numărător sincron binar paralel direct, cu bistabile JK în configuraţie de tip T.

2.4 Numărător sincron binar reversibil Numărătorul sincron binar reversibil este disponibil sub formă de circuit integrat 4193. El este prevăzut cu 2 intrări de ceas, count up (CU) pentru numărare directă şi count down (CD) pentru numărare inversă. Numărătorul mai are disponibile două ieşiri, realizate prin două porţi suplimentare de tip ŞI-NU, pentru generarea comenzilor CARRY (transport

Page 91: Indrumator ASDN 2009

NUMĂRĂTOARE (I)

93

CR = 0) când numărătorul “se umple”: Q0 = Q1 = Q2 = Q3 = 1 şi BORROW (împrumut BR = 0) când numărătorul “se goleşte”: Q0 = Q1 = Q2 = Q3 = 0. Aceste ieşiri se folosesc pentru conectarea în cascadă a numărătoarelor (figura 9.8).

Q3 Q2 Q1 Q0 CR

BR CL D C B A LD

CU

CD 4193

Q3 Q2 Q1 Q0CR

BRCL D C B A LD

CU

CD4193

CLEAR LOAD

CLK

Figura 9.8 Legarea în cascadă a numărătorului sincron binar reversibil Numărătorul realizat în figura 9.8 va număra în intervalul 0-255, direct sau invers, după cum se aplică semnalul de ceas, pe CU sau pe CD. 2.5 Numărător sincron zecimal reversibil Acest numărător este disponibil sub forma circuitului integrat 4192 (figura 9.9) şi are aceleaşi intrări şi ieşiri ca şi circuitul 4193. Diferenţa constă în faptul că numărătorul numără de la 0 la 9 sau invers, iar la conectarea în cascadă a 2 numărătoare de acest tip, numără de la 0 la 99 sau invers.

Q3 Q2 Q1 Q0CR

BRCL D C B A LD

CU

CD4192

CLK

Figura 9.9 Numărător sincron zecimal reversibil 3. Desfăşurarea lucrării 1. Se realizează numărătorul asincron binar direct din figura 9.1 cu

bistabile integrate JK, 473 sau 476.

Page 92: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

94

2. Se studiază numărătorul asincron binar direct MSI 493 (figurile 9.2 şi 9.3). a) Se verifică funcţionarea numărătorului de 1 bit prin legarea ieşirii QA

la un LED şi a intrării A la un generator de tact. b) Se verifică funcţionarea numărătorului pe 4 biţi făcând legăturile din

figura 9.3 şi legând R0 la masă. c) Se urmăresc ieşirile când R0 este conectat la Vcc (R0 = 1, adică

CLEAR = 0, QAQBQCQD = 0000). d) Se verifică funcţionarea numărătorului pe 8 biţi făcând legăturile

pentru cascadare ca în figura 9.4. 3. Se studiază numărătorul asincron zecimal direct realizat cu circuitul

integrat 490 (figura 9.5). a) Se verifică funcţionarea numărătorului pe 4 biţi făcând legăturile ca

în figura 9.5 şi legând R0 şi R9 la masă. b) Se urmăresc ieşirile când R0 şi R9 sunt legate pe rând la Vcc (R0 = 1,

QAQBQCQD = 0000 respectiv R9 = 1, QAQBQCQD = 1001). Se urmăreşte prioritatea intrării R9 faţă de R0 astfel: legând R9 la 1 şi apoi R0 la 1 ieşirile vor rămâne în starea 1001.

4. Se studiază numărătorul sincron binar reversibil de 4 biţi disponibil sub forma circuitului MSI 4193. a) Se verifică funcţionarea circuitului ca numărător direct legând

intrările CU la ceas şi CD la nivelul logic 1. Se urmăreşte ieşirea de transport CR atunci când numărătorul “se umple” (QAQBQCQD = 1111).

b) Se verifică funcţionarea circuitului ca şi numărător invers legând CD la ceas şi CU la nivelul logic 1. Se urmăreşte ieşirea de împrumut BR atunci când numărătorul “se goleşte” (QAQBQCQD = 0000).

c) Se aplică pe intrările de încărcare paralelă A,B,C,D o secvenţă oarecare şi se urmăreşte operaţia de încărcare a ieşirilor QA, QB, QC, QD cu acea secvenţă, prin legarea la masă a intrării LD.

d) Se leagă intrarea de ştergere CLEAR (CL) la Vcc şi se urmăresc ieşirile. Se conectează în cascadă două circuite ca în figura 9.8 şi se verifică funcţionarea acestui numărător.

5. Se studiază numărătorul sincron zecimal reversibil pe 4 biţi (figura 9.9) disponibil sub forma circuitului MSI 4192. Se repetă subpunctele a) – d) de la punctul 4.

6. Se implementează şi se simulează toate tipurile de numărătoare prezentate în lucrare cu ajutorul ACTIVE-HDL. Care metodă de implementare este preferabilă şi în ce context?

Page 93: Indrumator ASDN 2009

LUCRAREA NR. 10 NUMĂRĂTOARE (II)

1. Scopul lucrării Se verifică modul de comportare al unor numărătoare MSI, conform descrierii funcţionale din catalog. Se studiază posibilităţile de realizare a diferite secvenţe de numărare, sub şi peste limita domeniului de numărare al numărătoarelor MSI disponibile. Se realizează mai multe variante de implementare a unor numărătoare modulo p, folosind şi ACTIVE-HDL. 2. Consideraţii teoretice 2.1 Generalităţi Numărătoarele prezentate în lucrarea anterioară erau numărătoare modulo 2n obţinute prin interconectarea a n celule binare. Un numărător modulo p este un numărător la care se folosesc numai p stări (p < 2n), restul de 2n – p fiind omise. Alegerea stărilor omise poate fi făcută în principiu arbitrar. Însă, în funcţie de stările omise, pentru acelaşi număr p vor exista mai multe variante de numărătoare modulo p. Un numărător modulo p se mai numeşte şi divizor prin p. Un numărător modulo 10 obţinut dintr-un numărător binar pe 4 biţi prin omiterea a 6 stări, şi anume: 1010, 1011, 1100, 1101, 1110, 1111, este de fapt un numărător zecimal. Acesta se mai numeşte şi numărător decadic.

2.2 Numărătoare MSI sincrone

2.2.1 Numărătoarele MSI 4162, 4163, 4192 şi 4193 Există mai multe tipuri de numărătoare sincrone integrate, dintre care cele mai folosite sunt: 4162 şi 4163, 4192 şi 4193. Circuitul 4163 (figura 10.1) este un numărător sincron binar direct. Singura deosebire dintre acest numărător şi 4162 este că acesta din urmă este zecimal (numără numai de la 0 la 9), pe când 4163 numără de la 0 la 15.

Page 94: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 96

În rest, pinii sunt identici şi semnificaţia semnalelor la pini de asemenea. Intrările notate PL (Parallel Load) şi MR (Master Reset sau CLR – Clear) sunt sincrone şi realizează, în cazul în care sunt active (pe 0 logic) şi în prezenţa unui impuls de ceas, încărcarea paralelă şi respectiv resetarea numărătorului. De exemplu, pentru a încărca paralel un anumit număr în numărător, se va proceda, în ordine, astfel:

1. pe liniile de date (D0-D3) se stabileşte numărul pe care dorim să-l încărcăm;

2. se activează intrarea PL cu 0 logic; 3. la sosirea următorului impuls de ceas, numărul va fi încărcat în

numărător. Dacă apoi se dezactivează intrarea PL (cu 1 logic), procesul de numărare va continua plecând de la starea încărcată anterior.

În mod analog se procedează şi pentru intrarea MR (CLR), rezultatul fiind aducerea numărătorului în starea 0 (resetare):

1. se va activa linia Master Reset (MR) cu 0 logic; 2. la sosirea următorului impuls de ceas, numărătorul va fi resetat

(adus la zero). Dacă apoi se dezactivează intrarea MR (cu 1 logic), procesul de numărare va continua plecând din starea zero.

În starea 15 (pentru 4163), respectiv 9 (pentru 4162), se va activa (va lua valoarea 1 logic) ieşirea TC (Terminal Count sau CO – Carry Output), cu semnificaţia de transport (se foloseşte la cascadarea numărătoarelor). În tabelul 10.1 sunt descrise operaţiile care pot fi executate de numărătorul sincron binar direct 4163. Tabel 10.1 Operaţiile efectuate de numărătorul sincron binar direct 4163

Operaţie Descriere CLR LD EPCLEAR (şterge) (QD, QC, QB, QA) ← (0,0,0,0)

CO = QD ⋅ QC ⋅ QB ⋅ QA ⋅ ET 0 ∅ ∅

LOAD (încarcă paralel)

(QD, QC, QB, QA) ← (D, C, B, A) CO = QD ⋅ QC ⋅ QB ⋅ QA ⋅ ET

1 0 ∅

HOLD (memorează)

(QD, QC, QB, QA) ← (QD, QC, QB, QA) CO = QD ⋅ QC ⋅ QB ⋅ QA ⋅ ET

1 1 0

COUNT (numără)

(QD, QC, QB, QA) ← [(QD, QC, QB, QA) + (0,0,0,T)]mod16 CO = QD ⋅ QC ⋅ QB ⋅ QA ⋅ ET

1 1 1

Page 95: Indrumator ASDN 2009

NUMĂRĂTOARE (II)

97

PL D0 D1 D2 D3

MR Q0 Q1 Q2 Q3

CLK 74163

TCET EP

Figura 10.1 Numărătorul integrat MSI 4163 Circuitul 4193 (figura 10.2) este un numărător sincron binar şi bidirecţional (poate număra atât crescător cât şi descrescător). Singura deosebire dintre acest numărător şi 4192 este că acesta din urmă este zecimal, numără numai în bucla 0-9 sau 9-0, pe când 4193 numără în bucla 0-15 sau 15-0. În rest, pinii sunt identici şi semnificaţia semnalelor la pini de asemenea. Intrările notate LD (Load) şi MR (Master Reset sau CLR – Clear) sunt asincrone şi realizează, în cazul în care sunt active, încărcarea paralelă şi respectiv resetarea numărătorului. De exemplu, pentru a încărca un anumit număr în numărător, se va proceda, în ordine, astfel:

1. pe liniile de date (D0-D3) se va stabili numărul pe care dorim să-l încărcăm;

2. se va activa intrarea LD (cu 0 logic). Imediat, numărul de pe intrările de date se încarcă în numărător. Dacă apoi se dezactivează intrarea LD (cu 1 logic), procesul de numărare va continua plecând din starea încărcată anterior.

De remarcat că la acest numărător, spre deosebire de 4163, nu mai este necesară prezenţa unui impuls de ceas pentru încărcare paralelă: la simpla activare a intrării LD, datele de pe D0-D3 se înscriu în numărător. În mod analog se procedează şi pentru intrarea MR (CLR), rezultatul fiind aducerea numărătorului în starea 0 (resetare):

1. se va activa linia Master Reset (MR) cu 1 logic; 2. imediat, numărătorul va fi resetat (adus la zero). Dacă apoi se

dezactivează intrarea MR (cu 0 logic), procesul de numărare va continua plecând din starea zero.

Aceste numărătoare au două regimuri de lucru, corespunzătoare numărării crescătoare sau descrescătoare. În cazul în care se primeşte un impuls de ceas pe intrarea Cu, numărătorul va număra crescător, iar dacă se primeşte un impuls de ceas pe intrarea Cd, va număra descrescător.

Page 96: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 98

În starea 15 (pentru 4193), respectiv 9 (pentru 4192), se va activa ieşirea TCu (CO Carry Output – dacă regimul de lucru este de numărare crescătoare), iar în starea 0 (atât pentru 4193 cât şi pentru 4192), se va activa ieşirea TCd (BO Borrow Output – dacă regimul de lucru este de numărare descrescătoare). Aceste ieşiri, cu semnificaţia de transport (CO) sau împrumut (BO), se folosesc la cascadarea numărătoarelor şi sunt active pe 0 logic.

PL D0 D1 D2 D3

MR Q0 Q1 Q2 Q3

Cu

4193TCu

TCdCd

Figura 10.2 Numărătorul integrat MSI 4193 Pentru extinderea domeniului de numărare se conectează circuitele în cascadă. Prin conectarea circuitelor 4163 ca în figura 10.3 se obţine un numărător pe 8 biţi care va număra de la 0 la 255. Pentru ca schema să funcţioneze intrările de Enable T (ET) şi Enable P (EP) trebuie să ia valoarea 1 logic.

PL D0 D1 D2 D3

MR Q0 Q1 Q2 Q3

CLK 74163

TC PL D0 D1 D2 D3

MR Q0 Q1 Q2 Q3

CLK 74163

TCET EP

ETEP

Figura 10.3 Cascadarea numărătoarelor sincrone 4163

Page 97: Indrumator ASDN 2009

NUMĂRĂTOARE (II)

99

2.3 Numărătoare modulo p 2.3.1 Numărătoare modulo p realizate cu circuite 4192 şi 4193 Cu ajutorul acestor numărătoare MSI se pot realiza numărătoare modulo p directe sau inverse prin intermediul unei logici combinaţionale adecvate.

Dar, cu aceste circuite se pot realiza şi numărătoare programabile, care nu necesită o logică combinaţională suplimentară. Vom prezenta în continuare un exemplu utilizând circuitului 4193 (numărător sincron binar reversibil).

PL D0 D1 D2 D3

MR Q0 Q1 Q2 Q3

Cu

4193TCu

TCdCd

Figura 10.4 Numărător modulo p realizat cu numărător 4193 (se pierde ultima stare)

Dacă aplicăm intrărilor D0-D3 ale numărătorului 4193, legat ca în figura 10.4, o secvenţă oarecare, în momentul în care numărătorul numărând direct va ajunge în starea 1111, ieşirea de transport TCu va deveni 0 şi va determina, prin activarea intrării PL, încărcarea numărătorului cu acea secvenţă (dar se pierde o stare). Pentru ca încărcarea secvenţei respective (de exemplu 1010) să se facă cu o întârziere faţă de momentul trecerii numărătorului în ultima stare (1111) vom introduce o poartă ŞI-NU care să detecteze momentul apariţiei stării 1111 şi apoi să comande intrarea de încărcare paralelă. Schema este prezentată în figura 10.5. Secvenţa de numărare va fi 1010, 1011, 1100, 1101, 1110, 1111 şi din nou 1010. Modul acesta de conectare poate fi utilizat şi pentru numărătorul sincron zecimal 4192, dar secvenţa detectată este 1001.

Page 98: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 100

PL D0 D1 D2 D3

MR Q0 Q1 Q2 Q3

Cu

4193TCu

TCdCd

CLK

Figura 10.5 Numărător modulo p realizat cu circuitul 4193 2.3.2 Numărătoare modulo p realizate prin aducere la 0 În cazul în care dorim realizarea unui numărător modulo p vom proceda astfel:

• determinăm numărul minim de celule de memorie necesare pentru realizarea numărătorului cu relaţia:

2n p≥ • interconectăm celulele numărătorului astfel încât din cele 2n stări

posibile să se omită 2n-p stări. Metoda aducerii la 0 este frecvent utilizată pentru realizarea numărătoarelor modulo p, în special cu numărătoarele MSI 490, 493, 4192, 4193 care dispun de intrări asincrone de ştergere. Această metodă constă din următoarele etape:

• se lasă numărătorul să evolueze normal până în starea p-1; • în momentul în care se atinge starea p se aplică printr-o logică

combinaţională un impuls de ştergere a tuturor celulelor numărătorului.

Ne propunem să realizăm cu circuitul 493 (numărător asincron binar) un numărător modulo 5. Secvenţa de numărare a acestui numărător este: 000, 001, 010, 011, 100, 000. Pentru a realiza această secvenţă este necesar să se aducă numărătorul în starea 000 prin activarea intrărilor asincrone de ştergere R01 şi R02, atunci când numărătorul ajunge în bucla de numărare în starea 100 (figura 10.6).

Page 99: Indrumator ASDN 2009

NUMĂRĂTOARE (II)

101

A

R0 (1)

QA

493

B

R0 (2)

QBQCQD

CLK

Figura 10.6 Numărător modulo 5 realizat cu circuitul 493 Pentru realizarea unui numărător modulo 15 va fi necesară o logică combinaţională care să aducă intrările R01 şi R02 în 1 atunci când numărătorul ajunge în starea 1110 (figura 10.7).

A

R0 (1)

QA

493

B

R0 (2)

QBQCQD

CLK

Figura 10.7 Numărător modulo 15 realizat cu circuitul 493 În mod asemănător se poate realiza orice numărător modulo p cu p mai mic decât 16 sau prin conectarea în cascadă pentru 16 < p < 255. 3. Desfăşurarea lucrării 1. Se testează funcţionarea corectă a numărătoarelor MSI 4162, 4163,

4192, 4193, 490, 493. Se verifică intrările de încărcare paralelă PL şi de resetare MR (Clear), constatându-se diferenţele dintre aceste funcţii la 4162, 4163 şi 4192, 4193 (încărcare paralelă şi resetare sincrone şi asincrone; nivel logic activ pe 0 sau 1).

2. Se realizează diferite numărătoare modulo p cu aducere la 0, cu circuitele MSI anterioare, după modelele prezentate în lucrare.

Page 100: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 102

3. Se va implementa un numărător care să numere în bucla 3-12, cu ajutorul unui circuit 4163.

4. Verificaţi funcţionarea montajelor din figurile 10.4 şi 10.5. 5. Explicaţi de ce, în figura 10.3, nu s-au cascadat numărătoarele prin

conectarea ieşirii TC a primului numărător la CLK-ul celui de-al doilea numărător. Ce problemă de temporizare ar fi apărut?

6. Se implementează toate numărătoarele prezentate în lucrare folosind ACTIVE-HDL şi se realizează şi simularea funcţionării acestora. Cum se remarcă la simulare deosebirile dintre intrările sincrone şi cele asincrone?

Page 101: Indrumator ASDN 2009

LUCRAREA NR. 11 REGISTRE ŞI REGISTRE DE DEPLASARE

1. Scopul lucrării Se prezintă diferite modalităţi de realizare a unor registre simple şi de deplasare (prin sinteza cu bistabile JK sau D), precum şi modul de lucru cu registre MSI. Se realizează de asemenea implementarea acestor tipuri de registre cu ajutorul ACTIVE-HDL. Se studiază domeniile de aplicabilitate ale acestor tipuri de componente.

2. Consideraţii teoretice 2.1 Registre Registrele sunt circuite secvenţiale sincrone care realizează memorarea informaţiei binare pe durata unui impuls de ceas. Pentru această simplă funcţionalitate (există şi registre cu funcţionalităţi multiple) ele pot fi privite ca un ansamblu de bistabile D, câte un bistabil pentru fiecare bit, reuniţi într-o capsulă unică. În general, registrele sunt de 4, 8 sau 16 biţi/capsulă. De multe ori registrele sunt folosite pentru stabilizarea datelor care provin din mai multe surse şi care trebuie să fie furnizate simultan unui anumit dispozitiv.

2.2 Registre de deplasare Acestea sunt registre care, pe lângă funcţia de stocare a informaţiei pe durata unui impuls de ceas, pot realiza şi deplasarea şi circularea (rotirea) acesteia, de asemenea sincron cu tactul. Deplasarea se poate face: - de la stânga la dreapta:

Q Q Q Q0 → → →1 2 3 - de la dreapta la stânga:

Q Q Q Q3 2 1 0→ → → sau în ambele direcţii.

Page 102: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

104

Ţinând cont de codificarea binară a informaţiei, deplasarea spre stânga va avea semnificaţia unei înmulţiri cu 2 a numărului în binar, iar deplasarea spre dreapta va avea semnificaţia unei împărţiri la 2 a numărului în binar. Prezentăm în continuare schema internă de principiu a unui registru de deplasare universal pe 4 biţi. Se observă că funcţia de deplasare se obţine prin conectarea ieşirii fiecărui element la intrarea vecinului său (funcţionare serială). Dacă intrările sunt furnizate prin intermediul unui multiplexor ale cărui intrări provin de la ambele elemente vecine de stocare a informaţiei, se obţine un registru de deplasare universal. Multiplexoarele constituie circuitul combinaţional de determinare a stării următoare.

D Q D Q D Q D Q

3 2 1 0

D Q

3 2 1 0

D Q

3 2 1 0 3 2 1 0

D QD QD Q D QD QD Q

X3 X2 X1 X0

Y2 Y3 Y1 Y0

sl

s

sr

3 2 1 0 3 2 1 0 3 2 1 0

Figura 11.1 Registru de deplasare universal pe 4 biţi

Modurile de lucru ale registrului de deplasare universal din figura 11.1 sunt determinate de semnalul de selecţie s conform tabelului 11.1. Tabelul 11.1 Modurile de lucru ale registrului de deplasare universal

Mod Starea următoare Funcţia s = 0 yi memorare (hold) s = 1 xi încărcare paralelă (load) s = 2 yi-1 deplasare stânga s = 3 yi+1 deplasare dreapta

Observaţie: Semnalul de selecţie s este pe 2 biţi.

Un alt circuit, integratul MSI 4194, reprezintă un registru de deplasare universal pe 4 biţi, care are disponibile toate funcţiile necesare: încărcare paralelă, deplasare dreapta, deplasare stânga, memorare şi ştergere. În figura 11.2 este reprezentat simbolul circuitului, iar în tabelul 11.2 este detaliată funcţionarea lui.

Page 103: Indrumator ASDN 2009

REGISTRE ŞI REGISTRE DE DEPLASARE

105

QA

DCBA

4194

CLR

S1

QBQCQD

R

CLK

L

S0

Figura 11.2 Registrul de deplasare universal 4194 Tabel 11.2 Funcţionarea registrului de deplasare universal 4194

Intrări Ieşiri Mod Serial Paralel CLR S1 S0

CLK Stânga Dreapta A B C D

QA QB QC QD

0 X X X X X X X X X 0 0 0 0 1 X X 0 X X X X X X QA0 QB0 QC0 QD01 1 1 ↑ X X a b c d a b c d 1 0 1 ↑ X 1 X X X X 1 QAn QBn QCn

1 0 1 ↑ X 0 X X X X 0 QAn QBn QCn

1 1 0 ↑ 1 X X X X X QBn QCn QDn 1 1 1 0 ↑ 0 X X X X X QBn QCn QDn 0 1 0 0 X X X X X X X QA0 QB0 QC0 QD0

Tabelul pune în evidenţă modurile de funcţionare ale registrului de deplasare universal, în funcţie de semnalul de ceas CLK şi de valorile semnalelor de selecţie S1 şi S0 şi a celui de resetare CLR. În figura 11.3 este prezentat un registru de deplasare circular care deplasează informaţia către dreapta, construit pe bază de bistabile master-slave.

Page 104: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

106

Direcţia de deplasare

setReCLK

CLK CLK CLKCLK

+

+

Reset

Figura 11.3 Registru de deplasare dreapta circular

Circuitul 495 reprezentat în figura 11.4 este un registru de deplasare MSI pe 4 biţi. Pentru intrarea de control MOD = 1 registrul se încarcă în paralel cu datele de la intrările A, B, C, D, sincron cu ceasul CLK2. Pentru MOD = 0 se realizează deplasarea spre dreapta, sincronă cu ceasul CLK1, a informaţiei introduse prin intrarea de date serială:

QDQCQBQASER →→→→ Capacitatea acestui registru se poate extinde prin conectarea în

cascadă.

QA

DCBA

495

MODECLK1-Shift

QBQCQD

SER

CLK2-Load

Figura 11.4 Registrul de deplasare MSI 495 2.3 Generatoare de numere pseudo-aleatoare Un generator de secvenţă este un sistem electronic capabil să genereze, în timpul unor impulsuri de tact (ceas), o succesiune de unităţi (valoare logică 1) şi zerouri (valoare logică 0) de o structură dată.

Page 105: Indrumator ASDN 2009

REGISTRE ŞI REGISTRE DE DEPLASARE

107

Prin lungimea unei secvenţe vom înţelege numărul de biţi după care întreaga secvenţă se repetă. Secvenţele binare se împart în două categorii:

• Secvenţe aleatoare de lungime infinită; • Secvenţe deterministe de lungime finită.

2.3.1 Secvenţe aleatoare (SA) O secvenţă aleatoare se poate obţine, de exemplu, dacă asociem celor două feţe ale unei monede cifrele binare 0 şi respectiv 1 şi notăm rezultatele obţinute în urma aruncărilor succesive ale acesteia. Se poate apela de asemenea la un calculator şi la un program special de generare a numerelor aleatoare pentru a obţine o secvenţă binară aleatoare. 2.3.2 Secvenţe deterministe (SD) Fie următoarea secvenţă binară deterministă: 110 110 110 … Secvenţa binară din acest exemplu are lungimea de trei biţi şi poate fi considerată ca fiind obţinută prin repetarea uneia din următoarele succesiuni: 110, 101 sau 011. Dacă generatorul de secvenţe are şi o ieşire complementară, atunci, pe această ieşire va apare secvenţa 001 001 001…, secvenţă ce se poate obţine prin repetarea uneia din următoarele succesiuni binare: 001, 010 sau 100. Cele şase succesiuni binare susmenţionate generează practic aceeaşi secvenţă binară (deosebirile pot apărea în alegerea originii secvenţei şi dacă o considerăm sau nu inversată). Metoda cea mai răspândită de generare a secvenţelor deterministe presupune utilizarea unor registre de deplasare cu reacţie logică (vezi figura 11.5). Pentru a genera o secvenţă de lungime L este nevoie de un registru de deplasare cu reacţie format din minimum n celule binare conform relaţiei:

)1.11(12 −≤ nL

Dacă structura secvenţei este impusă, nu întotdeauna va fi posibilă generarea acesteia cu un număr minim de celule binare.

Page 106: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE

108

S

CLK

Q1

Q1R

S Q2

Q2R

S Q3

Q3R

Tact

y Q Q= ⊕1 3

CLK CLK

Figura 11.5 Generator de secvenţe Registrul de deplasare format din n celule binare este un sistem secvenţial având 2n stări distincte (printr-o stare a registrului înţelegem ansamblul stărilor tuturor bistabilelor care alcătuiesc registrul). Printr-o alegere convenabilă a reacţiei putem forţa registrul să evolueze astfel încât să treacă într-o ordine oarecare prin toate stările lui nenule. Secvenţa binară obţinută la ieşirea unui asemenea registru se numeşte secvenţă de lungime maximă. Secvenţele binare deterministe de lungime maximă se mai numesc şi secvenţe pseudo-aleatoare (SPA). Aceste secvenţe au o importanţă practică deosebită deoarece au proprietăţi asemănătoare celor ale secvenţelor aleatoare fără a avea însă dezavantajul acestora de a nu fi repetabile. SPA, fiind deterministe, sunt perfect predictibile. Pentru un receptor care foloseşte o porţiune dintr-o SPA mult mai mică decât lungimea acesteia, secvenţa utilizată apare ca fiind aleatoare. SPA sunt utilizate foarte des ca secvenţe de sincronizare în transmisiile de date. Un exemplu de generator de numere pseudo-aleatoare este prezentat în figura 11.6:

QA

DCBA

495

M O DECLK 1-Shift

QBQCQD

SER

CLK 2-Load

486

Figura 11.6 Generator de secvenţă pseudo-aleatoare

Page 107: Indrumator ASDN 2009

REGISTRE ŞI REGISTRE DE DEPLASARE

109

Acest generator de succesiuni pseudo-aleatoare generează la ieşirea registrului o secvenţă binară deterministă de lungime maximă:

1 8 12 14 15 7 11 5 10 13 6 3 9 4 2 1→ → → → → → → → → → → → → → → La apariţia stării 0000 generatorul se blochează, deoarece circuitul XOR înscrie continuu 0 pe intrarea SER. Pentru o funcţionare corectă schema se va completa cu un circuit de deblocare din starea 0000. 3. Desfăşurarea lucrării 1. Se realizează registrul de deplasare din figura 11.1, pe panoul didactic. 2. Se realizează şi se simulează funcţionarea registrului de deplasare din

figura 11.1 folosind ACTIVE-HDL. 3. Se realizează şi se simulează funcţionarea registrului de deplasare

dreapta circular din figura 11.3 folosind ACTIVE-HDL. 4. Se verifică pe panoul didactic toate modurile de funcţionare pentru

registrele integrate MSI 4194 şi 495 (figura 11.2 şi figura 11.4). 5. Se realizează, folosind mediul ACTIVE-HDL, un registru de deplasare

bidirecţional (stânga-dreapta), cu încărcare paralelă sincronă. 6. Folosind facilităţile din mediul ACTIVE-HDL se realizează conectarea

în cascadă a două registre de deplasare universale. Cum trebuie să se facă această cascadare?

7. Pentru circuitul din figura 11.6: a) Să se determine succesiunea de stări în cazul în care se leagă ieşirea

QC în loc de QA la poarta SAU EXCLUSIV; b) Să se determine succesiunea de stări în cazul în care se leagă ieşirea

QB în loc de QA la poarta SAU EXCLUSIV; c) Să se explice de ce apar diferenţe de lungime la secvenţele astfel

obţinute faţă de lungimea secvenţei obţinută în figura 11.6; d) Să se repete punctele a) şi b) folosind o poartă SAU EXCLUSIV

NEGAT (COINCIDENŢĂ).

Page 108: Indrumator ASDN 2009

LUCRAREA NR. 12 FAMILIA DE CIRCUITE FPGA XILINX

1. Scopul lucrării Se prezintă familia de dispozitive programabile FPGA a firmei XILINX, producătorul cel mai important pe plan mondial. Se studiază celula logică fundamentală, logica de interconectare şi celula de intrare-ieşire. Se studiază metodologiile şi fluxul de proiectare folosind instrumentele software specifice din pachetul ISE Foundation: utilitarele FPGA Editor, Timing Analyser, Floorplanner, Hardware Debugger. 2. Consideraţii teoretice Structura de celule logice programabile la familia de dispozitive FPGA a firmei XILINX se numeşte LCA (Logic Cell Array). Tehnologia de realizare fizică a acestor dispozitive este CMOS. Funcţiile interne ale tuturor celulelor din FPGA sunt identice şi pot fi configurate prin intermediul unor celule SRAM (Static RAM) care comandă atât configuraţia internă a CLB-urilor (Configurable Logic Block) cât şi interconectarea celulelor (rutarea semnalelor în interiorul LCA). Astfel, într-un dispozitiv FPGA se pot configura două aspecte:

• logica activă – funcţia logică realizată de către fiecare celulă logică (slice);

• reţeaua de interconectare – se poate alege care celule logice să fie conectate şi pe care canal de rutare (pot exista mai multe variante).

Avantajele stocării configuraţiei dispozitivelor FPGA cu ajutorul unor memorii SRAM sunt următoarele:

• dispozitivul FPGA este astfel re-programabil – acelaşi dispozitiv fizic poate realiza o altă funcţie logică după o anumită perioadă de timp, atunci când se decide schimbarea rolului său în cadrul aplicaţiei în care este integrat. Numărul de re-configurări este nelimitat;

Page 109: Indrumator ASDN 2009

FAMILIA DE CIRCUITE FPGA XILINX

111

• dispozitivul FPGA este reconfigurabil dinamic – acest concept se referă atât la faptul că se poate schimba configuraţia sa în timpul rulării (run-time reconfiguration) cât şi la existenţa unor dispozitive care permit stocarea mai multor contexte de configurare în acelaşi integrat;

• pentru configurarea dispozitivului FPGA se folosesc procese (protocoale) standard de scriere în memorii SRAM.

Printre dezavantajele acestei tehnologii putem enumera: • memoriile SRAM au un consum de energie relativ ridicat; • există posibilitatea de a se citi (de către un intrus) conţinutul

memoriilor SRAM, fapt pentru care este mai dificilă asigurarea proprietăţii intelectuale aferente.

2.1 Logica activă a dispozitivelor FPGA

Firma XILINX a creat de-a lungul timpului mai multe familii de

dispozitive FPGA: există seriile XC2000, 3000, 4000, 6200, VIRTEX, VIRTEX II, VIRTEX IV, VIRTEX V şi VIRTEX VI, Spartan, Spartan2, Spartan3 şi Spartan6. Structura internă a acestora a evoluat, susţinută fiind şi de progresele tehnologice înregistrate în domeniul microelectronicii. Totuşi, conceptele fundamentale au rămas aceleaşi, apărând detalii noi legate de implementare, capacitate, organizare arhitecturală etc. În cele ce urmează se vor prezenta principalele elemente constitutive ale dispozitivelor FPGA XILINX în general şi ale familiei Spartan3E în particular.

Celula logică fundamentală se numeşte slice. Mai multe slice-uri sunt grupate într-un CLB; CLB-urile constituie matricea LCA. Fiecare slice este constituit din următoarele elemente:

• Un bloc logic combinaţional principal, format din memorii cu 4 până la 6 linii de adresă (în funcţie de tipul de dispozitiv FPGA) şi conţinutul pe un singur bit – aceste memorii se numesc look-up tables (LUTs);

• Mai multe bistabile (2 până la 4, în funcţie de familie). Aceste bistabile pot fi configurate fie ca bistabile de tip zăvor (Latch), fie ca bistabile de tip Flip-Flop cu comutare pe frontul ascendent sau descendent (se poate opta pentru una din cele două variante);

• Un bloc logic combinaţional secundar, alcătuit din porţi logice, multiplexoare şi mai multe căi de semnal locale pentru multiplexare şi interconectare (în special logica dedicată de carry, pentru transportul semnalelor din blocurile aritmetice). De

Page 110: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 112

menţionat că în dispozitivele FPGA XILINX, liniile de carry sunt dispuse doar pe verticală.

Schema arhitecturală de principiu a unui slice este prezentată în figura 12.1. Această schemă a fost introdusă o dată cu apariţia familiei XC4000 şi este schema unui CLB. Ulterior, o dată cu apariţia de noi familii de dispozitive FPGA, pe măsură ce un CLB a început să conţină mai multe slice-uri, aceasta devine schema unui slice (celula logică atomică). În figură se observă cele 3 elemente constitutive principale: LUT-urile, bistabilele şi logica de carry, precum şi elementele de conectare (buffer-e tri-state, repetoare) la magistralele de rutare din cip.

Slice 0

LUT Carry

LUT Carry D Q

CE

PR

CL

DQCE

PR

CL

Figura 12.1 Schema de principiu a unui slice din

familia de circuite FPGA Xilinx

Numărul slice-urilor dintr-un CLB variază în funcţie de familia de dispozitive FPGA: de exemplu, la familia XC4000 există un singur slice în fiecare CLB, iar la Spartan3E există 4 slice-uri într-un CLB.

După cum s-a menţionat anterior, elementul combinaţional principal al slice-ului este de fapt o memorie RAM statică, realizată în tehnologie CMOS. Ea realizează un tabel de adevăr al oricărei funcţii Booleene de variabilele de intrare. Variabilele de intrare sunt aplicate pe liniile de adresă ale RAM-ului, iar liniile de ieşire constituie ieşirile funcţiilor Booleene. Slice-ul este deci o structură logică universală (realizează orice funcţie de n variabile, unde n este numărul variabilelor de intrare).

În dispozitivele din familia Spartan3E există 2 slice-uri într-un CLB. Structura internă a unui astfel de slice este prezentată în figura 12.2.

Page 111: Indrumator ASDN 2009

FAMILIA DE CIRCUITE FPGA XILINX

113

Figura 12.2 Structura simplificată a unui slice din seria Spartan3E

O dată cu apariţia familiei Virtex, performanţele dispozitivelor

FPGA XILINX au crescut considerabil. Capacitatea logică a dispozitivelor Virtex este mult mai mare decât cea a familiei precedente (XC6200), fapt posibil datorită avansului tehnologic înregistrat în intervalul de timp dintre apariţia celor două familii. Frecvenţa de lucru poate ajunge până la 400 MHz în cazul familiei Virtex6 (această valoare poate creşte prin folosirea judicioasă a anumitor componente interne – cum ar fi memoriile dual-port – până la valori de 1600 MHz). Dispozitivele Virtex sunt perfect compatibile cu standardul PCI, iar interfeţele pot funcţiona la frecvenţe de 33 MHz sau 66 MHz.

Page 112: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 114

În plus faţă de familia anterioară, dispozitivele Virtex au fost dotate cu următoarele elemente constructive speciale:

• Blocuri de memorie dedicate, numite BlockRAM (capacitatea acestor blocuri a crescut de la o familie la alta, ajungând de la 4 Kbits de biţi la familia Virtex la 36 Kbits la familia Virtex6);

• Buffere tri-state, numite BUFT, asociate fiecărui CLB, care controlează resurse segmentabile, dedicate, de rutare;

• DCM – Digital Clock Manager (blocuri dedicate pentru controlul distribuţiei semnalului de tact în cip). Acestea conţin DLL-uri (Delay Locked Loops) – blocuri cu ajutorul cărora se poate elimina fenomenul de clock skew;

• Multiplicatoare combinaţionale cu operanzii pe 18 biţi (rezultatul pe 36 de biţi). La familia Virtex6 au apărut blocurile DSP48E1, care conţin un multiplicator dedicat pe 25×18 biţi, în complementul lui 2, precum şi un acumulator pe 48 de biţi, ambele capabile să funcţioneze la o frecvenţă de 600 MHz.

Familia Virtex-II PRO a produs o nouă revoluţie în domeniu, fiind numită Platform FPGA. Aceste dispozitive oferă utilizatorului, pe lângă toate caracteristicile familiei Virtex-II, procesoare PowerPC programabile, înglobate în cip. Dispozitivele Virtex-II PRO sunt compatibile cu cele mai multe standarde de intrare-ieşire dintre cele mai răspândite la ora actuală în domeniul transmisiei datelor.

Familia Spartan constituie o versiune simplificată a familiei Virtex corespunzătoare, aici renunţându-se la anumite blocuri constructive, cum ar fi blocurile de memorie separate (BlockRAM) pentru a se crea astfel cipuri mai ieftine (nu toţi utilizatorii au nevoie de toate blocurile constructive, unele foarte evoluate, din familia VIRTEX). La familia Spartan3E, frecvenţa operaţională maximă este de 200 MHz.

Principalele caracteristici constructive ale dispozitivelor Spartan3E sunt următoarele (valorile din paranteze indică variaţia în funcţie de tipul de dispozitiv FPGA din familie):

• Blocuri BlockRAM cu capacitatea de 18 Kbits de biţi (între 72 Kbits şi 648 Kbits);

• DCM-uri – Digital Clock Managers (între 2 şi 8); • Multiplicatoare combinaţionale cu operanzii pe 18 biţi, cu

rezultatul pe 36 de biţi (între 4 şi 36); • Intrări / ieşiri disponibile utilizatorului (între 108 şi 376); acestea

sunt grupate în bancuri şi suportă mai multe standarde de Intrare / Ieşire (PCI, DDR333, RSDS, mini-LVDS);

• Număr mare de slice-uri disponibile (între 960 şi 14.752).

Page 113: Indrumator ASDN 2009

FAMILIA DE CIRCUITE FPGA XILINX

115

La toate dispozitivele FPGA XILINX, RAM-urile (atât cele din slice-uri cât şi cele care configurează reţeaua de interconectare) sunt volatile şi trebuie încărcate înainte de utilizare. Încărcarea se face la resetarea sistemului, în unul din următoarele moduri:

• Automat, de la un PROM serial; • Dintr-un microprocesor; • De la un PROM paralel. RAM-ul poate fi reconfigurat ulterior pentru a modifica

funcţionalitatea. Astfel, LCA poate să-şi transforme configuraţia “din mers”, permiţând aplicaţii de sisteme hardware reconfigurabile. O limitare a slice-urilor (comună de altfel tuturor producătorilor de dispozitive FPGA) o constituie „lăţimea” (dimensiunea) funcţiilor combinaţionale formate cu variabilele de intrare ale RAM-ului. Această problemă se poate rezolva folosind mai multe slice-uri (de exemplu, prin cascadare) sau folosind buffer-e tri-state exterioare CLB-urilor. Buffer-ele sunt asociate unor căi de interconectare lungi, folosite pentru propagarea unor semnale globale importante. În general, slice-urile sunt foarte potrivite pentru implementarea unor funcţii care necesită puţine variabile de comutare / bistabil (de exemplu unele numărătoare mici, generatoare de secvenţă etc.). De asemenea, sunt adecvate pentru implementarea unor sisteme care necesită interconectare locală (de exemplu registre de deplasare, generatoare de numere pseudo-aleatoare, codificatoare, decodificatoare etc.) şi pentru matrice sistolice simple. CLB-urile sunt blocuri logice de granularitate mare. În consecinţă, la programarea lor se iroseşte o parte din logica disponibilă în celulă. Este sarcina uneltelor software de a optimiza utilizarea CLB-urilor.

2.2 Interconectarea În LCA există un RAM care constituie memoria de interconectare, în care fiecare bit este dedicat controlului unui punct de conectare intern (PIP – Programmable Interconnection Point). O parte din celulele acestui RAM controlează multiplexoarele de interconectare din interiorul fiecărui CLB, în timp ce celelalte gestionează rutarea semnalelor între CLB-uri, făcând conexiuni prin PIP-uri. Cea mai eficientă conectare este cea directă, la CLB-urile vecine de la Nord, Vest, Sud şi Est. Pentru aceasta însă, trebuie ca celulele adiacente să aibă funcţii adecvate, care să se preteze acestei interconectări. Există mai multe tipuri de interconectări posibile:

Page 114: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 116

1. General purpose interconnect – interconectarea se face printr-un caroiaj de linii metalice situate între CLB-uri. Lungimea lor este mică. Liniile sunt atât verticale cât şi orizontale şi se intersectează în matrice de comutare. Cu matricele de comutare sunt permise ramificări multiple. De exemplu, la seria XC4000, aceste matrice arată ca în figura 12.3:

Figura 12.3 Matrice de interconectare la FPGA-urile Xilinx XC4000

Fiecare tranzistor din această matrice este comandat de câte un bit din RAM-ul care controlează interconexiunile. 2. Long line interconnect – sunt justificate de congestia care apare deseori

la liniile de tipul general purpose interconnect. Aceste linii se întind pe întreaga lungime sau lăţime a cipului şi nu intră prin matricele de comutare. Sunt ideale pentru a furniza semnalul de ceas CLB-urilor, evitând în mare măsură defectele de tipul „clock skew” (alunecarea ceasului – sosirea acestuia cu întârziere la componentele logice la care ar trebui să ajungă simultan). Alunecarea (skewing) se reduce folosind buffer-e globale care accesează direct liniile lungi.

3. Dedicated carry lines – sunt resurse de rutare dedicate distribuţiei semnalului de transport mai ales în cadrul circuitelor aritmetice, la care propagarea acestui semnal este foarte importantă pentru corectitudinea rezultatului final şi pentru viteză.

4. Dedicated clock lines – sunt resurse de rutare dedicate distribuţiei semnalului de tact (clock) în interiorul cipului, pe linii complet separate de magistralele pe care se propagă semnalele logice comune. Acestea sunt linii de mare viteză de-a lungul cărora există plasate repetoare şi amplificatoare de semnal, precum şi blocuri DCM.

Fiecare CLB are alături buffer-e tri-state care accesează liniile lungi şi formează semnalele de magistrală (bussed signals) pentru a multiplexa ieşirile CLB-urilor.

Page 115: Indrumator ASDN 2009

FAMILIA DE CIRCUITE FPGA XILINX

117

2.3 Intrări şi ieşiri Cipul FPGA conţine, pe lângă logica activă internă şi reţeaua de interconectare, un anumit număr de blocuri de intrare / ieşire numite IOBs (Input / Output Blocks). IOB-urile suportă şi ele anumite configurări, în special cele legate de slew rate, direcţia fluxului de informaţie şi standardele electrice. La început, configuraţiile minimizau numărul de căi de ieşire din cipul FPGA, deoarece acestea ocupau mult spaţiu fizic. Totuşi, determinarea numărului exact de ieşiri necesare pentru a satisface toţi proiectanţii era imposibilă. La LCA-urile XILINX, strategia constă în a face cei mai mulţi pini să fie bidirecţionali.

În figura 12.4 este prezentată structura principială a celulei fundamentale de intrare / ieşire la circuitele din seria Spartan 3E. Se disting următoarele elemente:

• Pe calea de intrare există două registre DDR (Double Data Rate) – registre cu ajutorul cărora se efectuează transferul datelor atât pe frontul ascendent cât şi pe frontul descendent al semnalului de tact;

• Pe calea de ieşire există: o două registre DDR; o două registre DDR pentru validarea ieşirilor tri-state.

• Semnale separate de tact (clock) şi clock enable pentru intrări şi ieşiri;

• Semnale de Set şi de Reset partajate.

Reg

Reg

DDR MUX

3-state

OCK1

OCK2

Reg

Reg

DDR MUX

Ieşire

OCK1

OCK2

PAD

Reg

Reg

Intrare

ICK1

ICK2

IOB

Figura 12.4 Structura principială a celulei de intrare-ieşire a dispozitivelor

FPGA XILINX Spartan3E

Page 116: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 118

Intrările şi ieşirile pot fi directe sau secvenţiale („buffered”, adică trecute printr-un registru). În plus, la ieşire se poate controla aşa-numita slew-rate (viteza de trecere de la starea Low la starea High şi invers, în momentul când un semnal îşi schimbă valoarea). În modul de lucru (setarea) low output slewing rate, semnalul este forţat să crească mult mai încet decât în modul de lucru (setarea) high output slewing rate. Figura 12.5 prezintă structura detaliată a celulei fundamentale de intrare / ieşire la circuitele din seria Spartan 3E.

Figura 12.5 Structura celulei de intrare-ieşire a dispozitivelor

FPGA Xilinx Spartan3E

Page 117: Indrumator ASDN 2009

FAMILIA DE CIRCUITE FPGA XILINX

119

În celula de intrare-ieşire există în plus un circuit numit boundary scan care este invizibil pentru proiectant în regimul de lucru normal. În regimul de lucru de test, el permite celulelor de intrare-ieşire să fie configurate ca un registru de deplasare mare. Registrul de deplasare formează un inel care izolează cipul, fiind capabil să capteze datele direct la pini. Dacă un pin este de intrare pentru cip, bistabilele captează datele din lumea exterioară. Dacă pinul este o ieşire, bistabilul captează date din interiorul cipului. Aplicarea de stimuli cipului se poate face prin încărcarea serială a registrului de deplasare astfel încât pinii de intrare să primească stimulii corecţi. Reacţiile la aceşti stimuli sunt generate pe următorul tact şi sunt captate la pinii care sunt configuraţi ca pini de ieşire. Boundary scan îmbunătăţeşte testabilitatea circuitului imprimat PCB (Printed Circuit Board) care îl foloseşte, deoarece se poate testa placa cu un minimum de pini şi circuite adiţionale (figura 12.6).

SISTEM

LOGIC

Figura 12.6 Circuitul de test boundary scan 2.4 Instrumente software Etapele de proiectare a sistemelor numerice cu circuite FPGA sunt cele prezentate în figura 12.7. Parcurgerea lor ar fi extrem de dificilă în lipsa asistenţei oferite de către un pachet software specializat. Fiecare producător de dispozitive FPGA oferă un mediu de dezvoltare software integrat menit să faciliteze proiectarea. Unele module din fluxul generic de proiectare pot fi create şi de terţe companii (de exemplu, editorul şi simulatorul aferent unui limbaj de descriere hardware – HDL), dar de regulă etapele din faza de Implementare sunt proprietatea companiei producătoare a dispozitivelor FPGA respective.

Page 118: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 120

IMPLEMENTARE

Planificare şi estimare costuri

Specificare proiect (cod HDL, editor

schematic etc.)

Simularea codului HDL la

nivel RTL

Sinteză (creare fişier

netlist)

Simulare

funcţională Translatare

Mapare tehnologică

Plasare şi rutare

Îndeplinirea constrângerilor

temporale

Simulare

temporală

Creare fişier

.BIT

Figura 12.7 Etapele de proiectare a sistemelor numerice cu circuite FPGA

Pachetul de programe de bază pentru proiectare cu circuite FPGA

XILINX se numeşte ISE Foundation. Fluxul de proiectare este descris în figura 12.8.

În acest pachet de programe sunt cuprinse trei mari categorii de operaţii:

• introducerea proiectului (design entry); • implementarea proiectului (design implementation); • verificarea proiectului (design verification).

Introducerea proiectului se poate realiza prin: • editor schematic; • limbaj de descriere hardware HDL - se pot utiliza limbajele de

descriere hardware VHDL sau Verilog, care sunt incluse în pachetul ISE Foundation;

• instanţierea unor module elementare pre-definite (numite primitive) – se poate realiza atât în editorul schematic cât şi în editorul oricărui limbaj de descriere hardware;

• parametrizarea, urmată de generarea unor module complexe, în cadrul aplicaţiei CORE GENERATOR;

• orice combinaţie a metodelor de mai sus. Introducerea proiectului va fi întotdeauna urmată, imediat, de către etapa de Sinteză, în cadrul căreia specificaţia elaborată de către proiectant este optimizată, „curăţată” de logica redundantă, verificată din punct de vedere sintactic etc. În mod normal, după etapa de sinteză proiectantul va dori să-şi simuleze proiectul, fapt posibil atât la nivel funcţional cât şi la nivel

Page 119: Indrumator ASDN 2009

FAMILIA DE CIRCUITE FPGA XILINX

121

comportamental. Există atât simulatoare integrate în mediul ISE Foundation (Simulator), cât şi alte simulatoare produse de către terţe companii, care pot fi cumpărate şi apoi integrate în acest mediu. Un astfel de exemplu este simulatorul ModelSIM, care este disponibil gratuit într-o versiune redusă (cu limitări – „ModelSIM Starter”).

Implementarea proiectului se realizează prin rularea aplicaţiilor de sinteză, translatare, mapare tehnologică, plasare şi rutare (în această ordine). Pentru verificarea proiectului există disponibile mai multe instrumente: FPGA Editor (pentru plasare şi rutare manuală, sau doar pentru inspecţia vizuală a rezultatelor produse de instrumentele software), Floorplanner (pentru configurare manuală a cipului), Timing Analyzer (pentru analiză temporală), XPower Analyser (pentru analiza consumului de energie al cipului) etc. Etapa finală de încărcare a proiectului în cipul FPGA se realizează cu ajutorul utilitarului IMPACT, care permite încărcarea proiectului atât direct în cipul FPGA, cât şi într-o memorie de tip ROM, de unde configuraţia poate fi preluată în cipul FPGA la prima sa punere sub tensiune sau ulterior.

Bibliotecă de simboluri

Editor schematic

Fişier netlist (.XNF)

Editor de texte utilizator

Ecuaţii booleene

Unificare

Fişier .XNF SIMULAREStimuli aplicaţi intrărilor

fişierului netlist

Fişierul .LCA (structura

Fişierul hartă de biţi de configurare a

dispozitivului FPGA (.BIT)

Fişierul de configurare a PROM-ului

Simulator

Rezultatele simulării

Verificare in-circuit a proiectului

Constrângeri utilizator

Proiectul final

proiectului)

Fişier netlist (.XNF)

Figura 12.8 Fluxul de proiectare cu instrumentele software XILINX

Page 120: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 122

Aşadar, mediul ISE Foundation conţine toate aceste instrumente şi le pune la dispoziţia proiectantului în succesiunea lor firească. Totodată, diferitele module software pot fi rulate şi independent (figura 12.9).

Figura 12.9 Mediul de proiectare XILINX ISE Foundation

În paralel cu instrumentele prezentate până acum, în ISE Foundation

mai există un pachet de utilitare software dedicat specificării de constrângeri utilizator. Aceste constrângeri se pot specifica fie de la bun început, fie pe parcursul testării proiectului. Se pot specifica atât constrângeri temporale (de pildă referitoare la frecvenţa operaţională minimă sau la întârzierea maxim admisibilă pe o anumită cale de semnal) cât şi constrângeri spaţiale (de pildă, proiectantul poate dori ca un anumit bloc de mari dimensiuni să fie plasat într-o anumită regiune a matricei de CLB-uri).

Page 121: Indrumator ASDN 2009

FAMILIA DE CIRCUITE FPGA XILINX

123

Figura 12.10 prezintă fereastra de procese a mediului ISE Foundation, în care se pot vedea o serie de utilitare disponibile în cadrul acestui pachet.

Figura 12.10 Procese în mediul de proiectare XILINX ISE Foundation

Page 122: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 124

3. Desfăşurarea lucrării 1. Se va implementa în placa Spartan3 Starter Kit Board un multiplexor

4:1, specificat în editorul schematic. Se va testa în continuare multiplexorul din punct de vedere funcţional.

2. După simulare, se vor parcurge toţii paşii din fluxul de proiectare cu pachetul de programe ISE Foundation (specificare constrângeri, optimizare, mapare tehnologică, plasare, rutare).

3. Se va edita proiectul obţinut cu ajutorul utilitarului Floorplanner. Ce remarcaţi? Realizaţi plasarea manuală a proiectului. Cum este cel mai bine să se realizeze această plasare?

4. Se va edita proiectul obţinut folosind utilitarul FPGA Editor. Ce remarcaţi? Cum a fost realizată plasarea şi rutarea automată? Este convenabilă această plasare şi rutare?

5. Se va lansa utilitarul Timing Analyser. Cum se calculează întârzierile de propagare în interiorul cipului? Cum putem interveni asupra acestor întârzieri? Se va edita un fişier de constrângeri utilizator şi se vor parcurge din nou etapele din fluxul de proiectare, de data aceasta ţinând cont şi de constrângerile impuse. Cum se modifică rezultatul final?

6. Lansaţi utilitarul IMPACT şi încărcaţi proiectul în cipul FPGA. Cum se pot testa întârzierile de propagare din interiorul circuitului?

7. Verificaţi practic funcţionarea multiplexorului 4:1 implementat în cipul FPGA.

8. Se va relua tot procesul parcurs pentru multiplexorul 4:1 pentru un numărător binar sincron, bidirecţional, pe 4 biţi, cu Clock Enable, Reset sincron şi Parallel Load asincron.

Page 123: Indrumator ASDN 2009

FAMILIA DE CIRCUITE FPGA XILINX

125

Anexă

Ghidul utilizatorului plăcii Spartan3 Starter Kit Board – elemente de bază –

Placa Spartan3 Starter Kit produsă de compania americană Digilent Inc. are ca element central un dispozitiv FPGA de tipul Spartan3-200 FT256. Pe lângă cipul FPGA pe placă există numeroase alte componente şi module destinate realizării experimentelor de laborator (prima destinaţie a plăcii este didactică). A.1 Cele patru afişaje cu LED-uri cu 7 segmente

Placa Spartan-3 Starter Kit are patru afişaje cu LED-uri cu 7 segmente care sunt controlate de către pinii de intrare / ieşire ai cipului FPGA, aşa cum se arată în figura 12.11. Cele patru cifre afişate au în comun opt semnale de control, care comandă fiecare segmentele LED individuale. Fiecare caracter individual are o intrare separată de control al anodului.

Numărul pinului este înscris pe placă, între paranteze, pentru fiecare pin al cipului FPGA conectat la afişajul cu LED-uri.

Pentru a face ca un LED să se aprindă, trebuie ca atât semnalul care controlează segmentul individual respectiv, cât şi semnalul de control al anodului, să fie în starea Low (0). În figura 12.11, de exemplu, afişajul din stânga prezintă valoarea „2”. Valorile numerice care corespund acestei cifre sunt marcate în stânga figurii. Semnalul AN3 de control al anodului este în starea Low, validând astfel intrările de control pentru afişajul din extremitatea stângă. Intrările de control ale segmentelor, de la A la G şi DP (Decimal Point, punctul sau virgula zecimală), comandă segmentele individuale care alcătuiesc cifra afişată. După cum s-a menţionat anterior, Valoarea Low face ca segmentul individual să fie aprins, iar valoarea High face ca segmentul să fie stins. Valoarea Low prezentă pe semnalul de intrare A face să se aprindă segmentul ‘a’ al afişajului. Intrările de control al anodului aferente celorlalte afişaje, AN[2:0] sunt toate în starea High, prin urmare aceste afişaje ignoră valorile prezente pe intrările de la A la G şi DP.

Page 124: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 126

Figura 12.11 Semnalele de control ale afişajelor cu 7 segmente

În tabelul 12.1 sunt redate conexiunile cipului FPGA care comandă LED-

urile individuale din componenţa afişajelor cu 7 segmente. Tabelul 12.2 prezintă conexiunile care trebuie realizate pentru a valida funcţionarea fiecărui afişaj. Tabelul 12.3 conţine şabloanele necesare afişării caracterelor hexazecimale. Tabelul 12.1 Conexiunile dintre dispozitivul FPGA şi afişajul cu 7 segmente (active pe 0)

Segmentul Pinul dispozitivului FPGA A E14 B G13 C N15 D P15 E R16 F F13 G N16

DP P16 Tabelul 12.2 Semnalele de control al anodului (active pe 0) Anode Control AN3 AN2 AN1 AN0 FPGA Pin E13 F14 G14 D14

Page 125: Indrumator ASDN 2009

FAMILIA DE CIRCUITE FPGA XILINX

127

Tabelul 12.3 Caracterele afişabile şi valorile corespunzătoare ale segmentelor de tip LED

Caracter a b c d e f g 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 2 0 0 1 0 0 1 0 3 0 0 0 0 1 1 0 4 1 0 0 1 1 0 0 5 0 1 0 0 1 0 0 6 0 1 0 0 0 0 0 7 0 0 0 1 1 1 1 8 0 0 0 0 0 0 0 9 0 0 0 0 1 0 0 A 0 0 0 1 0 0 0 b 1 1 0 0 0 0 0 C 0 1 1 0 0 0 1 d 1 0 0 0 0 1 0 E 0 1 1 0 0 0 0 F 0 1 1 1 0 0 0

Semnalele de control al LED-urilor sunt multiplexate în timp, pentru

a afişa datele pe toate cele patru afişaje, după cum se prezintă în figura 12. 12. Utilizatorul trebuie să plaseze valoarea pe care doreşte să o afişeze pe intrările de control ale segmentelor şi să selecteze afişajul specificat trecând semnalul de control al anodului asociat în starea Low. Datorită persistenţei privirii, creierul uman percepe toate cele patru simboluri ca apărând simultan, într-un mod similar celui în care creierul percepe imaginile de pe un televizor.

Figura 12.12 Semnalele de control al anodului folosite pentru afişarea unui

simbol individual

Page 126: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 128

Această tehnică de „scanare” reduce numărul de pini de intrare / ieşire necesari afişării celor patru simboluri. Dacă s-ar fi rezervat câte un pin FPGA pentru fiecare segment individual, atunci ar fi fost necesari 32 de pini pentru a comanda toate LED-urile celor patru afişaje cu 7 segmente. Tehnica de scanare reduce numărul de pini de intrare / ieşire necesari la 12. Dezavantajul acestei abordări este acela că logica dispozitivului FPGA trebuie să scaneze în mod continuu datele de afişat şi să le trimită la afişaje – preţul plătit pentru a economisi 20 de pini de intrare / ieşire este totuşi mic. A.2 Cele opt comutatoare cu 2 stări

Placa Spartan-3 Starter Kit are opt comutatoare accesibile utilizatorului pentru a furniza intrări. Comutatoarele sunt localizate în partea de jos a plăcii şi sunt notate de la SW7 la SW0. Comutatorul SW7 este plasat în extremitatea stângă, iar SW0 este plasat în extremitatea dreaptă. Comutatoarele sunt conectate la câte un pin al dispozitivului FPGA asociat lor, după cum se prezintă în tabelul 12.4. Tabelul 12.4 Conexiunile comutatoarelor la pinii dispozitivului FPGA Comutator SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0 Pin FPGA K13 K14 J13 J14 H13 H14 G12 F12

Când este poziţionat pe UP sau ON, comutatorul conectează pinul dispozitivului FPGA la VCC (starea High, deci „1” logic). Când este poziţionat pe DOWN sau OFF, comutatorul conectează pinul dispozitivului FPGA la masă (starea Low, deci „0” logic). În mod normal, comutatoarele prezintă o inerţie mecanică de aproximativ 2 ms şi nu există nici un circuit activ de debouncing, deşi acest circuit poate fi cu uşurinţă adăugat în interiorul circuitului implementat în dispozitivul FPGA de pe placă.

Fenomenul de bouncing reprezintă tendinţa oricăror două metale aflate în contact într-un dispozitiv electronic de a genera semnale multiple atunci când contactul tocmai se deschide sau tocmai se închide. Circuitul sau schema de debouncing este deci orice fel de dispozitiv hardware sau software care garantează faptul că doar un singur semnal va fi acţionat ca urmare a unei deschideri sau închideri singulare a contactului respectiv.

Page 127: Indrumator ASDN 2009

FAMILIA DE CIRCUITE FPGA XILINX

129

CLOCK

Intrare (de la un buton)

Ieşire (generată de circuitul de debouncing)

Timp

Circuit de

debouncing

Clk

In (de la buton)

Out

Figura 12.13 Fenomenul de bouncing şi circuitul de debouncing

Când apăsăm o tastă la calculator, ne aşteptăm ca acesta să

înregistreze un singur contact. În realitate, se produce un contact iniţial, un uşor impuls sau o „activare” a contactului, apoi un alt contact când impulsul se termină, după care apare un alt impuls, şi aşa mai departe (apar ca nişte „şpiţuri” sau spike-uri de tensiune). Un efect similar se produce atunci când un comutator făcut din contactul a două metale este deschis. Soluţia uzuală constă în folosirea unui dispozitiv sau a unui program de debouncing care să asigure faptul că doar un singur semnal digital poate fi înregistrat în decursul unui interval de timp dat (de regulă de ordinul milisecundelor).

Circuitul de debouncing se poate realiza relativ uşor cu ajutorul unui circuit asemănător unui registru de deplasare, care va filtra impulsurile nedorite. Circuitul primeşte la intrare mai multe mostre de valori ale butonului şi modifică ieşirea numai după ce, de-a lungul unui interval de timp dat, mai multe mostre consecutive au avut aceeaşi valoare. A.3 Cele patru comutatoare de tip „push button”

Placa Spartan-3 Starter Kit are patru comutatoare de tip „push button”. Aceste butoane sunt plasate tot în partea inferioară a plăcii, spre dreapta. Comutatoarele sunt notate cu BTN3 până la BTN0, unde BTN3 este butonul situat în extremitatea stângă, iar BTN0 este butonul situat în extremitatea dreaptă. Comutatoarele de tip „push button” sunt conectate la câte un pin al dispozitivului FPGA, după cum se prezintă în tabelul 12.5. Tabelul 12.5 Conexiunile comutatoarelor de tip „push button” la pinii dispozitivului FPGA Push Button BTN3 (Reset utilizator) BTN2 BTN1 BTN0 Pin FPGA L14 L13 M14 M13

Page 128: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 130

Apăsarea unui astfel de comutator generează un „1” logic pe pinul asociat lui la dispozitivul FPGA. Din nou precizăm că nu există nici un circuit activ de debouncing asociat butonului.

Butonul din extremitatea stângă, BTN3, este de asemenea pinul implicit de Reset utilizator. BTN3 se comportă din punct de vedere electric în mod identic cu celelalte butoane din această categorie (BTN2, BTN1 şi BTN0). Cu toate acestea, atunci când este cazul, BTN3 resetează proiectele demonstrative care au fost oferite de producător o dată cu placa FPGA. A.4 LED-urile

Placa Spartan-3 Starter Kit are opt LED-uri individuale situate deasupra comutatoarelor de tip „push button”. LED-urile sunt notate cu LED7 până la LED0. LED7 este LED-ul situat în extremitatea stângă, iar LED0 este LED-ul situat în extremitatea dreaptă. Tabelul 12.6 prezintă legăturile dintre pinii dispozitivului FPGA şi LED-uri. Tabelul 12.6 Conexiunile LED-urilor la pinii dispozitivului FPGA Spartan3 LED LD7 LD6 LD5 LD4 LD3 LD2 LD1 LD0 Pin FPGA P11 P12 N12 P13 N14 L12 P14 K12

Catodul fiecărui LED este legat la masă printr-un rezistor de 270Ω. Pentru a aprinde un LED individual, semnalul de control asociat lui în dispozitivul FPGA trebuie să fie în starea High, adică polaritatea opusă LED-urilor de tip segment din afişajele plăcii.

Page 129: Indrumator ASDN 2009

LUCRAREA NR. 13SINTEZA CIRCUITELOR NUMERICE CU DISPOZITIVE

PROGRAMABILE DE TIP FPGA

1. Scopul lucrării

Se prezintă metode de sinteză specifice proiectării circuitelor numerice cu dispozitive FPGA. Se prezintă strategiile de implementare a componentelor elementare în dispozitivele FPGA XILINX. Se studiază modul de implementare a unui numărător Moebius specificat cu editorul schematic. Se prezintă principalele reguli de specificare a proiectelor în vederea sintezei lor în dispozitivele FPGA XILINX.

2. Consideraţii teoretice

Metodele de sinteză a circuitelor numerice nu diferă în cazul proiectării cu dispozitive FPGA de metodele clasice. Dimpotrivă, datorită specificului tehnicilor de proiectare cu aceste dispozitive (utilizarea instrumentelor software de susţinere a proiectării), implementarea circuitelor ar trebui să fie mai simplă.

Totuşi, în cazul în care dorim să configurăm manual cipul FPGA (pentru a economisi timp de rulare a programelor software, pentru a atinge anumite obiective specifice sau din alte motive), este indicat să ţinem seama de anumite tehnici de proiectare cu dispozitivele FPGA.

2.1 Strategii de proiectare cu FPGA

Reamintim că un circuit secvenţial sincron este alcătuit din două părţi principale:

partea strict secvenţială (bistabilele); partea combinaţională (porţi logice elementare) care contribuie în

mare măsură la determinarea stării următoare a circuitului.De aceea trebuie să discutăm despre tehnicile de proiectare cu

FPGA-uri a principalelor elemente de circuit, atât a celor secvenţiale cât şi a

Page 130: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE132

celor combinaţionale. Aceste tehnici sunt strict dependente de tipul de FPGA utilizat. În cele ce urmează vom discuta despre FPGA-urile XILINX.

Proiectarea cu LCA-ul necesită înţelegerea posibilităţilor şi limitărilor specifice slice-urilor şi CLB-urilor. Fiecare slice are o capacitate funcţională şi de stocare a datelor limitată, iar noi trebuie să determinăm cum pot fi folosite aceste capacităţi. Vom studia posibilităţile de construire a decodificatoarelor, multiplexoarelor, registrelor de deplasare şi a numărătoarelor (se subînţelege că implementarea codificatoarelor şi demultiplexoarelor se realizează analog cu cea a decodificatoarelor şi respectiv a multiplexoarelor).

Decodificatoarele se implementează prin cascadarea RAM-urilor funcţionale ale slice-urilor, care sunt configurate fie ca funcţii ŞI fie ca funcţii ŞI-NU. Pentru a construi un decodificator 3-la-8 standard (cum ar fi 4138) sunt necesare cel puţin 8 slice-uri (care au 4 intrări şi o ieşire) numai pentru a genera ieşirile distincte pentru toate cele 8 combinaţii.

Multiplexoarele, ca şi decodificatoarele, sunt construite în interiorul slice-urilor configurând în mod adecvat RAM-urile interne ale acestora. Din nou, numărul limitat al intrărilor în RAM-uri necesită expandarea numărului de slice-uri pentru a forma funcţii de mai multe intrări. Problemele care apar aici se referă la faptul că această abordare consumă rapid slice-urile şi scade viteza funcţiilor. În plus, bistabilele din slice-uri rămân de multe ori neutilizate.

Registrele de deplasare sunt eficient de implementat în slice-uri. Atribuind biţii unor slice-uri sau CLB-uri adiacente, registrele de deplasare nu necesită interconectare globală şi nu blochează canalele de rutare. Clasa de aplicaţii care utilizează din plin registre de deplasare cuprinde echipamente de comunicaţii, dispozitive de recunoaştere a formelor, generatoare polinomiale etc. La fel cum decodificatoarele şi multiplexoarele lasă neutilizate bistabilele, registrele de deplasare nu folosesc blocurile logice combinaţionale.

Implementarea numărătoarelor reprezintă o problemă interesantă în arhitecturile LCA. Metodele clasice sunt aplicabile numai pentru numărătoare mici. Partea combinaţională din alcătuirea unui numărător (cea care determină starea următoare, deci funcţiile de tranziţie) creşte foarte mult, în termeni de intrări necesare pentru porţile logice, pe măsură ce creşte numărul de biţi (ordinul) numărătorului. Acest tip de abordare limitează prea mult posibilităţile LCA-ului, aşa că XILINX recomandă pentru numărătoare o abordare modulară şi cascadabilă. În această abordare, fiecare bistabil din numărător are în faţă un acelaşi tip de circuit logic combinaţional. Vomnumi un bistabil, împreună cu funcţiile de tranziţie proprii, o „celulă de

Page 131: Indrumator ASDN 2009

SINTEZA CIRCUITELOR NUMERICE CU FPGA 133

numărare”. Fiecare celulă de numărare semnalează celulei următoare faptul că şi-a încheiat ciclul de numărare, astfel fiind posibilă cascadarea acestor celule de numărare. Numărul de biţi ai numărătorului este egal cu numărul de celule de numărare. Începând cu seria 4000, funcţiile de tranziţie pot avea până la 4 intrări. Principalul neajuns al acestei abordări este viteza redusă. O plasare atentă a celulelor minimizează totuşi timpul de propagare al semnalelor de la o celulă de numărare la următoarea.

2.2 Introducerea proiectului prin editor schematic

În cazul introducerii proiectului prin editor schematic este necesară efectuarea unei sinteze manuale prealabile a proiectului. Se va utiliza apoi editorul schematic din pachetul ISE Foundation, pentru introducerea efectivă a proiectului. De exemplu, circuitul descris în schema din figura 13.1 reprezintă un numărător Moebius pe 4 biţi:

J CLK K

S

R

Q

Q

+

+

+ +

0 1

Shift

Q1 Q2 Q3 Q4

Set / Reset

J

K

S

R

Q

Q

J

K

S

R

Q

Q

J

K

S

R

Q

Q CLK CLK CLK

Figura 13.1 Numărător Moebius pe 4 biţi

Acest numărător va avea formele de undă conform figurii 13.2:

1

0

0

0

1

1

0

0

1

1

1

0

1

1

1

1

0

1

1

1

0

0

1

1

0

0

0

1

0

0

0

0

Shift

Q 1

Q 2

Q 3

Q 4

100

Figura 13.2 Formele de undă ale numărătorului Moebius

Page 132: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE134

După editarea proiectului, acesta va fi simulat cu ajutorul simulatorului din ISE Foundation şi se vor obţine formele de undă prezentate în figura 13.2. În continuare, putem parcurge celelalte etape din fluxul de proiectare, conform celor prezentate în Lucrarea 12.

2.3 Reguli şi metode generale pentru sinteza circuitelor numerice în FPGA

În cele ce urmează vom prezenta câteva reguli şi metode cu caracter general, dar extrem de utile pentru sinteza proiectelor digitale pentru dispozitive FPGA (şi nu numai). Aceste reguli şi metode permit creşterea performanţei proiectului şi chiar a sistemului în care este integrat cipul FPGA gazdă.

a) Duplicarea bistabilelor

Există situaţii când un singur bistabil comandă foarte multe alte componente din sistem (figura 13.3). În acest caz, firul fn1 are un fanout foarte mare.

D Qfn1

Figura 13.3 Fir cu fanout mare: un singur bistabil comandăun număr foarte mare de alte resurse

Firele care au un fanout mare sunt mai lente (semnalele se propagă mai lent) şi mai dificil de rutat în cip. Duplicarea bistabilelor poate rezolva ambele probleme:

Reducerea fanout-ului micşorează întârzierile de propagare a semnalelor prin fir;

Page 133: Indrumator ASDN 2009

SINTEZA CIRCUITELOR NUMERICE CU FPGA 135

Fiecare bistabil poate direcţiona semnalul produs de el către regiuni fizice diferite ale cipului, reducându-se astfel congestia căilor de rutare.

D Q

D Q

fn1

fn1

Figura 13.3 Duplicarea bistabilului reduce fanout-ul şi congestia căilor de rutare

Principalele rezultate ale aplicării acestei tehnici: Creşte rutabilitatea şi performanţa; Creşte suprafaţa ocupată de către proiect în cip (logica activă +

reţeaua de interconectare).Se recomandă ca bistabilele duplicate să fie notate cu „_a”, „_b” etc.,

nu „_1”, „_2”, deoarece bistabilele numerotate sunt mapate în acelaşi sliceîn mod implicit. Bistabilele duplicate trebuie să fie separate, mai ales dacă semnalele pe care le transmit sunt distribuite în regiuni diferite ale cipului.

Se recomandă ca bistabilele duplicate să fie create duplicate în codul HDL, deoarece deşi majoritatea instrumentelor de sinteză controlează în mod automat fanout-ul, ele nu determină întotdeauna diviziunea optimă a sarcinilor. În plus, aceste instrumente vor denumi bistabilele duplicate „_1”, „_2” etc.

Trebuie de asemenea să setăm instrumentelor de sinteză astfel ca să păstreze logica redundantă (de exemplu, se foloseşte atributul KEEP).

Nu trebuie duplicate bistabilele care primesc date de la semnale asincrone. Mai întâi semnalul respectiv trebuie sincronizat şi abia apoisemnalul sincronizat va fi distribuit bistabilelor duplicate.

b) Pipelining

Tehnica de pipelining are ca scop creşterea vitezei sistemelor de calcul. Regula generală este de a se introduce cel mult două niveluri de

Page 134: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE136

logică combinaţională între registrele tampon din interiorul sistemului –situaţia este ilustrată în figura 13.4.

D QfMAX = n MHz

Două sau mai multe niveluri de logică combinaţională

D Q

Figura 13.4 Structura generală a unui sistem numeric

Principalul factor care limitează viteza sistemului este, în acest caz, întârzierea de propagare a semnalelor prin blocul de logică combinaţională. Cu cât numărul nivelurilor de logică combinaţională dintre bistabile creşte, cu atât viteza sistemului scade. De aceea, ideal pentru performanţă ar fi ca numărul nivelurilor de logică combinaţională dintre bistabile să fie minim (adică egal cu 1). Acest deziderat se poate atinge prin „spargerea” logicii combinaţionale în blocuri mai mici între care se vor intercala alte registre tampon, ca în figura 13.5.

un nivel de logică

combinaţionalăD Q D Q

D Qun nivel de logică

combinaţională

fMAX 2n

MHz

Figura 13.5 Crearea unui pipeline cu două etaje pentru creşterea vitezei

Atunci când recurgem la pipelining, trebuie să verificăm anumiteaspecte.

În primul rând, trebuie să determinăm câte niveluri de logică combinaţională există între bistabile în proiectul nostru. Dacă există un singur nivel logic între bistabile, tehnica de pipelining nu va îmbunătăţi performanţa. Acest fapt se poate determina citind raportul Post-Map StaticTiming Report sau raportul Post-Place & Route Static Timing Report.

În al doilea rând, trebuie să ne întrebăm dacă avem la dispoziţie în cipul FPGA suficiente bistabile pentru implementare. Acest fapt se poate

Page 135: Indrumator ASDN 2009

SINTEZA CIRCUITELOR NUMERICE CU FPGA 137

determina citind raportul produs de utilitarul MAP (MAP Report). În general, numărul de bistabile disponibile este suficient.

Următoarea problemă pe care trebuie să ne-o punem este aceea dacăsistemul poate tolera latenţa. Fiecare etaj al pipeline-ului introduce o întârziere egală cu o perioadă a impulsului de tact, înainte ca prima ieşire corectă să fie disponibilă. Acest fenomen se numeşte „umplerea pipeline-ului”. După ce pipeline-ul este „plin”, din acel moment încolo este disponibilă câte o nouă ieşire în fiecare ciclu de tact. Această problemă este ilustrată grafic în figura 13.6

Prima intrare soseşte aici

Pipeline-ulse umple

Prima ieşire validă

După ce pipeline-uleste plin, este disponibilă câte o nouă ieşire în fiecare ciclu

de tact

Figura 13.6 Problema latenţei în pipeline

Un exemplu de pipeline este cel din figura 13.7 a). Se observă că există două niveluri de logică combinaţională între bistabilul sursă şi cel destinaţie. Frecvenţa operaţională este de aproximativ 233 MHz.

Prin introducerea unui nivel suplimentar de bistabile tampon, se creează un pipeline cu două etaje a cărui frecvenţă operaţională ajunge la 385 MHz (figura 13.7 b)).

Page 136: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE138

Q

Bistabil destinaţie

LUT

D Q

DLUTLUT

LUT

Bistabil sursă

a)

LUT

D Q

D QLUTLUT

LUT

D Q

D Q

D Q

Bistabile tampon în pipeline

Bistabil destinaţie

Bistabil sursă

b)

Figura 13.7 a) Circuitul iniţial cu două niveluri de logică combinaţională între bistabilul sursă şi cel destinaţie; b) Circuitul pipeline-izat

c) Folosirea bistabilelor din blocurile de intrare / ieşire

Fiecare bloc de intrare / ieşire (IOB) din dispozitivele FPGA XILINX conţine mai multe bistabile (de regulă, 6 bistabile). Blocul IOB a fost prezentat în detaliu în Lucrarea 12.

Bistabilele din IOB-uri oferă valori garantate ale timpilor de setup, hold şi clock-to-out , atunci când semnalul de tact (clock) provine dintr-un buffer BUFG (Global Clock Buffer, o componentă primitivă din cipurile FPGA cu rol de repetor şi distribuitor al semnalului de tact în interiorul cipului). Folosirea acestor bistabile este foarte importantă mai ales în cazul blocurilor logice care realizează interfaţarea cipului FPGA cu alte cipuri din sistemul în care este integrat. De asemenea, uneori – în cazul proiectelor de mari dimensiuni – bistabilele din slice-uri nu sunt suficiente, fapt pentru care este obligatoriu să se recurgă şi la cele din IOB-uri.

Page 137: Indrumator ASDN 2009

SINTEZA CIRCUITELOR NUMERICE CU FPGA 139

De regulă, instrumentele de sinteză tind să aloce bistabilele din slice-uri, nu din IOB-uri. Pentru a obţine utilizarea bistabilelor din IOB-uri în decursul procesului de sinteză, putem recurge la specificarea unor constrângeri temporale care să forţeze plasarea bistabilelor în IOB-uri. Există instrumente de sinteză care oferă posibilitatea de a da valori unor atribute sau unor directive de sinteză cu ajutorul cărora bistabilele vor fi plasate într-un IOB.

De exemplu, în utilitarul Xilinx Constraint Editor trebuie selectat tab-ul Misc şi apoi se vor specifica registrele care ar trebui să fie plasate în IOB-uri. Este necesar să cunoaştem numele (eticheta) fiecărei instanţe de registru. Registrele fiind alcătuite din bistabile, acestea vor ocupa unul sau mai multe IOB-uri.

În timpul etapei MAP a procesului de implementare, în cutia de dialog „Map Properties”, opţiunea „Pack I/O Registers/Latches into IOBs”este selectată implicit. Folosirea constrângerilor temporale va avea de asemenea ca efect plasarea registrelor în IOB-uri, în cazul căilor critice.

În final, vom verifica raportul utilitarului MAP pentru a avea confirmarea faptului că au fost utilizate bistabilele din IOB-uri (în secţiunea „IOB Properties”).

d) Circuite de sincronizare şi metastabilitatea

Circuitele de sincronizare au rolul de a capta un semnal de intrare asincron şi de a-l transmite mai departe doar pe frontul ascendent sau descendent al semnalului de tact.

Aceste circuite sunt necesare pentru a preveni violarea timpilor de setup şi de hold ale bistabilelor şi pentru a asigura astfel siguranţa şi fiabilitatea proiectului.

Circuitele de sincronizare sunt necesare atunci când cipul are intrări asincrone sau atunci când în cadrul aceluiaşi proiect există zone care funcţionează sincron cu semnale de tact diferite şi total neînrudite (între care nu există nici o corelaţie), dar care schimbă informaţie prin intermediul unor semnale. Aceste semnale interzonale trebuie sincronizate cu ajutorul unor circuite de sincronizare. Dacă între semnalele de tact există o corelaţie, atunci nu este nevoie de nici un circuit de sincronizare (se pot folosi constrângeri de tip PERIOD impuse asupra semnalelor de tact, care vor rezolva toate problemele potenţiale).

Violările timpilor de setup şi de hold constituie o problemă serioasă şi nepredictibilă în cazul intrărilor asincrone. Ele apar atunci când intrarea

Page 138: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE140

de date a bistabilului se modifică într-un moment temporal prea apropiat de frontul tactului. Aceasta poate avea drept rezultat trei situaţii (figura 13.8):

Bistabilul va fi înscris cu vechea valoare de pe intrarea sa de date;

Bistabilul va fi înscris cu noua valoare de pe intrarea sa de date; Ieşirea bistabilului devine metastabilă.

Comportare posibilă pe ieşirea Q

Vechea valoare a lui D

Noua valoare a lui D

Starea metastabilă

Figura 13.8 Rezultatele posibile ale violării timpilor de setup şi de hold

Metastabilitatea înseamnă că bistabilul intră într-o stare tranzitorie care nu este nici „0”, nici „1”, adică anumite circuite o pot interpreta drept „0”, iar altele o pot interpreta drept „1”. Bistabilul rămâne în această stare o perioadă de timp nepredictibilă, dar în cele din urmă se va stabiliza fie în starea ‚0’, fie în starea „1”.

Din motive statistice, apariţia evenimentelor metastabile poate fi doar redusă, nu eliminată complet. Există un parametru funcţional care se numeşte Timpul Mediu Între Căderi (Mean Time Between Failure – MTBF) şi care depinde în mod exponenţial de mărimea intervalului de timp acordat bistabilului pentru a-şi „reveni” din starea metastabilă. Dacă îi acordăm bistabilului câteva nanosecunde suplimentare pentru a-şi „reveni”, aceasta va reduce extrem de mult şansele apariţiei unui eveniment de acest tip. Circuitele din figurile 13.9 şi 13.10 permit acordarea unui „timp de recuperare” egal cu durata unui ciclu de tact complet.

Page 139: Indrumator ASDN 2009

SINTEZA CIRCUITELOR NUMERICE CU FPGA 141

Circuitul de sincronizare 1

Acesta poate fi folosit atunci când impulsurile de intrare au întotdeauna o durată cel puţin egală cu cea a perioadei semnalului de tact. Bistabilul „suplimentar” previne apariţia fenomenului de metastabilitatedatorită faptului că îi oferă primului bistabil timpul necesar pentru a-şi „reveni” după apariţia unui eveniment de tip metastabilitate.

Intrare asincronă

CLK

Semnal sincronizatD Q D Q

Previne metastabilitatea

Bist 1 Bist 2

Figura 13.9 Circuitul de sincronizare 1

Circuitul de sincronizare 2

Acesta poate fi folosit atunci când impulsurile de intrare pot avea o durată mai mică decât cea a perioadei semnalului de tact. Bistabilul 1 captează impulsurile scurte, care sunt apoi preluate în Bistabilul 2. Bistabilul 3 previne apariţia stării metastabile; dacă semnalul sincronizat a fost preluat corect, Bistabilul 1 este resetat pentru a fi pregătit să capteze următorul impuls.

DD Q

CL

Intrare asincronă

CLK

Semnal sincronizatD Q

Previne metastabilitateaVCC

Bist 1

Q

Bist 2 Bist 3

Figura 13.10 Circuitul de sincronizare 2

Page 140: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE142

2.4 Reguli de sinteză în cazul specificării proiectului prin limbaj de descriere hardware

a) Reguli generale de sinteză

Prezentăm succint în continuare câteva reguli simple şi eficiente de scriere a codului şi de structurare a proiectului în cazul în care dorim implementarea acestuia într-un dispozitiv FPGA XILINX:

Folosiţi tehnica de pipelining – cu ajutorul ei se va spori frecvenţa operaţională a sistemului proiectat şi implicit viteza;

Folosiţi reset-ul sincron – astfel controlul sistemului de calcul proiectat va fi mai bun;

Folosiţi optimizările automatelor finite – există astfel de setări care se pot face în diferitele meniuri ale utilitarelor din pachetul software de susţinere a proiectării;

Folosiţi resurse care pot fi inferate de către instrumentul de sinteză, cum ar fi:

o Multiplexor;o Shift Register LUT (SRL);o BlockRAM, LUT RAM;o Blocuri DSP cascadate.

Evitaţi construcţiile de limbaj de nivel înalt (de exemplu, buclele) în cod – multe instrumente de sinteză producimplementări lente pe baza lor;

Folosiţi constrângerile temporale:o Specificaţi constrângeri stricte, dar realiste asupra

semnalelor de tact;o Plasaţi semnale de tact neînrudite în grupuri (clock

groups) diferite. Folosiţi opţiunile şi atributele de sinteză cele mai adecvate:

o Dacă doriţi să obţineţi o viteză cât mai mare, dezactivaţiopţiunea de partajare a resurselor (resource sharing). Când această opţiune este selectată, instrumentul de sinteză va permite ca funcţiile logice să aibă în comun anumite căi de semnal (de exemplu, două sumatoare separate pot fi autorizate să partajeze anumite blocuri logice). Folosirea acestei opţiuni generează de obicei module cu viteză mai mică, dar care ocupă mai puţin spaţiu (logică activă) în cip;

Page 141: Indrumator ASDN 2009

SINTEZA CIRCUITELOR NUMERICE CU FPGA 143

o Mutaţi bistabilele din IOB-uri mai aproape de blocurile logice combinaţionale;

o Activaţi opţiunea de optimizare a automatelor finite (FSM optimization) – implementarea automatelor finite este detaliată mai jos în cadrul acestei lucrări;

o Folosiţi opţiunea de retiming – semnificaţia ei este detaliată mai jos în cadrul acestei lucrări.

Evitaţi instrucţiunile if-then-else încuibărite – majoritatea instrumentelor de sinteză le implementează în paralel, însă este posibil să se genereze un bloc logic pe bază de priorităţi (cum este de pildă codificatorul prioritar), deşi nu acesta era efectul dorit;

Folosiţi instrucţiuni de tip case pentru decodificatoare de maridimensiuni, şi nu instrucţiuni de tipul if-then-else;

Ordonaţi şi grupaţi funcţiilor şi operatorii aritmetici şi logici – de exemplu, scrieţi „A <= (B + C) + (D + E)”, şi nu „A <= B + C + D + E”;

Evitaţi orice inferenţă nedorită a unui bistabil – trebuie acoperite toate ieşirile posibile pe fiecare ramură de cod. Acest lucru este uşor de realizat specificând instrucţiuni de atribuire de valori implicite înaintea instrucţiunilor if-then-else şi case;

Unele resurse trebuie să fie instanţiate sau create / generate pe baza unui IP core (cu ajutorul utilitarelor Architecture Wizard şi CORE Generator). Exemple în acest sens: modulele FIFO16, ISERDES şi OSERDES (primitive care fac ca pinii de intrare / ieşire să comunice cu logica din exteriorul cipului FPGA la viteze mai mari), diverse resurse de gestionare a semnalelor de tact;

Anumite resurse necesită o codificare specifică:o Registrele din primitiva DSP48 au numai set / reset

sincron;o Memoriile RAM / ROM distribuite şi primitivele SRL nu

sunt prevăzute cu funcţionalitatea de set sau reset după configurare.

Este preferabilă folosirea reset-ului sincron în locul celui asincron – dispozitivele FPGA XILINX au un reset al configuraţiei (GSR – Global Set-Reset) care este utilizat pe durata etapei de configurare a cipului, pentru a aduce FPGA-ulîntr-o stare cunoscută. Semnalul GSR este de asemenea accesibil

Page 142: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE144

proiectantului după configurare, prin intermediul blocului STARTUP. Nu este necesară iniţializarea asincronă la punerea sub tensiune a cipului.

b) Sinteza automatelor finite

Sinteza eficientă a automatelor finite este un aspect deosebit de important, deoarece în multe aplicaţii proiectantul trebuie să-şi definească propriile automate finite, cu totul unice (în funcţie de cerinţele aplicaţiei). Întrucât de regulă automatele finite reprezintă „creierul” sistemului, este imperios necesar ca instrumentele de sinteză să genereze o structură optimă a lor.

Un automat finit trebuie să posede următoarele elemente: La intrări: semnale de intrare şi tranziţii de la o stare la alta; La ieşiri: semnale de ieşire, de control şi de validare pentru restul

sistemului; Automatul NU trebuie să conţină logică aritmetică, unităţi de

execuţie (căi de date) sau alte funcţii combinaţionale.Cu alte cuvinte, automatul finit trebuie să conţină strict logica de

trecere dintr-o stare în alta şi de generare a ieşirilor specifice, fără nici o interferenţă cu alte module ale sistemului (trebuie să fie „pur”, complet separat de partea de execuţie).

CLC

x1

xn

Y1

zm

Elemente de memorie(Registrul de stări)

Ys

y1

ys

Intrări

Variabile de stare (starea curentă)

Funcţii de tranziţie (starea următoare)

Ieşiri

z1

Figura 13.11 Schema generică a unui automat finit

Când specificăm un automat finit într-un limbaj de descriere hardware, vom plasa logica responsabilă de generarea noii stări într-o instrucţiune case. Tot aici putem include registrul de stări; el poate fi specificat şi într-un proces separat. Această abordare previne partajarea resurselor (resource sharing), care poate afecta viteza sistemului.

Page 143: Indrumator ASDN 2009

SINTEZA CIRCUITELOR NUMERICE CU FPGA 145

În cazul în care folosim limbajul VHDL, vom folosi tipuri enumerate pentru definirea stărilor automatului, deoarece majoritatea instrumentelor de sinteză au comenzi pentru extragerea şi recodificarea stărilor automatelor descrise astfel. Acesta este un mare avantaj pentru proiectant, care nu trebuiesă se mai preocupe de acest aspect (unde de altfel are destule şanse să greşească)!

În cazul în care urmărim să obţinem viteze foarte mari se recomandă folosirea metodei de sinteză cu un bistabil pe stare (one-hot encoding). Astfel vom folosi mai multe bistabile, dar se va simplifica logica de calcul al noii stări.

O ultimă sugestie este aceea de a trece ieşirile automatului finit prin registre, pentru a-i creşte performanţa.

c) Instanţierea şi inferenţa resurselor

Se recomandă instanţierea unei componente atunci când suntem nevoiţi să impunem cu precizie ce resursă ne este necesară, iar instrumentul de sinteză fie nu poate infera resursa respectivă, fie o inferează greşit.Inferenţa este preferabilă ori de câte ori este posibil, deoarece face codul mult mai portabil.

Pe de altă parte, instanţierea este recomandată pentru a crea blocuri cu funcţionalitate mai complexă, cum ar fi Unităţi Aritmetico-Logice, multiplicatoare rapide, filtre cu răspuns finit (Finite Impulse Response –FIR). Pentru acestea se recomandă utilitarul CORE Generator. Se va folosi instanţierea numai atunci când este necesară accesarea anumitor caracteristici speciale ale dispozitivului FPGA, când se doreşte creşterea performanţei sistemului sau diminuarea suprafeţei de logică activă ocupată în cip.

Este indicat să limităm localizarea componentelor instanţiate la doar câteva fişiere sursă, pentru a facilita localizarea acestor componente atunci când vom dori să portăm codul pe un alt dispozitiv FPGA gazdă.

XILINX recomandă instanţierea următoarelor elemente: Resurse de memorie – mai ales BlockRAM-uri (se poate folosi

utilitarul CORE Generator pentru a construi memorii de mari dimensiuni);

Resursele standard SelectIO – cele cu ajutorul cărora seselectează standardul electric;

Resursele de gestionare a semnalelor de tact – DCM, IBUFG, BUFG, BUFGMUX şi BUFGCE.

Page 144: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE146

Raţiunea acestor sugestii o găsim în faptul că astfel este mai uşor să schimbăm sau să portăm proiectul nostru pe alte suporturi fizice, realizate în tehnologii noi (mai avansate). În felul acesta, sunt mai puţine constrângeri de sinteză şi atribute care trebuie transmise mai departe (cel mai simplu este să păstrăm majoritatea atributelor şi constrângerilor în fişierul User Constraints File (UCF), căci astfel informaţiile critice sunt grupate într-un singur fişier)

Se recomandă de asemenea să creăm un bloc ierarhic separat pentru instanţierea acestor resurse. Deasupra blocului de la nivelul ierarhic cel mai înalt din proiectul nostru (top-level), vom crea un „wrapper” care va conţine instanţierile componentelor specifice dispozitivelor FPGA XILINX. În cazul în care vom dori la un moment dat să portăm proiectul nostru pe un dispozitiv FPGA al altui producător, va fi suficient să efectuăm modificările în acest wrapper.

BUFG

DCM

IBUFG

XILINX “wrapper” top_xlnx

IBUF_SSTL2_I

OBUF_GTL

OBUF_GTL

OBUF_GTL

STARTUP

BloculTop-Level

Figura 13.12 Schema de principiu a unui wrapper

d) Operaţia de Retiming

Această operaţie este suportată de principalii producători de software de susţinere a proiectării. Instrumentul de sinteză urmăreşte să distribuie automat blocurile de logică combinaţională dintre registre pentru a echilibra întârzierile pe căile de date combinaţionale. Figura 13.13 ilustrează acest concept.

D Q D Q D Q

Înainte de Retiming

După Retiming

D Q D Q D Q

Figura 13.13 Operaţia de retiming

Page 145: Indrumator ASDN 2009

SINTEZA CIRCUITELOR NUMERICE CU FPGA 147

3. Desfăşurarea lucrării

1. Se editează şi se simulează numărătorul Moebius din figura 13.1 şi se verifică obţinerea corectă a formelor de undă din figura 13.2.

2. Se parcurg toţi paşii necesari în vederea implementării numărătorului Moebius în cipul FPGA de pe placa NEXYS-2, folosindu-se şi utilitarele din pachetul Foundation Series menţionate în secţiunea 2.2.

3. Se editează, se simulează şi se parcurgând toţi paşii necesari în vederea implementării unui numărător zecimal şi a unei unităţi aritmetico-logice în cipul FPGA de pe placa NEXYS-2.

4. Se editează şi se simulează un dispozitiv universal numărător / registru de deplasare, parcurgându-se apoi toţi paşii necesari în vederea implementării în cipul FPGA de pe placa NEXYS-2.

5. Se va specifica numărătorul Moebius din figura 13.1 prin limbaj de descriere hardware, iar numărătorul zecimal şi unitatea aritmetico-logică vor fi specificate prin editorul schematic. Cum este mai simplu? Care variantă de implementare (cu editor schematic sau cu limbaj de descriere hardware) este mai avantajoasă şi în ce condiţii?

6. Fiind dat următorul circuit (figura 13.14):

Figura 13.14 Circuitul iniţial

s-a dorit pipeline-izarea lui, aşa că s-a creat noua schemă din figura 13.15

Figura 13.15 Circuitul pipeline-izat

Care este problema cu noul circuit? Cum poate fi rezolvată această problemă?

Page 146: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE148

Anexă

Ghidul utilizatorului plăcii NEXYS-2– elemente de bază –

Fiind produsă de aceeaşi companie (Digilent Inc.), placa NEXYS-2 are în principiu componente principale similare cu cele ale plăcii Spartan3 Starter Kit care a fost prezentată în Anexa lucrării 12.

Principalele deosebiri (din punct de vedere al desfăşurării lucrărilor practice) constau în dispozitivul FPGA existent pe placă (Spartan3E-500 FG320) şi în modul său de programare, care se realizează pe portul USB. Pentru programarea plăcii este necesară folosirea unui program suplimentar al firmei Digilent Inc., numit ADEPT.

A.1 Cele patru afişaje cu LED-uri cu 7 segmente

Numărul şi principiul de funcţionare al acestor afişaje este similar celui al afişajelor de pe placa Spartan3 Starter Kit. Pinii dispozitivului FPGA la care sunt legaţi pinii afişajelor sunt redaţi în tabelele 13.1 şi 13.2.

Tabelul 13.1 Conexiunile dintre dispozitivul FPGA şi afişajul cu 7 segmente (active pe 0)

Segmentul Pinul dispozitivului FPGAA L18B F18C D17D D16E G14F J17G H14

DP C17

Tabelul 13.2 Semnalele de control al anodului (active pe 0)

Anode Control AN3 AN2 AN1 AN0FPGA Pin F15 C18 H17 F17

Page 147: Indrumator ASDN 2009

SINTEZA CIRCUITELOR NUMERICE CU FPGA 149

A.2 Cele opt comutatoare cu două poziţii

Numărul şi principiul de funcţionare al acestor comutatoare este similar celui al comutatoarelor de pe placa Spartan3 Starter Kit. Pinii dispozitivului FPGA la care sunt legaţi pinii comutatoarelor sunt redaţi în tabelul 13.3.

Tabelul 13.3 Conexiunile comutatoarelor la pinii dispozitivului FPGA

Comutator SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0Pin FPGA R17 N17 L13 L14 K17 K18 H18 G18

A.3 Cele patru comutatoare de tip „push button”

Numărul şi principiul de funcţionare al acestor comutatoare de tip „push button” este similar celui al comutatoarelor de tip „push button” de pe placa Spartan3 Starter Kit. Pinii dispozitivului FPGA la care sunt legaţi pinii comutatoarelor de tip „push button” sunt redaţi în tabelul 13.4.

Tabelul 13.4 Conexiunile comutatoarelor de tip „push button” la pinii dispozitivului FPGA

Push Button BTN3 BTN2 BTN1 BTN0Pin FPGA H13 E18 D18 B18

A.4 LED-urile

Numărul şi principiul de funcţionare al acestor LED-uri este similar celui al LED-urilor de pe placa Spartan3 Starter Kit. Pinii dispozitivului FPGA la care sunt legaţi pinii LED-urilor sunt redaţi în tabelul 13.5.

Tabelul 13.5 Conexiunile LED-urilor la pinii dispozitivului FPGA Spartan3

LED LD7 LD6 LD5 LD4 LD3 LD2 LD1 LD0Pin FPGA R4 F4 P15 E17 K14 K15 J15 J14

A.5 Programarea plăciiPentru programarea plăcii nu se mai poate folosi utilitarul IMPACT

din mediul ISE Foundation, ci se va folosi programul ADEPT (mai precis modulul ExPort al acestuia). Interfaţa fiind foarte simplă şi intuitivă, nu va fi prezentată aici.

Page 148: Indrumator ASDN 2009

ANEXA 1 SISTEME DE NUMERAŢIE ŞI CODURI

1. Sisteme de numeraţie

Sistemele numerice prelucrează informaţia. În vederea prelucrării, informaţia trebuie să fie codificată. Pentru codificare, se utilizează un anumit tip de reprezentare.

Sistemul de numeraţie este format din totalitatea regulilor de reprezentare a numerelor cu ajutorul unor simboluri numite cifre. Sistemele de numeraţie pot fi poziţionale (valoarea unei cifre este determinată de poziţia sa în cadrul numărului) sau nepoziţionale.

Un număr „N“ într-un sistem poziţional poate fi reprezentat într-o bază de numeraţie „b“ astfel:

N a b a b a b a b Aqq

pp

ii

i p

q

= + + + + = −−−

−−

=−

∑11

00

1

11... ... ( . )

unde baza „b“ este un număr întreg mai mare ca 1 şi ai sunt întregi în gama 0 1≤ ≤ −a bi . Numărul „N“ în baza “b” se notează astfel: (N)b. Atunci când baza nu este specificată, ea este implicit 10 (deoarece sistemul zecimal este cel mai utilizat în practică).

Când baza b = 2, reprezentarea numerică se numeşte sistem numeric binar. Complementul unei cifre „a“, notat cu „ a “, în baza „b“ este definit ca a b a= − −( )1 . În sistemul numeric binar 0 1= şi 1 0= .

2. Conversia bazei de numeraţie

În multe aplicaţii practice se pune problema conversiei unui număr exprimat în baza „b1“ în altă bază „b2“. În procesul de conversie distingem două cazuri:

a) b1<b2 b) b1>b2

În cazul a) conversia implică exprimarea numărului (N)b1 ca un polinom în puterile lui „b1“ şi evaluarea polinomului folosind aritmetica în baza „b2“.

Page 149: Indrumator ASDN 2009

SISTEME DE NUMERAŢIE ŞI CODURI

151

Exemplu: Pentru b1 = 3, b2 = 10 şi (N)3 = 2201.1 vom avea: (N)10 = 2⋅33 + 2⋅32 + 0⋅31 + 1⋅30 + 1⋅3-1

= 54 + 18 + 0 + 1 + 0,3 = 73,3 În cazul b) este mai convenabil să utilizăm aritmetica în baza

„b1“.Conversia numărului se face prin conversia separată a părţii întregi şi a părţii fracţionare a acestuia. Pentru conversia părţii întregi a numărului, aceasta se împarte la baza „b2“ obţinându-se astfel un cât şi un rest; se reţine restul şi se continuă cu împărţirea la baza „b2“ a câtului. Algoritmul se opreşte în momentul în care avem câtul 0. Partea întreagă a rezultatului se obţine prin scrierea resturilor în ordinea inversă a generării lor. Pentru conversia părţii fracţionare a numărului, aceasta se înmulţeşte cu baza „b2“, obţinându-se astfel un număr format dintr-o parte întreagă şi o parte fracţionară; se reţine partea întreagă şi se continuă cu înmulţirea cu baza „b2“ a părţii fracţionare obţinute. Procesul continuă până la obţinerea preciziei dorite.

Exemplu: Pentru b1 = 10, b2 = 4 şi (N)10 = 47.4 vom avea:

1. conversia părţii întregi: 47:4 = 11 rest 3 11:4 = 2 rest 3 2:4 = 0 rest 2

Partea întreagă a rezultatului este (233)4. 2. conversia părţii fracţionare:

0 4 4 16 1. .⋅ = ⇒ 0 6 4 2 4 2. .⋅ = ⇒

Partea fracţionară a rezultatului este (1212…)4. În concluzie (N)4 = 223.1212…

Un caz aparte îl constituie conversia numerelor octale şi hexazecimale în binar şi invers. Atunci se poate folosi o procedură de conversie mult mai simplă. Pentru aceasta fiecare cifră octală sau hexazecimală se exprimă prin 3, respectiv 4 cifre binare.

Exemplu: (123.4)8 = (001 010 011.100) = (1010011.1)2 (B7.2)16 = (1011 0111.0010) = (10110111.001)2

La conversia din binar în octal sau hexazecimal se fac grupări de câte 3, respectiv 4 cifre binare.

Exemplu: (1010110.0101)2 = (001 010 110.010 100) = (126.24)8 (1011110.011)2 = (0101 1110.0110) = (5E.6)16

Page 150: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 152

3. Coduri binare

Deşi sistemul de numeraţie binar are multe avantaje practice şi este foarte utilizat în calculatoarele numerice, în multe cazuri este convenabil să lucrăm cu sistemul zecimal, în special acolo unde comunicaţia între om şi maşină este intensă. Pentru a simplifica problema comunicaţiei au fost definite un număr de coduri astfel încât cifrele zecimale să fie reprezentate prin succesiuni de cifre binare.

Pentru a reprezenta cele 10 cifre zecimale este suficient să folosim 4 cifre binare. Codurile binare se pot împărţi în două clase: ponderate şi neponderate.

3.1. Coduri ponderate

Caracteristica principală a codurilor ponderate este aceea că fiecărei cifre binare îi este asociată o „pondere“. Pentru fiecare grup de 4 biţi suma ponderilor acelor cifre binare a căror valoare este 1 este egală cu cifra zecimală pe care o reprezintă. O cifră zecimală într-un cod ponderat se scrie astfel:

)2.1(3

0−= ∑

=

AbaNi

ii

unde ai = 0 sau 1. În tabelul A-1.1 se dau trei exemple de coduri binare ponderate.

Primul cod se numeşte BCD (Binary Coded Decimal), deoarece pentru obţinerea codului fiecare cifră zecimală este convertită în binar. Tabelul A-1.1 Trei exemple de coduri ponderate

Cifră Zecimală b3 b2 b1 b0 b3 b2 b1 b0 pondere negativă

8 4 2 1 2 4 2 1 6 4 2 -3 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 2 0 0 1 0 0 0 1 0 0 0 1 0 3 0 0 1 1 0 0 1 1 1 0 0 1 4 0 1 0 0 0 1 0 0 0 1 0 0 5 0 1 0 1 1 0 1 1 1 0 1 1 6 0 1 1 0 1 1 0 0 0 1 1 0 7 0 1 1 1 1 1 0 1 1 1 0 1 8 1 0 0 0 1 1 1 0 1 0 1 0 9 1 0 0 1 1 1 1 1 1 1 1 1

Page 151: Indrumator ASDN 2009

SISTEME DE NUMERAŢIE ŞI CODURI

153

Ultimele două coduri fac parte din familia codurilor autocomplementare, deoarece complementul lui „N“ este 9-N. Condiţia necesară ca un cod să fie autocomplementar este ca suma ponderilor să fie egală cu 9. 3.2. Coduri neponderate Cele mai utilizate coduri neponderate sunt codul Exces 3 şi codul Gray. Codul Exces 3 este format prin adăugarea lui 0011 la fiecare cuvânt de cod din BCD. Este un cod autocomplementar şi posedă anumite proprietăţi care l-au făcut practic. Din acest cod s-a eliminat combinaţia 0000, care ar putea fi confundată cu lipsa de informaţie. În multe aplicaţii practice, analog conversiei digitale este de dorit a se folosi codurile în care toate cuvintele de cod succesive diferă doar printr-o cifră. Codurile care au o astfel de proprietate se numesc coduri ciclice. Un astfel de cod este codul Gray. Codul Gray de „n“ biţi face parte din clasa codurilor reflectate. Termenul „reflectate“ este folosit pentru a desemna coduri care au următoarea proprietate: cuvântul de cod de „n“ biţi poate fi generat prin reflectarea codului de „n-1“ biţi. Tabelul A-1.2 Obţinerea codului Gray de 3 biţi din cel de 2 biţi

Gray 2 biţi Gray 3 biţi 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0

În tabelul A-1.3 sunt prezentate cifrele zecimale în cod Exces 3, respectiv Gray:

Page 152: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 154

Tabelul A-1.3 Codificarea cifrelor zecimale în codurile Exces 3 şi Gray

cifră zecimală Exces 3 Gray 0 0 0 1 1 0 0 0 01 0 1 0 0 0 0 0 12 0 1 0 1 0 0 1 13 0 1 1 0 0 0 1 04 0 1 1 1 0 1 1 05 1 0 0 0 0 1 1 16 1 0 0 1 0 1 0 17 1 0 1 0 0 1 0 08 1 0 1 1 1 1 0 09 1 1 0 0 1 1 0 1

4. Reprezentarea numerelor algebrice în calculator Reprezentarea numerelor în calculatoarele numerice se face bineînţeles în sistemul binar. Se pot alege mai multe soluţii pentru a indica poziţia virgulei şi semnul numărului. Poziţia fixă sau variabilă a virgulei determină reprezentarea numită în virgulă fixă sau respectiv în virgulă mobilă. 4.1 Reprezentarea numerelor în virgulă fixă Calculatoarele operează cu numere de lungime fixă, numărul de cifre (32 sau 64 de poziţii binare) fiind determinat de numărul de celule din care sunt construite registrele utilizate. Poziţia virgulei se stabileşte iniţial la proiectare şi nu poate fi schimbată; ea nu este realizată fizic în calculator. Blocurile aritmetice ale calculatoarelor care lucrează în virgulă fixă consideră virgula plasată în faţa cifrei cele mai semnificative a numărului. Rezultă că numerele cu care se operează sunt subunitare, numerele reale ale utilizatorului suferind în prealabil transformări în acest sens. Pentru a indica semnul numărului în binar există mai multe tehnici, fiecare dintre acestea determinând un mod de reprezentare: prin mărime şi semn, prin complement faţă de 2, prin complement faţă de 1. Definiţie. Se numeşte complement faţă de baza b al numărului ( )N b numărul ( )N

bdefinit prin relaţia:

Page 153: Indrumator ASDN 2009

SISTEME DE NUMERAŢIE ŞI CODURI

155

( ) ( ) ( )N b N Ab

nb= − − 13.

iar complementul faţă de b-1 al numărului ( )N b , numărul ( )Nb

definit prin

relaţia:

( ) ( ) ( )N b N b Ab

nb

m= − − −− 14.

în care n reprezintă numărul de cifre al părţii întregi a numărului N, iar m reprezintă numărul de cifre al părţii fracţionare a numărului N. Exemple: Fie numerele N1 = (123,64)10; N2 = (1001,11)2 ( )N Nn

1 10310 10 123 64 876 36= − = − =, ,

( )N Nn m1 10

3 210 10 10 123 64 10 876 35= − − = − − =− −, ,

respectiv: ( )N Nn

2 242 2 100111 0110 01= − = − =, ,

( )N Nn m2 2

4 22 2 2 100111 2 0110 00= − − = − − =− −, ,

Cel mai mare număr binar de n cifre care poate fi reprezentat fiind N = 2n – 1, rezultă că numărul 2n necesar pentru obţinerea complementului nu poate fi reprezentat, acesta fiind echivalent cu numărul 0.

Complementele faţă de 2 şi faţă de 1 (complementul faţă de 1 se mai numeşte şi invers) se calculează în felul următor (n este numărul de cifre binare ale numărului):

Complementul faţă de 1: există trei procedee: 1. ( )N N n

20 2= − − −

2. se inversează fiecare cifră în parte 3. ( )N N n

22= − −

Exemplu: Pentru numărul N = 10011 1.

( )N2= 00000-

10011- 00001 01100

Page 154: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 156

2. Poziţiile binare având valoarea 1 vor căpăta valoarea 0 iar cele cu valoarea 0 vor căpăta valoarea 1.

( )N2

01100=

3.

( )N2= 01101-

00001 01100

Complementul faţă de 2: există de asemenea trei procedee: 1. ( )N N= −0

2. ( )N N n= + −2 3. Pornind de la dreapta spre stânga se păstrează neschimbate

cifrele egale cu 0 inclusiv prima cifră egală cu 1, după care toate celelalte cifre se inversează.

Exemplu: Pentru numărul N = 10011 1.

( )N = 00000- 10011 01101

2.

( )N = 01100+ 00001 01101

3.

N = 10011

rămâne neschimbat

se inversează

Page 155: Indrumator ASDN 2009

SISTEME DE NUMERAŢIE ŞI CODURI

157

4.1.1 Reprezentarea prin mărime şi semn Un număr prin mărime şi semn se scrie conform relaţiei:

( )N a a Ann

ii

i m

n

= + −=−

∑2 2 151

.

în care an are denumirea de bit de semn şi ia valoarea 0 dacă N este pozitiv şi valoarea 1 dacă N este negativ; ai sunt cifrele binare ale numărului N. Exemple:

+8 = 01000

Valoarea numărului

bitul de semn

-5 = 10101

Valoarea numărului

bitul de semn

Reprezentarea prin mărime şi semn are avantajul de a fi foarte asemănătoare cu scrierea manuală obişnuită, dar din punctul de vedere al realizării calculelor prezintă unele dezavantaje. Realizarea unei operaţii de adunare sau scădere a două numere nu depinde numai de funcţia de executat ci şi de semnul numerelor respective. Atunci este necesară examinarea bitului de semn înainte de executarea operaţiei respective. De asemenea blocul aritmetic al unui calculator se poate simplifica mult dacă în loc să conţină dispozitive de adunare şi scădere conţine numai dispozitive de adunare. Acest lucru poate fi realizat prin alegerea convenabilă a sistemului de reprezentare a numerelor şi anume prin reprezentarea în cod complementar. 4.1.2 Reprezentarea prin complementul faţă de 2 (cod complementar) Un număr N se reprezintă prin complement faţă de 2 conform relaţiilor:

N ani

i

i m

n

= ⋅ +=−

∑0 2 21

pentru N > 0

(A-1.6)

N ani

i m

i m

n

= − ⋅ + + −

=−

∑1 2 2 21

pentru N < 0

în care a ai i= −1 reprezintă complementul faţă de 1 al cifrei ai.

Page 156: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 158

Exemplu: + 6 = 00110

- 6 = -(0110)2 Trecem numărul în cod complementar:

0110 → 1010 Reprezentarea numărului va fi deci:

- 6 = 11010 Reprezentarea în complementul faţă de 2 corespunde chiar valorii reale a numărului. Pentru a demonstra aceasta utilizăm relaţia:

( )2 2 2 171

n i m

i m

n

A= + −−

=−

∑ .

Introducând relaţia (A-1.7) în relaţia (A-1.6) obţinem:

N ai m

i m

n

ii m

i m

n

= − − + +−

=−

−−

=−

∑ ∑2 2 2 21 1

apoi făcând a ai i= −1

N a ai

i m

ni

i m

n

ii

i m

n

ii

i m

n

= − + − = −=−

=−

=−

=−

∑ ∑ ∑ ∑2 2 2 21 1 1 1

ceea ce trebuia demonstrat. Toate calculele de mai sus au fost făcute în aritmetica zecimală. 4.1.3 Reprezentarea prin complementul faţă de 1 (cod invers) Un număr N se reprezintă prin complementul faţă de 1 conform relaţiilor:

N ani

i

i m

n

= ⋅ +=−

∑0 2 21

pentru N > 0

(A-1.8)

N ani

i

i m

n

= − ⋅ +=−

∑1 2 21

pentru N < 0

în care a ai i= −1 reprezintă complementul faţă de 1 al cifrei ai. Exemplu: N = + 6 = 00110 N = - 6 = -(0110)2 Trecem numărul în cod invers:

0110 → 1001

Page 157: Indrumator ASDN 2009

SISTEME DE NUMERAŢIE ŞI CODURI

159

Reprezentarea numărului va fi deci: N = - 6 = 11001

Urmărind exemplele prezentate se observă că cele trei forme de reprezentare coincid în cazul numerelor pozitive şi diferă în cazul numerelor negative. În concluzie, rezultă că un număr N pentru care virgula se consideră amplasată după prima poziţie binară poate fi scris sub forma:

( )N a N A= + −002 19* .

în care a0 reprezintă bitul semnului, iar N* are diferite semnificaţii:

N aii

i

n* = −

=∑ 2

1pentru reprezentarea în mărime şi semn;

N aii

i

nn* = +−

=

−∑ 2 21

pentru N < 0 în reprezentarea prin

complementul faţă de 2;

N aii

i

n* = −

=∑ 2

1 pentru N < 0 în reprezentarea prin complementul faţă

de 1, ai reprezentând cifrele numărului, n - numărul de cifre plasate la dreapta virgulei, iar a ai i= −1 . Plasarea virgulei conform relaţiei (A-1.9) are următoarele avantaje:

- numărul N* fiind subunitar poziţia virgulei rămâne aceeaşi după înmulţirea binară;

- această plasare a virgulei poate fi uşor memorată; - operaţia de înmulţire nu va duce niciodată la depăşire, adică

rezultatul înmulţirii nu va întrece limitele superioare ale gamei de reprezentare a numerelor în calculator.

4.2 Reprezentarea numerelor în virgulă mobilă Când avem de operat cu numere foarte mari sau foarte mici, cu un grad de precizie ridicat, se recurge la reprezentarea în virgulă mobilă. Se ştie din sistemul zecimal că un număr poate fi reprezentat prin mantisă şi exponent. Exponentul indică ordinul de mărime al numărului printr-o putere a lui 10, iar mantisa determină mărimea numărului în cadrul ordinului respectiv. O posibilă reprezentare a numerelor în virgulă mobilă este prezentată în figura A-1.1.

Page 158: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 160

SE SM 0 1 2 3 4 5 6 7 8 ………. 31

Figura A-1.1. Reprezentarea numerelor în virgulă mobilă

SE- semn exponent; Biţii 1-6 exponentul; SM – semn mantisă; Biţii 8-31 mantisă Se observă că numărul este reprezentat pe 32 de poziţii binare. În figura A-1.2 s-au reprezentat numerele:

-26 * 0,1101 şi +2-11 * 0,01101

0 0 0 0 1 1 0 1 0 1 1 0 1 0 … 0N = -26 * 0,1101

1 0 0 1 0 1 1 0 0 1 1 0 1 0 … 0

N = +2-11 * 0,01101

Figura A-1.2 Exemple de reprezentare a numerelor în virgulă mobilă Astăzi în calculator numerele se reprezintă într-un mod derivat din cel prezentat anterior şi care exprimă explicit numai semnul mantisei, nefiind necesar un bit special pentru semnul exponentului. Pentru aceasta se introduce o nouă mărime numită caracteristică. Se numeşte caracteristică a unui număr N numărul C dat de:

C = E + 64 în care E este exponentul numărului (o putere a lui 16). În reprezentarea din figura A-1.1, bitul de semn 0 este utilizat acum pentru a indica semnul mantisei. Biţii 1-7 reprezintă caracteristica numărului, iar biţii 8-31 mantisa. Se observă că pentru mantisă sunt rezervaţi 24 de biţi, caz în care reprezentarea se numeşte în simplă precizie (figura A-1.3, a.). Dacă însă pentru mantisă se alocă 56 de biţi, reprezentarea se numeşte în dublă precizie (figura A-1.3, b.).

a S C M 7 8 31

b S C M 7 8 63

Figura A-1.3 a, b Reprezentarea numerelor în virgulă mobilă în simplă

precizie, respectiv dublă precizie

Page 159: Indrumator ASDN 2009

SISTEME DE NUMERAŢIE ŞI CODURI

161

Pe de altă parte, dacă pentru reprezentarea caracteristicii se utilizează 7 poziţii binare, rezultă că se pot înscrie în binar numere de la 0 până la 27-1. Cum caracteristica este exponentul numărului la care s-a adunat 64, rezultă că se pot reprezenta exponenţi de la –64 până la +63. Sintetizând: 0 ≤ C ≤ 127; -64 ≤ E ≤ 63. 5. Detectarea şi corecţia erorilor În procesul de transmitere a informaţiei în sistemele numerice, aceasta poate fi alterată. În vederea determinării corectitudinii informaţiei recepţionate, se pot folosi coduri detectoare şi corectoare de erori. 5.1. Coduri detectoare de erori Codurile detectoare de erori au următoarea proprietate: apariţia unei singure erori transformă un cuvânt valid într-un cuvânt invalid. O metodă pentru detecţia erorilor este metoda bitului de paritate. Ideea de bază în controlul de paritate este de a adăuga o cifră binară în plus la fiecare cod cuvânt al unui cod dat, pentru a face ca numărul de biţi de 1 din fiecare cuvânt să fie impar sau par. Un cod detector de erori este codul „2 din 5“ (2 out of 5) care are ponderile 0, 1, 2, 4, 7. Cu excepţia cuvântului de cod 0 zecimal acest cod este ponderat şi arată ca în tabelul A-1.4: Tabelul A-1.4 Codul detector de erori “2 din 5”

0 1 2 4 7 0 0 0 0 1 1 1 1 1 0 0 0 2 1 0 1 0 0 3 0 1 1 0 0 4 1 0 0 1 0 5 0 1 0 1 0 6 0 0 1 1 0 7 1 0 0 0 1 8 0 1 0 0 1 9 0 0 1 0 1

Page 160: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 162

În general, pentru a obţine un cod de „n“ biţi de detecţie a erorii, nu se pot folosi mai mult de jumătate din cele 2n combinaţii posibile ale cifrelor. Pentru a obţine un cod detector de erori pentru 10 cifre sunt necesare cel puţin 5 cifre binare. Este util să definim distanţa dintre 2 coduri cuvânt ca numărul de cifre care trebuie să fie schimbate într-un cuvânt pentru a rezulta alt cuvânt. Distanţa minimă a unui cod este cel mai mic număr de biţi prin care diferă două coduri. Astfel distanţa minimă dintre BCD si Exces 3 este 1. Un cod este cod detector de erori dacă distanţa sa minimă este mai mare sau egală cu 2. 5.2. Coduri corectoare de erori Spunem că un cod este corector de eroare dacă cuvântul de cod corect poate fi întotdeauna dedus din cuvântul eronat. Un tip de coduri de corecţie este cunoscut sub numele de coduri Hamming. Codurile Hamming corectoare de erori singulare au distanţa de 3. Numărul minim de biţi de control necesari pentru corectarea erorilor singulare se determină conform relaţiei lui Hamming:

2 1 110k m k A≥ + + −( . ) unde m este numărul de biţi de informaţie, iar k - numărul de biţi de control. Vom explica acum construcţia unui cod Hamming cu m = 4 (mesaj original în BCD). Din relaţia lui Hamming rezultă k = 3, deci 3 biţi de control trebuie adăugaţi celor 4 biţi de informaţie. Poziţiile biţilor sunt numerotate de la 1 la 7: Tabelul A-1.5 Poziţia biţilor de control la codul Hamming

1 2 3 4 5 6 7 c1 c2 b1 c3 b2 b3 b4

Biţii de pe poziţiile puteri ale lui 2 sunt folosiţi ca biţi de control: c1, c2, c3. Celelalte poziţii corespund biţilor de informaţie: de la b1 la b4. Biţii de control se calculează astfel:

c b b b1 1 2 4= ⊕ ⊕ c b b b2 1 3 4= ⊕ ⊕

)11.1(4323 −⊕⊕= Abbbc

Page 161: Indrumator ASDN 2009

SISTEME DE NUMERAŢIE ŞI CODURI

163

Exemplu: b1b2b3b4 = 0100 c1 = 1, c2 = 0, c3 = 1 ⇒Secvenţa de cod va fi: 1001100. 6. Probleme propuse

1. Realizaţi conversiile: a) (1431)8 în baza 10 b) (110010100101)2 în baza 10 c) (110010100101)2 în baza 8 şi în baza 4

2. Ştiind că: a) (16)10 = (100)b, determinaţi valoarea lui b. b) (292)10 = (1204)b, determinaţi valoarea lui b.

3. Fiecare din următoarele operaţii aritmetice este corectă în cel puţin un sistem de numeraţie. Determinaţi bazele posibile ale numerelor din fiecare operaţie: a) 1234 + 5432 = 6666 b) 41/3 = 13 c) 41 = 5

4. a) Codificaţi cifrele zecimale 0, 1, 2, 3, … 9 cu ajutorul următoarelor coduri ponderate:

6 3 1 -1 7 3 2 -1 7 3 1 -2 5 4 -2 -1

b) Determinaţi care dintre codurile de mai sus este autocomplementar.

5. Următorul mesaj a fost codificat în cod Hamming şi transmis pe un canal cu zgomote. Decodificaţi mesajul presupunând că în fiecare cod cuvânt a survenit cel mult o singură eroare:

1 0 0 1 0 0 1 0 1 1 1 0 0 1 1 1 1 0 1 1 0 0 0 1 1 0 1 1

Page 162: Indrumator ASDN 2009

ANEXA 2 EDITORUL SCHEMATIC ŞI SIMULATORUL

ACTIVE-HDL

După pornirea Active-HDL se creează un New Workspace (cu numele dorit de utilizator) şi apoi se utilizează Wizard-ul pentru a crea un proiect gol (Empty Design) cu numele dorit de utilizator.

1. Iniţializarea editorului schematic

Editorul schematic poate fi activat în mai multe moduri. Cea mai rapidă modalitate de a desena o nouă schemă este următoarea: 1. Porniţi Active-HDL făcând dublu-clic pe pictograma corespunzătoare

; 2. Când apare fereastra Getting Started, selectaţi Create New

Workspace pentru a deschide fereastra New Design Wizard (figura A-2.1);

Figura A-2.1 Posibilităţile de creare a unui nou proiect

Page 163: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL 165

3. Selectaţi Create an empty design şi apoi scrieţi numele proiectului, directorul şi eventual un nume diferit pentru biblioteca proiectului. Se permite, în mod adiţional, selectarea instrumentelor pentru sinteză şi implementare fizică, selectarea familiei de dispozitive FPGA, a configuraţiei editorului schematic şi a limbajului de descriere hardware;

4. Bibliotecile pe care le puteţi folosi în proiect se pot vizualiza cu View Library Manager din meniu sau cu butonul . Veţi observa bibliotecile disponibile. Se pot adăuga mai multe biblioteci la proiectul curent cu sau renunţa cu . Închideţi fereastra Library Manager;

5. Porniţi editorul schematic activând butonul New Diagram din lista din stânga de sub meniuri sau selectând opţiunea Add New File din Design Browser şi alegând Block Diagram (cu numele dorit de utilizator);

6. Fereastra editorului schematic va deschide o pagină schematică (.bde). Dacă nu aţi dat nume paginii, ea va fi numită „BlocDiagram”, urmată de un număr (numerotarea începe cu 1). Puteţi să creaţi câte pagini doriţi.

2. Operaţii de bază pentru introducerea desenelor

După crearea unei pagini schematice, realizaţi următoarele:

• Setaţi pagina schematică, orientarea şi tipul bordurii cu opţiunea Page Setup din meniul File;

• Selectaţi modul Symbol făcând clic pe pictograma din bara de instrumente orizontală. Se deschide fereastra Symbols Toolbox. Începeţi să introduceţi dispozitive selectându-le în fereastra cu simboluri şi trăgându-le pe pagină;

• Selectaţi modul Wire făcând clic pe pictograma şi desenaţi conexiunile între pini;

• Pentru a adăuga terminale (intrări / ieşiri) selectaţi pictograma , alegeţi tipul de terminal dorit şi plasaţi-l pe schemă. Puteţi modifica numele ataşate implicit la terminale prin editarea lor. Legarea terminalelor se face tot cu fire Wire;

• Pentru a opera schimbări în desenul schematic, faceţi clic pe pictograma Select . La pornirea editorului schematic, următoarele operaţii sunt realizate

automat: • Lista simbolurilor este încărcată în memorie. Lista conţine toate

simbolurile din toate bibliotecile care au fost selectate pentru proiect.

Page 164: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 166

Lista conţine doar numele simbolurilor şi nu simbolurile propriu-zise;

• Fişierul cu conţinutul proiectului (*.aws) este deschis şi în el se va încărca lista de pagini schematice care aparţin proiectului curent;

• Schemele folosite înainte vor fi deschise. Ele vor arăta exact aşa cum au fost afişate pe ecran, incluzând poziţiile ferestrei, zoom-ul şi alte setări care au fost salvate în timpul ultimei sesiuni. Figura A-2.2 arată fereastra principală a editorului schematic. Ea a

fost proiectată pentru a simplifica introducerea desenului. De remarcat că pot fi deschise mai multe ferestre cu scheme.

3. Operaţiile de introducere a schemei

Operaţiile de introducere a desenului sunt controlate de comenzile descrise în continuare.

Pictograma Symbols toolbox activează fereastra cu simbolurile dispozitivelor. Fereastra deschisă include în afară de tipurile de simboluri şi descrierea lor şi posibilitatea căutării componentelor.

Figura A-2.2 Fereastra principală a editorului schematic

Page 165: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL 167

Pictograma Wire activează modul de desenare a firelor. Făcând clic pe un pin, începeţi un fir. Făcând clic pe un alt pin se desenează un fir. Făcând clic pe un spaţiu gol se începe un fir cu simbolul terminal de fir, care se poate termina în alt punct de pe schemă .

Pictograma Bus permite desenarea magistralelor făcând clic la orice locaţie a ecranului . Pentru adăugarea unui terminal unei magistrale, faceţi clic cu butonul din dreapta al mouse-ului şi selectaţi Terminal.

Legăturile dintre magistrale şi pinii “bus-taps” arată ca în figura A-2.3.

Figura A-2.3 Pin bus-tap legat de magistrală

Făcând clic pe o magistrală şi apoi pe simbolul pinilor se vor conecta

automat aceşti pini cu magistrala şi apoi se vor numerota secvenţial “bus-taps” (derivaţiile magistralei) ca în figura A-2.4.

Figura A-2.4 Conectarea şi numerotarea firelor individuale la magistrală

Pictograma Terminal permite alegerea terminalelor de I/O şi

denumirea lor. Pictogramele Power Symbol sau permit plasarea directă a

simbolurilor alimentării (VCC şi GND) pe pagina schematică.

Page 166: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 168

Pictograma Graphics toolbox permite desenarea elementelor grafice. Tot ceea ce este desenat în acest mod nu are proprietăţi electrice. Acest mod trebuie folosit doar pentru desene neelectrice sau pentru adăugarea de informaţii adiţionale care nu necesită salvarea în baza de date electrică.

4. Operaţii generale

Pictograma Select este cea mai folosită operaţie. Permite selectarea obiectelor din schemă pentru procesarea în continuare. Opţiunea Select este setată implicit cu câteva operaţii de editare schematică.

Pictograma Hierarchy Push/Pop activează cursorul ierarhic. Făcând dublu clic cu mouse-ul pe un macrou se va afişa schema sa internă şi se va activa cursorul. Făcând dublu clic pe un spaţiu gol în schema internă, se va reveni la macrou şi se va dezactiva cursorul.

Pictogramele Select şi Hierarchy Push/Pop nu produc schimbări ale desenului. Ele doar facilitează alte operaţii pe scheme.

Afişarea riglei este controlată din Tools / Preferences / Editors / Block Diagram Editor la opţiunea Rulers visible. Rigla este afişată în stânga (rigla verticală) şi sus (rigla orizontală) în fiecare fereastră schematică. Rigla poate fi marcată în inch (riglă engleză) sau milimetri (riglă metrică).

Din Tools / Preferences / Editors / Block Diagram Editor la opţiunea Grid putem stabili dacă să se vadă caroiajul sau nu şi care să fie dimensiunea unui pătrăţel al grilei de desen.

5. Verificarea desenului

Verificarea desenului este compusă din două etape: verificarea conexiunilor şi simularea. Verificarea conectării schematice se face din meniul Diagram cu comanda Check Diagram. Rezultatele se afişează în consolă şi se înscriu în fişierul log.

Pentru a putea simula o schemă este necesară întâi compilarea ei. Compilarea se face cu comenzile din meniul Design sau cu pictogramele

Compile, Compile All sau Compile All with File Reorder. Compilarea fişierului curent se poate face şi de la tastatură cu comanda F11.

Dacă fişierul nu a fost compilat încă, în dreptul lui apare semnul întrebării . Dacă în urma compilării s-au descoperit erori în dreptul fişierului apare semnul . Pentru atenţionări (warnings) se foloseşte

Page 167: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL 169

semnul exclamării . Erorile şi atenţionările apar în fereastra Console. Dacă fişierul a fost compilat cu succes (situaţie indicată în Design Browser cu marcajul în dreptul fişierului), în partea de sus a Design Browser, în listă, trebuie selectat numele dat schemei ce urmează a fi simulată.

Pictograma New Waveform deschide o fereastră de simulare şi lansează în execuţie simulatorul. Din meniul Waveform sau cu pictograma

se adaugă cu Add semnalele în fereastra de simulare. Selectând cu mouse-ul un semnal se vor activa în meniul Waveform comanda Stimulators şi pe bara de instrumente pictograma , care permit asocierea de valori logice corespunzătoare intrărilor schemei desenate. Figura A-2.5 prezintă fereastra în care apar stimulii ce pot fi asociaţi semnalelor logice. Este de reţinut că atunci când aveţi fire simple (wire) aveţi la dispoziţie posibilitatea de a asocia taste de la tastatură pentru semnale, după cum se vede în figura A-2.6.

Urmează acum să se facă simularea propriu-zisă a funcţionării schemei. Simularea se face utilizând meniul Simulation sau bara de pictograme din figura A-2.7. Din meniu trebuie selectată Initialize Simulation pentru a iniţializa simularea.

Figura A-2.5 Fereastra pentru stimuli

Page 168: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 170

Figura A-2.6 Asocierea de stimuli de la tastatură

Figura A-2.7 Pictogramele pentru comenzile simulării Pictograma Run porneşte simularea pe o perioadă nespecificată de timp. Pictograma Run For face o simulare pe o perioadă de timp (pas) specificată în lista din figura A-2.7 (valoarea de 1 ns). Pictograma Run Until face simularea pe o perioadă de timp care se alege din fereastra care se deschide în urma acţionării ei.

În timpul simulării se poate folosi comanda , pentru a face o pauză în simulare. Pictograma este utilizată pentru a opri simularea.

Dacă doriţi să terminaţi o sesiune de simulare, în meniul Simulation există comanda de End Simulation sau se poate folosi pictograma . Puteţi să ştergeţi formele de undă cu comanda Clear All Waveforms din meniul Waveform, . Dacă se doreşte restartarea simulării se poate folosi comanda Restart Simulation din meniu sau pictograma . O altă sesiune nouă de simulare se porneşte reiniţializând simularea din meniu.

În figura A-2.8 este prezentată o fereastră de simulare în care se pot urmări formele de undă rezultate în urma simulării.

Page 169: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL 171

Figura A-2.8 Fereastră de simulare

Pentru a vizualiza valorile logice ale semnalelor şi în fereastra editorului schematic, în meniul Diagram se selectează Probes şi apoi Add Probes, care deschide fereastra cu acelaşi nume, de unde se poate alege dacă probele să apară pe pinii componentelor, pe terminale sau pe firele care au denumiri specificate. Atunci în fereastra editorului schematic probele vor arăta, de exemplu, ca în figura A-2.9.

I0O

I1U1

I0O

I1

I O

I0O

I1

Input0Input1

Input2Input3

Output0

NET97

NET119

NET11311

00

0

1 0

0

Figura A-2.9 Probe în fereastra de editare La avansarea paşilor de simulare în fereastra Waveform de simulare, valorile probelor din fereastra de editare se modifică şi ele.

Page 170: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 172

6. Utilizarea şi editarea simbolurilor

Pentru a plasa o nouă componentă pe o pagină schematică, comutaţi pe modul Symbol activând pictograma Symbols Toolbox (vezi figura A-2.2). O fereastră cu o bibliotecă de simboluri este automat afişată în partea dreaptă a ecranului (vezi figura A-2.2).

Pentru a găsi componenta dorită, faceţi clic pe un simbol listat în fereastră pentru a face să apară cursorul evidenţiat. Apoi, parcurgeţi lista de simboluri cu cursorul sau cu bara de defilare. Dacă tipăriţi numele simbolului în partea de sus a ferestrei, el va fi automat căutat şi evidenţiat în listă.

Simbolul curent selectat este evidenţiat în albastru. Dacă trageţi cursorul mouse-ului în fereastra schematică, simbolul grafic al componentei selectate va apare după cursor. Prin selectarea componentei puteţi vedea simbolurile şi fără să le plasaţi pe schemă, în partea de jos a ferestrei Symbols Toolbox. Plasarea se poate face şi trăgând în fereastra schematică simbolul astfel afişat.

Pentru a plasa un simbol, deplasaţi simbolul ataşat cursorului mouse-ului la locaţia dorită şi lăsaţi butonul mouse-ului. Pe măsură ce mişcaţi simbolul spre partea exterioară a ferestrei, schema se va deplasa automat sub controlul software-ului de auto-panning (deplasare automată).

Puteţi roti orice componentă selectată dacă apăsaţi butonul dreapta al mouse-ului cu comenzile de Rotate (puteţi roti cu 90, 180 sau 270 de grade) sau apăsând R (rotire la dreapta), L (rotire la stânga). Pentru a plasa alt simbol pe schemă, selectaţi-l în fereastra Symbols Toolbox şi repetaţi procesul de plasare a componentei.

Pentru a şterge simboluri trebuie să le selectaţi şi apoi apăsaţi tasta Del. Putem şterge orice simbol, terminal sau fir în modul Select . Aceasta este modalitatea cea mai întrebuinţată de a edita o schemă. Pentru a şterge un element puteţi şi să selectaţi opţiunea Delete din meniul Edit. Dacă aţi şters din greşeală un simbol, puteţi să îl puneţi la loc activând opţiunea Undo din meniul Edit.

Toate contururile simbolurilor sunt dreptunghice. Ele sunt afişate atunci când simbolurile sunt selectate în modul Select. La plasarea pe pagină este necesar să existe un spaţiu liber între simboluri.

Bibliotecile ACTIVE-HDL includ un număr mare de simboluri. Fiecare simbol are atributele lui care determină clasa şi funcţia sa logică. Atributele pot fi folosite pentru simplificarea căutării simbolurilor dorite.

Page 171: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL 173

Pentru a filtra simbolurile dorite din lista de simboluri, activaţi pictograma Query Window care afişează în dreapta fereastra Query Window.

Toate simbolurile sunt automat denumite când sunt plasate pe schemă. Numele simbolului este compus dintr-un text (şir de caractere) şi un sufix numeric, care este incrementat de fiecare dată când plasaţi un simbol nou. Exemple sunt U1, U2, U3 etc. Pentru a gestiona parametrii la un dispozitiv schematic, comutaţi pe modul Select şi faceţi clic dreapta cu mouse-ul pe componenta selectată. Alegeţi Properties şi va fi afişată fereastra Symbol Properties (figura A-2.10). Puteţi să faceţi modificări care vor fi în continuare utilizate pentru componenta respectivă.

Figura A-2.10 Fereastra Symbol Properties Editorul de simboluri este destinat creării şi editării de simboluri. El asigură editarea simbolurilor existente, crearea unor simboluri noi, salvarea sau încărcarea în / din fişiere externe (cu extensia *.bds) şi utilizarea unei biblioteci care pune la dispoziţie forme de circuite predefinite numite Stencils . Fereastra editorului de simboluri nu este condiţionată de existenţa unei ferestre de editor schematic sau de limbaj de descriere hardware.

Page 172: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 174

Editorul de simboluri poate fi activat prin mai multe metode. Dacă se foloseşte din meniul File comanda New, se poate alege Symbol şi atunci se deschide o fereastră de Wizard care permite crearea unui simbol nou, cu nume, conţinut, pini. Simbolul va fi introdus în biblioteca curentă şi va putea fi observat în Symbols Toolbox. Dacă se alege Symbol din lista din stânga de sub meniuri se deschide fereastra editorului de simboluri. Se pot folosi comenzile disponibile pentru a crea un nou simbol, cu caracteristicile dorite. O altă modalitate de activare pentru editare de simboluri este când ne aflăm pe o pagină de editare, în modul Select şi facem clic dreapta cu mouse-ul pe un simbol şi alegem Edit. Se deschide automat fereastra Add New Pins şi se pot face modificări asupra simbolului.

Dacă faceţi modificări asupra unui simbol, toate apariţiile acestui simbol vor fi modificate. Se permite editarea doar a simbolurilor care nu au setat atributul Read-Only. Editorul Schematic din ACTIVE-HDL permite şi utilizarea Fub, activate din meniul Diagram, cu pictograma sau cu comanda F. Un Fub este o reprezentare grafică a unui bloc logic creat şi editat direct în Editorul Schematic. Interfaţarea cu celelalte componente de pe schemă se face prin porturi, care apar ca pini. Caracteristicile care fac diferenţa între simbolurile de componente şi Fubs sunt următoarele:

• Forma, dimensiunea şi numărul de pini a Fub pot fi modificate direct;

• În momentul în care un fir sau o magistrală se conectează la Fub se adaugă automat pini. Pinii se şterg dacă un fir sau o magistrală se deconectează de la Fub;

• Un Fub există ca o singură instanţă, deci nu putem avea acelaşi Fub într-o schemă decât o dată. Acesta este motivul pentru Fub-urile nu apar în lista cu simboluri din Symbols Toolbox;

• Fub pot fi create doar în modalitatea de creare de sus în jos a proiectelor. Această situaţie este o consecinţă a faptului că simbolul pentru Fub este creat înainte de a se defini conţinutul lui;

• Un Fub poate fi convertit într-un simbol obişnuit, dacă în modul Select se face clic dreapta cu mouse-ul şi se alege comanda Convert Fub to Symbol. În figura A-2.11 se poate vedea diferenţa între un simbol obişnuit şi

un Fub.

Page 173: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL 175

Figura A-2.11 Simbol şi Fub

După crearea grafică a Fub-ului adăugarea pinilor se face sau prin comenzile Select, clic dreapta cu mouse-ul pe Fub, alegere Edit şi activare fereastră Add New Pin Toolbox, cu pictograma , sau prin legarea de fire sau magistrale la Fub. În continuare, cu dublu clic pe Fub sau cu comanda

Push/Pop se creează un fişier sursă în care va trebui descrisă funcţionarea Fub (implementarea lui).

7. Realizarea conexiunilor

Pentru a intra în modul de desenare a conexiunilor, faceţi clic pe pictograma Wire ( ) sau apăsaţi tasta W. Va apare imediat cursorul de conectare a firului care afişează un fir şi un nod de fir. Făcând clic cu acest cursor la pini de componente sau la conexiunile firului se va începe o nouă conexiune. Firul va fi desenat după cum mişcaţi mouse-ul. Pentru a desena un colţ sau un segment de fir, faceţi clic în punctul în care doriţi schimbarea direcţiei. Făcând clic pe alt pin sau fir se va termina conectarea firului. Pictograma Wire activează desenarea firelor simple. Există o mulţime de alte moduri de conectare a simbolurilor, prin magistrale sau legături între fire şi magistrale (“bus taps”).

Pictograma Power Symbol este folosită pentru conectarea firelor la alimentare sau la masă.

Pictograma Undo din meniul Edit este folosită pentru anularea ultimei operaţii de conectare.

Editorul schematic permite desenarea unui fir numai dacă este corect din punct de vedere electric şi dacă reprezintă o conexiune fizică între pinii componentei sau terminalele de intrare / ieşire (I/O terminals). Pentru a termina temporar un fir în orice loc de pe ecran, faceţi dublu clic şi firul se

Page 174: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 176

va termina cu simbolul terminal de fir, care este un pătrăţel de culoare magenta. Pentru a modifica un nume de net la un fir existent faceţi dublu clic cu mouse-ul pe fir şi din fereastra de proprietăţi (Wire Properties) care se deschide selectaţi View Texts şi bifaţi Name. Numele asociat automat firului va apare lângă fir scris cu albastru. Cu dublu clic numele intră în regim de editare şi poate fi modificat după dorinţa utilizatorului. Pentru a şterge un nume de fir, faceţi clic pe nume şi apăsaţi butonul Delete. Pentru a muta un nume de fir de conexiune la altă locaţie, comutaţi pe modul Select, faceţi clic pe nume şi trageţi-l la locaţia dorită lângă fir.

Când selectaţi modul wiring (cablare) editorul este în modul auto-panning. De fiecare dată când mutaţi cursorul mai aproape de marginea ferestrei, acesta va aluneca în mod automat pentru a permite accesul imediat la alte părţi ale schemei fără a folosi barele de derulare.

Pentru a activa legarea automată, selectăm Tools / Preferences / Editors / Block Diagram Editor şi la opţiunea Autoruting bifăm Enabled. Tot aici putem limita timpul necesar algoritmului “automatic routing” pentru a căuta conexiunea cea mai bună. Evident că se poate face dezactivarea opţiunii şi atunci nu se mai poate face legare automată.

Pictograma I/O Terminal permite plasarea terminalelor de I/O pe paginile schematice. Ele pot fi direct conectate la fire şi magistrale.

Terminalele de intrare-ieşire reprezintă macrourile ierarhice ale pinilor de intrare-ieşire. Ele sunt doar simboluri logice de conectare şi nu reprezintă nici o conexiune fizică. Doar terminalele de intrare-ieşire din nivelul cel mai înalt al schemei sunt convertite în pini de intrare-ieşire ai dispozitivului şi vor fi adăugaţi netlist-ei ca pini conectori.

Pentru a plasa un terminal de intrare-ieşire, faceţi clic pe pictograma I/O Terminal şi veţi alegere tipul său (intrare, ieşire, bidirecţional, pentru fire sau bus-uri). Terminalul apare cu un nume dat automat de editorul schematic. Numele poate fi editat şi schimbat de utilizator.

Putem plasa un terminal pe schemă înainte sau în timp ce desenăm o conexiune. Pentru a termina un fir cu un terminal de intrare-ieşire, începem să desenăm firul şi când ajungem la locaţia unde ar trebui plasat terminalul, facem clic pe butonul din dreapta al mouse-ului pentru a alege un terminal. Terminalul va fi plasat la locaţia unde firul a fost terminat anterior.

Putem plasa un şir de terminale de intrare-ieşire similare deoarece la activarea pictogramei terminalul respectiv rămâne ataşat la cursorul mouse-ului.

Page 175: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL 177

În editorul schematic al ACTIVE-HDL există posibilitatea plasării de conectoare globale pentru fire şi de conectoare globale pentru bus-uri

. Conectoarele globale pentru fire sunt utilizate de obicei pentru a lega împreună prin legături de tip logic semnale globale cum ar fi cele de Clock sau Reset. Numele conectorului global pentru fire va fi identic cu numele pinilor componentelor sau cu ale unor terminale. În figura A-2.12 se observă un exemplu de conector global pentru semnalul de tact CLK.

Figura A-2.12 Conector global pentru fire

Avantajul principal al acestor tipuri de conectori este că nu se mai

desenează pe schemă atâtea fire, ceea ce determină o simplificare a schemei. 8. Magistrale

O magistrală este folosită la reprezentarea conexiunilor de fire multiple printr-o singură linie grafică. În locul trasării de fire separate, se poate crea o singură linie de magistrală care conţine toate firele. În mod obişnuit, magistralele reprezintă liniile de semnal de acelaşi tip (ex. toate liniile de adresă sau toate liniile de date). Oricum, magistrala poate fi folosită la conectarea oricăror tipuri de semnal, nu neapărat aflate într-o relaţie. Magistralele sunt proiectate să facă schemele mai accesibile, şi utilizarea lor depinde de aplicaţia specifică.

Page 176: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 178

Deoarece conexiunile magistralei depind de modul în care sunt denumiţi membrii magistralei şi nu de modul în care apar în schemă, este mai uşor să faci o greşeală folosind conexiunile magistralei în locul conexiunilor de fire singulare.

O magistrală poate să aibă sau nu, un nume. Un nume generic de magistrală trebuie să conţină numele tabloului (ex. DATA) şi definirea indexurilor de semnal superior şi inferior (ex. [0:15]). Un nume tipic de magistrală este o combinaţie între nume şi index:

NAME[X;Y] unde X,Y sunt numere întregi mai mari sau egale cu 0. Numărul de semnale N dintr-o magistrală este calculat cu formula:

N X Y= − + 1 Observăm că e posibil să avem X = Y, adică o magistrală care are un singur semnal, ex. DATA[3:3]. Fiecare linie de semnal de magistrală NAME[X:Y] are mai multe fire singulare cu propriile nume definite ca NAMEA, unde A este un număr din intervalul lui X,Y (inclusiv ambele limite). De exemplu, magistrala DATA[0:3] conţine semnalele DATA0, DATA1, DATA2, DATA3. Atenţie! Numele magistralei nu trebuie să se termine cu o cifră. Aceasta conduce la conexiuni nedorite. De exemplu, magistralele DATA1[0:7] şi DATA[0:10] vor avea o conexiune prin DATA10 care este un membru al ambelor magistrale. Un exemplu de magistrală, DATA[7:0], este dat în figura A-2.13.

Figura A-2.13 Magistrală

8.1 Ordinea semnalelor magistralei Magistralele NAME[X:Y] şi NAME[Y:X] conţin aceeaşi mulţime de semnale, dar acestea definesc o ordine diferită a semnalelor în magistrală. Ordinea de definire a semnalelor este importantă când o magistrală este conectată cu un pin de magistrală. Semnificaţia membrilor magistralei este dată de programul pentru care Editorul Schematic produce date. În

Page 177: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL 179

proiectele XILINX magistralele trebuie definite cu cel mai semnificativ bit (cel cu indexul mai mare) pe prima poziţie şi cel mai puţin semnificativ bit fiind ultimul. De exemplu, magistrala cu 4 membri DATA[0:3] are bitul cel mai semnificativ DATA0 definit ca fiind primul şi bitul cel mai puţin semnificativ DATA3 definit ultimul. NOTĂ: Folosirea aceleiaşi ordini de definire a semnalelor (adică fie de la MSB (most significant bit) la LSB (least significant bit), fie invers în tot proiectul este foarte recomandată. Amestecarea ordinii de definire poate fi o sursă de erori! 8.2 Ordinea pinilor de magistrală Când se conectează o magistrală la un pin, conexiunile dintre semnalele conţinute în aceste două obiecte vor fi stabilite în ordinea definirii semnalelor, adică de la bitul definit primul la bitul definit ultimul. Dacă numărul de semnale din linia de semnal a magistralei şi pinul de magistrală sunt diferite, semnalele cu indecşii care depăşesc numărul semnalelor din magistrala mai mică nu vor fi conectaţi deloc. De exemplu, conectând un pin de magistrală al unui simbol A[0:3] la magistrala Bus[7:0] (figura A-2.14), se vor crea următoarele conexiuni: pin A0 = semnal Bus3, pin A1 = semnal Bus4, pin A2 = semnal Bus5, pin A3 = semnal Bus6. Semnalele Bus0, Bus1, Bus2, Bus7 nu vor fi conectate.

C

CE

CLR

Q(7:0)

CJ8CEA0

A1

A2

A3

B0

B1

B2

B3

EQ

COMP4

Bus(7:0)

Bus(5)Bus(6)

Bus(4)Bus(3)

VCC

EQ

CECLK

RST

Figura A-2.14 Exemplu de conectare între magistrală şi pin de magistrală

Page 178: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 180

NOTĂ: Numele magistralelor şi a pinilor de magistrală sunt irelevante pentru efectuarea conexiunilor fizice. De exemplu, conectând pinul de magistrală A[0:3] la magistrala A[3:15] vor fi produse următoarele conexiuni: pin A0 = semnal A3, pin A1 = semnal A4, pin A2 = semnal A5, pin A3 = semnal A6. 8.3 Terminalele de magistrală Terminalele de magistrală care reprezintă pini de magistrală în proiectul ierarhic, sunt supuse aceloraşi reguli de conectivitate ca şi magistralele şi pinii de magistrală. Pinii de magistrală sunt folosiţi la conectarea unei magistrale direct la pinii simbolului (figura A-2.15). Terminalele de magistrală duc la economisirea spaţiului în schemă şi o fac mai clară.

C

CE

Q(7:0)

R

CJ8RE

BusOut(7:0)BusOut(7:0)

Figura A-2.15 Terminal de magistrală

NOTĂ: Cu excepţia cazului când unei magistrale îi este asignat un nume specific, numele terminalului de magistrală va fi automat asignat liniei de semnal a magistralei conectate. 8.4 Magistrale fără nume Pinii de magistrală pot fi conectaţi prin magistrale fără nume. În acest caz, semnalele magistralei sunt conectate via membrii de magistrală fără nume, iar ordinea de conectare este guvernată de ordinea de definire a pinului de magistrală. De exemplu, conectând pinul de magistrală A[0:8] la pinul de magistrală D[3:0] printr-o magistrală fără nume vor fi produse următoarele conectări: pin A0=pin D3, pin A1=pin D2, pin A2=pin D1, pin A3=pin D0. Pinii de la A4 la A8 nu vor fi conectaţi.

Page 179: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL 181

9. Gestiunea proiectului multi-pagină Se vor folosi proiecte multi-pagină de câte ori proiectul este prea mare ca să încapă pe un sigur ecran. Un proiect multi-pagină presupune existenţa mai multor pagini (ecrane) într-un acelaşi fişier. Important de reţinut este că dacă denumim un semnal sau un terminal într-o pagină (ecran) identic cu alt semnal sau terminal din alte pagini, mediul va face automat legături logice între ele, considerându-le acelaşi semnal sau terminal. 9.1 Adăugarea noilor pagini Pentru a crea iniţial o nouă pagină schematică vidă, din Design Browser, tab-ul File, cu Add New File se alege Block Diagram şi se dă numele, de exemplu, „test”. La fel se poate utiliza şi comanda New

Diagram din lista din stânga de sub meniuri, dar atunci trebuie salvată pagina cu Save din meniul File, pentru a-i putea da un nume dorit. În cazul în care nu dorim să denumim noi pagina schematică, mediul asociază automat la o pagină schematică denumirea BlockDiagram, urmată de un indice, care creşte pe măsura adăugării paginilor noi. Din meniul Diagram, cu comanda Multiple pages, Add Page se pot crea câte pagini se consideră necesare pentru proiectul multi-pagină respectiv. Fiecare nouă pagină (ecran) este automat adăugată la conţinutul proiectului curent. Poziţionarea pe ecrane diferite se face prin comenzile de pe banda de derulare din dreapta, conform figurii A-2.16. În partea dreaptă avem fereastra Block Diagram Editor.

Figura A-2.16 Alegerea paginilor în proiect multi-pagină Comanda permite deschiderea paginii selectate într-o pagină separată.

Page 180: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 182

9.2 Adăugarea la un proiect a unor pagini existente Pentru a adăuga la proiectul curent o schemă din alt proiect, se utilizează meniul Diagram, Multiple pages, Add Pages From File . De asemenea se poate folosi comanda Add Pages From File din fereastra Block Diagram Editor (figura A-2.17). Se selectează în fereastra Add Files fişierul(ele) schemelor care se doresc a fi adăugate şi se execută clic pe butonul Add. Editorul schematic citeşte fiecare pagină adăugată şi verifică dacă simbolurile folosite în aceste scheme sunt disponibile şi dacă nu există numere de referinţă duplicate. Pentru a selecta fişiere de pe alte unităţi de memorie externă sau directoare, se face modificarea în Look In. Lista paginilor proiectului va fi instantaneu adusă la zi şi va fi afişată în Design Browser, tab-ul File. Notă: Editorul schematic adaugă automat la proiectul curent bibliotecile utilizate de către paginile nou adăugate. 9.3 Deschiderea paginilor care nu aparţin proiectului

Când se execută clic pe pictograma Open sau pe opţiunea Open din meniul File, sunt afişate doar paginile care aparţin proiectului curent. Dacă se doreşte deschiderea unei pagini care nu aparţine proiectului curent, se foloseşte căutarea fişierelor adiţionale pe hard discuri şi în directoare. Schemele nou deschise pot fi editate. Cu toate acestea, ele nu aparţin proiectului până când opţiunea Add Current Document din meniul Design nu este activată. Notă: Când o planşă schematică din alt proiect este deschisă, ea este copiată în directorul proiectului curent, astfel încât orice modificare a schemei nu va afecta proiectul din care a fost copiată. Numele de referinţă ale componentelor din paginile adăugate sunt verificate pentru evitarea posibilelor conflicte cu numele de referinţă din paginile proiectului. Dacă se vor detecta numere duplicat pe noua pagină, acestea vor fi modificate.

Page 181: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL 183

9.4 Eliminarea paginilor din proiect Pentru a elimina o pagină din proiectul curent, se selectează din meniul Diagram, comanda Multiple pages, Remove Current Page . La fel se poate şterge pagina din fereastra Block Diagram Editor. După ce se cere confirmarea ştergerii, pagina ştearsă nu va mai fi parte din proiect şi va dispare din fereastra Block Diagram Editor. Notă: Opţiunea Delete elimină pagina din conţinutul proiectului şi şterge fişierul schematic de pe disc. 9.5 Deschiderea paginilor proiectului Pentru a deschide paginile cu scheme care aparţin proiectului curent, se execută dublu clic pe numele schemei din Design Browser, tab-ul File. Acestea pot fi de asemenea accesate din meniul File, prin Open. 9.6 Renumerotarea referinţelor de simbol Numerele de referinţă ale simbolurilor sunt asociate secvenţial, în ordinea în care sunt plasate pe paginile schematice. Drept rezultat aceste numere, în proiectarea multi-pagină a schemelor, pot fi aleatoare. Pentru a ordona numerele simbolurilor după pagină, se permite modificarea identificatorilor de referinţă doriţi pe fiecare pagină. De exemplu, simbolurile de pe prima pagină pot începe cu U100. Pe a doua pagină ele pot începe cu U200 etc. Această convenţie de numire simplifică urmărirea simbolurilor pe paginile schematice. 9.7 Reguli de conectivitate pentru schemele multi-pagină Toate reţelele cu nume identice sunt automat conectate de către editor. Această regulă se aplică atât proiectului mono-pagină cât şi celui multi-pagină. Din această cauză nu este necesară conectarea circuitelor de pe diferite pagini cu conectori sau pini terminali. Toate reţelele de fire cu nume identice sunt conectate împreună. Magistralele cu nume identice sunt conectate doar prin numele de fire membre.

Page 182: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 184

10. Proiecte ierarhice Pentru crearea unui proiect ierarhic se pot folosi 2 metodologii diferite: Top – Down (de sus în jos) sau Bottom – Up (de jos în sus). În practică de multe ori se foloseşte un mixaj dintre aceste două metode de proiectare. La abordarea Top – Down se porneşte de la nivelul cel mai înalt al proiectului, se creează o structură de blocuri cu conexiunile dintre ele şi abia apoi aceste blocuri se definesc utilizând module simple. La abordarea Bottom – Up proiectantul creează blocurile cele mai simple, care apoi sunt folosite pentru a realiza blocuri mai complexe. Procesul se repetă pană când se ajunge la ultimul nivel, cel mai înalt, al structurii proiectului. Din punctul de vedere al conţinutului, simbolurile folosite pot fi macro-uri sau primitive. În mod evident primitivele sunt simboluri care nu au la bază diagrame logice mai mici, ci sunt create altfel (de exemplu, ca diagramă de stare). Macro-urile au conţinutul descris folosind o diagramă bloc. Structura unui proiect ierarhic poate fi observată în Design Browser în tab-ul Structure. În cele ce urmează prezentăm pas cu pas un proces care arată cum se creează şi se folosesc proiecte ierarhice în ACTIVE-HDL. Pentru o mai bună exemplificare a proiectului ierarhic, se va crea şi simula interactiv un proiect simplu. Pentru simplitate, în schemă vor fi folosite doar componente care există construite implicit şi componente din biblioteca xc4000e. Pasul 1. Se creează un nou proiect, denumit Ierarhic Se alege din meniu File, New şi Design sau se execută clic pe pictograma Design din lista din stânga sus de sub meniuri. Se foloseşte fereastra de Wizard pentru a crea un proiect gol cu numele Ierarhic. Apoi din Design Browser, tab-ul File, cu Add New File se alege Block Diagram şi se dă numele sch1 primei scheme. Se deschide o fereastră de editare pentru această schemă. Pasul 2. Se selectează biblioteca pentru proiect Se selectează View Library Manager din meniul View sau cu butonul . În fereastra Libraries se selectează biblioteca xc4000e şi cu clic dreapta se alege Add to Symbols Toolbox.

Page 183: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL 185

Pasul 3. Se creează prima schemă (sch1.bde) Se execută clic pe pictograma Symbols Toolbox . Din fereastra deschisă, din lista pentru xc4000e se selectează simbolul NAND2. Apoi se desenează schema din figura A-2.17, incluzând terminalele de intrare InA, InB, InC şi de ieşire Out. Se salvează schema folosind opţiunea Save din meniul File.

I0

I1O

NAND2

I0

I1O

NAND2

InAInB

InC Out

Figura A-2.17 Schema sch1

Pasul 4. Se creează simbolul sch1 Se compilează fişierul sch1.bde. Dacă nu există erori, în biblioteca proiectului se adaugă sch1. În acelaşi timp sch1 apare şi în Symbols Toolbox, la Ierarhic, Units without Symbols. Dacă se face clic aici pe sch1 în partea de jos a ferestrei apare un simbol dreptunghiular pentru sch1, cu pinii de intrare InA, InB, InC şi ieşirea Out. Acest simbol poate fi utilizat ca orice alt simbol din bibliotecă. După utilizarea cel puţin o dată a simbolului într-o pagină schematică, sch1 va dispărea din zona Units without Symbols şi va apare la Ierarhic. Pasul 5. Se creează a doua schemă (sch2.bde) Din Design Browser, tab-ul File, cu Add New File se alege Block Diagram şi se dă numele sch2 celei de-a doua scheme. Se desenează schema din figura A-2.18. Se folosesc ca şi terminale de intrare Set, D, CLK şi Reset, iar terminalul de ieşire se va denumi Q. Se salvează schema folosind opţiunea Save din meniul File. Pasul 6. Se creează simbolul sch2 Se compilează fişierul sch2.bde. Dacă nu există erori, în biblioteca proiectului se adaugă sch2. sch2 apare şi în Symbols Toolbox, la Ierarhic,

Page 184: Indrumator ASDN 2009

ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 186

Units without Symbols. Simbolul sch2 va avea pinii de intrare Set, D, CLK şi Reset şi pinul de ieşire Q.

C

D Q

R

S

FDRSSet

D

CLK

Reset

Q

Figura A-2.18 Schema sch2 Pasul 7. Se creează o nouă pagină pentru nivelul superior Din Design Browser, tab-ul File, cu Add New File se alege Block Diagram şi se denumeşte cu numele top. O nouă pagină schematică va fi deschisă, pe care o vom considera nivelul cel mai înalt. Se desenează schema prezentată în figura A-2.19 Se plasează în schemă două copii ale simbolului sch1, care vor fi automat denumite U1 şi U2. Similar, se plasează două copii ale simbolului sch2 în schemă. Acestea vor fi automat denumite U3 şi U4. Se interconectează simbolurile ca în figura A-2.19.

InA Out

InB

InC

U1

sch1

InA Out

InB

InC

U2

sch1

CLK Q

D

Reset

Set

U3

sch2

CLK Q

D

Reset

Set

U4

sch2CLK

Reset

GND

Q1

Q2

InA1InB1InC1

InA2InB2InC2

Figura A-2.19 Schema „top” de la nivelul cel mai înalt

Page 185: Indrumator ASDN 2009

EDITORUL ŞI SIMULATORUL ACTIVE-HDL 187

Pasul 8. Folosirea opţiunii Push/Pop pentru vizualizarea schemelor Cu dublu clic pe oricare din simbolurile U1 sau U2 (operaţiunea de Push) se va deschide schema sch1, prezentând schema internă a simbolului. La fel se întâmplă şi dacă se face dublu clic pe simbolurile U3 sau U4, de data aceasta deschizându-se schema sch2. Din schemele sch1 şi sch2, dacă facem clic cu mouse-ul pe o zonă nedesenată se revine la nivelul superior top (operaţiunea de Pop). Operaţiunea de Pop se poate realiza şi cu

pictograma Hierarchy Pop . Pasul 9. Vizualizarea conţinutului proiectului Structura proiectului ierarhic poate fi observată în Design Browser în tab-ul Structure. Se poate remarca că apare schema de nivel superior „top” şi patru subnivele (U1, U2, U3 şi U4). Pasul 10. Editarea nivelelor ierarhice Schemele prezentate la pasul 8 pot fi direct editate. Se foloseşte opţiunea File->Save pentru a salva modificările şi pentru a actualiza toate schemele.

Page 186: Indrumator ASDN 2009
Page 187: Indrumator ASDN 2009

BIBLIOGRAFIE 1. Câmpeanu, A., Jivet, I. OrCAD. Bucureşti, Editura Teora, 1995.

2. Creţ, O., Văcariu, L., Probleme de proiectare logică a sistemelor

numerice. Logic Design Problems for Digital Systems. Cluj-Napoca,

Editura UTPres, 2008.

3. Jenkins, J. Designing with FPGAs and CPLDs. New York, Prentice

Hall, 1994.

4. Katz, R., Boriello, G., Contemporary Logic Design. N.J., Pearson

Prentice Hall, 2005.

5. Nedevschi, S., Baruch, Z., Creţ, O. Proiectarea sistemelor numerice

folosind tehnologia FPGA. Cluj-Napoca, Editura Mediamira, 1999.

6. Văcariu, L., Creţ, O. Analiza şi sinteza dispozitivelor numerice.

Îndrumător de laborator. Cluj-Napoca, Editura U.T. Press, 2005.

7. Ştefan, Gh., Bistriceanu, V. Circuite integrate digitale. Probleme,

proiectare. Cluj-Napoca, Editura Albastră, 2000.

8. Wakerly, JF. Digital Design Principles and Practices. Prentice Hall,

New Jersey, 2000.

9. Wirth, N. Digital Circuit Design. Zurich, Springer-Verlag, 1995.

10. *** ActiveHDL - reference manual. ALDEC Company.

11. *** XILINX ISE Foundation - reference manual. XILINX Company.

12. www.xilinx.com


Recommended