Sunteți pe pagina 1din 187

PREFA

ndrumtorul de laborator constituie materialul de baz pentru pregtirea lucrrilor practice la disciplina Analiza i Sinteza Dispozitivelor Numerice (ASDN) i este destinat n principal studenilor seciilor de Automatic i de Calculatoare din cadrul Facultii de Automatic i Calculatoare a Universitii Tehnice din Cluj-Napoca. Cele 13 lucrri din cuprins urmresc nsuirea de ctre studeni a cunotinelor referitoare la conceptele de baz din proiectarea sistemelor numerice. Se prezint, n ordine, porile logice fundamentale, circuitele logice combinaionale, circuitele basculante bistabile, numrtoarele i registrele de deplasare. n ndrumtor exist de asemenea lucrri pentru instrumente software specifice proiectrii 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 urmrete urmtoarea succesiune logic: scopul lucrrii, consideraii teoretice, desfurarea lucrrii i, acolo unde este cazul, anex. Lucrrile se realizeaz att pe panourile didactice ct i pe simulatoarele software specifice i pe plci cu FPGA-uri. n desfurarea lucrrilor de laborator se acord atenie att realizrii schemelor cu circuite numerice ct i operaiilor de testare i depanare a funcionrii schemelor. Varietatea soluiilor expuse, uneori pentru implementarea aceleiai funcii, permite efectuarea unei analize comparative a acestora. ntrebrile suplimentare de la sfritul lucrrilor, al cror rspuns nu se gsete n mod explicit n consideraiile teoretice, au rolul de a suscita interesul pentru proiectarea sistemelor numerice, n vederea dezvoltrii capacitii creative a studenilor. Documentaia instrumentelor software din pachetul ACTIVE-HDL este anexat la sfritul ndrumtorului, pentru a nu ncrca prea mult coninutul lucrrilor. Tot n anexe se gsete i o scurt prezentare a sistemelor de numeraie, a codurilor (cu accent mai mare pe codurile binarzecimale) i a reprezentrii numerelor n calculatoarele numerice. Autorii

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 combinaionale ......................................38 Lucrarea nr. 5 Circuite logice combinaionale MSI..............................48 Lucrarea nr. 6 Circuite combinaionale complexe ................................58 Lucrarea nr. 7 Sinteza circuitelor logice combinaionale cu dispozitive logice programabile........................................................67 Lucrarea nr. 8 Circuite basculante bistabile .........................................77 Lucrarea nr. 9 Numrtoare (I) ..............................................................87 Lucrarea nr. 10 Numrtoare (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 numeraie i coduri .............................................150 Anexa 2 Editorul schematic i simulatorul ACTIVE-HDL ..............164 Bibliografie ...........................................................................................189

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

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.

GLOSAR
Adnotarea napoi (back annotation) Procesul ncorporrii unor valori de ntrziere de propagare temporal a semnaleleor ntr-o list de conexiuni (netlist) a unui proiect. ASIC Application Specific Integrated Circuit. Circuit integrat proiectat pentru o aplicaie 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 fiecrei cifre zecimale (de la 0 la 9) i se atribuie codul de 4 cifre binare care exprim numrul respectiv n baza 2. Celul O funcie logic, care poate fi o poart logic, un bistabil, o unitate de RAM sau alt structur. De regul, dimensiunea unei celule este mic n comparaie 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 conine mai multe slice-uri. CMOS Complementary Metal Oxide Semiconductor. Tehnologie de realizare fizic a circuitelor numerice. Completitudine funcional Proprietate a anumitor funcii logice de a permite realizarea oricrei funcii logice utiliznd numai acea funcie. CPLD Complex Programmable Logic Device. Combinaie ntre o matrice programabil de pori I/SAU i un set de macrocelule care sunt blocuri cu funcii logice combinaionale i secveniale. FPGA Field Programmable Gate Array. O matrice regulat de celule care este fie complet funcional, fie universal, situat n interiorul unei reele 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, avnd ns trsturi (construcii program, sintax, semantic etc.) specifice hardware.

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 combinaionale n slice-uri. Netlist Fiier text care descrie un proiect. Cerinele minime sunt: identificarea elementelor funcionale, intrri i ieiri i conexiuni. PAL Programmable Array Logic. Marc nregistrat a firmei Monolithic Memories. Desemneaz o matrice programabil standard de pori logice. PLA Programmable Logic Array. PLD Programmable Logic Device. Clasa generic de dispozitive programabile, alctuit din PLA-uri, PAL-uri, FPGA-uri etc. PROM Programmable Read Only Memory. Memorie care pstreaz informaia 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. Conine elemente combinaionale, memorii LUT i unul sau mai muli bistabili. Simulare Procesul de modelare a unui proiect logic i a stimulilor si 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 ieire. 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 rspuns corespunztoare i sunt similari vectorilor de simulare, cu excepia faptului c vectorii de test sunt n general aplicai numai unor proiecte sincronizate cu semnalele de strobe sau de selecie folosite de un tester electronic.

LUCRAREA NR. 1
CIRCUITE LOGICE FUNDAMENTALE
1. Scopul lucrrii Se studiaz experimental funcionarea porilor 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 funcii booleene elementare. Se analizeaz i se verific funcionarea unor circuite combinaionale simple, stabilindu-se legturile dintre algebra boolean i porile logice fundamentale. Se prezint funcionarea unei pori logice TTL, care realizeaz funcia logic I-NU. 2. Consideraii teoretice Algebra boolean este un instrument simbolic de tratare a funciilor logice formale. Ea s-a impus ca fiind cel mai important mijloc matematic de analiz i sintez a circuitelor de comutaie, deoarece ntre logica formal i circuitele de comutaie exist urmtoarele analogii: logica studiaz valoarea de adevrat sau fals a unor afirmaii; circuitele de comutaie sunt realizate prin interconectarea unor comutatoare, iar starea acestora nu poate fi dect nchis sau deschis. 2.1 Concepte de baz O funcie boolean este o funcie de n variabile y = f(x1,x2,,xn) definit de relaia: f : {0,1}n {0,1} (1.1) Funcia f va pune n coresponden fiecrui element al produsului cartezian n-dimensional valorile 0 sau 1. Funciile booleene pot fi folosite la descrierea funcionrii unor dispozitive construite cu elemente de circuit avnd dou stri. Acestea din urm pot fi implementate printr-un ntreruptor nchis sau deschis, printr-un tranzistor blocat sau n conducie etc.

12

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Funcionarea unui astfel de element de circuit va fi descris de o variabil boolean xi aa cum se arat n figura 1.1.
M ki N M ki nchis => xi=1 M ki N xi N

ki deschis => xi=0

Figura 1.1 Descrierea unui element de circuit cu 2 stri folosind o variabil boolean xi

Funciile booleene elementare sunt funcii booleene de una sau dou variabile i descriu funcionarea circuitelor logice fundamentale. O poart logic este un circuit care realizeaz o funcie boolean elementar. Pentru realizarea cu circuite electronice a funciilor booleene este necesar punerea n coresponden a valorilor unei mrimi fizice electrice (tensiune sau curent) cu elementele mulimii {0,1} sau {Fals, Adevrat}. Cele 2 valori sunt implementate sau reprezentate de 2 domenii disjuncte ale mrimii fizice alese.
Nivele de tensiune (curent) Nivel High

Nivel Low

Figura 1.2 Reprezentarea variabilelor booleene prin tensiuni

Situaia n care valorile maxime de tensiune corespund lui 1 logic, iar cele minime lui 0 logic, definete ceea ce se numete logic pozitiv. Situaia n care valorile maxime de tensiune corespund lui 0 logic, iar cele minime lui 1 logic, definete logica negativ.

CIRCUITE LOGICE FUNDAMENTALE

13

Tabelul 1.1 Nivelele logice de tensiune

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

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

NOT: Schimbarea conveniei 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 lucrrii): 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 ieirii: - ieire n contratimp; - ieire cu colector n gol; - ieire cu 3 stri (tri-state). Ultimele dou tipuri de circuite logice sunt cele mai folosite la implementarea magistralelor.
2.3 Pori logice elementare

a) Poarta NU (NOT) Poarta NU (inversor) este definit de funcia boolean elementar de o variabil: f (a ) = a . Simbolul funciei este prezentat n figura 1.3, iar tabelul de adevr n tabelul 1.2.

14

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

f =a

Figura 1.3 Simbolul porii logice NU Tabelul 1.2 Tabelul de adevr al funciei logice NU

a 0 1 b) Poarta I (AND)

f 1 0

Ieirea circuitului I cu 2 intrri este definit de funcia boolean: f (a, b ) = a b . Simbolul funciei este prezentat n figura 1.4, iar tabelul de adevr n tabelul 1.3.
a b

f = a b

Figura 1.4 Simbolul porii logice I Tabelul 1.3 Tabelul de adevr al funciei logice I

a 0 0 1 1 c) Poarta I-NU (NAND)

b 0 1 0 1

f 0 0 0 1

Funcia boolean care descrie funcionarea circuitului I-NU este: f (a, b ) = a b . Simbolul funciei este prezentat n figura 1.5.

CIRCUITE LOGICE FUNDAMENTALE

15

a b

f = a b

Figura 1.5 Simbolul porii logice I-NU

NOT: Aceast poart poate fi realizat folosind un inversor i o poart I astfel:


a f b b a f

Figura 1.6 Realizarea porii logice I-NU

d) Poarta SAU (OR) Ieirea circuitului SAU cu 2 intrri a i b este definit de funcia boolean: f (a, b ) = a + b . Simbolul funciei este prezentat n figura 1.7, iar tabelul de adevr n tabelul 1.4.
a b f=a+b

Figura 1.7 Simbolul porii logice SAU Tabelul 1.4 Tabelul de adevr al funciei logice SAU

a 0 0 1 1

b 0 1 0 1

f 0 1 1 1

16

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

e) Poarta SAU-NU (NOR) Funcia boolean care descrie funcionarea porii SAU-NU este: f (a, b ) = a + b . Simbolul funciei este prezentat n figura 1.8.
a b
Figura 1.8 Simbolul porii logice SAU-NU
f = a+b

NOT: Realizarea porii SAU-NU se poate face folosind un inversor i o poart SAU, astfel:
a f b b a f

Figura 1.9 Realizarea porii logice SAU-NU

f) Poarta SAU EXCLUSIV (XOR) i poarta COINCIDEN (NXOR) Funcia boolean SAU-EXCLUSIV (XOR) este descris de: f (a, b ) = a b; f (a, b ) = a b + a b . Simbolul funciei este prezentat n figura 1.10, iar tabelul de adevr n tabelul 1.5.
a
b

f = a b

Figura 1.10 Simbolul porii logice SAU-EXCLUSIV

CIRCUITE LOGICE FUNDAMENTALE

17

Tabelul 1.5 Tabelul de adevr al funciei logice SAU-EXCLUSIV

a 0 0 1 1

b 0 1 0 1

f = a b 0 1 1 0

Funcia boolean COINCIDEN (NXOR) este descris de: f (a, b ) = a b; f (a, b ) = a b + a b . Simbolul funciei este prezentat n figura 1.11, iar tabelul de adevr n tabelul 1.6.
a
b

f = a b

Figura 1.11 Simbolul porii logice COINCIDEN Tabelul 1.6 Tabelul de adevr al funciei logice COINCIDEN

a 0 0 1 1
2.4 Poarta TTL

b 0 1 0 1

f = a b 1 0 0 1

Vom studia poarta TTL (Transistor-Transistor Logic) care realizeaz funcia I-NU, deoarece este cea mai folosit. Pentru nelegerea modului de funcionare a circuitelor logice este necesar o bun cunoatere att a regimurilor de funcionare ale dispozitivelor semiconductoare (diode, tranzistoare bipolare i tranzistoare MOS) ct i a polarizrilor necesare a fi aplicate acestora pentru a obine funciile dorite. Principalii parametri sunt: timpul de (ntrziere la) propagare a informaiei logice de la intrare la ieire (tpd), puterea medie consumat de poart (Pd) i factorul de calitate (Pa), care se definete ca

18

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

fiind produsul dintre Pd i tpd. Schema porii TTL de tip I-NU este prezentat n figura 1.12. Vcc R1 R2 R4
P A B VILmax T1 D1 D2 M T2 T4 D3 T3 R3 VOHmin

Figura 1.12 Schema intern a porii TTL I-NU

Principiul de funcionare a porii TTL I-NU este prezentat n continuare. Presupunem c toate intrrile se afl la un potenial corespunztor valorii minime asociate nivelului logic 1 la intrare (2V); rezult c jonciunea emitor-baz a tranzistorului T1 este polarizat invers, deci T1 lucreaz n regiunea activ invers. Circuitul este proiectat astfel nct cnd T1 conduce invers, T2 s fie saturat i, datorit cderii de tensiune pe R3, T3 s se deschid i s tind s se satureze. Rezult la ieire 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 ieire unei tensiuni mai mic de 0,4V nivelul logic 0 rezult c acest circuit asigur la ieire 0 logic dac toate intrrile sunt 1 logic. Dac intrarea B este 0 logic (0V), atunci jonciunea emitor-baz a tranzistorului T1 este deschis i potenialul punctului P, Up= 0,7V, este insuficient pentru deschiderea tranzistoarelor T2 i T3 (care rmn blocate). Atunci potenialul punctului M este ridicat i T4 conduce. Rezult valoarea tensiunii de ieire 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 corespunztoare obinute pe ieire li se asociaz valorile de 0 logic, respectiv 1 logic. Caracteristicile porii TTL I-NU sunt: pentru comutare H L tpdHL = 8 ns tpdLH = 12 ns pentru comutare L H Pd = 10 mW

CIRCUITE LOGICE FUNDAMENTALE

19

2.5 Particulariti n utilizarea porilor logice

Considerm c avem intrrile a, b i o poart disponibil de tip INU cu patru intrri. Trebuie s realizm funcia 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 b

f
1

a
b

Figura 1.13 Realizri posibile ale funciei I-NU Observaie: Intrrile neutilizate se conecteaz la 1 logic. Lsate neconectate (n gol sau n vnt, n aer), ele introduc capaciti parazite, care produc ntrziere i duc la o funcionare defectuoas a circuitului. n cazul lucrrilor de laborator, pe panoul didactic, aceste intrri pot fi totui neconectate, deoarece n acest caz parametrii de performan nu sunt att de importani. Funcia NU se poate obine dintr-o poart I-NU cu trei intrri n mai multe moduri, dup cum scriem expresia inversorului: f = a 1 1 sau

f = aaa.

f
1

Figura 1.14 Realizri posibile ale funciei NU

Funcia 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):

20

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

a f b

Figura 1.15 Realizare posibil a funciei I

O alt component utilizat n sinteza circuitelor combinaionale este poarta I-SAU-NU, care realizeaz funcia: f = a b + c d , avnd simbolul:
a b c d 451 f

Figura 1.16 Circuitul I-SAU-NU

Funcia 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 posibiliti de materializare a acestei funcii:
a b f

a b f

Figura 1.17 Posibiliti de materializare a funciei SAU-EXCLUSIV

CIRCUITE LOGICE FUNDAMENTALE

21

3. Desfurarea lucrrii
1. Identificai elementele funcionale ale panoului didactic. 2. Verificai funcionarea corect a porilor I cu 2 sau 4 intrri, a porii SAU-NU cu 2 intrri i a componentei I-SAU-NU parcurgnd urmtoarele etape: a) Identificai tipul componentei TTL; b) Identificai modul de alimentare al componentei alese la 2.a); c) Verificai funcionarea circuitelor. 3. Realizai i verificai funcionarea porilor cu numr de intrri mai mare dect numrul variabilelor funciei. 4. Realizai circuitele XOR i NXOR cu pori I-NU respectiv I-SAUNU. 5. Desenai i implementai (realizai cu circuite integrate) urmtoarele funcii, folosind pori 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. Desenai i implementai urmtoarele funcii: a) ( x + ( y + z )) b) ( x + y ) + ( x + y )

22

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Anex
1. Familia TTL

Exist cteva subfamilii TTL care realizeaz aceleai funcii, dar care difer din punctul de vedere al timpului de propagare a informaiei i al puterii consumate. Circuitele integrate TTL au de la 14 pn la 62 de pini.
Tabelul 1.7 Familia de circuite integrate TTL
Familia TTL Standard High Speed Schottky TTL Low-Power Low-Power Schottky Putere medie consumat pe poart Pd 20 30 20 2 2 Timp de propagare tpd 10 6 3 35 15 Notaie n catalog 74xx 74Hxx 74Sxx 74Lxx 74LSxx

GND 7 6

9 10 11 12 13 14 Vcc

Figura 1.18 Familia de circuite integrate TTL

Pinii circuitului integrat sunt numerotai 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 rspndit familie MOS este CMOS.

CIRCUITE LOGICE FUNDAMENTALE

23

n figura 1.19 se prezint diferenele ntre valorile tensiunilor care se asociaz nivelelor logice la familia TTL i familia CMOS.
TTL 5V Nivel 1 logic la ieire 2,4V 0,4V VOLmax 0V Nivel 0 logic la ieire VOHmin CMOS Intrare 1 logic Regiune de nedeterminare 1,5V Intrare 0 logic 0V 5V 3,5V

Figura 1.19 Nivele logice TTL i CMOS

LUCRAREA NR. 2
EDITORUL SCHEMATIC I SIMULATORUL ACTIVE-HDL (I)
1. Scopul lucrrii Se prezint editorul schematic i simulatorul din mediul de proiectare ACTIVE-HDL, urmrindu-se nsuirea stilului de editare a schemelor numerice i a modului n care acest mediu poate fi folosit la simularea circuitelor numerice. Se realizeaz cteva scheme elementare, parcurgnd-se paii necesari n vederea simulrii funcionale viitoare. 2. Consideraii 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, execuie, sintez i implementare (figura 2.1). Enumerm cteva dintre principalele componente ale acestui mediu: 1. Instrumente de introducere a proiectului: Editor schematic (Block Diagram): permite introducerea proiectului sub form de schem de pri componente (pori 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. Strile i tranziiile automatelor pot fi descrise prin enunuri scrise n limbaje de descriere hardware.

EDITORUL I SIMULATORUL ACTIVE-HDL (I)

25

Figura 2.1 Componentele ACTIVE-HDL 2. Instrumente de verificare a proiectului: Simulatorul permite verificarea funcionrii 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 conine resursele, biblioteca curent, structura proiectului care se simuleaz, obiecte HDL sau EDIF selectate; Library Manager gestioneaz toate bibliotecile ACTIVE-HDL i coninutul lor; Console permite introducerea de macrouri sau script-uri sub form de text i vizualizarea mesajelor generate.

26

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

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" (tiprit) ca documentaie 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. Fiierul care conine informaii despre componentele i conexiunile din desen este numit netlist. Acest fiier nu conine nici o informaie grafic despre desen, dar este suficient pentru a crea o plac fizic sau un desen FPGA. Exist cteva formate diferite de netlist folosite de diferite echipamente. n editorul schematic, pentru descrierea schemelor i a simbolurilor logice, se utilizeaz formatul EDIF. Rezultatele simulrii pot fi vizualizate i n editorul schematic, iar din diagramele bloc se poate crea cod HDL i se pot obine fiiere 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 funciei 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 legturi (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 afiate pe ecran).

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 muli pini; Conexiunea logic este o conexiune fcut ntre doi sau mai muli pini fr a desena firul de legtur. Acest tip de conexiune este n general realizat atribuind nume identice la dou sau mai multe legturi conectate la pinii dispozitivului. Un alt exemplu de conexiune este magistrala, care este o colecie de conexiuni fizice sau logice avnd acelai nume. 2.2.4 Proiecte schematice multiple i ierarhice Desenele care nu intr pe o pagin schematic pot fi uor 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 legturi 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-ieire (I/O). Desenele ierarhice sunt bazate pe divizarea desenului n seciuni mai mici (macro-uri). Seciunile 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. Acelai macro-simbol schematic poate fi folosit de oricte ori n cadrul aceluiai proiect. Nivelul schematic superior ocup mai puin spaiu i este de obicei mai clar pentru utilizator, deoarece folosete blocurile de nivel nalt pentru a construi desene complexe. Conexiunile dintre blocurile ierarhice pot fi fcute doar prin intermediul pinilor de intrare-ieire. NOT: Macrourile ierarhice (pagini schematice) pot fi conectate la un nivel ierarhic superior doar prin terminalele de intrare-ieire. n desenele ierarhice nu sunt permise conexiunile logice prin nume identice.

28

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Proiectele ierarhice pot fi create ncepnd 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 numrul de pai necesar verificrii chiar i a celui mai simplu proiect. Procesul de verificare const nti din compilarea programului pentru generarea de netlist, care verific dac toate conexiunile fcute pe schem sunt corecte din punct de vedere electric i apoi din testarea comportrii circuitului cu ajutorul simulatorului logic. Dac este gsit vreo greeal, schema trebuie corectat i ntregul proces trebuie repetat. Este permis vizualizarea simulrii n editorul schematic. Putem selecta puncte de test pe schem (probes), rula simularea i observa cum pinii dispozitivului i schimb strile logice. 2.3 Operaiile editorului schematic Operaiile editorului schematic ACTIVE-HDL (Block Diagram) sunt controlate prin activarea pictogramelor i butoanelor din barele de instrumente sau a comenzilor din meniul Diagram. Principalele operaii realizate n cursul editrii unui proiect sunt: iniializarea editorului schematic; operaii de introducere a desenelor; operaii de gestionare a paginilor schematice; operaii de tip Cut and Paste (decupare i lipire); operaii zoom (de mrire/micorare); operaii de editare; operaii pentru verificarea desenului etc. Toate operaiile sunt prezentate n detaliu n cadrul Anexei 2. 2.4 Construirea unei scheme Fiecare schem este alctuit din urmtoarele componente: Cadrul i tabelul paginii; Simboluri / componente; Conexiuni (fire sau magistrale); Terminale i nume de conexiuni; Grafice i text.

EDITORUL I SIMULATORUL ACTIVE-HDL (I)

29

Setrile paginii sunt controlate folosind opiunea 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 intrri 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-ieire (I/O); de la un pin la o legtur existent; de la o legtur existent la un pin. Putem termina un fir la orice locaie de pe schem fcnd dublu clic pe butonul mouse-ului. Acesta va produce un terminal fictiv, numit i terminalul firului, reprezentat ca un ptrel cu culoarea magenta. Toate legturile sunt validate n timp ce sunt desenate i editorul nu permite nceperea sau terminarea unei legturi dac nu reprezint o conexiune electric valid. 3. Desfurarea lucrrii 1. Lansai n execuie editorul schematic al mediului ACTIVE-HDL i experimentai diversele moduri de lucru ale acestuia conform prezentrii din lucrare. 2. Editai toate schemele numerice elementare din lucrarea 1: a) desenndu-le ca ansamblu de pori logice; b) extrgndu-le din bibliotecile proprii mediului ACTIVE-HDL. Care mod de lucru este preferabil? 3. Realizai principalele operaii disponibile n editorul schematic ACTIVE-HDL asupra porilor logice fundamentale prezentate n lucrarea 1.

LUCRAREA NR. 3
EDITORUL SCHEMATIC I SIMULATORUL ACTIVE-HDL (II)
1. Scopul lucrrii 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, parcurgnd-se apoi paii necesari n vederea simulrii funcionale i temporale a acestora. 2. Consideraii teoretice 2.1 Net-uri Un net reprezint o reea multi-terminal de fire de cablaj care interconecteaz componentele logice n cadrul schemelor. Un fir poate fi desenat activnd pictograma Wire . Numele de net sunt folosite pentru a lega paginile schematice multiple. Toate net-urile care folosesc acelai nume sunt conectate mpreun. Iniial firelor le sunt asignate numere ascunse, care sunt folosite intern de ACTIVE-HDL. Oricum, pentru clarificare i documentare, putem asocia un nume oricrui fir de pe schem. Acest nume poate descrie funcia 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 locaie 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

EDITORUL I SIMULATORUL ACTIVE-HDL (II)

31

grafic prin care se deseneaz legtura dintre un fir i o magistral. Fcnd clic dreapta cu mouse-ul pe magistrala selectat i selectnd apoi Add Taps se genereaz automat bus taps. Pinii dispozitivului pot fi astfel conectai, rnd pe rnd, la magistral. Mai multe detalii referitoare la utilizarea magistralelor se gsesc 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, activai pictograma corespunztoare. Ca rspuns, ACTIVE-HDL va permite selectarea semnalului de alimentare i a reprezentrii sale grafice. Simbolul pentru GND sau PWR se plaseaz la pinul sau firul dorit, unde se va produce o conectare a alimentrii. 2.4 Simulatorul ACTIVE-HDL Simularea funcionrii 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 fiiere i reutilizate ca i vectori de test pentru alte simulri. O fereastr de simulare se deschide folosind comanda din meniu sau pictograma . Editorul schematic poate opera on-line cu simulatorul (ambele aplicaii sunt active n acelai timp). Orice schimbare din editorul schematic este transmis simulatorului care ne atenioneaz asupra modificrii i cere acordul utilizatorului pentru a face compilarea necesar pentru a putea relua simularea. 2.4.1 Simularea unei scheme Pentru a exemplifica funcionarea simulatorului editm schema unui bistabil de tip D (figura 3.1). Dup compilare, n Desing Browser selectm din lista de sus bistabil. n fereastra de forme de und adugm semnalele din schem (Intrare1, Intrare2 i Ieire) din meniu sau prin pictograma i apoi . asociem valori logice pentru cele 2 intrri, din meniu sau cu pictograma

32

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

FD

Intrare1 Intrare2

Iesire

Figura 3.1 Circuitul bistabil D Dac simulatorul este activat (Initialize Simulation) putem simula pai simpli (singulari) din schem apsnd unul dintre butoanele Run , sau Run For . Simulatorul arat strile logice ale Run Until 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).
FD

Intrare1 Intrare2

0 0

0 0

Iesire

Figura 3.2 Pini cu puncte de test (1)


FD

Intrare1 Intrare2

1 0

1 0

Iesire

Figura 3.3 Pini cu puncte de test (2) Rezultatele simulrii sunt afiate chiar pe pinii selectai (figura 3.2) att sub form de caractere alfanumerice ct i n culori diferite. Un eveniment de simulare este o schimbare a strii logice n oricare din punctele de test monitorizate. Culorile i simbolurile afiate pe punctele de test sunt prezentate n tabelul 3.1.

EDITORUL I SIMULATORUL ACTIVE-HDL (II)

33

Tabelul 3.1 Simbolurile i culorile punctelor de test din schem Simbol 1 0 X Z L H U Culoare Rou Verde Albastru nchis Galben Verde Rou Alb Gri Descriere high low nedeterminat nalt impedan sau neconectat activitate necunoscut low activitate necunoscut high neasignat sau necunoscut stare nedefinit sau indiferent

2.4.2 Bibliotecile de componente Bibliotecile de componente ale sistemului ACTIVE-HDL sunt stocate intern de ctre programul Library Manager i de baza de date asociat. Simbolurile schematice i modelele de IC (circuite integrate) corespunztoare, pachetele etc. sunt toate legate mpreun n cadrul bazei de date Library Manager. Pentru a vedea directoarele i coninutul acestor biblioteci, se selectez programul Library Manager din meniul View sau cu pictograma . Librria implicit a proiectului apare n Design Browser. 2.5. Gestiunea schemelor de proiect n ACTIVE-HDL se pot crea urmtoarele structuri de proiect: proiect mono-pagin; proiect multi-pagin; proiect ierarhic. Selectarea unei anumite structuri de proiect depinde de mrimea proiectului (numr de simboluri i de conexiuni), de scopul acestuia (pentru o plac sau un circuit integrat) i de standardele companiei. Urmtoarele seciuni 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 planei este 4434 (mrimea E). Marele avantaj al unei scheme mono-pagin este faptul c se

34

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

pot folosi conexiuni fizice pentru ntregul proiect i astfel urmrirea conexiunilor este mai uoar atunci cnd se creeaz o plac sau cnd se opteaz pentru modul de lucru ierarhic. Dezavantajele folosirii unor plane de mari dimensiuni sunt: Redesenarea se face ncet. O schem cu un numr mare de simboluri este mai greu de defilat pe ecran dect o schem cu mai puine componente; Sunt dificil de tiprit cu o imprimant laser. Planele mari trebuie tiprite 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. Cnd se creeaz o nou plan, aceasta devine automat parte a proiectului curent. Orice s-ar desena pe aceast plan, aparine aceleiai plci sau cip (circuit integrat) ca i prima plan. Pentru a face conexiuni ntre paginile schemei, trebuie executate conexiuni logice prin folosirea acelorai nume de net, terminale de intrareieire sau bus taps n toate planele schemei. De exemplu, introducnd terminalul de I/O numit CLOCK pe plana 1 i numele de net CLOCK pe plana 2, se vor conecta automat cele dou obiecte. Avantajele n cazul folosirii unor structuri de proiect multi-pagin sunt urmtoarele: Se pot folosi mrimi mici de plan, care sunt mai uor de tiprit cu imprimante laser i mai uor de mnuit n producie, testare sau alte departamente; Se poate lucra cu mrimi de proiect nelimitate, fr a se condensa schemele. Folosirea schemelor multi-pagin are urmtoarele dezavantaje: Erorile de conectare ntre plane sunt detectate doar atunci cnd este creat lista de componente (netlist); Toate numele de net sunt globale. Aceasta nseamn c se pot conecta accidental dou net-uri prin asignarea aceluiai nume. NOT: Toi specificatorii de referin pentru simboluri ntr-o schem multipagin trebuie s fie unici. ACTIVE-HDL asociaz automat numere unice. Dac se asociaz manual aceeai referin la dou dispozitive diferite, la crearea listei de componente se semnaleaz eroare.

EDITORUL I SIMULATORUL ACTIVE-HDL (II)

35

2.5.3 Schema ierarhic Datorit numrului mare de simboluri folosite n proiectele ASIC (n mod normal cteva 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 pori i bistabili, pentru a fi folosite pentru dispozitive PLD, FPGA sau ASIC. Pentru a simplifica schemele, proiectanii prefer s foloseasc componente de nivel nalt, care au o funcionalitate clar, de exemplu dispozitive echivalente TTL. Soluia 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 numrtorul TTL 4162 prin desenarea unei scheme macro doar cu pori i bistabili. Acest macro poate fi salvat n bibliotec i folosit de mai multe ori n proiecte. Cteva biblioteci FPGA sunt deja livrate cu un anumit numr de macro-uri ierarhice, astfel nct utilizatorul nu mai este nevoit s le creeze el nsui. 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 aceleai nume de semnal de cteva ori n macro-uri diferite, iar acestea nu vor fi automat conectate. Conexiunile dintre schemele ierarhice i restul proiectului sunt fcute prin terminale de intrare-ieire (I/O). Aceste terminale sunt convertite n simboluri de pini ierarhice, i, dup ce simbolul este plasat pe plana schemei, conexiunile pot fi fcute la aceti pini. Astfel se permite afiarea explicit a tuturor conexiunilor n schema ierarhic.

Figura 3.4 Structura de proiect ierarhic

36

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Deoarece doar semnalele prezentate ca i pini terminali trebuie conectate, trebuie plasate puine fire, simplificndu-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 urmtoarele: Simbolurile din biblioteci pot reprezenta blocuri funcionale de dimensiuni mari, implementate n detaliu la niveluri ierarhice inferioare. Examinnd schema de nivel nalt, proiectantul poate vedea structura general de proiectare fr a fi copleit de detaliile de implementare; Metodologiile top-down sau bottom-up, disponibile la proiecte ierarhice permit lucrul n grup. Fiecare seciune de proiectare poate fi repartizat unui proiectant diferit. Toate conflictele ntre diferitele seciuni de proiectare sunt eliminate deoarece interfeele sunt fcute prin pini simbolici definii explicit; Se pot folosi mai multe instanieri ale aceluiai macro. Dac aceeai schem ar fi trebuit s fie folosit ntr-o proiectare de tip flat, ar fi trebuit s fie duplicat pentru fiecare instaniere. Fiecare corecie la schema macro nseamn editarea tuturor apariiilor. Macro-ul ierarhic este modificat doar o singur dat pentru c toate apariiile sale vor fi automat modificate de ctre editorul de proiect ierarhic; Macro-urile pot fi folosite n proiecte multiple. Se poate proiecta un set de module reutilizabile care pot fi pstrate n macro-uri ierarhice fiind folosite ulterior n mai multe proiecte. Dezavantajele folosirii proiectelor ierarhice sunt urmtoarele: 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, depinznd de numrul 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

EDITORUL I SIMULATORUL ACTIVE-HDL (II)

37

convertite n identificatori unici. Metoda implicit de realizare a acestui lucru este de a aduga prefixul ierarhiei la fiecare nume ierarhic (de exemplu H50/H2/U30); Este imposibil separarea n macro-uri a seciunilor de circuit ale aceluiai dispozitiv. Seciunile 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 dorete adugarea sau eliminarea unor semnale din macro-ul ierarhic, simbolul pentru acel macro va fi schimbat. Aceasta poate duce la corecii ale conexiunilor n toate paginile schemei n care se folosete acel macro. Gestiunea proiectelor multi-pagin, cu principalele operaii 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. Desfurarea lucrrii 1. Realizai toate proiectele din lucrarea precedent folosind noile caracteristici prezentate n aceast lucrare. 2. Realizai o schem complex folosind pentru conectare magistrale n loc de fire simple. Cum se modific viteza de introducere i simplitatea proiectului? 3. Simulai schemele realizate: a) schemele cu conexiuni din fire singulare; b) schemele cu conexiuni prin magistrale. Care variant este mai avantajoas? 4. Creai, dup model, un proiect ierarhic, parcurgnd toi paii prezentai n Anexa 2. 5. Implementai toate schemele din lucrrile anterioare descompunndu-le n componente i lucrnd cu proiecte ierarhice i apoi i cu magistrale. Ce constatai referitor la uurina n proiectare i la eficien?

LUCRAREA NR. 4
CIRCUITE LOGICE COMBINAIONALE
1. Scopul lucrrii Se prezint circuitele logice combinaionale fundamentale. Se realizeaz circuite combinaionale pentru implementarea unor funcii booleene n form canonic i minimal. Se studiaz i se verific funcionarea unor circuite combinaionale: circuit care realizeaz incrementarea cu 1 a codului BCD, comparator de numere pe 2 bii, sumator de numere pe 2 bii. 2. Consideraii teoretice Circuitele logice combinaionale constituie clasa dispozitivelor numerice fr memorie, circuite ale cror ieiri, la un moment dat, sunt complet determinate de intrri. Ele sunt alctuite din arbori de pori logice elementare. Pentru realizarea lor sunt suficiente unul sau mai multe tipuri de pori logice elementare. 2.1 Logic pozitiv i logic negativ La implementarea funciilor logice cu dispozitive electronice, acestea opereaz cu tensiuni i nu cu nivele logice. Exist ntotdeauna dou interpretri ale oricrui tabel de adevr care descrie funcionalitatea unei pori, bazate pe logica pozitiv i respectiv pe logica negativ. Valorile de tensiune pot fi interpretate ca nivele logice numai prin prisma acestor convenii. Tensiunile de la ieire sunt fizic aceleai, numai interpretarea logic difer. Pn acum am presupus c "1" logic este reprezentat prin nivelul de tensiune mai mare dect "0" logic. Aceast convenie se numete logic activ pe 1 (active high) sau logic pozitiv. Cnd dorim activarea unui anumit semnal (de exemplu "deschide ua"), aplicm un nivel de tensiune mai mare (High) pe acea linie de semnal i acesta este interpretat ca "1" logic. Convenia opus este ns uneori preferabil, mai ales atunci cnd

CIRCUITE LOGICE COMBINAIONALE

39

folosim pori I-NU sau SAU-NU pentru implementarea logicii care iniiaz evenimentul (logic de validare) sau i mpiedic manifestarea sau apariia (logic de invalidare). Aceast convenie se numete logic activ pe 0 sau logic negativ. n acest caz, se folosete nivelul de tensiune cobort (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 adevr exprimat n termenii a dou valori de tensiune relative, High i Low. n interpretarea logicii pozitive, tabelul de adevr descrie o funcie I, dar n interpretarea logicii negative, obinem funcia SAU. Fiind dat o funcie n logic pozitiv, putem afla funcia sa echivalent n logic negativ aplicnd teoremele lui De Morgan:

A+ B = A B A + B = A B (4.1)
F Tabel de adevr al tensiunilor A low low high high B low high low high F low low low high

Logic pozitiv A 0 0 1 1 B 0 1 0 1 F 0 0 0 1

Logic negativ A 1 1 0 0 B 1 0 1 0 F 1 1 1 0

Figura 4.1 Interpretrile tabelului de adevr n logic pozitiv i negativ

Din cauza realelor posibiliti de confuzie, este de preferat s se evite folosirea amestecat a logicii pozitive i a celei negative ntr-un acelai proiect. ns acest fapt nu este ntotdeauna posibil, de aceea trebuie verificat ntotdeauna cu mare atenie convenia folosit pentru fiecare semnal n parte, pentru a evita situaii de genul conectrii unui semnal de ieire activ pe "1" la un semnal de intrare activ pe "0".

40

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

2.2 Funcii incomplet specificate

Pn acum am presupus c trebuie s definim o funcie de n variabile pentru toate cele 2n combinaii posibile ale variabilelor de intrare. n realitate, lucrurile nu stau ntotdeauna astfel. S considerm o funcie care are drept intrri 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 bii, folosind combinaiile 00002 (0) pn la 10012 (9). Celelalte combinaii, de la 10102 (10) pn la 11112 (15) nu vor fi niciodat ntlnite. Putem simplifica expresiile booleene presupunnd c funcia are n aceste cazuri un comportament indiferent (sau don't care). Tabelul 4.1 reprezint tabelul de adevr al unui circuit care realizeaz cod BCD incrementat cu 1. Fiecare numr BCD este reprezentat cu patru variabile booleene, A, B, C i D. Ieirea circuitului de incrementare este reprezentat de funcii booleene de patru variabile: W, X, Y i Z.
Tabelul 4.1 Tabelul de adevr al circuitului cod BCD incrementat cu 1
A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 W 0 0 0 0 0 0 0 1 1 0 X 0 0 0 1 1 1 1 0 0 0 Y 0 1 1 0 0 1 1 0 0 0 Z 1 0 1 0 1 0 1 0 1 0

Valorile funciilor sunt "" (indiferente sau don't care) pentru toate combinaiile 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 totui o anumit ieire pentru

CIRCUITE LOGICE COMBINAIONALE

41

cazurile indiferente. Folosind ntr-un tabel de adevr valoarea "X" sau "" nseamn c avem posibilitatea de a alege ntre a atribui valoarea 0 sau 1 logic respectivei ieiri din tabelul de adevr. n general urmrim s alegem acea valoare care va duce la cea mai simpl implementare fizic.
2.3 Simplificarea circuitului

Simplificarea circuitului este operaia de gsire a unui circuit care este funcional echivalent cu circuitul dat, dar care este mai simplu ntr-un anumit sens. Putem oricnd aplica legile algebrei booleene pentru a simplifica o expresie, dar atunci apar mai multe probleme. n primul rnd, nu exist algoritm care s determine dac soluia obinut este optim - atunci nseamn c nu tim cnd putem s ncetm s mai cutm soluii simplificatoare. n al doilea rnd, de multe ori este necesar s complicm expresiile nainte de a le putea simplifica. Este mpotriva firii umane de a cuta un "minim local" n sperana gsirii unei soluii globale mai bune, dar este exact ceea ce suntem nevoii s facem. n fine, este mult prea riscant s manipulm manual expresii booleene, mai ales de mari dimensiuni. Deoarece exist suficient de multe unelte software de simplificare a expresiilor booleene, de ce trebuie s nvm metode manuale, mai ales atunci cnd acestea sunt inaplicabile pentru probleme cu multe variabile (mai mult de ase)? Este totui necesar cunoaterea principiilor fundamentale utilizate n simplificare. Pe msur ce instrumentele CAD devin tot mai sofisticate, trebuie s avem o cunoatere mai profund a algoritmilor pe care ele le aplic pentru a le putea utiliza efectiv. i s nu uitm c instrumentele CAD au fost scrise tot de oameni i c ele nu funcioneaz ntotdeauna fr greeal! Trebuie s fim n msur s verificm rezultatul generat de aceste instrumente. Criteriul tradiional al simplificrii l constituie numrul de pori, iar n vederea satisfacerii lui au fost descoperite mai multe metode i algoritmi. ns odat cu apariia noilor tehnologii, adeseori nu numrul de pori este cel care conteaz att de mult, ci numrul sau lungimea firelor de cablaj. Acest aspect schimb radical procesul de simplificare. Nu vom insista aici asupra acestor criterii; vom prezenta n continuare cteva reguli simple de simplificare, care sunt cel mai des folosite i care sunt adeseori suficiente pentru proiecte mai mici.

42

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

a) introducerea de variabile auxiliare Aceast metod se mai numete i partajarea semnalelor. S lum de exemplu dou definiii: a = x y+ zw
b = x y + z w (4.2) Vom introduce variabilele auxiliare u i v definite astfel: u = x y
v = z w (4.3) Atunci:
a =u+v b = u + v ( 4 .4 ) b) aplicarea teoremelor algebrei booleene Practic, prin aplicarea teoremelor se obine un circuit echivalent (nu neaprat mai simplu). Trebuie ns inut cont de faptul c n termenii electronicii, porile I-NU sunt ntructva mai simple dect porile I i SAU, astfel nct uneori aplicarea teoremelor conduce ntr-adevr la un circuit mai simplu. c) eliminarea termenilor redundani Rezult n urma aplicrii urmtoarelor echivalene:

x=x x y+ x y = y

x+ x y = x+ y x ( x + y ) = x y (4.5)

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 rspndit n programele de simplificare automat a expresiilor booleene).

2.4 Aplicaii: implementarea funciilor logice


2.4.1 Funcia multidimensional cod BCD incrementat cu 1 Am prezentat n seciunea 2.3 funcia cod BCD incrementat cu 1 ca un exemplu de funcie cu combinaii indiferente. Pe baza tabelului de adevr 4.1 se genereaz diagrame Karnaugh de 4 variabile (figura 4.2):

CIRCUITE LOGICE COMBINAIONALE

43

AB CD 00 W 01 11 C 10

A 00 0 0 0 0 01 0 0 1 0 B A 00 0 1 0 1 01 0 1 0 1 B 11 X X X X 10 0 0 D X X Z 11 X X X X 10 1 0 D X X X

AB CD 00 01 11 C 10

A 00 0 0 1 0 01 1 1 0 1 B A 00 1 0 0 1 01 1 0 0 1 B 11 X X X X 10 1 0 D X X 11 X X X X 10 0 0 D X X

AB CD 00 Y C 01 11 10

AB CD 00 01 11 C 10

Figura 4.2 Diagramele Karnaugh ale funciei cod BCD incrementat cu 1


Urmrim s realizm cele mai mari grupri posibile de celule adiacente, profitnd de prezena locaiilor indiferente pentru a mri suprafaa sub-cuburilor. Obinem urmtoarele expresii pentru fiecare funcie de ieire unidimensional (W, X, Y i Z) din componena circuitului:
W = B C D + A D; Y = A C D + C D; X = B D + B C + B C D; Z = D.

(4.6)

2.4.2 Comparator de numere pe doi bii Se cere proiectarea unui circuit care primete la intrare dou numere pe doi bii, N1 i N2, i genereaz trei ieiri: F1 dac N1 = N2, F2 dac N1 < N2 i F3 dac N1 > N2. Vom nota biii constitueni ai numerelor N1 i N2 prin A, B i respectiv C, D. Primul pas n abordarea problemei este de a nelege foarte clar funcionalitatea circuitului. Vom construi aadar o schem bloc a circuitului i vom determina tabelele de adevr ale funciilor (figura 4.3):

44

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

A B C D A B C D N1 N2 F1 F2 F3 AB = CD AB < CD AB > CD

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

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

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

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

F1 F2 F3

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

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

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

Figura 4.3 Schema bloc i tabelul de adevr al comparatorului pe 2 bii


n continuare, pe baza tabelului de adevr, vom obine urmtoarele diagrame Karnaugh (figura 4.4) pentru ieiri:
AB CD 00 01 11 C 10 A 00 1 0 0 0 01 0 1 0 0 B 11 0 0 1 0 10 0 0 D 0 1 C 11 10 1 1 1 1 B 0 0 1 0 C AB CD 00 01 A 00 0 1 01 0 0 11 0 0 10 0 0 D 11 10 0 0 0 0 B 0 1 0 0 AB CD 00 01 A 00 0 0 01 1 0 11 1 1 10 1 1 D

F1

F2

F3

Figura 4.4 Diagramele Karnaugh pentru comparatorul pe 2 bii


Vom obine urmtoarele expresii pentru funcii: F1 = A B C D + A B C D + A B C D + A B C D

F1 = ( A C) ( B D) F2 = A B D + B C D + A C F3 = A C + A B D + B C D 2.4.3 Sumator de numere pe doi bii

(4.7)

Se cere proiectarea unui circuit care primete la intrare dou numere pe doi bii, N1 i N2, i genereaz la ieire un numr binar pe 3 bii, N3. i

CIRCUITE LOGICE COMBINAIONALE

45

aici, numrul N1 este reprezentat de biii A i B, N2 prin C i D, iar N3 prin funciile booleene X, Y i Z, unde X reprezint transportul (carry), iar Y i Z sunt biii propriu-zii constitueni ai rezultatului. Vom construi de asemenea o schem bloc a circuitului i vom determina tabelele de adevr ale funciilor (figura 4.5):
A B C D A B C D N1 N3 N2 X Y Z X Y Z

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

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

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

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

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

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

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

Figura 4.5 Schem bloc i tabel de adevr pentru sumatorul pe 2 bii

n continuare, pe baza tabelului de adevr, vom obine urmtoarele diagrame Karnaugh (figura 4.6) pentru ieiri:
AB CD 00 01 11 C 10 A 00 0 0 0 0 01 0 0 1 0 B 11 0 1 1 1 10 0 0 1 1 C AB CD 00 01 11 10 A 00 0 0 1 1 01 0 1 0 1 B 11 1 0 1 0 10 1 1 0 0 C AB CD 00 01 11 10 A 00 0 1 1 0 01 1 0 0 1 B 11 1 0 0 1 10 0 1 1 0

Figura 4.6 Diagramele Karnaugh pentru sumatorul pe 2 bii

46

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Vom obine urmtoarele expresii pentru funciile de ieire:


X = A C + B C D + A B D Z = B D+ B D = BD Y = B ( A C) + B ( A C D) sau : Y = A B C + A B C + A C D + A C D + A B C D + A B C D

(4.8)

Observm c putem reduce i mai mult expresiile finale dac utilizm operatorul SAU-EXCLUSIV. Acest lucru se vede foarte clar dac examinm 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 funciei Y:
A
A

Y1

Y2

Figura 4.7 Dou variante de implementare pentru funcia Y

CIRCUITE LOGICE COMBINAIONALE

47

3. Desfurarea lucrrii

1. Se vor realiza i se vor verifica schemele logice care implementeaz funciile W, X, Y i Z ale circuitului cod BCD incrementat cu 1. 2. Se vor implementa funciile F1, F2 i F3 constituente ale comparatorului de numere binare pe 2 bii, potrivit expresiilor obinute dup minimizare. Se va verifica funcionarea comparatorului. Pot s fie active mai multe semnale de ieire simultan? 3. Se vor implementa funciile X i Z constituente ale sumatorului de numere binare pe 2 bii, conform expresiilor obinute dup minimizare. Se va verifica funcionarea sumatorului. 4. Se va implementa funcia Y din cadrul aceluiai 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, parcurgndu-se toi paii succesivi prezentai la comparator i la sumator. Se vor implementa funciile constituente ale convertorului i se vor verifica din punct de vedere funcional. 6. Pentru problemele enunate anterior, se va realiza implementarea numai cu pori I-NU; cu pori SAU-NU; cu pori I-SAU-NU. Comparai implementrile respective. Care este implementarea cea mai avantajoas din punctul de vedere al preului, al numrului de pori i a suprafeei ocupate de circuitele integrate?

LUCRAREA NR. 5
CIRCUITE LOGICE COMBINAIONALE MSI
1. Scopul lucrrii Se studiaz i se verific funcionarea unor componente integrate pe scar medie (MSI Medium Scale Integration): demultiplexor, multiplexor, decodificator. Se studiaz i se verific funcionarea convertorului de cod din binar natural n cod Gray (binar reflectat). Se studiaz comportarea unor circuite combinaionale MSI conform descrierii funcionale din catalog: detector de paritate, codificator prioritar. 2. Consideraii teoretice Blocurile constitutive ale dispozitivelor numerice sunt uniti mai mari dect porile logice obinuite. n tehnologia MSI se ncadreaz circuitele integrate pe scar medie, i anume cele care cuprind 50-500 de tranzistori integrai. 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 obinuit circuitele logice elementare sunt necesare pentru a realiza adaptri sau interfari ale circuitelor integrate MSI i LSI (Large Scale Integration) standardizate, care nu satisfac ntotdeauna cu exactitate toate cerinele proiectului. Anumite combinaii ale unui numr relativ mic de pori logice reprezint funcii care se ntlnesc foarte des i constituie ceea ce am putea numi un al doilea nivel de circuite elementare - MSI. ntotdeauna forma ecuaiilor 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 nti sub form de blocuri MSI i LSI, iar momentul n care se trece la scrierea ecuaiilor logice trebuie amnat ct mai mult.

CIRCUITE LOGICE COMBINAIONALE MSI

49

2.1 Demultiplexorul (DMUX) Demultiplexarea este operaia de distribuire a unui semnal surs x la mai multe destinaii yi n funcie de valoarea unor semnale de selecie s. n mod evident, semnalul s denot un index, un numr. 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: s = s0 2 0 + s1 21 + s 2 2 2 + ...si 2 i + ... (5.1)

Funcia demultiplexorului o exprimm ca: yi = (if i = s then x else 0) yi = x ( i = s) Circuitul rezultant are dou ieiri i este prezentat n figura de mai jos, mpreun cu simbolul utilizat pentru demultiplexor.
Y1 = x s 0
X 1 Y1

Y0 = x s 0
0

Y0

S0

S0

Figura 5.1 Demultiplexorul 1:2

Pentru a obine un demultiplexor cu mai multe ieiri, se folosete tehnica de cascadare: un demultiplexor cu 2n ieiri poate fi ntr-adevr obinut prin cascadarea a n nivele de demultiplexoare cu 2 ieiri, cum se poate vedea n figura 5.2. Se vorbete despre un demultiplexor 1-la-2n.

50

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Y3 = x s1 s0

Y2 = x s1 s0
Y1 = x s1 s0

Y0 = x s1 s 0

S1

S0

Figura 5.2 Cascadarea demultiplexoarelor

Dac intrarea x este meninut constant la valoarea 1 logic, atunci ys = 1 i toate celelalte ieiri sunt 0. n acest caz, demultiplexorul acioneaz ca un decodificator al cuvntului de cod binar s (iar x este numit semnal de validare (enable)). Aadar, termenii de demultiplexor i decodificator sunt adeseori folosii ca echivaleni n practic. Exist mai multe tipuri de demultiplexoare disponibile: 1-la-2 (prezentat anterior), 1-la-4, 1-la-8 etc. (figura 5.3):
I A0 A1
A0 A1
A2

D M U X 1 :4

D M U X 1 :8

O0

O1

O2

O3

O0

O1

O2

O3

O4

O5

O6

O7

Figura 5.3 Demultiplexoare 1:4 i 1:8 2.2 Multiplexorul (MUX)

Circuitele de multiplexare sunt circuite logice combinaionale care permit trecerea datelor de la una din intrri spre o ieire unic. Un multiplexor este inversul demultiplexorului. Funcia sa const n a uni mai multe surse xi ntr-o destinaie unic y n funcie de semnalul de selecie s. Din acest motiv el mai este numit i selector. Funcia multiplexorului poate fi exprimat astfel: y = (if s then x1 else x0) y = x0 s + x1 s Circuitul rezultant are dou intrri i este prezentat n figura urmtoare, mpreun cu simbolul utilizat pentru multiplexor.

CIRCUITE LOGICE COMBINAIONALE MSI

51

X1 Y X0

X1

X0

S0

Figura 5.4 Multiplexor 2:1

Cascadarea se face n mod analog cu cea a demultiplexoarelor. Aceste circuite se gsesc i n form integrat, n capsule MSI. Prezentm n continuare un multiplexor cu 4 intrri: selectarea intrrilor se face cu 2 bii:
I0 A0 A1 I1 I2 I3

M U X 4 :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:
X3

X2

0 1 Y S0 1

X1

X0

S0

S1

Figura 5.6 Multiplexor 4:1 obinut prin cascadarea a trei multiplexoare 2:1

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

52

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Prezentm simbolul circuitului multiplexor MSI 4151 cu trei intrri de selecie (adres) care realizeaz funcia:
Y = C B A D 0 + C B A D 1 + C B A D 2 + C BA D 3 + C B A D 4 + C B A D 5 + CB A D 6 + CBA D 7

cnd ENABLE = 0. Pentru ENABLE = 1 ieirea circuitului este Y = 0.


D0 D1 D2 D3 D4 D5 D6 D7 A B C ENABLE W Y

4151

Figura 5.7 Multiplexor MSI 8:1 (4151) 2.3 Decodificatorul

Decodificatorul este un circuit logic combinaional cu funcia de a asigura o singur ieire a circuitului activ la un moment dat, pentru o combinaie (cuvnt de cod binar) corespunztoare a variabilelor de intrare. n general ieirile decodificatoarelor sunt active pe 0 logic, deoarece implementarea lor este realizat cu pori de tip I-NU. Vom studia ca exemplu decodificatorul BCD-zecimal, care decodific intrrile din cod BCD n zecimal. Circuitul MSI corespunztor este 442. n figura 5.8 este prezentat simbolul circuitului 442, iar n tabelul 5.1 tabelul de adevr.
A B C D 0 1 2 3 4 5 6 7 8 9

442

Figura 5.8 Decodificator MSI BCD-zecimal (442)

CIRCUITE LOGICE COMBINAIONALE MSI

53

Tabelul 5.1 Tabelul de adevr al decodificatorului BCD-zecimal Nr Intrri - BCD D C B A 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 Ieiri - zecimal 3 4 5 6 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

0 1 2 3 4 5 6 7 8 9
INVALID

0 0 1 1 1 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 1 1 1 1

2 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1

7 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1

8 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1

9 1 1 1 1 1 1 1 1 1 0 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 combinaional cu ieiri multiple care realizeaz conversia unui cuvnt dintr-un cod n alt cod. Se consider c la intrare se aplic un cuvnt n cod binar natural pe 4 bii B3B2B1B0, iar la ieire se obine cuvntul n cod Gray (binar reflectat), tot pe 4 bii, G3G2G1G0. n tabelul 5.2 se prezint funcionarea convertorului de cod din binar natural n binar reflectat (Gray).

54

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Tabelul 5.2 Tabelul de adevr al unui convertor de cod din binar n binar reflectat B3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B2 B1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 B0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 G3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 G2 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 G1 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 G0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0

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

Expresiile funciilor de ieire, dup minimizare, sunt:


G0 = B1 B0 + B0 B1 = B1 B0

G1 = B2 B1 + B1 B2 = B2 B1
G 2 = B3 B2 + B2 B3 = B3 B2

G3 = B3

(5.2)

Implementarea funciilor obinute pentru ieirile convertorului de cod se poate face cel mai simplu utiliznd pori logice SAU-EXCLUSIV, ca n figura 5.9.

CIRCUITE LOGICE COMBINAIONALE MSI

55

B3 B2 486

G3 G2

G1 B1 486 G0 B0 486

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 bii (8 bii n cuvntul de cod transmis + bitul de paritate), a crui comportare este descris n tabelul 5.3. Acest gen de circuite se folosete mai ales n transmisii de date, pentru verificarea corectitudinii transmisiei.
Tabelul 5.3 Tabelul de adevr al unui detector / generator de paritate Intrri EI de valori de 1 de la A la H Par 1 Impar 1 Par 0 Impar 0 X 1 X 0 Ieiri par impar

OI 0 0 1 1 1 0

1 0 0 1 0 1

0 1 1 0 0 1

n funcie de operaia efectuat, generare sau detectare de paritate, intrrile EI (pentru paritate par) i OI (pentru paritate impar) sunt folosite ca i bit de paritate (bitul 9). Lungimea cuvintelor a cror paritate se genereaz / verific poate fi extins prin cascadarea circuitelor 4180.

56

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

A B C D E F G H EI OI

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 funcionarea lui. Dac intrarea de activare EI = 0 i cel puin una dintre intrrile 0 - 7 este activ (nivel logic 0) atunci ieirile A2, A1, A0 iau valoarea corespunztoare codului celei mai prioritare intrri active (7 este intrarea cea mai prioritar). n cazul n care cel puin o intrare este activ, ieirea GS este 0. Dac EI = 0 i nici o intrare nu este activ, atunci ieirea EO = 0.
Tabelul 5.4 Tabelul de adevr al codificatorului prioritar Intrri 3 X 1 X X X X 0 1 1 1 Ieiri A1 A0 GS 1 1 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1 1 0

EI 1 0 0 0 0 0 0 0 0 0

0 X 1 X X X X X X X 0

1 X 1 X X X X X X 0 1

2 X 1 X X X X X 0 1 1

4 X 1 X X X 0 1 1 1 1

5 X 1 X X 0 1 1 1 1 1

6 X 1 X 0 1 1 1 1 1 1

7 X 1 0 1 1 1 1 1 1 1

A2 1 1 0 0 0 0 1 1 1 1

EO 1 0 1 1 1 1 1 1 1 1

CIRCUITE LOGICE COMBINAIONALE MSI

57

0 1 2 3 4 5 6 7 EI

A0 A1
A2
GS
EO

4148

Figura 5.11 Codificatorul prioritar integrat MSI 4148 3. Desfurarea lucrrii

1. Se realizeaz circuitul din figura 5.1 i i se verific funcionarea conform ecuaiilor. 2. Se realizeaz circuitele din figurile 5.2, 5.4 i 5.6 i se verific funcionarea lor. 3. Verificai comportarea circuitului multiplexor 8:1, 4151 (figura 5.7) i a circuitului decodificator BCD zecimal 442 (figura 5.8). 4. Verificai comportarea circuitului detector / generator de paritate 4180 i extindei domeniul la 16 bii (figura 5.10). 5. Verificai comportarea circuitului codificator prioritar 4148 (figura 5.11). 6. Implementai funcia:

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. Verificai practic corectitudinea implementrii. 7. Verificai practic comportarea convertorului de cod din codul binar natural n codul Gray (binar reflectat) (figura 5.9), conform tabelului de adevr i ecuaiilor.

LUCRAREA NR. 6
CIRCUITE LOGICE COMBINAIONALE COMPLEXE
1. Scopul lucrrii Se studiaz i se verific funcionarea unor componente integrate pe scar medie (MSI Medium Scale Integration) cu funcii mai complexe: multiplexor cu calea de date pe mai muli bii, sumator, unitate aritmeticologic, decodificator BCD 7 segmente. Se proiecteaz un sumator scztor avnd la baz un sumator i apoi se studiaz i se verific funcionarea lui. 2. Consideraii teoretice Prin gradul de integrare i funcionalitatea lor unele circuitele integrate MSI sunt mai complexe. Dintre acestea se utilizeaz des n aplicaii i de aceea este bine ca funcionarea lor s fie aprofundat: multiplexoare cu calea de date pe mai muli bii, sumatoare, uniti aritmetico-logice, decodificatoare BCD - 7 segmente. 2.1 Multiplexoare cu calea de date pe mai muli bii Multiplexoarele sunt circuite logice combinaionale care permit trecerea datelor de la una dintre intrri (I) spre o ieire unic (Y). Trecerea datelor se face n funcie de valorile semnalelor de pe intrrile de selecie (S). La multiplexoarele studiate n lucrarea 5, pe datele de intrare exista cte un singur bit, deci i pe ieirea multiplexorului se obinea un singur bit. Dac multiplexoarele se construiesc astfel nct cile de date i ieirea s permit existena mai multor bii, funcionarea lor de baz (ca aciune de multiplexare) nu se schimb, dar vom avea informaia vehiculat pe mai muli bii. n figura 6.1 este prezentat un multiplexor de tipul 4:1, cu calea de date pe 3 bii. Multiplexorul are 4 intrri, fiecare pe cte 3 bii, o ieire tot pe 3 bii i 2 intrri de selecie. Intrrile de selecie sunt doar pe cte 1 bit.

CIRCUITE COMBINAIONALE COMPLEXE

59

I3
3

I2
3

I1
3

I0

S1

S0

Fig. 6.1 Multiplexor 4: 1 cu calea de date pe 3 bii 2.2 Multiplexor MSI 4157 Un circuit integrat MSI care are funcia de multiplexare de tipul 2:1 i are calea de date pe 4 bii este circuitul 4157. Simbolul acestui circuit este prezentat n figura 6.2.
A1 A2 A3 A4 B1 B2 B3 B4 S Select G Strobe Y1 Y2 Y3 Y4

4157

Figura 6.2 Multiplexor 2: 1 pe 4 bii (4157) Intrrile de date ale multiplexorului sunt A1 A4 i B1 B4, iar ieirea este Y1 Y4. Intrarea de selecie este S. Multiplexorul este prevzut i cu o intrare de validare (enable) numit Strobe G, activ pe 0 logic. Dac aceast intrare are valoarea logic 1 multiplexorul este nefuncional, deci vom avea pe ieirea Y tot timpul valori logice 0, indiferent de valorile de pe intrrile A i B i de pe selecia S. Funcionarea multiplexorului 4157 este prezentat n tabelul de adevr prescurtat 6.1. Se observ din tabel c funcionarea nu difer de cea a unui multiplexor de tipul 2:1 care are calea de date doar pe 1 bit.

60

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Tabelul 6.1 Tabelul de adevr al multiplexorului MSI 4157 Intrri Select A S X X L L L H H X H X Ieire Y L L H L H

Strobe G H L L L L

B X X X L H

2.3 Sumator MSI 483 Sumatorul integrat 483 este un circuit combinaional de tip MSI care permite adunarea cu transport a 2 numere binare exprimate fiecare pe 4 bii. Simbolul sumatorului este prezentat n figura 6.3.
A1 A2 A3 A4 B1 B2 B3 B4 C0 1 2 3 4
C4

483
Figura 6.3 Sumator pe 4 bii (483) Sumatorul pe 4 bii are ca intrri 2 seturi de cte 4 bii, A1 A4 i B1 B4 pentru operanzi (numerele care se adun), iar rezultatul nsumrii apare pe ieirile 1 4. El are i o intrare de bit de transport C0 (Carry In) de la rangul anterior i o ieire de transport C4 (Carry Out) ctre rangul superior. Operaia de adunare se realizeaz conform tabelului 6.2.

CIRCUITE COMBINAIONALE COMPLEXE

61

Tabel 6.2 Operaia de adunare la circuitul 483 Operaie Adunare Descriere (C4, 4, 3, 2, 1) = (A4, A3, A2, A1) + + (B4, B3, B2, B1) + (0,0,0,C0)

Prezena biilor de transport permite ca acest sumator s se poat utiliza n cascadare, pentru obinerea unor scheme de adunare de numere binare cu numr mai mare dect de 4 bii. 2.4 Sumator-scztor pe 4 bii n sistemele numerice sunt frecvente operaiile de adunare i scdere. De aceea este util s existe circuite care s asigure att adunarea ct i scderea numerelor binare. Conform teoriei referitoare la reprezentarea numerelor ntregi cu semn n sistemul de numeraie Complementul lui 2, scderea a dou numere binare poate fi privit ca i o adunare cu cel de-al doilea numr inversat plus 1 (vezi Anexa 1). Atunci, pentru a realiza un sumator-scztor pe 4 bii avem nevoie de un sumator pe 4 bii de tipul 483 i de circuite logice adiionale care s permit ca la momente diferite de timp s se efectueze operaia de adunare sau de scdere. Este nevoie de asemenea de un semnal exterior, pe care l vom nota Sel, pentru a face selecia ntre momentul n care sistemul face adunarea celor 2 numere binare pe 4 bii i momentul n care se face scderea celor dou numere. Operaiile se efectueaz conform tabelului 6.3. Tabel 6.3 Operaiile pentru sumator-scztor Operaie Adunare Scdere Descriere (C4, 4, 3, 2, 1) = (A4, A3, A2, A1) + + (B4, B3, B2, B1) + (0,0,0,0) (C4, 4, 3, 2, 1) = (A4, A3, A2, A1) + + (B4, B3, B2, B1) + (0,0,0,1) Sel 0 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 selecie Sel. Mai rmne s rezolvm negarea biilor celui de-al doilea operand (B). Pentru aceast operaie ne vom folosi de modul de funcionare al unei pori logice SAU-EXCLUSIV

62

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

486. Dac valorile 1 logic, respectiv 0 logic sunt introduse ntr-o poart SAU-EXCLUSIV cu oricare dintre biii B, obinem:
B 1 = B i B 0 = B

Cum semnalul Sel folosit pentru selectarea operaiei are valoare logic 0 pentru adunare i 1 pentru scdere, legarea lui la porile SAUEXCLUSIV asigur valori adevrate, respectiv negate pentru biii de date B. Figura 6.4 prezint schema circuitului sumator-scztor pe 4 bii.
A 4 A 3 A2 A1 Sel B4 B3 B2 B1

7486 Y4 Y3 Y2 Y1 C0 7483

4 3 2 1 C4 Figura 6.4 Sumator-scztor pe 4 bii


2.5 Unitate aritmetico-logic MSI 4181 O unitate aritmetico-logic (ALU) este un circuit logic combinaional care efectueaz att funcii aritmetice ct i funcii 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.

CIRCUITE COMBINAIONALE COMPLEXE

63

A0 A1 A2 A3 B0 B1 B2 B3 S0 S1 S2 S3 M

F0 F1 F2 F3

A=B G P Cn+4

Cn

4181

Figura 6.5 Unitate aritmetico-logic (4181) Funcionarea unitii aritmetico-logice este descris n tabelul de adevr 6.4. Operaiile aritmetice sunt exprimate n notaiile de reprezentare a numerelor binare n complement fa de 2. Tabel 6.4 Funcionarea unitii aritmetico-logice 4181 Selecii S3 L L L L L L L L H H H H H H H H S2 L L L L H H H H L L L L H H H H S1 L L H H L L H H L L H H L L H H S0 L H L H L H L H L H L H L H L H Logice M=H Ieiri Aritmetice M=L A minus 1 AB minus 1

A AB A+ B logic 1 A+ B B A~B A+ B AB A B B A+B logic 0 AB AB A

AB minus 1 minus 1 A plus ( A + B ) AB plus ( A + B ) A minus B minus 1

A+ B A plus (A + B) A plus B AB plus (A + B) A+B A + A (shift) AB plus A


AB minus A A

64

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Operanzii unitii aritmetico-logice se aplic pe intrrile A i B. Pentru a selecta care tip de operaii se efectueaz (aritmetice sau logice) se folosete un semnal de control M (mode control). Dac valoarea lui M este 1 logic, atunci se efectueaz operaii logice asupra biilor individuali. Dac valoarea lui M este 0 logic, atunci se execut operaii aritmetice pe 4 bii. Semnalele de selecie (S) stabilesc care dintre operaii se execut. La operaiile aritmetice exist mai multe semnale folosite ca intrare (Cn) sau ca ieiri de transport: P (propagare), G (generare), Cn+4). Utiliznd semnalele de transport circuitele pot fi legate n cascad, pentru a permite mrirea numrului de bii asupra crora se efectueaz operaiile aritmetice. Ieirea 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 bii. 2.6 Decodificator BCD - 7 segmente Pentru afiarea informaiei binare n zecimal se utilizeaz afioare 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.
a f g e d c b

Figura 6.6 Afior 7 segmente

Figura 6.7 Combinaiile binare pe 4 bii afiate pe 7 segmente

CIRCUITE COMBINAIONALE COMPLEXE

65

Afioarele pot fi construite cu anod sau cu catod comun. Fiecare segment este comandat separat de ctre o intrare a afiorului. Valoarea logic (0 sau 1 logic) pe care o aplicm pe cele 7 segmente i pe punctul zecimal, le va aprinde sau stinge, n funcie de tipul afiorului. Informaia binar pe 4 bii, codificat n BCD, se poate transforma n informaie care s comande cele 7 segmente, dac se utilizeaz un decodificator adecvat. Circuitele integrate care asigur funcia logic de decodificare sunt circuitele MSI 446 i 447, care au ieirile active pe 0 logic pentru a comanda afioarele 7 segmente cu anod comun. Pentru afioarele 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 a
b c

d
e
f g

BI/RBO

447
Figura 6.8 Decodificator BCD - 7 segmente (447) Dac intrarea LT ia valoarea 0 logic, atunci toate segmentele afiorului sunt comandate cu valoarea 0 logic. BI/RBO are rol dublu, de intrare sau ieire. Dac RI/RBO primete valoarea 0 logic, atunci, indiferent de valorile celorlalte intrri, ieirile afiorului vor fi comandate cu 1 logic. Dac intrrile RBI i A1 A4 au valoarea 0, atunci ieirile vor avea valoarea 1 logic i BI/RBO devine 0 logic.

66

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

3. Desfurarea lucrrii 1. Verificai pe panourile didactice comportarea circuitului multiplexor 4157. 2. Verificai funcionarea decodificatorului BCD-7 segmente pe afiorul 7 segmente de pe panourile didactice. 3. Verificai pe panourile didactice comportarea circuitului sumator 483. Realizai cascadarea a dou circuite de acest tip. 4. Realizai pe panourile didactice un sumator-scztor pe 4 bii conform schemei din figura 6.4. 5. Verificai n ACTIVE-HDL toate funciile unitii aritmetico-logice 4181. 6. Realizai i verificai funcionarea n ACTIVE-HDL a unui sumatorscztor pe 8 bii folosind rezultatele de la punctul 4.

LUCRAREA NR. 7
SINTEZA CIRCUITELOR LOGICE COMBINAIONALE CU DISPOZITIVE LOGICE PROGRAMABILE
1. Scopul lucrrii Se urmrete familiarizarea cu tipurile de dispozitive logice programabile existente (clasificarea lor, avantajele i dezavantajele fiecrora). Se prezint cteva exemple de dispozitive PAL/PLA i se va proiecta un circuit logic combinaional, n mai multe variante, utiliznd un dispozitiv logic programabil (PLD). Se studiaz apoi modul de implementare i simulare a circuitelor logice combinaionale utiliznd instrumentele software ACTIVE-HDL i XILINX, n ideea unei implementri independente de dispozitiv sau cu FPGA. 2. Consideraii teoretice 2.1 Noiuni generale Dispozitivele logice programabile PLD (Programmable Logic Devices) fac parte din familia circuitelor numerice ASIC (Application Specific Integrated Circuit - circuite integrate specifice aplicaiei). Ele se bazeaz pe circuite logice combinaionale (CLC) formate din dou nivele logice, dintre care cel puin unul este programabil. Un PLD este format din: o matrice de pori I; o matrice de pori SAU. Cel puin una din aceste dou matrice este programabil, programarea realizndu-se de fapt la nivel de conexiune. Deoarece, n cazul PLD-urilor reale, numrul intrrilor porilor logice este extrem de mare (ajungnd pn la 60...80), reprezentarea lor n forma clasic este greoaie. Se introduce deci un sistem de notaii specific. Intrrile porilor sunt simbolizate printr-o linie comun, care este intersectat de liniile semnalelor de intrare. Legturile fixe sunt simbolizate prin punct, cele programabile prin cruce (figura 7.1):

68

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

ABC A B C Legtur fix

A B C

Legturi programabile (fuse)

Figura 7.1 Notaii utilizate pentru reprezentarea circuitelor PLD 2.2 Metodologia proiectrii cu circuite PLD Oricare ar fi destinaia unui circuit logic programabil, n decursul proiectrii trebuie s se parcurg urmtoarele etape: determinarea configuraiei de mapat n PLD; programarea efectiv a acestei configuraii. 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 aplicaii de complexitate mic i medie cele mai indicate sunt circuitele programabile pe baz de pori logice. Acestea au avantajul preului sczut fa de FPGA-uri (Field Programmable Gate Array) - care sunt circuite ce au la baz o matrice de celule logice + o reea complex de interconectare - i al utilizrii mai simple. FPGA-urile sunt adecvate mai ales pentru proiecte mari i complexe. De multe ori se pot utiliza cu succes n aplicaii pentru nlocuirea microprocesoarelor. Un domeniu n care crete vertiginos numrul implementrilor cu FPGA este de exemplu cel al microcontrolerelor. Pentru a uura 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 funcie 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.

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 cunoatem structura intern a acestor circuite. Exist la ora actual urmtoarele tipuri de dispozitive PAL: 1. Circuit de baz combinaional. Un numr n de pori I sunt legate la porile SAU. n cazul ndeplinirii condiiilor logice ieirea devine 1 logic. Numrul porilor I conectate la porile SAU este variabil, chiar i n interiorul aceluiai dispozitiv. 2. Circuit de baz combinaional cu ieiri inversate. Este asemntor cu varianta 1, cu deosebirea c ieirile sunt active pe 0 logic. 3. Circuit de baz combinaional cu ieiri complementare. n acest caz sunt disponibile att ieirile active pe 0 logic ct i cele active pe 1 logic. 4. Circuit de baz combinaional cu intrri/ieiri programabile i cu reacie invers. Varianta 1 este completat cu buffere tri-state de ieire. Controlul unui buffer este efectuat direct de ctre o poart I din matricea de intrare. Ieirea, mpreun cu valoare ei negat, este rerutat pe coloana corespunztoare a matricei de intrare. Dac bufferul de ieire este n starea activ, pinul corespunztor este ieire, iar dac bufferul este invalidat, pinul se poate folosi ca intrare (prin calea de reacie). Aceast soluie mrete considerabil flexibilitatea circuitului (figura 7.2):

OE

Buffer
PIN I/O

Figura 7.2 Schema de principiu a circuitelor PAL cu intrri-ieiri programabile i cu reacie invers 5. Ieire prin registru cu reacie invers programabil. Se bazeaz pe un circuit combinaional a crui ieire este conectat la intrarea unui bistabil D. Una dintre ieirile bistabilului este rerutat n matricea de intrare, cealalt este legat la un buffer tri-state de ieire. Semnalul de validare a bufferului i semnalul de ceas al bistabilului trebuie furnizate din exterior. Aceast variant este util n implementarea reelelor secveniale sincrone (figura 7.3):

70

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

D Feedback Intrri D Feedback

CLK Q

Buffer Ieire 3-state OE

CLK Q

Buffer 3-state

Ieire OE

Figura 7.3 Schema de principiu a circuitelor PAL cu ieire prin registru, cu reacie invers programabil 6. Ieire prin registru i prin poart XOR cu reacie invers programabil. n acest caz dou circuite de baz combinaionale sunt cuplate la intrarea unui bistabil D prin intermediul unei pori XOR. Celelalte aspecte sunt asemntoare cu varianta 5. Folosirea porii XOR ofer posibiliti suplimentare: comparare de funcii, generarea de sume logice etc. (figura 7.4):

CLC1 Feedback Intrri

CLC2

CLK Q

Buffer 3-state

Ieire

OE

Figura 7.4 Schema de principiu a circuitelor PAL cu ieire prin registru i prin poart XOR, cu reacie invers programabil 7. Ieire cu reacie invers prin pori. Difer de varianta 6 prin faptul c n calea de reacie se intercaleaz o reea de pori adiionale, lrgind astfel domeniul de aplicare al circuitului.

SINTEZA CLC CU PLD

71

2.4 Notaia circuitelor integrate de tip PAL Fiecare tip de circuit PAL este identificat printr-un numr care i exprim caracteristicile. Vom prezenta notaia folosit de Texas Instruments i apoi cea folosit de Monolithic Memories, putndu-se astfel remarca similitudinile dintre notaii i faptul c aproape c se poate vorbi despre o notaie standard.
TIB Prefix
TIB = PAL bipolar TIC = PAL CMOS TIE = PAL ECL PAL = Programmable Logic Array PAD = Programmable Address Decoder PSL = Programmable Sequence Logic PSG = Programmable Sequence Generator

PAL

16

-15

Identif. familiei produsului

Numrul de intrri ale matricii Tipul configuraiei de ieire


R = ieire prin registru L = ieire activ pe 0 V = ieire variabil / de tip macrocell

Numrul de ieiri ale configuraiei Indicator de performan


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

Domeniul de temperatur
C = comercial (0C-70C) M= militar (-55C-125C)

Tipul capsulei

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

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

Figura 7.5 Notaia circuitelor PAL Texas Instruments Prefixul este specific numai circuitelor Texas Instruments.

72

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

PAL Identif. familiei produsului

16

-2

883B

P01234

PAL = Programmable Logic Array HAL = Hard Array Family

Numrul de intrri ale matricii Tipul configuraiei de ieire


R = ieire prin registru L = ieire activ pe 0 H = ieire activ pe 1

Numrul de ieiri Vitez / alimentare

C = ieiri complementare X = ieiri prin registru cu XOR A = ieiri prin registru cu pori adiionale

A = vitez mare -2 = 1/2 power -4 = 1/4 power A-2 = vitez mare i 1/2 power C = 0C-70C M = -55C-125C

Domeniul de temperatur Capsula

N = Plastic Dip J = Ceramic Dip F = Flat Pack C = Leadless Chip Carrier 883B = MIL-STD - 883, metoda 5004 & 5005, nivel B 883C = MIL-STD - 883, metoda 5004 & 5005, nivel C B = MIL-STD - 883, metoda 5004 echivalent C = MIL-STD - 883, metoda 5004 echivalent

Optional HI-REL Processing

Bit Pattern Number

Figura 7.6 Notaia circuitelor PAL Monolithic Memories 2.5 Exemple de circuite PAL Cel mai uor mod de a nelege clasificarea tipurilor de PAL existente este de a considera dou exemple semnificative care ilustreaz un circuit PAL cu ieire prin registru (tipul 5 din clasificare) i respectiv un circuit PAL cu ieire prin registru i cu poart XOR (tipul 6 din clasificare), acestea fiind dou dintre cele mai complexe dispozitive existente pe pia.

SINTEZA CLC CU PLD

73

INCREME T N 0 32 64 96 128 160 192 224 0 4 8 12 16 20 24 28

FIRST FUSE NUMBE S R

19

2 256 288 320 352 384 416 448 480 3 512 544 576 608 640 672 704 736 4 768 800 832 864 896 928 960 992 5 1024 1056 1088 1120 1152 1184 1216 1248 6 1280 1312 1344 1376 1408 1440 1472 1504 7 1536 1568 1600 1632 1664 1696 1728 1760 8 1792 1824 1856 1888 1920 1952 1984 2016 9

Q Q

18

Q Q

17

Q Q

16

Q Q

15

Q Q

14

Q Q

13

12

11

Figura 7.7 Exemplu de PAL cu ieiri prin registru

74

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

IN CR EM EN T 1 FIR ST FU SE N U M BER 0 40 80 120 0 4 8 12 16 20 24 28 32 36 D Q Q 23

2 160 200 240 280 3 320 360 400 440 4 480 520 560 600 5 640 680 720 760 6 800 840 880 920 7 960 1000 1040 1080 8 1120 1160 1200 1240 9 1280 1320 1360 1400 10 1440 1480 1520 1560 11 IN CR EM EN T 0 4 8 12 16 20 24 28 32 36 N O TE: FU SE N U M BER= FIR ST FU SE N U M BER IN CR EM EN T 14 15 16 D Q Q 17 18 19 20 21 22

D Q Q

D Q Q

D Q Q

D Q Q

D Q Q

D Q Q

D Q Q

D Q Q

13

Figura 7.8 Exemplu de PAL cu ieiri prin registru i cu pori XOR

SINTEZA CLC CU PLD

75

2.6 Implementarea CLC cu PLD i FPGA Etapele care trebuie parcurse n decursul proiectrii cu PLD sau FPGA variaz n funcie de tipul dispozitivului fizic n care se va face implementarea i de firma productoare a instrumentelor software de susinere a acestei proiectri. Totui, se pot distinge, n linii mari, urmtorii pai care se regsesc n toate abordrile 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 ecuaii; a3) prin tabele de adevr etc. b) simularea proiectului, care poate fi: b1) funcional (ne intereseaz doar aspectele funcionale i le neglijm pe cele temporale); b2) temporal (ne intereseaz ntrzierile de propagare a semnalelor etc.); b3) a defectelor (impunem n mod artificial anumite defecte n proiect i urmrim s vedem dac acestea se reflect n ieirile pe care le obinem n acest caz). c) implantarea proiectului n dispozitivul programabil ales. De obicei, revenirile n diverse etape ale proiectrii sunt permise (aceast flexibilitate fiind unul dintre principalele avantaje ale utilizrii instrumentelor software). n cazul utilizrii instrumentelor software pentru proiectarea circuitelor logice combinaionale, exist posibilitatea implementrii bazate pe pori i cea a implementrii n care se folosesc obiecte software echivalente cu circuitele integrate MSI, acestea din urm fiind modelate n biblioteci specifice fiecrui pachet de programe (de exemplu, n mediul ORCAD, circuitele TTL se gsesc ntr-o bibliotec diferit de circuitele MOS etc.). Majoritatea acestor instrumente software permit optimizarea proiectului dup introducerea sa.

76

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

3. Desfurarea lucrrii 1. Implementai un circuit logic combinaional care s realizeze funcia unui convertor de cod din cod 2421 n cod binar natural, cu circuite TTL convenionale i apoi cu PAL. Ce dispozitiv PAL vei alege? Care sunt criteriile folosite pentru efectuarea acestei alegeri? Care este raportul reducerii circuitelor integrate? Ce remarcai privitor la procesul de proiectare prin cele dou metode alternative? 2. Memoriile PROM sunt circuite programabile la care matricea I este fix. n cazul implementrii cu PROM-uri mai este necesar minimizarea funciilor logice? Dar n cazul implementrii cu PAL/PLA? 3. Implementai toate schemele din figurile din lucrare n ACTIVE-HDL i realizai simularea acestora.

LUCRAREA NR. 8
CIRCUITE BASCULANTE BISTABILE
1. Scopul lucrrii Se studiaz caracteristicile unor bistabile uzuale, realizate cu pori din familia circuitelor integrate TTL. Se verific funcionarea unor bistabile integrate i se studiaz metode de modificare a tipului unui bistabil folosind circuite combinaionale adiionale. Se construiesc i se simuleaz bistabile uzuale cu ajutorul ACTIVE-HDL comparndu-se metodele de implementare specifice, din punctul de vedere al eficienei, vitezei i costului. 2. Consideraii teoretice 2.1 Noiuni introductive Bistabilul (celula fundamental de memorie binar) este un circuit cu dou stri distincte, care pstreaz o informaie format dintr-un singur bit. Realizarea electronic a elementului de memorie binar o reprezint circuitul bistabil. Deci circuitele basculante bistabile (CBB) au dou stri stabile, trecerea dintr-o stare n alta (comutarea) fcndu-se numai la aplicarea unei comenzi din exterior. Ele sunt de fapt automate de ordinul 1 (se obin din automate de ordin 0 prin introducerea legturii inverse). Un bistabil poate memora un timp nedefinit informaia binar i n acelai timp starea sa poate fi citit n orice moment. El are dou ieiri: Q i complementul su Q . Precizarea strii n care se afl bistabilul la un moment dat (0 sau 1) se face relativ la valoarea ieirii Q n logica pozitiv. Bistabilele pot fi sincrone sau asincrone. Un bistabil este de tipul sincron dac are comanda condiionat de un semnal de sincronizare numit tact sau ceas i este de tipul asincron dac semnalele de comand sunt aplicate pe intrri la momente de timp aleatoare, aceasta fcnd ca starea circuitului s depind de ordinea n care se schimb semnalele. La bistabilul sincron, n afar de intrrile de condiionare a strii urmtoare, putem ntlni intrri de forare care sunt asincrone, pentru

78

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

poziionarea pe 0 sau 1. Aceste intrri asincrone sunt prioritare fat de intrrile sincrone. Vom prezenta n continuare pe larg modul de construcie a bistabilelor.

2.2 Bistabile realizate cu pori


a) Bistabilul RS asincron Circuitul are dou intrri notate cu R (reset) i S (set) i dou ieiri notate cu Q i Q . Schema bistabilului corespunztor, implementat cu pori SAU-NU este prezentat n figura 8.1:
R

Q S

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 intrri. Pentru bistabilul RS asincron condiia de funcionare normal este S R = 0. Notm cu Qn i Qn+1 starea bistabilului la momentul "n" respectiv la momentul urmtor. Tabelul pentru definirea ecuaiei bistabilului RS asincron este:
Tabelul 8.1 Tabelul de adevr al bistabilului RS asincron

S 0 0 1 1

R 0 1 0 1

Qn+1 Qn 0 1 *

CIRCUITE BASCULANTE BISTABILE

79

Se observ c ultima combinaie nu este posibil (nu putem seta i reseta simultan bistabilul). Rezult egalitile:

Qn +1 = R + Q n = R Qn
Qn +1 = S + Qn = S Qn (8.1)

b) Bistabilul RS sincron Bistabilul RS sincron se obine din cel asincron prin adugarea unor pori suplimentare, cu scopul de a obine un rspuns al bistabilului numai n prezena unui impuls de ceas (tact). Att timp ct semnalul de ceas este 0 logic, bistabilul pstreaz starea i ia n considerare intrrile R i S doar cnd ceasul trece pe 1 logic. Bistabilul RS sincron realizat cu pori I-NU este prezentat n figura 8.2:
S Q CLK

Q R

Figura 8.2 Bistabilul RS sincron

Utilizarea bistabilelor n aplicaii impune cunoaterea valorilor ieirilor acestora. Din acest motiv se definete tabelul de excitaie, care arat cum trebuie s fie intrrile pentru a realiza o anumit tranziie pe ieiri.
Tabelul 8.2 Tabelul de excitaie al bistabilului RS sincron

Qn 0 0 1 1

Qn+1 0 1 0 1

S 0 1 0 X

R X 0 1 0

Rmn valabile tabelele de adevr de la RS asincron.

80

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Putem avea la bistabilele sincrone i intrri RS asincrone, care intervin la ultimul nivel de pori fornd 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

D
CLK

CLK R
Q
D

Figura 8.3 Bistabilul D realizat cu pori i simbolul su Tabelul 8.3 Tabelul de excitaie al bistabilului D sincron

D 0 1

Qn+1 0 1

Ecuaiile caracteristice ale bistabilului D sunt: Qn +1 = D


Qn +1 = D (8.2)

Bistabilele D ntrzie data de la intrare cu un impuls de ceas. Sunt cele mai rspndite bistabile folosite n realizarea registrelor de date. Cnd semnalul de ceas este n 1 logic, ieirea ia aceeai valoare ca i intrarea. La trecerea semnalului de ceas din 1 n 0 ieirea rmne n aceeai stare, pn la revenirea ceasului n 1. Schema intern a unui bistabil D acionat de frontul pozitiv al ceasului este reprezentat n figura 8.4 (circuitul integrat 474). Efectul de comutare (basculare) are loc n momentul tranziiei semnalului de ceas, dup care ieirea este blocat.

CIRCUITE BASCULANTE BISTABILE

81

400

400

CLK

400 410 400 Q

D 400

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

d) Bistabilul JK sincron Pentru a elimina neajunsul menionat la bistabilul RS asincron, care conduce la stri nedeterminate pentru condiia R = 1 i S = 1, se introduc reacii suplimentare, obinndu-se bistabilul JK sincron.
Tabelul 8.4 Tabelul de adevr al bistabilului JK sincron

J 0 0 1 1

K 0 1 0 1

Qn+1 Qn 0 1
Qn

i la acest bistabil intrrile S i R sunt prioritare fiindc sunt asincrone.

82

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

S J

CLK

Figura 8.5 Bistabilul JK sincron

Bistabilul JK sincron se obine din bistabilul RS sincron cu condiiile R = KQ i S = JQ. n momentul sosirii impulsului de comand, bistabilul i schimb starea conform tabelului su de adevr. Dac semnalul de ceas persist la valoarea logic 1, dup stabilirea noii stri urmeaz o alt schimbare a strii, sau altfel spus, bistabilul va intra n oscilaie atta timp ct 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 pori i mai mic dect timpul de propagare a semnalului prin 2 nivele de pori. Problema oscilaiilor este eliminat la bistabilele de tip JK master-slave, care au n structur 2 celule de memorie.
473
J CLK K Q CL Q

Figura 8.6 Simbolul bistabilului JK sincron (integratul 473)

Bistabilele JK master-slave comut pe frontul descresctor al semnalului de ceas (cnd ceasul trece din 1 n 0 logic).

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 aceeai deficien referitoare la oscilaii ca i bistabilul JK. Bistabilul T se obine din JK sincron cu J legat la K (figura 8.7). Bistabilul T realizeaz divizarea de frecven cu factorul 2.

S CLK

Q R

Figura 8.7 Obinerea bistabilului T Tabelul 8.5 Tabelul de adevr al bistabilului T

T 0 1

Qn+1 Qn
Qn

Ecuaiile caracteristice ale bistabilului T sunt:


Qn +1 = T Qn
Qn +1 = T Qn (8.3)

Bistabilul T este foarte utilizat n sinteza numrtoarelor. f) Bistabilul JK master-slave (stpn-sclav) Inconvenientul artat la bistabilele JK i T este eliminat de ctre bistabilul JK master-slave.

84

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

J
CLK

Q K 4 2 6 8

MASTER

SLAVE

Figura 8.8 Bistabilul JK Master-Slave

Aceast soluie conduce la comutarea bistabilului pe frontul posterior (descendent) al impulsului de ceas. n esen un bistabil masterslave este alctuit din dou bistabile sincrone i eventuale reacii suplimentare. Primul bistabil denumit master (stpn) citete informaia dup frontul anterior al impulsului de comand, iar cel de-al doilea denumit slave (sclav) - ale crui ieiri corespund cu ieirile bistabilului luat n ansamblu - comut pe frontul posterior al impulsului de comand. Revenind la schema dat, identificm bistabilul master prin porile 3 i 4 i bistabilul slave prin 7 i 8. Att timp ct impulsul de comand se afl la valoarea logic 0, ieirile porilor 1 i 2 sunt la valoarea logic 1, ceea ce mpiedic semnalul de pe J, respectiv K, s acioneze asupra bistabilului master. Dup tranziia 01 a impulsului de comand, informaia este citit de bistabilul master. n acelai timp porile 5 i 6 sunt blocate i prin aceasta bistabilul master este izolat de slave, datorit semnalului logic 0 aplicat pe intrrile acestor pori prin intermediul inversorului 9. Dup tranziia 10 porile 1 i 2 devin din nou blocate, adic bistabilul master este izolat de exterior, iar porile 5 i 6 sunt blocate, ceea ce permite bistabilului slave s citeasc informaia nscris n master. Reaciile de la slave la master asigur funcionarea de tip JK conform celor menionate anterior. De reinut c principiul master-slave poate fi aplicat oricrui tip de bistabil.
2.3 Bistabile integrate

Caracteristicile de funcionare ale bistabilelor studiate mai sus se regsesc n diferite bistabile integrate. Dintre acestea enumerm: 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

CIRCUITE BASCULANTE BISTABILE

85

mai importante de evaluare a performanelor acestor circuite este numrul 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 pori), n funcie de tipul de bistabil dorit (JK, D, T, RS etc.). Cele dou metode pot fi folosite i n proiectarea susinut de instrumente software. Aceste instrumente pot alege una dintre cele dou variante n faza de optimizare a proiectului, mapnd un bistabil din proiect ntr-un bistabil existent n capsula care conine circuitul programabil sau construindu-l pe baza matricei de pori I i a matricei de pori SAU.
2.4 Modificarea tipului unui bistabil

Transformarea (conversia) unui bistabil JK ntr-un bistabil D sau T se face innd cont de ecuaiile caracteristice (figura 8.9):
D
J

S
CLK

S
CLK

Q R

Q R

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 ieirea Q disponibil (figura 8.10):
T
D PR Q

CLK CL

Figura 8.10 Conversie de bistabile: bistabil T realizat cu un bistabil D, cu ieirea Q disponibil.

86

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

3. Desfurarea lucrrii

1. S se realizeze cu pori bistabilul RS asincron i bistabilul RS sincron i s se verifice ecuaiile acestora. 2. S se realizeze i s se verifice bistabilele de la punctele c), d), e), f) din paragraful 2.2. Se va urmri comportarea fiecruia observnd 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 excitaie pentru fiecare bistabil. 4. S se realizeze un bistabil D utiliznd 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 informaie A i o intrare de program B. Cnd B = 0 acest bistabil lucreaz ca un bistabil de tip D, iar cnd B = 1, lucreaz ca un bistabil de tip T. n unele aplicaii folosirea bistabilului de tip A-B duce la simplificarea schemei logice.
A B CLK Q Q

Figura 8.11 Bistabilul A-B

Ecuaia caracteristic a bistabilului A-B este:


Q n +1 = A B Q n

Realizai bistabilul A-B folosind un bistabil T i apoi un bistabil D. 6. Implementai i simulai toate tipurile de bistabile prezentate n lucrare cu ajutorul ACTIVE-HDL. Care metod de implementare este preferabil i n ce context?

LUCRAREA NR. 9
NUMRTOARE (I)
1. Scopul lucrrii Se realizeaz numrtoare asincrone, sincrone, binare i zecimale, directe, indirecte i reversibile, sintetizate cu bistabile D, T sau JK. Se studiaz avantajele i dezavantajele proprii fiecrei implementri. Numrtoarele prezentate sunt apoi implementate cu ajutorul ACTIVEHDL. 2. Consideraii teoretice Numrtoarele sunt circuite logice secveniale specializate pentru probleme de temporizare i control. Se pot realiza numrtoare pentru a numra n orice mod de codificare a informaiei, cu condiia ca pentru fiecare numr cuprins n gama de nregistrare (bucla) numrtorului, acesta s prezinte cte o stare distinct. Numrtoarele se clasific dup urmtoarele criterii: modul de codificare a informaiei (binare, binar-zecimale, modulo p); modul de comutare a bistabilelor din numrtor (asincrone, sincrone); modul de modificare a strilor numrtorului (directe, indirecte, reversibile). Un numrtor binar nregistreaz n sistemul de numeraie binar succesiunea impulsurilor aplicate la intrare. Capacitatea de numrare a numrtorului binar depinde de numrul bistabilelor. Considernd pentru fiecare numr o stare distinct, rezult c acesta poate numra n gama "0" "2n - 1", n fiind numrul bistabilelor. Exist multe situaii n care nu sunt necesare "2n" stri. Dac numrtorul are p = 2n - k stri n bucla sa de numrare nseamn c este un numrtor modulo p. Se definete capacitatea unui numrtor ca fiind numrul de stri distincte pe care le are. Factorul de divizare al numrtorului este raportul dintre numrul impulsurilor de la intrare i numrul impulsurilor de la ieire. Astfel, unul dintre domeniile de larg aplicabilitatea a numrtoarelor l constituie divizoarele de frecven.

88

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

2.1. Numrtoare asincrone binare i zecimale La nceputurile proiectrii numrtoarelor electronice s-a folosit modul de funcionare asincron sau cu transport intern. n acest mod de funcionare, impulsul de numrare este introdus n prima seciune a numrtorului, iar ieirea fiecrei seciuni comand intrarea de tact a urmtoarei seciuni, ca n figura 9.1, unde numrtorul este realizat cu bistabile T.
1 J IN K S CLK Q R K Q 1 J S CLK Q R K Q 1 J S CLK Q R K Q 1 J S CLK Q R Q

Figura 9.1 Numrtor asincron binar Funcionarea acestui tip de numrtor este asincron n raport cu impulsul de numrare recepionat la intrare. Schema prezint dezavantajul c numrtorul urmrete impulsul de intrare cu o ntrziere variabil. Atunci cnd procesul trebuie oprit ntr-o stare, dificultatea care apare este c urmtorul impuls de numrare e generat de procesul comandat nainte ca numrtorul s poat genera impulsul de oprire. Acesta este un serios factor de limitare n utilizarea numrtoarelor asincrone. Numrtorul asincron binar exist i sub form de circuit integrat, n mai multe variante constructive MSI. Un exemplu este circuitul 493, unde ieirea seciunii Z (QA) este legat direct la intrarea seciunii Y (B). n figura 9.2 este reprezentat structura intern a numrtorului asincron integrat 493, iar n figura 9.3 este prezentat modul de conectare a terminalelor circuitului 493, pentru realizarea unui numrtor binar direct pe 4 bii, la fel cu cel din figura 9.1.

NUMRTOARE (I)

89

J CLK K

QA

J CLK K

QB

J CLK K

QC

J CLK K RO(1) RO(2)

QD

Figura 9.2 Schema intern a numrtorului asincron 493

CLK

A B

R0

QA QB QC QD

R0 (1) R0 (2)

493

Figura 9.3 Numrtor direct pe 4 bii realizat cu 493 Pentru extinderea domeniului de numrare se conecteaz circuitele n cascad. Prin conectarea circuitelor ca n figura 9.4 se obine un numrtor asincron binar direct pe 8 bii, care va numra de la 0 la 255.

90

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

A B R0 (1) R0 (2)

QA QB QC QD

CLK

A B R0 (1) R0 (2)

QA QB QC QD

R0

493

493

Figura 9.4 Numrtor pe 8 bii obinut prin cascadare Circuitul integrat 490 (figura 9.5) este un numrtor asincron a crui comportare este asemntoare cu cea a circuitului 493, cu deosebirea c 490 este zecimal (are 10 stri distincte).

CLK

A B R0 (1) R0 (2) R9 (1) R9 (2)

QA QB QC QD

R0

R9

490

Figura 9.5 Numrtorul MSI 490 Extinderea domeniului de numrare se face tot prin cascadare. 2.2 Numrtor sincron binar serie Numrtorul sincron binar a fost realizat dup tipul asincron i, deoarece creeaz mai puine probleme n aplicaii, a devenit n scurt timp foarte utilizat. Multe tipuri de numrtoare sincrone ca: binar de 4 bii, BCD, decadice (zecimale), reversibile, toate cu ncrcare paralel, au devenit larg rspndite. O parte dintre acestea sunt disponibile comercial ca circuite integrate. Unele sunt implementate cu bistabile de tip JK, T, iar altele sunt o combinaie de bistabile RS i JK. n figura 9.6 este prezentat implementarea unui numrtor sincron binar serie, cu bistabile JK conectate n configuraie de bistabile de tip T. n

NUMRTOARE (I)

91

tabelul 9.1 este prezentat succesiunea celor 16 stri ale numrtorului binar serie direct. Tabelul 9.1 Succesiunea strilor pentru numrtorul binar sincron NR 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Q0 Q1 P1

Q0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Q1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

Q2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
Q2

Q3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Q3

P2

1 J S CLK K Q R K Q J S CLK Q R K Q J S CLK Q R K Q J S CLK Q R Reset CLK Q

Figura 9.6 Numrtor sincron binar serie direct, cu bistabile JK n configuraie de bistabile de tip T

92

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Intrrile J i K sunt comandate cu ajutorul porilor P1 i P2 n conformitate cu tabelul de adevr (tabelul 9.1). Conform tabelului, respectiv coloanei Q0, intrrile primului bistabil trebuie legate la nivel 1 logic. Al doilea bistabil basculeaz din dou n dou impulsuri de ceas, conform coloanei Q1, adic atunci cnd Q0 trece din 1 logic n 0 logic. Deci vom lega intrrile J1 = K1 la ieirea Q0 a primului bistabil. Al treilea bistabil basculeaz din 4 n 4 impulsuri, conform coloanei Q2, adic atunci cnd Q0 i Q1 trec din 1 logic n 0 logic. Aceast coloan este asigurat de poarta P1, la ieirea creia au fost legate J2 i K2. La fel se petrec lucrurile i pentru bistabilul al patrulea, care este comandat de poarta P2. 2.3 Numrtor sincron binar paralel O mrire suplimentar a vitezei de lucru a numrtorului sincron binar direct de tip serie se poate obine dac porile I nu se leag n cascad. Fiecare poart I are cuplate direct pe intrrile sale ieirile bistabilelor care condiioneaz deschiderea bistabilului urmtor (figura 9.7). Acest fapt determin utilizarea unor pori I cu un numr mai mare de intrri.
P1 1 J S CLK K Q R K Q J S CLK Q R K Q J S CLK Q R K Q J S CLK Q R Reset CLK Q P2

Figura 9.7 Numrtor sincron binar paralel direct, cu bistabile JK n configuraie de tip T. 2.4 Numrtor sincron binar reversibil Numrtorul sincron binar reversibil este disponibil sub form de circuit integrat 4193. El este prevzut cu 2 intrri de ceas, count up (CU) pentru numrare direct i count down (CD) pentru numrare invers. Numrtorul mai are disponibile dou ieiri, realizate prin dou pori suplimentare de tip I-NU, pentru generarea comenzilor CARRY (transport

NUMRTOARE (I)

93

CR = 0) cnd numrtorul se umple: Q0 = Q1 = Q2 = Q3 = 1 i BORROW (mprumut BR = 0) cnd numrtorul se golete: Q0 = Q1 = Q2 = Q3 = 0. Aceste ieiri se folosesc pentru conectarea n cascad a numrtoarelor (figura 9.8).

Q3 CR BR CL

Q2

Q1

Q0

CU CD

Q3 CR BR CL

Q2

Q1

Q0

CU CLK CD

4193
D C B A

4193
D C B A

LD

LD LOAD

CLEAR

Figura 9.8 Legarea n cascad a numrtorului sincron binar reversibil Numrtorul realizat n figura 9.8 va numra n intervalul 0-255, direct sau invers, dup cum se aplic semnalul de ceas, pe CU sau pe CD. 2.5 Numrtor sincron zecimal reversibil Acest numrtor este disponibil sub forma circuitului integrat 4192 (figura 9.9) i are aceleai intrri i ieiri ca i circuitul 4193. Diferena const n faptul c numrtorul numr de la 0 la 9 sau invers, iar la conectarea n cascad a 2 numrtoare de acest tip, numr de la 0 la 99 sau invers.
Q3 CR BR CL D Q2 Q1 Q0 CU CD B A LD CLK

4192
C

Figura 9.9 Numrtor sincron zecimal reversibil 3. Desfurarea lucrrii 1. Se realizeaz numrtorul asincron binar direct din figura 9.1 cu bistabile integrate JK, 473 sau 476.

94

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

2. Se studiaz numrtorul asincron binar direct MSI 493 (figurile 9.2 i 9.3). a) Se verific funcionarea numrtorului de 1 bit prin legarea ieirii QA la un LED i a intrrii A la un generator de tact. b) Se verific funcionarea numrtorului pe 4 bii fcnd legturile din figura 9.3 i legnd R0 la mas. c) Se urmresc ieirile cnd R0 este conectat la Vcc (R0 = 1, adic CLEAR = 0, QAQBQCQD = 0000). d) Se verific funcionarea numrtorului pe 8 bii fcnd legturile pentru cascadare ca n figura 9.4. 3. Se studiaz numrtorul asincron zecimal direct realizat cu circuitul integrat 490 (figura 9.5). a) Se verific funcionarea numrtorului pe 4 bii fcnd legturile ca n figura 9.5 i legnd R0 i R9 la mas. b) Se urmresc ieirile cnd R0 i R9 sunt legate pe rnd la Vcc (R0 = 1, QAQBQCQD = 0000 respectiv R9 = 1, QAQBQCQD = 1001). Se urmrete prioritatea intrrii R9 fa de R0 astfel: legnd R9 la 1 i apoi R0 la 1 ieirile vor rmne n starea 1001. 4. Se studiaz numrtorul sincron binar reversibil de 4 bii disponibil sub forma circuitului MSI 4193. a) Se verific funcionarea circuitului ca numrtor direct legnd intrrile CU la ceas i CD la nivelul logic 1. Se urmrete ieirea de transport CR atunci cnd numrtorul se umple (QAQBQCQD = 1111). b) Se verific funcionarea circuitului ca i numrtor invers legnd CD la ceas i CU la nivelul logic 1. Se urmrete ieirea de mprumut BR atunci cnd numrtorul se golete (QAQBQCQD = 0000). c) Se aplic pe intrrile de ncrcare paralel A,B,C,D o secven oarecare i se urmrete operaia de ncrcare a ieirilor QA, QB, QC, QD cu acea secven, prin legarea la mas a intrrii LD. d) Se leag intrarea de tergere CLEAR (CL) la Vcc i se urmresc ieirile. Se conecteaz n cascad dou circuite ca n figura 9.8 i se verific funcionarea acestui numrtor. 5. Se studiaz numrtorul sincron zecimal reversibil pe 4 bii (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 numrtoare prezentate n lucrare cu ajutorul ACTIVE-HDL. Care metod de implementare este preferabil i n ce context?

LUCRAREA NR. 10
NUMRTOARE (II)
1. Scopul lucrrii Se verific modul de comportare al unor numrtoare MSI, conform descrierii funcionale din catalog. Se studiaz posibilitile de realizare a diferite secvene de numrare, sub i peste limita domeniului de numrare al numrtoarelor MSI disponibile. Se realizeaz mai multe variante de implementare a unor numrtoare modulo p, folosind i ACTIVE-HDL. 2. Consideraii teoretice 2.1 Generaliti Numrtoarele prezentate n lucrarea anterioar erau numrtoare modulo 2n obinute prin interconectarea a n celule binare. Un numrtor modulo p este un numrtor la care se folosesc numai p stri (p < 2n), restul de 2n p fiind omise. Alegerea strilor omise poate fi fcut n principiu arbitrar. ns, n funcie de strile omise, pentru acelai numr p vor exista mai multe variante de numrtoare modulo p. Un numrtor modulo p se mai numete i divizor prin p. Un numrtor modulo 10 obinut dintr-un numrtor binar pe 4 bii prin omiterea a 6 stri, i anume: 1010, 1011, 1100, 1101, 1110, 1111, este de fapt un numrtor zecimal. Acesta se mai numete i numrtor decadic. 2.2 Numrtoare MSI sincrone 2.2.1 Numrtoarele MSI 4162, 4163, 4192 i 4193 Exist mai multe tipuri de numrtoare sincrone integrate, dintre care cele mai folosite sunt: 4162 i 4163, 4192 i 4193. Circuitul 4163 (figura 10.1) este un numrtor sincron binar direct. Singura deosebire dintre acest numrtor i 4162 este c acesta din urm este zecimal (numr numai de la 0 la 9), pe cnd 4163 numr de la 0 la 15.

96

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

n rest, pinii sunt identici i semnificaia semnalelor la pini de asemenea. Intrrile 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 prezena unui impuls de ceas, ncrcarea paralel i respectiv resetarea numrtorului. De exemplu, pentru a ncrca paralel un anumit numr n numrtor, se va proceda, n ordine, astfel: 1. pe liniile de date (D0-D3) se stabilete numrul pe care dorim s-l ncrcm; 2. se activeaz intrarea PL cu 0 logic; 3. la sosirea urmtorului impuls de ceas, numrul va fi ncrcat n numrtor. Dac apoi se dezactiveaz intrarea PL (cu 1 logic), procesul de numrare va continua plecnd de la starea ncrcat anterior. n mod analog se procedeaz i pentru intrarea MR (CLR), rezultatul fiind aducerea numrtorului n starea 0 (resetare): 1. se va activa linia Master Reset (MR) cu 0 logic; 2. la sosirea urmtorului impuls de ceas, numrtorul va fi resetat (adus la zero). Dac apoi se dezactiveaz intrarea MR (cu 1 logic), procesul de numrare va continua plecnd din starea zero. n starea 15 (pentru 4163), respectiv 9 (pentru 4162), se va activa (va lua valoarea 1 logic) ieirea TC (Terminal Count sau CO Carry Output), cu semnificaia de transport (se folosete la cascadarea numrtoarelor). n tabelul 10.1 sunt descrise operaiile care pot fi executate de numrtorul sincron binar direct 4163. Tabel 10.1 Operaiile efectuate de numrtorul sincron binar direct 4163 Operaie Descriere CLR LD EP CLEAR (terge) (QD, QC, QB, QA) (0,0,0,0) 0 CO = QD QC QB QA ET LOAD (ncarc (QD, QC, QB, QA) (D, C, B, A) 1 0 paralel) CO = QD QC QB QA ET HOLD 1 1 0 (QD, QC, QB, QA) (QD, QC, QB, QA) (memoreaz) CO = QD QC QB QA ET 1 1 1 COUNT (QD, QC, QB, QA) [(QD, QC, QB, QA) + (numr) (0,0,0,T)]mod16 CO = QD QC QB QA ET

NUMRTOARE (II)

97

PL D0 D1 D2 D3 CLK TC ET 74163 EP MR Q0 Q1 Q2 Q3

Figura 10.1 Numrtorul integrat MSI 4163

Circuitul 4193 (figura 10.2) este un numrtor sincron binar i bidirecional (poate numra att cresctor ct i descresctor). Singura deosebire dintre acest numrtor i 4192 este c acesta din urm este zecimal, numr numai n bucla 0-9 sau 9-0, pe cnd 4193 numr n bucla 0-15 sau 15-0. n rest, pinii sunt identici i semnificaia semnalelor la pini de asemenea. Intrrile notate LD (Load) i MR (Master Reset sau CLR Clear) sunt asincrone i realizeaz, n cazul n care sunt active, ncrcarea paralel i respectiv resetarea numrtorului. De exemplu, pentru a ncrca un anumit numr n numrtor, se va proceda, n ordine, astfel: 1. pe liniile de date (D0-D3) se va stabili numrul pe care dorim s-l ncrcm; 2. se va activa intrarea LD (cu 0 logic). Imediat, numrul de pe intrrile de date se ncarc n numrtor. Dac apoi se dezactiveaz intrarea LD (cu 1 logic), procesul de numrare va continua plecnd din starea ncrcat anterior. De remarcat c la acest numrtor, spre deosebire de 4163, nu mai este necesar prezena unui impuls de ceas pentru ncrcare paralel: la simpla activare a intrrii LD, datele de pe D0-D3 se nscriu n numrtor. n mod analog se procedeaz i pentru intrarea MR (CLR), rezultatul fiind aducerea numrtorului n starea 0 (resetare): 1. se va activa linia Master Reset (MR) cu 1 logic; 2. imediat, numrtorul va fi resetat (adus la zero). Dac apoi se dezactiveaz intrarea MR (cu 0 logic), procesul de numrare va continua plecnd din starea zero. Aceste numrtoare au dou regimuri de lucru, corespunztoare numrrii cresctoare sau descresctoare. n cazul n care se primete un impuls de ceas pe intrarea Cu, numrtorul va numra cresctor, iar dac se primete un impuls de ceas pe intrarea Cd, va numra descresctor.

98

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

n starea 15 (pentru 4193), respectiv 9 (pentru 4192), se va activa ieirea TCu (CO Carry Output dac regimul de lucru este de numrare cresctoare), iar n starea 0 (att pentru 4193 ct i pentru 4192), se va activa ieirea TCd (BO Borrow Output dac regimul de lucru este de numrare descresctoare). Aceste ieiri, cu semnificaia de transport (CO) sau mprumut (BO), se folosesc la cascadarea numrtoarelor i sunt active pe 0 logic.
PL Cu Cd MR D0 D1 D2 D3 TCu TCd

4193
Q0 Q1 Q2 Q3

Figura 10.2 Numrtorul integrat MSI 4193

Pentru extinderea domeniului de numrare se conecteaz circuitele n cascad. Prin conectarea circuitelor 4163 ca n figura 10.3 se obine un numrtor pe 8 bii care va numra de la 0 la 255. Pentru ca schema s funcioneze intrrile de Enable T (ET) i Enable P (EP) trebuie s ia valoarea 1 logic.

PL

D0

D1 D2 D3

PL

D0

D1 D2 D3

CLK TC ET 74163 EP MR Q0 Q1 Q2 Q3

CLK TC ET 74163 EP MR Q0 Q1 Q2 Q3

Figura 10.3 Cascadarea numrtoarelor sincrone 4163

NUMRTOARE (II)

99

2.3 Numrtoare modulo p

2.3.1 Numrtoare modulo p realizate cu circuite 4192 i 4193 Cu ajutorul acestor numrtoare MSI se pot realiza numrtoare modulo p directe sau inverse prin intermediul unei logici combinaionale adecvate. Dar, cu aceste circuite se pot realiza i numrtoare programabile, care nu necesit o logic combinaional suplimentar. Vom prezenta n continuare un exemplu utiliznd circuitului 4193 (numrtor sincron binar reversibil).

PL Cu Cd MR

D0 D1 D2 D3 TCu

4193

TCd

Q0 Q1 Q2 Q3

Figura 10.4 Numrtor modulo p realizat cu numrtor 4193 (se pierde ultima stare)

Dac aplicm intrrilor D0-D3 ale numrtorului 4193, legat ca n figura 10.4, o secven oarecare, n momentul n care numrtorul numrnd direct va ajunge n starea 1111, ieirea de transport TCu va deveni 0 i va determina, prin activarea intrrii PL, ncrcarea numrtorului cu acea secven (dar se pierde o stare). Pentru ca ncrcarea secvenei respective (de exemplu 1010) s se fac cu o ntrziere fa de momentul trecerii numrtorului n ultima stare (1111) vom introduce o poart I-NU care s detecteze momentul apariiei strii 1111 i apoi s comande intrarea de ncrcare paralel. Schema este prezentat n figura 10.5. Secvena de numrare va fi 1010, 1011, 1100, 1101, 1110, 1111 i din nou 1010. Modul acesta de conectare poate fi utilizat i pentru numrtorul sincron zecimal 4192, dar secvena detectat este 1001.

100

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

CLK

PL Cu Cd MR

D0 D1 D2 D3 TCu

4193

TCd

Q0 Q1 Q2 Q3

Figura 10.5 Numrtor modulo p realizat cu circuitul 4193

2.3.2 Numrtoare modulo p realizate prin aducere la 0 n cazul n care dorim realizarea unui numrtor modulo p vom proceda astfel: determinm numrul minim de celule de memorie necesare pentru realizarea numrtorului cu relaia: 2n p interconectm celulele numrtorului astfel nct din cele 2n stri posibile s se omit 2n-p stri. Metoda aducerii la 0 este frecvent utilizat pentru realizarea numrtoarelor modulo p, n special cu numrtoarele MSI 490, 493, 4192, 4193 care dispun de intrri asincrone de tergere. Aceast metod const din urmtoarele etape: se las numrtorul s evolueze normal pn n starea p-1; n momentul n care se atinge starea p se aplic printr-o logic combinaional un impuls de tergere a tuturor celulelor numrtorului. Ne propunem s realizm cu circuitul 493 (numrtor asincron binar) un numrtor modulo 5. Secvena de numrare a acestui numrtor este: 000, 001, 010, 011, 100, 000. Pentru a realiza aceast secven este necesar s se aduc numrtorul n starea 000 prin activarea intrrilor asincrone de tergere R01 i R02, atunci cnd numrtorul ajunge n bucla de numrare n starea 100 (figura 10.6).

NUMRTOARE (II)

101

CLK

A B R0 (1) R0 (2)

QA QB QC QD

493

Figura 10.6 Numrtor modulo 5 realizat cu circuitul 493


Pentru realizarea unui numrtor modulo 15 va fi necesar o logic combinaional care s aduc intrrile R01 i R02 n 1 atunci cnd numrtorul ajunge n starea 1110 (figura 10.7).
CLK A B QA QB QC QD

R0 (1) R0 (2)

493

Figura 10.7 Numrtor modulo 15 realizat cu circuitul 493


n mod asemntor se poate realiza orice numrtor modulo p cu p mai mic dect 16 sau prin conectarea n cascad pentru 16 < p < 255.

3. Desfurarea lucrrii
1. Se testeaz funcionarea corect a numrtoarelor MSI 4162, 4163, 4192, 4193, 490, 493. Se verific intrrile de ncrcare paralel PL i de resetare MR (Clear), constatndu-se diferenele dintre aceste funcii la 4162, 4163 i 4192, 4193 (ncrcare paralel i resetare sincrone i asincrone; nivel logic activ pe 0 sau 1). 2. Se realizeaz diferite numrtoare modulo p cu aducere la 0, cu circuitele MSI anterioare, dup modelele prezentate n lucrare.

102

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

3. Se va implementa un numrtor care s numere n bucla 3-12, cu ajutorul unui circuit 4163. 4. Verificai funcionarea montajelor din figurile 10.4 i 10.5. 5. Explicai de ce, n figura 10.3, nu s-au cascadat numrtoarele prin conectarea ieirii TC a primului numrtor la CLK-ul celui de-al doilea numrtor. Ce problem de temporizare ar fi aprut? 6. Se implementeaz toate numrtoarele prezentate n lucrare folosind ACTIVE-HDL i se realizeaz i simularea funcionrii acestora. Cum se remarc la simulare deosebirile dintre intrrile sincrone i cele asincrone?

LUCRAREA NR. 11
REGISTRE I REGISTRE DE DEPLASARE
1. Scopul lucrrii Se prezint diferite modaliti 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. Consideraii teoretice 2.1 Registre Registrele sunt circuite secveniale sincrone care realizeaz memorarea informaiei binare pe durata unui impuls de ceas. Pentru aceast simpl funcionalitate (exist i registre cu funcionaliti multiple) ele pot fi privite ca un ansamblu de bistabile D, cte un bistabil pentru fiecare bit, reunii ntr-o capsul unic. n general, registrele sunt de 4, 8 sau 16 bii/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 lng funcia de stocare a informaiei 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 stnga la dreapta: Q0 Q1 Q2 Q3 - de la dreapta la stnga: Q3 Q2 Q1 Q0 sau n ambele direcii.

104

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

innd cont de codificarea binar a informaiei, deplasarea spre stnga va avea semnificaia unei nmuliri cu 2 a numrului n binar, iar deplasarea spre dreapta va avea semnificaia unei mpriri la 2 a numrului n binar. Prezentm n continuare schema intern de principiu a unui registru de deplasare universal pe 4 bii. Se observ c funcia de deplasare se obine prin conectarea ieirii fiecrui element la intrarea vecinului su (funcionare serial). Dac intrrile sunt furnizate prin intermediul unui multiplexor ale crui intrri provin de la ambele elemente vecine de stocare a informaiei, se obine un registru de deplasare universal. Multiplexoarele constituie circuitul combinaional de determinare a strii urmtoare.
X3 X2 X1 X0

sl

sr s
3210 D Q Y3 32 1 0 D Q Y2 3210 32 1 0 D Q Y1 Y0

D Q

Figura 11.1 Registru de deplasare universal pe 4 bii Modurile de lucru ale registrului de deplasare universal din figura 11.1 sunt determinate de semnalul de selecie s conform tabelului 11.1. Tabelul 11.1 Modurile de lucru ale registrului de deplasare universal Mod s=0 s=1 s=2 s=3 Starea urmtoare yi xi yi-1 yi+1 Funcia memorare (hold) ncrcare paralel (load) deplasare stnga deplasare dreapta

Observaie: Semnalul de selecie s este pe 2 bii. Un alt circuit, integratul MSI 4194, reprezint un registru de deplasare universal pe 4 bii, care are disponibile toate funciile necesare: ncrcare paralel, deplasare dreapta, deplasare stnga, memorare i tergere. n figura 11.2 este reprezentat simbolul circuitului, iar n tabelul 11.2 este detaliat funcionarea lui.

REGISTRE I REGISTRE DE DEPLASARE

105

R A B C D L CLR S0 S1 CLK QA QB QC QD

4194

Figura 11.2 Registrul de deplasare universal 4194 Tabel 11.2 Funcionarea registrului de deplasare universal 4194 Intrri CLR Mod CLK Serial Stnga Dreapta S1 S 0 0 X X X X X 1 X X 0 X X 1 1 1 X X 1 0 1 X 1 1 0 1 X 0 1 1 0 1 X 1 1 0 0 X 1 0 0 X X X Ieiri QB QC 0 QB0 b QAn QAn QCn QCn QB0 0 QC0 c QBn QBn QDn QDn QC0

Paralel A B C D X X X X X X X X a b c d X X X X X X X X X X X X X X X X X X X X

QA 0 QA0 a 1 0 QBn QBn QA0

QD 0 QD0 d QCn QCn 1 0 QD0

Tabelul pune n eviden modurile de funcionare ale registrului de deplasare universal, n funcie de semnalul de ceas CLK i de valorile semnalelor de selecie S1 i S0 i a celui de resetare CLR. n figura 11.3 este prezentat un registru de deplasare circular care deplaseaz informaia ctre dreapta, construit pe baz de bistabile masterslave.

106

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Reset

Direcia de deplasare

CLK

CLK

CLK

CLK

CLK Re set
+

Figura 11.3 Registru de deplasare dreapta circular Circuitul 495 reprezentat n figura 11.4 este un registru de deplasare MSI pe 4 bii. Pentru intrarea de control MOD = 1 registrul se ncarc n paralel cu datele de la intrrile A, B, C, D, sincron cu ceasul CLK2. Pentru MOD = 0 se realizeaz deplasarea spre dreapta, sincron cu ceasul CLK1, a informaiei introduse prin intrarea de date serial:

SER QA QB QC QD Capacitatea acestui registru se poate extinde prin conectarea n cascad.


SER A B C D MODE CLK1-Shift CLK2-Load QA QB QC QD

495

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 uniti (valoare logic 1) i zerouri (valoare logic 0) de o structur dat.

REGISTRE I REGISTRE DE DEPLASARE

107

Prin lungimea unei secvene vom nelege numrul de bii dup care ntreaga secven se repet. Secvenele binare se mpart n dou categorii: Secvene aleatoare de lungime infinit; Secvene deterministe de lungime finit. 2.3.1 Secvene aleatoare (SA) O secven aleatoare se poate obine, de exemplu, dac asociem celor dou fee ale unei monede cifrele binare 0 i respectiv 1 i notm rezultatele obinute n urma aruncrilor succesive ale acesteia. Se poate apela de asemenea la un calculator i la un program special de generare a numerelor aleatoare pentru a obine o secven binar aleatoare. 2.3.2 Secvene deterministe (SD) Fie urmtoarea secven binar determinist: 110 110 110 Secvena binar din acest exemplu are lungimea de trei bii i poate fi considerat ca fiind obinut prin repetarea uneia din urmtoarele succesiuni: 110, 101 sau 011. Dac generatorul de secvene are i o ieire complementar, atunci, pe aceast ieire va apare secvena 001 001 001, secven ce se poate obine prin repetarea uneia din urmtoarele succesiuni binare: 001, 010 sau 100. Cele ase succesiuni binare susmenionate genereaz practic aceeai secven binar (deosebirile pot aprea n alegerea originii secvenei i dac o considerm sau nu inversat). Metoda cea mai rspndit de generare a secvenelor deterministe presupune utilizarea unor registre de deplasare cu reacie logic (vezi figura 11.5). Pentru a genera o secven de lungime L este nevoie de un registru de deplasare cu reacie format din minimum n celule binare conform relaiei:

L 2 n 1 (11.1) Dac structura secvenei este impus, nu ntotdeauna va fi posibil generarea acesteia cu un numr minim de celule binare.

108

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

y = Q1 Q3
S Q1 S Q2 S Q3

CLK Q1

CLK Q2

CLK

Q3

Tact

Figura 11.5 Generator de secvene

Registrul de deplasare format din n celule binare este un sistem secvenial avnd 2n stri distincte (printr-o stare a registrului nelegem ansamblul strilor tuturor bistabilelor care alctuiesc registrul). Printr-o alegere convenabil a reaciei putem fora registrul s evolueze astfel nct s treac ntr-o ordine oarecare prin toate strile lui nenule. Secvena binar obinut la ieirea unui asemenea registru se numete secven de lungime maxim. Secvenele binare deterministe de lungime maxim se mai numesc i secvene pseudo-aleatoare (SPA). Aceste secvene au o importan practic deosebit deoarece au proprieti asemntoare celor ale secvenelor aleatoare fr a avea ns dezavantajul acestora de a nu fi repetabile. SPA, fiind deterministe, sunt perfect predictibile. Pentru un receptor care folosete o poriune dintr-o SPA mult mai mic dect lungimea acesteia, secvena utilizat apare ca fiind aleatoare. SPA sunt utilizate foarte des ca secvene de sincronizare n transmisiile de date. Un exemplu de generator de numere pseudo-aleatoare este prezentat n figura 11.6:
SER A B C D MODE C L K 1-Shift C L K 2-L oad

QA QB QC QD

486

495

Figura 11.6 Generator de secven pseudo-aleatoare

REGISTRE I REGISTRE DE DEPLASARE

109

Acest generator de succesiuni pseudo-aleatoare genereaz la ieirea 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 apariia strii 0000 generatorul se blocheaz, deoarece circuitul XOR nscrie continuu 0 pe intrarea SER. Pentru o funcionare corect schema se va completa cu un circuit de deblocare din starea 0000.
3. Desfurarea lucrrii

1. Se realizeaz registrul de deplasare din figura 11.1, pe panoul didactic. 2. Se realizeaz i se simuleaz funcionarea registrului de deplasare din figura 11.1 folosind ACTIVE-HDL. 3. Se realizeaz i se simuleaz funcionarea registrului de deplasare dreapta circular din figura 11.3 folosind ACTIVE-HDL. 4. Se verific pe panoul didactic toate modurile de funcionare 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 bidirecional (stnga-dreapta), cu ncrcare paralel sincron. 6. Folosind facilitile 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 stri n cazul n care se leag ieirea QC n loc de QA la poarta SAU EXCLUSIV; b) S se determine succesiunea de stri n cazul n care se leag ieirea QB n loc de QA la poarta SAU EXCLUSIV; c) S se explice de ce apar diferene de lungime la secvenele astfel obinute fa de lungimea secvenei obinut n figura 11.6; d) S se repete punctele a) i b) folosind o poart SAU EXCLUSIV NEGAT (COINCIDEN).

LUCRAREA NR. 12
FAMILIA DE CIRCUITE FPGA XILINX
1. Scopul lucrrii Se prezint familia de dispozitive programabile FPGA a firmei XILINX, productorul cel mai important pe plan mondial. Se studiaz celula logic fundamental, logica de interconectare i celula de intrare-ieire. Se studiaz metodologiile i fluxul de proiectare folosind instrumentele software specifice din pachetul ISE Foundation: utilitarele FPGA Editor, Timing Analyser, Floorplanner, Hardware Debugger. 2. Consideraii teoretice Structura de celule logice programabile la familia de dispozitive FPGA a firmei XILINX se numete LCA (Logic Cell Array). Tehnologia de realizare fizic a acestor dispozitive este CMOS. Funciile interne ale tuturor celulelor din FPGA sunt identice i pot fi configurate prin intermediul unor celule SRAM (Static RAM) care comand att configuraia intern a CLB-urilor (Configurable Logic Block) ct i interconectarea celulelor (rutarea semnalelor n interiorul LCA). Astfel, ntr-un dispozitiv FPGA se pot configura dou aspecte: logica activ funcia logic realizat de ctre fiecare celul logic (slice); reeaua de interconectare se poate alege care celule logice s fie conectate i pe care canal de rutare (pot exista mai multe variante). Avantajele stocrii configuraiei dispozitivelor FPGA cu ajutorul unor memorii SRAM sunt urmtoarele: dispozitivul FPGA este astfel re-programabil acelai dispozitiv fizic poate realiza o alt funcie logic dup o anumit perioad de timp, atunci cnd se decide schimbarea rolului su n cadrul aplicaiei n care este integrat. Numrul de re-configurri este nelimitat;

FAMILIA DE CIRCUITE FPGA XILINX

111

dispozitivul FPGA este reconfigurabil dinamic acest concept se refer att la faptul c se poate schimba configuraia sa n timpul rulrii (run-time reconfiguration) ct i la existena unor dispozitive care permit stocarea mai multor contexte de configurare n acelai 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 ctre un intrus) coninutul memoriilor SRAM, fapt pentru care este mai dificil asigurarea proprietii 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, susinut fiind i de progresele tehnologice nregistrate n domeniul microelectronicii. Totui, conceptele fundamentale au rmas aceleai, aprnd 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 numete slice. Mai multe slice-uri sunt grupate ntr-un CLB; CLB-urile constituie matricea LCA. Fiecare slice este constituit din urmtoarele elemente: Un bloc logic combinaional principal, format din memorii cu 4 pn la 6 linii de adres (n funcie de tipul de dispozitiv FPGA) i coninutul pe un singur bit aceste memorii se numesc lookup tables (LUTs); Mai multe bistabile (2 pn la 4, n funcie de familie). Aceste bistabile pot fi configurate fie ca bistabile de tip zvor (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 combinaional secundar, alctuit din pori logice, multiplexoare i mai multe ci de semnal locale pentru multiplexare i interconectare (n special logica dedicat de carry, pentru transportul semnalelor din blocurile aritmetice). De

112

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

menionat 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 apariia familiei XC4000 i este schema unui CLB. Ulterior, o dat cu apariia de noi familii de dispozitive FPGA, pe msur ce un CLB a nceput s conin 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


PR D Q CE CL

LUT

Carry

D PR Q CE CL

Figura 12.1 Schema de principiu a unui slice din familia de circuite FPGA Xilinx Numrul slice-urilor dintr-un CLB variaz n funcie 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 menionat anterior, elementul combinaional principal al slice-ului este de fapt o memorie RAM static, realizat n tehnologie CMOS. Ea realizeaz un tabel de adevr al oricrei funcii Booleene de variabilele de intrare. Variabilele de intrare sunt aplicate pe liniile de adres ale RAM-ului, iar liniile de ieire constituie ieirile funciilor Booleene. Slice-ul este deci o structur logic universal (realizeaz orice funcie de n variabile, unde n este numrul 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.

FAMILIA DE CIRCUITE FPGA XILINX

113

Figura 12.2 Structura simplificat a unui slice din seria Spartan3E O dat cu apariia familiei Virtex, performanele dispozitivelor FPGA XILINX au crescut considerabil. Capacitatea logic a dispozitivelor Virtex este mult mai mare dect cea a familiei precedente (XC6200), fapt posibil datorit avansului tehnologic nregistrat n intervalul de timp dintre apariia celor dou familii. Frecvena de lucru poate ajunge pn la 400 MHz n cazul familiei Virtex6 (aceast valoare poate crete prin folosirea judicioas a anumitor componente interne cum ar fi memoriile dual-port pn la valori de 1600 MHz). Dispozitivele Virtex sunt perfect compatibile cu standardul PCI, iar interfeele pot funciona la frecvene de 33 MHz sau 66 MHz.

114

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

n plus fa de familia anterioar, dispozitivele Virtex au fost dotate cu urmtoarele elemente constructive speciale: Blocuri de memorie dedicate, numite BlockRAM (capacitatea acestor blocuri a crescut de la o familie la alta, ajungnd de la 4 Kbits de bii la familia Virtex la 36 Kbits la familia Virtex6); Buffere tri-state, numite BUFT, asociate fiecrui CLB, care controleaz resurse segmentabile, dedicate, de rutare; DCM Digital Clock Manager (blocuri dedicate pentru controlul distribuiei semnalului de tact n cip). Acestea conin DLL-uri (Delay Locked Loops) blocuri cu ajutorul crora se poate elimina fenomenul de clock skew; Multiplicatoare combinaionale cu operanzii pe 18 bii (rezultatul pe 36 de bii). La familia Virtex6 au aprut blocurile DSP48E1, care conin un multiplicator dedicat pe 2518 bii, n complementul lui 2, precum i un acumulator pe 48 de bii, ambele capabile s funcioneze la o frecven de 600 MHz. Familia Virtex-II PRO a produs o nou revoluie n domeniu, fiind numit Platform FPGA. Aceste dispozitive ofer utilizatorului, pe lng toate caracteristicile familiei Virtex-II, procesoare PowerPC programabile, nglobate n cip. Dispozitivele Virtex-II PRO sunt compatibile cu cele mai multe standarde de intrare-ieire dintre cele mai rspndite la ora actual n domeniul transmisiei datelor. Familia Spartan constituie o versiune simplificat a familiei Virtex corespunztoare, aici renunndu-se la anumite blocuri constructive, cum ar fi blocurile de memorie separate (BlockRAM) pentru a se crea astfel cipuri mai ieftine (nu toi utilizatorii au nevoie de toate blocurile constructive, unele foarte evoluate, din familia VIRTEX). La familia Spartan3E, frecvena operaional maxim este de 200 MHz. Principalele caracteristici constructive ale dispozitivelor Spartan3E sunt urmtoarele (valorile din paranteze indic variaia n funcie de tipul de dispozitiv FPGA din familie): Blocuri BlockRAM cu capacitatea de 18 Kbits de bii (ntre 72 Kbits i 648 Kbits); DCM-uri Digital Clock Managers (ntre 2 i 8); Multiplicatoare combinaionale cu operanzii pe 18 bii, cu rezultatul pe 36 de bii (ntre 4 i 36); Intrri / ieiri disponibile utilizatorului (ntre 108 i 376); acestea sunt grupate n bancuri i suport mai multe standarde de Intrare / Ieire (PCI, DDR333, RSDS, mini-LVDS); Numr mare de slice-uri disponibile (ntre 960 i 14.752).

FAMILIA DE CIRCUITE FPGA XILINX

115

La toate dispozitivele FPGA XILINX, RAM-urile (att cele din slice-uri ct i cele care configureaz reeaua de interconectare) sunt volatile i trebuie ncrcate nainte de utilizare. ncrcarea se face la resetarea sistemului, n unul din urmtoarele moduri: Automat, de la un PROM serial; Dintr-un microprocesor; De la un PROM paralel. RAM-ul poate fi reconfigurat ulterior pentru a modifica funcionalitatea. Astfel, LCA poate s-i transforme configuraia din mers, permind aplicaii de sisteme hardware reconfigurabile. O limitare a slice-urilor (comun de altfel tuturor productorilor de dispozitive FPGA) o constituie limea (dimensiunea) funciilor combinaionale 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 ci de interconectare lungi, folosite pentru propagarea unor semnale globale importante. n general, slice-urile sunt foarte potrivite pentru implementarea unor funcii care necesit puine variabile de comutare / bistabil (de exemplu unele numrtoare 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 irosete 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 fiecrui CLB, n timp ce celelalte gestioneaz rutarea semnalelor ntre CLB-uri, fcnd 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 funcii adecvate, care s se preteze acestei interconectri. Exist mai multe tipuri de interconectri posibile:

116

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

1. General purpose interconnect interconectarea se face printr-un caroiaj de linii metalice situate ntre CLB-uri. Lungimea lor este mic. Liniile sunt att verticale ct i orizontale i se intersecteaz n matrice de comutare. Cu matricele de comutare sunt permise ramificri 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 cte 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 lime a cipului i nu intr prin matricele de comutare. Sunt ideale pentru a furniza semnalul de ceas CLB-urilor, evitnd n mare msur defectele de tipul clock skew (alunecarea ceasului sosirea acestuia cu ntrziere 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 distribuiei 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 distribuiei 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 crora exist plasate repetoare i amplificatoare de semnal, precum i blocuri DCM. Fiecare CLB are alturi buffer-e tri-state care acceseaz liniile lungi i formeaz semnalele de magistral (bussed signals) pentru a multiplexa ieirile CLB-urilor.

FAMILIA DE CIRCUITE FPGA XILINX

117

2.3 Intrri i ieiri Cipul FPGA conine, pe lng logica activ intern i reeaua de interconectare, un anumit numr de blocuri de intrare / ieire numite IOBs (Input / Output Blocks). IOB-urile suport i ele anumite configurri, n special cele legate de slew rate, direcia fluxului de informaie i standardele electrice. La nceput, configuraiile minimizau numrul de ci de ieire din cipul FPGA, deoarece acestea ocupau mult spaiu fizic. Totui, determinarea numrului exact de ieiri necesare pentru a satisface toi proiectanii era imposibil. La LCA-urile XILINX, strategia const n a face cei mai muli pini s fie bidirecionali. n figura 12.4 este prezentat structura principial a celulei fundamentale de intrare / ieire la circuitele din seria Spartan 3E. Se disting urmtoarele elemente: Pe calea de intrare exist dou registre DDR (Double Data Rate) registre cu ajutorul crora se efectueaz transferul datelor att pe frontul ascendent ct i pe frontul descendent al semnalului de tact; Pe calea de ieire exist: o dou registre DDR; o dou registre DDR pentru validarea ieirilor tri-state. Semnale separate de tact (clock) i clock enable pentru intrri i ieiri; Semnale de Set i de Reset partajate.

IOB
Reg
OCK1

DDR MUX

Intrare
Reg
ICK1

Reg
OCK2

3-state

Reg
ICK2

Reg
OCK1

DDR MUX

PAD
Ieire

Reg
OCK2

Figura 12.4 Structura principial a celulei de intrare-ieire a dispozitivelor FPGA XILINX Spartan3E

118

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Intrrile i ieirile pot fi directe sau secveniale (buffered, adic trecute printr-un registru). n plus, la ieire se poate controla aa-numita slew-rate (viteza de trecere de la starea Low la starea High i invers, n momentul cnd un semnal i schimb valoarea). n modul de lucru (setarea) low output slewing rate, semnalul este forat s creasc mult mai ncet dect n modul de lucru (setarea) high output slewing rate. Figura 12.5 prezint structura detaliat a celulei fundamentale de intrare / ieire la circuitele din seria Spartan 3E.

Figura 12.5 Structura celulei de intrare-ieire a dispozitivelor FPGA Xilinx Spartan3E

FAMILIA DE CIRCUITE FPGA XILINX

119

n celula de intrare-ieire 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-ieire 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 ieire, bistabilul capteaz date din interiorul cipului. Aplicarea de stimuli cipului se poate face prin ncrcarea serial a registrului de deplasare astfel nct pinii de intrare s primeasc stimulii coreci. Reaciile la aceti stimuli sunt generate pe urmtorul tact i sunt captate la pinii care sunt configurai ca pini de ieire. Boundary scan mbuntete testabilitatea circuitului imprimat PCB (Printed Circuit Board) care l folosete, deoarece se poate testa placa cu un minimum de pini i circuite adiionale (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 asistenei oferite de ctre un pachet software specializat. Fiecare productor 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 tere companii (de exemplu, editorul i simulatorul aferent unui limbaj de descriere hardware HDL), dar de regul etapele din faza de Implementare sunt proprietatea companiei productoare a dispozitivelor FPGA respective.

120

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Planificare i estimare costuri

Specificare proiect (cod HDL, editor schematic etc.)

Simularea codului HDL la nivel RTL

IMPLEMENTARE Translatare Simulare funcional

Sintez (creare fiier netlist)

Mapare tehnologic Plasare i rutare

ndeplinirea constrngerilor temporale

Simulare temporal

Creare fiier .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 numete ISE Foundation. Fluxul de proiectare este descris n figura 12.8. n acest pachet de programe sunt cuprinse trei mari categorii de operaii: 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; instanierea unor module elementare pre-definite (numite primitive) se poate realiza att n editorul schematic ct i n editorul oricrui limbaj de descriere hardware; parametrizarea, urmat de generarea unor module complexe, n cadrul aplicaiei CORE GENERATOR; orice combinaie a metodelor de mai sus. Introducerea proiectului va fi ntotdeauna urmat, imediat, de ctre etapa de Sintez, n cadrul creia specificaia elaborat de ctre proiectant este optimizat, curat 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 att la nivel funcional ct i la nivel

FAMILIA DE CIRCUITE FPGA XILINX

121

comportamental. Exist att simulatoare integrate n mediul ISE Foundation (Simulator), ct i alte simulatoare produse de ctre tere companii, care pot fi cumprate i apoi integrate n acest mediu. Un astfel de exemplu este simulatorul ModelSIM, care este disponibil gratuit ntr-o versiune redus (cu limitri ModelSIM Starter). Implementarea proiectului se realizeaz prin rularea aplicaiilor 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 inspecia 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 ncrcare a proiectului n cipul FPGA se realizeaz cu ajutorul utilitarului IMPACT, care permite ncrcarea proiectului att direct n cipul FPGA, ct i ntr-o memorie de tip ROM, de unde configuraia poate fi preluat n cipul FPGA la prima sa punere sub tensiune sau ulterior.
Bibliotec de simboluri Editor schematic Fiier netlist (.XNF) Editor de texte utilizator Ecuaii booleene Fiier netlist (.XNF)

Unificare Fiier .XNF SIMULARE Stimuli aplicai intrrilor fiierului netlist

Constrngeri utilizator

Fiierul .LCA (structura proiectului)

Simulator

Fiierul hart de bii de configurare a dispozitivului FPGA (.BIT)

Rezultatele simulrii Verificare in-circuit a proiectului

Fiierul de configurare a PROM-ului

Proiectul final

Figura 12.8 Fluxul de proiectare cu instrumentele software XILINX

122

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Aadar, mediul ISE Foundation conine toate aceste instrumente i le pune la dispoziia 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 pn acum, n ISE Foundation mai exist un pachet de utilitare software dedicat specificrii de constrngeri utilizator. Aceste constrngeri se pot specifica fie de la bun nceput, fie pe parcursul testrii proiectului. Se pot specifica att constrngeri temporale (de pild referitoare la frecvena operaional minim sau la ntrzierea maxim admisibil pe o anumit cale de semnal) ct i constrngeri spaiale (de pild, proiectantul poate dori ca un anumit bloc de mari dimensiuni s fie plasat ntr-o anumit regiune a matricei de CLB-uri).

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

124

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

3. Desfurarea lucrrii 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 funcional. 2. Dup simulare, se vor parcurge toii paii din fluxul de proiectare cu pachetul de programe ISE Foundation (specificare constrngeri, optimizare, mapare tehnologic, plasare, rutare). 3. Se va edita proiectul obinut cu ajutorul utilitarului Floorplanner. Ce remarcai? Realizai plasarea manual a proiectului. Cum este cel mai bine s se realizeze aceast plasare? 4. Se va edita proiectul obinut folosind utilitarul FPGA Editor. Ce remarcai? Cum a fost realizat plasarea i rutarea automat? Este convenabil aceast plasare i rutare? 5. Se va lansa utilitarul Timing Analyser. Cum se calculeaz ntrzierile de propagare n interiorul cipului? Cum putem interveni asupra acestor ntrzieri? Se va edita un fiier de constrngeri utilizator i se vor parcurge din nou etapele din fluxul de proiectare, de data aceasta innd cont i de constrngerile impuse. Cum se modific rezultatul final? 6. Lansai utilitarul IMPACT i ncrcai proiectul n cipul FPGA. Cum se pot testa ntrzierile de propagare din interiorul circuitului? 7. Verificai practic funcionarea multiplexorului 4:1 implementat n cipul FPGA. 8. Se va relua tot procesul parcurs pentru multiplexorul 4:1 pentru un numrtor binar sincron, bidirecional, pe 4 bii, cu Clock Enable, Reset sincron i Parallel Load asincron.

FAMILIA DE CIRCUITE FPGA XILINX

125

Anex
Ghidul utilizatorului plcii 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 lng cipul FPGA pe plac exist numeroase alte componente i module destinate realizrii experimentelor de laborator (prima destinaie a plcii este didactic). A.1 Cele patru afiaje cu LED-uri cu 7 segmente Placa Spartan-3 Starter Kit are patru afiaje cu LED-uri cu 7 segmente care sunt controlate de ctre pinii de intrare / ieire ai cipului FPGA, aa cum se arat n figura 12.11. Cele patru cifre afiate au n comun opt semnale de control, care comand fiecare segmentele LED individuale. Fiecare caracter individual are o intrare separat de control al anodului. Numrul pinului este nscris pe plac, ntre paranteze, pentru fiecare pin al cipului FPGA conectat la afiajul cu LED-uri. Pentru a face ca un LED s se aprind, trebuie ca att semnalul care controleaz segmentul individual respectiv, ct i semnalul de control al anodului, s fie n starea Low (0). n figura 12.11, de exemplu, afiajul din stnga prezint valoarea 2. Valorile numerice care corespund acestei cifre sunt marcate n stnga figurii. Semnalul AN3 de control al anodului este n starea Low, validnd astfel intrrile de control pentru afiajul din extremitatea stng. Intrrile de control ale segmentelor, de la A la G i DP (Decimal Point, punctul sau virgula zecimal), comand segmentele individuale care alctuiesc cifra afiat. Dup cum s-a menionat 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 afiajului. Intrrile de control al anodului aferente celorlalte afiaje, AN[2:0] sunt toate n starea High, prin urmare aceste afiaje ignor valorile prezente pe intrrile de la A la G i DP.

126

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Figura 12.11 Semnalele de control ale afiajelor cu 7 segmente n tabelul 12.1 sunt redate conexiunile cipului FPGA care comand LEDurile individuale din componena afiajelor cu 7 segmente. Tabelul 12.2 prezint conexiunile care trebuie realizate pentru a valida funcionarea fiecrui afiaj. Tabelul 12.3 conine abloanele necesare afirii caracterelor hexazecimale. Tabelul 12.1 Conexiunile dintre dispozitivul FPGA i afiajul 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 FPGA Pin AN3 E13 AN2 F14 AN1 G14 AN0 D14

FAMILIA DE CIRCUITE FPGA XILINX

127

Tabelul 12.3 Caracterele afiabile i valorile corespunztoare ale segmentelor de tip LED Caracter 0 1 2 3 4 5 6 7 8 9 A b C d E F a 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 b 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 c 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 d 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 e 0 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 f 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 g 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0

Semnalele de control al LED-urilor sunt multiplexate n timp, pentru a afia datele pe toate cele patru afiaje, dup cum se prezint n figura 12. 12. Utilizatorul trebuie s plaseze valoarea pe care dorete s o afieze pe intrrile de control ale segmentelor i s selecteze afiajul specificat trecnd semnalul de control al anodului asociat n starea Low. Datorit persistenei privirii, creierul uman percepe toate cele patru simboluri ca aprnd 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 afiarea unui simbol individual

128

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Aceast tehnic de scanare reduce numrul de pini de intrare / ieire necesari afirii celor patru simboluri. Dac s-ar fi rezervat cte un pin FPGA pentru fiecare segment individual, atunci ar fi fost necesari 32 de pini pentru a comanda toate LED-urile celor patru afiaje cu 7 segmente. Tehnica de scanare reduce numrul de pini de intrare / ieire necesari la 12. Dezavantajul acestei abordri este acela c logica dispozitivului FPGA trebuie s scaneze n mod continuu datele de afiat i s le trimit la afiaje preul pltit pentru a economisi 20 de pini de intrare / ieire este totui mic. A.2 Cele opt comutatoare cu 2 stri Placa Spartan-3 Starter Kit are opt comutatoare accesibile utilizatorului pentru a furniza intrri. Comutatoarele sunt localizate n partea de jos a plcii i sunt notate de la SW7 la SW0. Comutatorul SW7 este plasat n extremitatea stng, iar SW0 este plasat n extremitatea dreapt. Comutatoarele sunt conectate la cte 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 Pin FPGA SW7 K13 SW6 K14 SW5 J13 SW4 J14 SW3 H13 SW2 H14 SW1 G12 SW0 F12

Cnd este poziionat pe UP sau ON, comutatorul conecteaz pinul dispozitivului FPGA la VCC (starea High, deci 1 logic). Cnd este poziionat pe DOWN sau OFF, comutatorul conecteaz pinul dispozitivului FPGA la mas (starea Low, deci 0 logic). n mod normal, comutatoarele prezint o inerie mecanic de aproximativ 2 ms i nu exist nici un circuit activ de debouncing, dei acest circuit poate fi cu uurin adugat n interiorul circuitului implementat n dispozitivul FPGA de pe plac. Fenomenul de bouncing reprezint tendina oricror dou metale aflate n contact ntr-un dispozitiv electronic de a genera semnale multiple atunci cnd 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 acionat ca urmare a unei deschideri sau nchideri singulare a contactului respectiv.

FAMILIA DE CIRCUITE FPGA XILINX

129

CLOCK Intrare (de la un buton) Ieire (generat de circuitul de debouncing) Timp

Clk In (de la buton) Circuit de debouncing Out

Figura 12.13 Fenomenul de bouncing i circuitul de debouncing Cnd apsm o tast la calculator, ne ateptm ca acesta s nregistreze un singur contact. n realitate, se produce un contact iniial, un uor impuls sau o activare a contactului, apoi un alt contact cnd impulsul se termin, dup care apare un alt impuls, i aa mai departe (apar ca nite piuri sau spike-uri de tensiune). Un efect similar se produce atunci cnd un comutator fcut din contactul a dou metale este deschis. Soluia 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 uor cu ajutorul unui circuit asemntor unui registru de deplasare, care va filtra impulsurile nedorite. Circuitul primete la intrare mai multe mostre de valori ale butonului i modific ieirea numai dup ce, de-a lungul unui interval de timp dat, mai multe mostre consecutive au avut aceeai 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 plcii, spre dreapta. Comutatoarele sunt notate cu BTN3 pn la BTN0, unde BTN3 este butonul situat n extremitatea stng, iar BTN0 este butonul situat n extremitatea dreapt. Comutatoarele de tip push button sunt conectate la cte 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 Pin FPGA BTN3 (Reset utilizator) L14 BTN2 L13 BTN1 M14 BTN0 M13

130

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Apsarea unui astfel de comutator genereaz un 1 logic pe pinul asociat lui la dispozitivul FPGA. Din nou precizm c nu exist nici un circuit activ de debouncing asociat butonului. Butonul din extremitatea stng, 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 cnd este cazul, BTN3 reseteaz proiectele demonstrative care au fost oferite de productor 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 pn la LED0. LED7 este LED-ul situat n extremitatea stng, iar LED0 este LED-ul situat n extremitatea dreapt. Tabelul 12.6 prezint legturile dintre pinii dispozitivului FPGA i LED-uri. Tabelul 12.6 Conexiunile LED-urilor la pinii dispozitivului FPGA Spartan3 LED Pin FPGA LD7 P11 LD6 P12 LD5 N12 LD4 P13 LD3 N14 LD2 L12 LD1 P14 LD0 K12

Catodul fiecrui 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 afiajele plcii.

LUCRAREA NR. 13
SINTEZA CIRCUITELOR NUMERICE CU DISPOZITIVE PROGRAMABILE DE TIP FPGA
1. Scopul lucrrii Se prezint metode de sintez specifice proiectrii circuitelor numerice cu dispozitive FPGA. Se prezint strategiile de implementare a componentelor elementare n dispozitivele FPGA XILINX. Se studiaz modul de implementare a unui numrtor Moebius specificat cu editorul schematic. Se prezint principalele reguli de specificare a proiectelor n vederea sintezei lor n dispozitivele FPGA XILINX. 2. Consideraii teoretice Metodele de sintez a circuitelor numerice nu difer n cazul proiectrii cu dispozitive FPGA de metodele clasice. Dimpotriv, datorit specificului tehnicilor de proiectare cu aceste dispozitive (utilizarea instrumentelor software de susinere a proiectrii), implementarea circuitelor ar trebui s fie mai simpl. Totui, n cazul n care dorim s configurm 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 secvenial sincron este alctuit din dou pri principale: partea strict secvenial (bistabilele); partea combinaional (pori logice elementare) care contribuie n mare msur la determinarea strii urmtoare a circuitului. De aceea trebuie s discutm despre tehnicile de proiectare cu FPGA-uri a principalelor elemente de circuit, att a celor secveniale ct i a

132

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

celor combinaionale. 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 nelegerea posibilitilor i limitrilor specifice slice-urilor i CLB-urilor. Fiecare slice are o capacitate funcional i de stocare a datelor limitat, iar noi trebuie s determinm cum pot fi folosite aceste capaciti. Vom studia posibilitile de construire a decodificatoarelor, multiplexoarelor, registrelor de deplasare i a numrtoarelor (se subnelege c implementarea codificatoarelor i demultiplexoarelor se realizeaz analog cu cea a decodificatoarelor i respectiv a multiplexoarelor). Decodificatoarele se implementeaz prin cascadarea RAM-urilor funcionale ale slice-urilor, care sunt configurate fie ca funcii I fie ca funcii I-NU. Pentru a construi un decodificator 3-la-8 standard (cum ar fi 4138) sunt necesare cel puin 8 slice-uri (care au 4 intrri i o ieire) numai pentru a genera ieirile distincte pentru toate cele 8 combinaii. Multiplexoarele, ca i decodificatoarele, sunt construite n interiorul slice-urilor configurnd n mod adecvat RAM-urile interne ale acestora. Din nou, numrul limitat al intrrilor n RAM-uri necesit expandarea numrului de slice-uri pentru a forma funcii de mai multe intrri. Problemele care apar aici se refer la faptul c aceast abordare consum rapid slice-urile i scade viteza funciilor. n plus, bistabilele din slice-uri rmn de multe ori neutilizate. Registrele de deplasare sunt eficient de implementat n slice-uri. Atribuind biii unor slice-uri sau CLB-uri adiacente, registrele de deplasare nu necesit interconectare global i nu blocheaz canalele de rutare. Clasa de aplicaii care utilizeaz din plin registre de deplasare cuprinde echipamente de comunicaii, dispozitive de recunoatere a formelor, generatoare polinomiale etc. La fel cum decodificatoarele i multiplexoarele las neutilizate bistabilele, registrele de deplasare nu folosesc blocurile logice combinaionale. Implementarea numrtoarelor reprezint o problem interesant n arhitecturile LCA. Metodele clasice sunt aplicabile numai pentru numrtoare mici. Partea combinaional din alctuirea unui numrtor (cea care determin starea urmtoare, deci funciile de tranziie) crete foarte mult, n termeni de intrri necesare pentru porile logice, pe msur ce crete numrul de bii (ordinul) numrtorului. Acest tip de abordare limiteaz prea mult posibilitile LCA-ului, aa c XILINX recomand pentru numrtoare o abordare modular i cascadabil. n aceast abordare, fiecare bistabil din numrtor are n fa un acelai tip de circuit logic combinaional. Vom numi un bistabil, mpreun cu funciile de tranziie proprii, o celul de

SINTEZA CIRCUITELOR NUMERICE CU FPGA

133

numrare. Fiecare celul de numrare semnaleaz celulei urmtoare faptul c i-a ncheiat ciclul de numrare, astfel fiind posibil cascadarea acestor celule de numrare. Numrul de bii ai numrtorului este egal cu numrul de celule de numrare. ncepnd cu seria 4000, funciile de tranziie pot avea pn la 4 intrri. Principalul neajuns al acestei abordri este viteza redus. O plasare atent a celulelor minimizeaz totui timpul de propagare al semnalelor de la o celul de numrare la urmtoarea. 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 numrtor Moebius pe 4 bii:
+ 1 0 Set / Reset Q1
J S Q CLK K R Q J S Q CLK K Q R

Q2
J S Q CLK K Q R

Q3
J S Q CLK K Q R

Q4

Shift +

Figura 13.1 Numrtor Moebius pe 4 bii Acest numrtor va avea formele de und conform figurii 13.2:
100 Shift Q1 Q2 Q3 Q4
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

Figura 13.2 Formele de und ale numrtorului Moebius

134

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Dup editarea proiectului, acesta va fi simulat cu ajutorul simulatorului din ISE Foundation i se vor obine 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 cteva 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 creterea performanei proiectului i chiar a sistemului n care este integrat cipul FPGA gazd. a) Duplicarea bistabilelor Exist situaii cnd un singur bistabil comand foarte multe alte componente din sistem (figura 13.3). n acest caz, firul fn1 are un fanout foarte mare.

fn1

Figura 13.3 Fir cu fanout mare: un singur bistabil comand un numr 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 micoreaz ntrzierile de propagare a semnalelor prin fir;

SINTEZA CIRCUITELOR NUMERICE CU FPGA

135

Fiecare bistabil poate direciona semnalul produs de el ctre regiuni fizice diferite ale cipului, reducndu-se astfel congestia cilor de rutare.

fn1

fn1

Figura 13.3 Duplicarea bistabilului reduce fanout-ul i congestia cilor de rutare Principalele rezultate ale aplicrii acestei tehnici: Crete rutabilitatea i performana; Crete suprafaa ocupat de ctre proiect n cip (logica activ + reeaua de interconectare). Se recomand ca bistabilele duplicate s fie notate cu _a, _b etc., nu _1, _2, deoarece bistabilele numerotate sunt mapate n acelai 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 dei 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 setm instrumentelor de sintez astfel ca s pstreze logica redundant (de exemplu, se folosete atributul KEEP). Nu trebuie duplicate bistabilele care primesc date de la semnale asincrone. Mai nti semnalul respectiv trebuie sincronizat i abia apoi semnalul sincronizat va fi distribuit bistabilelor duplicate. b) Pipelining Tehnica de pipelining are ca scop creterea vitezei sistemelor de calcul. Regula general este de a se introduce cel mult dou niveluri de

136

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

logic combinaional ntre registrele tampon din interiorul sistemului situaia este ilustrat n figura 13.4.

fMAX = n MHz

Dou sau mai multe niveluri de logic combinaional

Figura 13.4 Structura general a unui sistem numeric Principalul factor care limiteaz viteza sistemului este, n acest caz, ntrzierea de propagare a semnalelor prin blocul de logic combinaional. Cu ct numrul nivelurilor de logic combinaional dintre bistabile crete, cu att viteza sistemului scade. De aceea, ideal pentru performan ar fi ca numrul nivelurilor de logic combinaional dintre bistabile s fie minim (adic egal cu 1). Acest deziderat se poate atinge prin spargerea logicii combinaionale n blocuri mai mici ntre care se vor intercala alte registre tampon, ca n figura 13.5.

fMAX 2n MHz

un nivel de logic combinaional

un nivel de logic combinaional

Figura 13.5 Crearea unui pipeline cu dou etaje pentru creterea vitezei Atunci cnd recurgem la pipelining, trebuie s verificm anumite aspecte. n primul rnd, trebuie s determinm cte niveluri de logic combinaional exist ntre bistabile n proiectul nostru. Dac exist un singur nivel logic ntre bistabile, tehnica de pipelining nu va mbunti performana. Acest fapt se poate determina citind raportul Post-Map Static Timing Report sau raportul Post-Place & Route Static Timing Report. n al doilea rnd, trebuie s ne ntrebm dac avem la dispoziie n cipul FPGA suficiente bistabile pentru implementare. Acest fapt se poate

SINTEZA CIRCUITELOR NUMERICE CU FPGA

137

determina citind raportul produs de utilitarul MAP (MAP Report). n general, numrul de bistabile disponibile este suficient. Urmtoarea problem pe care trebuie s ne-o punem este aceea dac sistemul poate tolera latena. Fiecare etaj al pipeline-ului introduce o ntrziere egal cu o perioad a impulsului de tact, nainte ca prima ieire corect s fie disponibil. Acest fenomen se numete umplerea pipelineului. Dup ce pipeline-ul este plin, din acel moment ncolo este disponibil cte o nou ieire n fiecare ciclu de tact. Aceast problem este ilustrat grafic n figura 13.6

Prima intrare sosete aici

Pipeline-ul se umple

Prima ieire valid

Dup ce pipeline-ul este plin, este disponibil cte o nou ieire n fiecare ciclu de tact

Figura 13.6 Problema latenei n pipeline Un exemplu de pipeline este cel din figura 13.7 a). Se observ c exist dou niveluri de logic combinaional ntre bistabilul surs i cel destinaie. Frecvena operaional este de aproximativ 233 MHz. Prin introducerea unui nivel suplimentar de bistabile tampon, se creeaz un pipeline cu dou etaje a crui frecven operaional ajunge la 385 MHz (figura 13.7 b)).

138

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

LUT D Q LUT LUT D Q

Bistabil surs
LUT

Bistabil destinaie

a)

LUT D Q

LUT

LUT

Bistabil surs
LUT D Q

Bistabil destinaie
Bistabile tampon n pipeline

b)

Figura 13.7 a) Circuitul iniial cu dou niveluri de logic combinaional ntre bistabilul surs i cel destinaie; b) Circuitul pipeline-izat c) Folosirea bistabilelor din blocurile de intrare / ieire Fiecare bloc de intrare / ieire (IOB) din dispozitivele FPGA XILINX conine 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 cnd 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 interfaarea 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.

SINTEZA CIRCUITELOR NUMERICE CU FPGA

139

De regul, instrumentele de sintez tind s aloce bistabilele din sliceuri, nu din IOB-uri. Pentru a obine utilizarea bistabilelor din IOB-uri n decursul procesului de sintez, putem recurge la specificarea unor constrngeri temporale care s foreze 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 crora 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 cunoatem numele (eticheta) fiecrei instane de registru. Registrele fiind alctuite 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, opiunea Pack I/O Registers/Latches into IOBs este selectat implicit. Folosirea constrngerilor temporale va avea de asemenea ca efect plasarea registrelor n IOB-uri, n cazul cilor critice. n final, vom verifica raportul utilitarului MAP pentru a avea confirmarea faptului c au fost utilizate bistabilele din IOB-uri (n seciunea 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 sigurana i fiabilitatea proiectului. Circuitele de sincronizare sunt necesare atunci cnd cipul are intrri asincrone sau atunci cnd n cadrul aceluiai proiect exist zone care funcioneaz sincron cu semnale de tact diferite i total nenrudite (ntre care nu exist nici o corelaie), dar care schimb informaie prin intermediul unor semnale. Aceste semnale interzonale trebuie sincronizate cu ajutorul unor circuite de sincronizare. Dac ntre semnalele de tact exist o corelaie, atunci nu este nevoie de nici un circuit de sincronizare (se pot folosi constrngeri de tip PERIOD impuse asupra semnalelor de tact, care vor rezolva toate problemele poteniale). Violrile timpilor de setup i de hold constituie o problem serioas i nepredictibil n cazul intrrilor asincrone. Ele apar atunci cnd intrarea

140

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

de date a bistabilului se modific ntr-un moment temporal prea apropiat de frontul tactului. Aceasta poate avea drept rezultat trei situaii (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; Ieirea bistabilului devine metastabil.

Vechea valoare a lui D Comportare posibil pe ieirea Q Noua valoare a lui D Starea metastabil

Figura 13.8 Rezultatele posibile ale violrii 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 rmne 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, apariia evenimentelor metastabile poate fi doar redus, nu eliminat complet. Exist un parametru funcional care se numete Timpul Mediu ntre Cderi (Mean Time Between Failure MTBF) i care depinde n mod exponenial de mrimea intervalului de timp acordat bistabilului pentru a-i reveni din starea metastabil. Dac i acordm bistabilului cteva nanosecunde suplimentare pentru a-i reveni, aceasta va reduce extrem de mult ansele apariiei 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.

SINTEZA CIRCUITELOR NUMERICE CU FPGA

141

Circuitul de sincronizare 1 Acesta poate fi folosit atunci cnd impulsurile de intrare au ntotdeauna o durat cel puin egal cu cea a perioadei semnalului de tact. Bistabilul suplimentar previne apariia fenomenului de metastabilitate datorit faptului c i ofer primului bistabil timpul necesar pentru a-i reveni dup apariia unui eveniment de tip metastabilitate.
Previne metastabilitatea Intrare asincron Semnal sincronizat

Bist 1

Bist 2

CLK

Figura 13.9 Circuitul de sincronizare 1 Circuitul de sincronizare 2 Acesta poate fi folosit atunci cnd impulsurile de intrare pot avea o durat mai mic dect cea a perioadei semnalului de tact. Bistabilul 1 capteaz impulsurile scurte, care sunt apoi preluate n Bistabilul 2. Bistabilul 3 previne apariia strii metastabile; dac semnalul sincronizat a fost preluat corect, Bistabilul 1 este resetat pentru a fi pregtit s capteze urmtorul impuls.
VCC
D Q

Previne metastabilitatea
D Q

Semnal sincronizat

Bist 1 Intrare asincron CLK


CL

Bist 2

Bist 3

Figura 13.10 Circuitul de sincronizare 2

142

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

2.4 Reguli de sintez n cazul specificrii proiectului prin limbaj de descriere hardware a) Reguli generale de sintez Prezentm succint n continuare cteva 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: Folosii tehnica de pipelining cu ajutorul ei se va spori frecvena operaional a sistemului proiectat i implicit viteza; Folosii reset-ul sincron astfel controlul sistemului de calcul proiectat va fi mai bun; Folosii optimizrile automatelor finite exist astfel de setri care se pot face n diferitele meniuri ale utilitarelor din pachetul software de susinere a proiectrii; Folosii resurse care pot fi inferate de ctre instrumentul de sintez, cum ar fi: o Multiplexor; o Shift Register LUT (SRL); o BlockRAM, LUT RAM; o Blocuri DSP cascadate. Evitai construciile de limbaj de nivel nalt (de exemplu, buclele) n cod multe instrumente de sintez produc implementri lente pe baza lor; Folosii constrngerile temporale: o Specificai constrngeri stricte, dar realiste asupra semnalelor de tact; o Plasai semnale de tact nenrudite n grupuri (clock groups) diferite. Folosii opiunile i atributele de sintez cele mai adecvate: o Dac dorii s obinei o vitez ct mai mare, dezactivai opiunea de partajare a resurselor (resource sharing). Cnd aceast opiune este selectat, instrumentul de sintez va permite ca funciile logice s aib n comun anumite ci de semnal (de exemplu, dou sumatoare separate pot fi autorizate s partajeze anumite blocuri logice). Folosirea acestei opiuni genereaz de obicei module cu vitez mai mic, dar care ocup mai puin spaiu (logic activ) n cip;

SINTEZA CIRCUITELOR NUMERICE CU FPGA

143

o Mutai bistabilele din IOB-uri mai aproape de blocurile logice combinaionale; o Activai opiunea de optimizare a automatelor finite (FSM optimization) implementarea automatelor finite este detaliat mai jos n cadrul acestei lucrri; o Folosii opiunea de retiming semnificaia ei este detaliat mai jos n cadrul acestei lucrri. Evitai instruciunile if-then-else ncuibrite majoritatea instrumentelor de sintez le implementeaz n paralel, ns este posibil s se genereze un bloc logic pe baz de prioriti (cum este de pild codificatorul prioritar), dei nu acesta era efectul dorit; Folosii instruciuni de tip case pentru decodificatoare de mari dimensiuni, i nu instruciuni de tipul if-then-else; Ordonai i grupai funciilor i operatorii aritmetici i logici de exemplu, scriei A <= (B + C) + (D + E), i nu A <= B + C + D + E; Evitai orice inferen nedorit a unui bistabil trebuie acoperite toate ieirile posibile pe fiecare ramur de cod. Acest lucru este uor de realizat specificnd instruciuni de atribuire de valori implicite naintea instruciunilor if-then-else i case; Unele resurse trebuie s fie instaniate 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 / ieire 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 prevzute cu funcionalitatea de set sau reset dup configurare. Este preferabil folosirea reset-ului sincron n locul celui asincron dispozitivele FPGA XILINX au un reset al configuraiei (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

144

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

proiectantului dup configurare, prin intermediul blocului STARTUP. Nu este necesar iniializarea 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 aplicaii proiectantul trebuie s-i defineasc propriile automate finite, cu totul unice (n funcie de cerinele aplicaiei). ntruct 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 urmtoarele elemente: La intrri: semnale de intrare i tranziii de la o stare la alta; La ieiri: semnale de ieire, de control i de validare pentru restul sistemului; Automatul NU trebuie s conin logic aritmetic, uniti de execuie (ci de date) sau alte funcii combinaionale. Cu alte cuvinte, automatul finit trebuie s conin strict logica de trecere dintr-o stare n alta i de generare a ieirilor specifice, fr nici o interferen cu alte module ale sistemului (trebuie s fie pur, complet separat de partea de execuie).
x1 Intrri xn zm z1 Ieiri

CLC

y1 Variabile de stare (starea curent) ys Elemente de memorie (Registrul de stri)

Y1 Funcii de tranziie (starea urmtoare) Ys

Figura 13.11 Schema generic a unui automat finit Cnd specificm un automat finit ntr-un limbaj de descriere hardware, vom plasa logica responsabil de generarea noii stri ntr-o instruciune case. Tot aici putem include registrul de stri; el poate fi specificat i ntr-un proces separat. Aceast abordare previne partajarea resurselor (resource sharing), care poate afecta viteza sistemului.

SINTEZA CIRCUITELOR NUMERICE CU FPGA

145

n cazul n care folosim limbajul VHDL, vom folosi tipuri enumerate pentru definirea strilor automatului, deoarece majoritatea instrumentelor de sintez au comenzi pentru extragerea i recodificarea strilor automatelor descrise astfel. Acesta este un mare avantaj pentru proiectant, care nu trebuie s se mai preocupe de acest aspect (unde de altfel are destule anse s greeasc)! n cazul n care urmrim s obinem 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 stri. O ultim sugestie este aceea de a trece ieirile automatului finit prin registre, pentru a-i crete performana. c) Instanierea i inferena resurselor Se recomand instanierea unei componente atunci cnd suntem nevoii s impunem cu precizie ce resurs ne este necesar, iar instrumentul de sintez fie nu poate infera resursa respectiv, fie o infereaz greit. Inferena este preferabil ori de cte ori este posibil, deoarece face codul mult mai portabil. Pe de alt parte, instanierea este recomandat pentru a crea blocuri cu funcionalitate mai complex, cum ar fi Uniti Aritmetico-Logice, multiplicatoare rapide, filtre cu rspuns finit (Finite Impulse Response FIR). Pentru acestea se recomand utilitarul CORE Generator. Se va folosi instanierea numai atunci cnd este necesar accesarea anumitor caracteristici speciale ale dispozitivului FPGA, cnd se dorete creterea performanei sistemului sau diminuarea suprafeei de logic activ ocupat n cip. Este indicat s limitm localizarea componentelor instaniate la doar cteva fiiere surs, pentru a facilita localizarea acestor componente atunci cnd vom dori s portm codul pe un alt dispozitiv FPGA gazd. XILINX recomand instanierea urmtoarelor 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 crora se selecteaz standardul electric; Resursele de gestionare a semnalelor de tact DCM, IBUFG, BUFG, BUFGMUX i BUFGCE.

146

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Raiunea acestor sugestii o gsim n faptul c astfel este mai uor s schimbm sau s portm proiectul nostru pe alte suporturi fizice, realizate n tehnologii noi (mai avansate). n felul acesta, sunt mai puine constrngeri de sintez i atribute care trebuie transmise mai departe (cel mai simplu este s pstrm majoritatea atributelor i constrngerilor n fiierul User Constraints File (UCF), cci astfel informaiile critice sunt grupate ntr-un singur fiier) Se recomand de asemenea s crem un bloc ierarhic separat pentru instanierea acestor resurse. Deasupra blocului de la nivelul ierarhic cel mai nalt din proiectul nostru (top-level), vom crea un wrapper care va conine instanierile componentelor specifice dispozitivelor FPGA XILINX. n cazul n care vom dori la un moment dat s portm proiectul nostru pe un dispozitiv FPGA al altui productor, va fi suficient s efectum modificrile n acest wrapper.
XILINX wrapper top_xlnx
STARTUP DCM IBUFG BUFG

Blocul TopLevel

OBUF_GTL OBUF_GTL OBUF_GTL

IBUF_SSTL2_I

Figura 13.12 Schema de principiu a unui wrapper d) Operaia de Retiming Aceast operaie este suportat de principalii productori de software de susinere a proiectrii. Instrumentul de sintez urmrete s distribuie automat blocurile de logic combinaional dintre registre pentru a echilibra ntrzierile pe cile de date combinaionale. Figura 13.13 ilustreaz acest concept. nainte de Retiming
D Q D Q D Q

Dup Retiming
D Q D Q D Q

Figura 13.13 Operaia de retiming

SINTEZA CIRCUITELOR NUMERICE CU FPGA

147

3. Desfurarea lucrrii 1. Se editeaz i se simuleaz numrtorul Moebius din figura 13.1 i se verific obinerea corect a formelor de und din figura 13.2. 2. Se parcurg toi paii necesari n vederea implementrii numrtorului Moebius n cipul FPGA de pe placa NEXYS-2, folosindu-se i utilitarele din pachetul Foundation Series menionate n seciunea 2.2. 3. Se editeaz, se simuleaz i se parcurgnd toi paii necesari n vederea implementrii unui numrtor zecimal i a unei uniti aritmetico-logice n cipul FPGA de pe placa NEXYS-2. 4. Se editeaz i se simuleaz un dispozitiv universal numrtor / registru de deplasare, parcurgndu-se apoi toi paii necesari n vederea implementrii n cipul FPGA de pe placa NEXYS-2. 5. Se va specifica numrtorul Moebius din figura 13.1 prin limbaj de descriere hardware, iar numrtorul zecimal i unitatea aritmeticologic 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 condiii? 6. Fiind dat urmtorul circuit (figura 13.14):

Figura 13.14 Circuitul iniial s-a dorit pipeline-izarea lui, aa 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?

148

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Anex
Ghidul utilizatorului plcii NEXYS-2 elemente de baz
Fiind produs de aceeai companie (Digilent Inc.), placa NEXYS-2 are n principiu componente principale similare cu cele ale plcii Spartan3 Starter Kit care a fost prezentat n Anexa lucrrii 12. Principalele deosebiri (din punct de vedere al desfurrii lucrrilor practice) constau n dispozitivul FPGA existent pe plac (Spartan3E-500 FG320) i n modul su de programare, care se realizeaz pe portul USB. Pentru programarea plcii este necesar folosirea unui program suplimentar al firmei Digilent Inc., numit ADEPT. A.1 Cele patru afiaje cu LED-uri cu 7 segmente Numrul i principiul de funcionare al acestor afiaje este similar celui al afiajelor de pe placa Spartan3 Starter Kit. Pinii dispozitivului FPGA la care sunt legai pinii afiajelor sunt redai n tabelele 13.1 i 13.2. Tabelul 13.1 Conexiunile dintre dispozitivul FPGA i afiajul cu 7 segmente (active pe 0) Segmentul Pinul dispozitivului FPGA A L18 B F18 C D17 D D16 E G14 F J17 G H14 DP C17 Tabelul 13.2 Semnalele de control al anodului (active pe 0) Anode Control FPGA Pin AN3 F15 AN2 C18 AN1 H17 AN0 F17

SINTEZA CIRCUITELOR NUMERICE CU FPGA

149

A.2 Cele opt comutatoare cu dou poziii Numrul i principiul de funcionare al acestor comutatoare este similar celui al comutatoarelor de pe placa Spartan3 Starter Kit. Pinii dispozitivului FPGA la care sunt legai pinii comutatoarelor sunt redai n tabelul 13.3. Tabelul 13.3 Conexiunile comutatoarelor la pinii dispozitivului FPGA Comutator Pin FPGA SW7 R17 SW6 N17 SW5 L13 SW4 L14 SW3 K17 SW2 K18 SW1 H18 SW0 G18

A.3 Cele patru comutatoare de tip push button Numrul i principiul de funcionare 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 legai pinii comutatoarelor de tip push button sunt redai n tabelul 13.4. Tabelul 13.4 Conexiunile comutatoarelor de tip push button la pinii dispozitivului FPGA Push Button Pin FPGA A.4 LED-urile Numrul i principiul de funcionare al acestor LED-uri este similar celui al LED-urilor de pe placa Spartan3 Starter Kit. Pinii dispozitivului FPGA la care sunt legai pinii LED-urilor sunt redai n tabelul 13.5. Tabelul 13.5 Conexiunile LED-urilor la pinii dispozitivului FPGA Spartan3 LED Pin FPGA LD7 R4 LD6 F4 LD5 P15 LD4 E17 LD3 K14 LD2 K15 LD1 J15 LD0 J14 BTN3 H13 BTN2 E18 BTN1 D18 BTN0 B18

A.5 Programarea plcii Pentru programarea plcii nu se mai poate folosi utilitarul IMPACT din mediul ISE Foundation, ci se va folosi programul ADEPT (mai precis modulul ExPort al acestuia). Interfaa fiind foarte simpl i intuitiv, nu va fi prezentat aici.

ANEXA 1
SISTEME DE NUMERAIE I CODURI
1. Sisteme de numeraie Sistemele numerice prelucreaz informaia. n vederea prelucrrii, informaia trebuie s fie codificat. Pentru codificare, se utilizeaz un anumit tip de reprezentare. Sistemul de numeraie este format din totalitatea regulilor de reprezentare a numerelor cu ajutorul unor simboluri numite cifre. Sistemele de numeraie pot fi poziionale (valoarea unei cifre este determinat de poziia sa n cadrul numrului) sau nepoziionale. Un numr N ntr-un sistem poziional poate fi reprezentat ntr-o baz de numeraie b astfel:

N = aq 1b

q 1

+...+ a0b +...+ a pb


0

i = p

a b
i

q 1

( A 11 .)

unde baza b este un numr ntreg mai mare ca 1 i ai sunt ntregi n gama 0 ai b 1 . Numrul N n baza b se noteaz astfel: (N)b. Atunci cnd baza nu este specificat, ea este implicit 10 (deoarece sistemul zecimal este cel mai utilizat n practic). Cnd baza b = 2, reprezentarea numeric se numete sistem numeric binar. Complementul unei cifre a, notat cu a , n baza b este definit ca a = (b 1) a . n sistemul numeric binar 0 = 1 i 1 = 0 .
2. Conversia bazei de numeraie

n multe aplicaii practice se pune problema conversiei unui numr 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 numrului (N)b1 ca un polinom n puterile lui b1 i evaluarea polinomului folosind aritmetica n baza b2.

SISTEME DE NUMERAIE I CODURI

151

Exemplu: Pentru b1 = 3, b2 = 10 i (N)3 = 2201.1 vom avea: (N)10 = 233 + 232 + 031 + 130 + 13-1 = 54 + 18 + 0 + 1 + 0,3 = 73,3 n cazul b) este mai convenabil s utilizm aritmetica n baza b1.Conversia numrului se face prin conversia separat a prii ntregi i a prii fracionare a acestuia. Pentru conversia prii ntregi a numrului, aceasta se mparte la baza b2 obinndu-se astfel un ct i un rest; se reine restul i se continu cu mprirea la baza b2 a ctului. Algoritmul se oprete n momentul n care avem ctul 0. Partea ntreag a rezultatului se obine prin scrierea resturilor n ordinea invers a generrii lor. Pentru conversia prii fracionare a numrului, aceasta se nmulete cu baza b2, obinndu-se astfel un numr format dintr-o parte ntreag i o parte fracionar; se reine partea ntreag i se continu cu nmulirea cu baza b2 a prii fracionare obinute. Procesul continu pn la obinerea preciziei dorite. Exemplu: Pentru b1 = 10, b2 = 4 i (N)10 = 47.4 vom avea: 1. conversia prii 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 prii fracionare: 0.4 4 = 16 . 1 0.6 4 = 2.4 2 Partea fracionar 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 grupri de cte 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

152

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

3. Coduri binare

Dei sistemul de numeraie binar are multe avantaje practice i este foarte utilizat n calculatoarele numerice, n multe cazuri este convenabil s lucrm cu sistemul zecimal, n special acolo unde comunicaia ntre om i main este intens. Pentru a simplifica problema comunicaiei au fost definite un numr de coduri astfel nct 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 mpri n dou clase: ponderate i neponderate.
3.1. Coduri ponderate

Caracteristica principal a codurilor ponderate este aceea c fiecrei cifre binare i este asociat o pondere. Pentru fiecare grup de 4 bii suma ponderilor acelor cifre binare a cror valoare este 1 este egal cu cifra zecimal pe care o reprezint. O cifr zecimal ntr-un cod ponderat se scrie astfel:

N = ai bi
i =0

( A 1.2)

unde ai = 0 sau 1. n tabelul A-1.1 se dau trei exemple de coduri binare ponderate. Primul cod se numete BCD (Binary Coded Decimal), deoarece pentru obinerea codului fiecare cifr zecimal este convertit n binar.
Tabelul A-1.1 Trei exemple de coduri ponderate
Cifr Zecimal 0 1 2 3 4 5 6 7 8 9 b3 8 0 0 0 0 0 0 0 0 1 1 b2 4 0 0 0 0 1 1 1 1 0 0 b1 2 0 0 1 1 0 0 1 1 0 0 b0 1 0 1 0 1 0 1 0 1 0 1 b3 2 0 0 0 0 0 1 1 1 1 1 b2 4 0 0 0 0 1 0 1 1 1 1 b1 2 0 0 1 1 0 1 0 0 1 1 b0 1 0 1 0 1 0 1 0 1 0 1 6 0 0 0 1 0 1 0 1 1 1 pondere negativ 4 0 1 0 0 1 0 1 1 0 1 2 0 0 1 0 0 1 1 0 1 1 -3 0 1 0 1 0 1 0 1 0 1

SISTEME DE NUMERAIE I CODURI

153

Ultimele dou coduri fac parte din familia codurilor autocomplementare, deoarece complementul lui N este 9-N. Condiia 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 adugarea lui 0011 la fiecare cuvnt de cod din BCD. Este un cod autocomplementar i posed anumite proprieti care l-au fcut practic. Din acest cod s-a eliminat combinaia 0000, care ar putea fi confundat cu lipsa de informaie. n multe aplicaii practice, analog conversiei digitale este de dorit a se folosi codurile n care toate cuvintele de cod succesive difer doar printro cifr. Codurile care au o astfel de proprietate se numesc coduri ciclice. Un astfel de cod este codul Gray. Codul Gray de n bii face parte din clasa codurilor reflectate. Termenul reflectate este folosit pentru a desemna coduri care au urmtoarea proprietate: cuvntul de cod de n bii poate fi generat prin reflectarea codului de n-1 bii.
Tabelul A-1.2 Obinerea codului Gray de 3 bii din cel de 2 bii

Gray 2 bii 0 0 0 1 1 1 1 0

0 0 0 0 1 1 1 1

Gray 3 bii 0 0 1 1 1 1 0 0

0 1 1 0 0 1 1 0

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

154

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Tabelul A-1.3 Codificarea cifrelor zecimale n codurile Exces 3 i Gray

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

0 0 0 0 0 1 1 1 1 1

Exces 3 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0

1 0 1 0 1 0 1 0 1 0

0 0 0 0 0 0 0 0 1 1

Gray 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 1 0 1 0

0 1 1 0 0 1 1 0 0 1

4. Reprezentarea numerelor algebrice n calculator

Reprezentarea numerelor n calculatoarele numerice se face bineneles n sistemul binar. Se pot alege mai multe soluii pentru a indica poziia virgulei i semnul numrului. Poziia 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, numrul de cifre (32 sau 64 de poziii binare) fiind determinat de numrul de celule din care sunt construite registrele utilizate. Poziia virgulei se stabilete iniial 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 faa cifrei cele mai semnificative a numrului. Rezult c numerele cu care se opereaz sunt subunitare, numerele reale ale utilizatorului suferind n prealabil transformri n acest sens. Pentru a indica semnul numrului n binar exist mai multe tehnici, fiecare dintre acestea determinnd un mod de reprezentare: prin mrime i semn, prin complement fa de 2, prin complement fa de 1. Definiie. Se numete complement fa de baza b al numrului ( N ) b numrul ( N ) b definit prin relaia:

SISTEME DE NUMERAIE I CODURI

155

(N)
relaia:

= bn ( N )b

( A 13 . )

iar complementul fa de b-1 al numrului ( N ) b , numrul N definit prin


b

( )

(N)

= bn ( N )b b m

( A 14 . )

n care n reprezint numrul de cifre al prii ntregi a numrului N, iar m reprezint numrul de cifre al prii fracionare a numrului N. Exemple: Fie numerele N1 = (123,64)10; N2 = (1001,11)2 ( N 1 ) 10 = 10n N = 103 123,64 = 876,36

(N )
1 2

10

= 10n N 10 m = 103 123,64 102 = 876,35

respectiv: , = 0110,01 ( N 2 ) 2 = 2 n N = 2 4 100111

(N )

= 2 n N 2 m = 2 4 100111 , 2 2 = 0110,00

Cel mai mare numr binar de n cifre care poate fi reprezentat fiind N = 2 1, rezult c numrul 2n necesar pentru obinerea complementului nu poate fi reprezentat, acesta fiind echivalent cu numrul 0. Complementele fa de 2 i fa de 1 (complementul fa de 1 se mai numete i invers) se calculeaz n felul urmtor (n este numrul de cifre binare ale numrului):
n

Complementul fa de 1: exist trei procedee: 1.


3.

(N)

= 0 N 2n = N 2 n

2. se inverseaz fiecare cifr n parte

(N)

Exemplu: Pentru numrul N = 10011 1.

(N)

000001001100001 01100

156

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

2. Poziiile binare avnd valoarea 1 vor cpta valoarea 0 iar cele cu valoarea 0 vor cpta valoarea 1.

(N)

= 01100

3.

(N)

0110100001 01100

Complementul fa de 2: exist de asemenea trei procedee: 1. ( N ) = 0 N

2. ( N ) = N + 2 n 3. Pornind de la dreapta spre stnga se pstreaz neschimbate cifrele egale cu 0 inclusiv prima cifr egal cu 1, dup care toate celelalte cifre se inverseaz. Exemplu: Pentru numrul N = 10011 1. ( N ) = 0000010011 01101 2.

(N) =

01100+ 00001 01101

3.

N = 10011
rmne neschimbat se inverseaz

SISTEME DE NUMERAIE I CODURI

157

4.1.1 Reprezentarea prin mrime i semn Un numr prin mrime i semn se scrie conform relaiei: N = an 2 n +
i = m n 1

.) a 2 ( A 15
i i

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 numrului N. Exemple:

+8 = 01000
Valoarea numrului bitul de semn

-5 = 10101
Valoarea numrului bitul de semn

Reprezentarea prin mrime i semn are avantajul de a fi foarte asemntoare cu scrierea manual obinuit, dar din punctul de vedere al realizrii calculelor prezint unele dezavantaje. Realizarea unei operaii de adunare sau scdere a dou numere nu depinde numai de funcia de executat ci i de semnul numerelor respective. Atunci este necesar examinarea bitului de semn nainte de executarea operaiei respective. De asemenea blocul aritmetic al unui calculator se poate simplifica mult dac n loc s conin dispozitive de adunare i scdere conine 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 numr N se reprezint prin complement fa de 2 conform relaiilor:
N = 0 2n +
n 1 i = m

a 2
i i i

n1

pentru N > 0 (A-1.6)

N = 1 2 n +

i = m

a 2

+ 2 m pentru N < 0

n care a i = 1 ai reprezint complementul fa de 1 al cifrei ai.

158

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Exemplu:
+ 6 = 00110 - 6 = -(0110)2 Trecem numrul n cod complementar: 0110 1010 Reprezentarea numrului va fi deci: - 6 = 11010 Reprezentarea n complementul fa de 2 corespunde chiar valorii reale a numrului. Pentru a demonstra aceasta utilizm relaia:

2n =

i = m

n1

+ 2 m

( A 17 . )

Introducnd relaia (A-1.7) n relaia (A-1.6) obinem: N = 2 i 2 m +


i = m n 1

i = m

a 2
i

n 1

+ 2 m
n 1

apoi fcnd a i = 1 ai
N = 2i +
i = m n 1 i = m

2 a 2
i i = m i

n 1

n 1

i = m

a 2
i

ceea ce trebuia demonstrat. Toate calculele de mai sus au fost fcute n aritmetica zecimal. 4.1.3 Reprezentarea prin complementul fa de 1 (cod invers) Un numr N se reprezint prin complementul fa de 1 conform relaiilor: N = 0 2n +
i = m n 1

a 2
i i

n1

pentru N > 0 (A-1.8)

N = 1 2 n +

i = m

a 2

pentru N < 0

n care a i = 1 ai reprezint complementul fa de 1 al cifrei ai. Exemplu: N = + 6 = 00110 N = - 6 = -(0110)2 Trecem numrul n cod invers: 0110 1001

SISTEME DE NUMERAIE I CODURI

159

Reprezentarea numrului va fi deci: N = - 6 = 11001 Urmrind 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 numr N pentru care virgula se consider amplasat dup prima poziie binar poate fi scris sub forma: N = a0 2 0 + N * ( A 19 . ) * n care a0 reprezint bitul semnului, iar N are diferite semnificaii: N = ai 2 i pentru reprezentarea n mrime i semn;
*

N * = a i 2 i + 2 n
i =1 n

i =1 n

pentru

<

reprezentarea

prin

complementul fa de 2; N * = a i 2 i pentru N < 0 n reprezentarea prin complementul fa


i =1

de 1, ai reprezentnd cifrele numrului, n - numrul de cifre plasate la dreapta virgulei, iar a i = 1 ai . Plasarea virgulei conform relaiei (A-1.9) are urmtoarele avantaje: - numrul N* fiind subunitar poziia virgulei rmne aceeai dup nmulirea binar; - aceast plasare a virgulei poate fi uor memorat; - operaia de nmulire nu va duce niciodat la depire, adic rezultatul nmulirii nu va ntrece limitele superioare ale gamei de reprezentare a numerelor n calculator.
4.2 Reprezentarea numerelor n virgul mobil

Cnd 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 numr poate fi reprezentat prin mantis i exponent. Exponentul indic ordinul de mrime al numrului printr-o putere a lui 10, iar mantisa determin mrimea numrului n cadrul ordinului respectiv. O posibil reprezentare a numerelor n virgul mobil este prezentat n figura A-1.1.

160

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

SE 0

SM 7 8

31

Figura A-1.1. Reprezentarea numerelor n virgul mobil


SE- semn exponent; Biii 1-6 exponentul; SM semn mantis; Biii 8-31 mantis

Se observ c numrul este reprezentat pe 32 de poziii 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 N = -26 * 0,1101 1 0 0 1 0 1 1 0 0 1 1 0 1 0 N = +2-11 * 0,01101 0 0

Figura A-1.2 Exemple de reprezentare a numerelor n virgul mobil

Astzi 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 mrime numit caracteristic. Se numete caracteristic a unui numr N numrul C dat de: C = E + 64 n care E este exponentul numrului (o putere a lui 16). n reprezentarea din figura A-1.1, bitul de semn 0 este utilizat acum pentru a indica semnul mantisei. Biii 1-7 reprezint caracteristica numrului, iar biii 8-31 mantisa. Se observ c pentru mantis sunt rezervai 24 de bii, caz n care reprezentarea se numete n simpl precizie (figura A-1.3, a.). Dac ns pentru mantis se aloc 56 de bii, reprezentarea se numete n dubl precizie (figura A-1.3, b.). a b S S C 7 8 C 7 8 M 63 M 31

Figura A-1.3 a, b Reprezentarea numerelor n virgul mobil n simpl precizie, respectiv dubl precizie

SISTEME DE NUMERAIE I CODURI

161

Pe de alt parte, dac pentru reprezentarea caracteristicii se utilizeaz 7 poziii binare, rezult c se pot nscrie n binar numere de la 0 pn la 27-1. Cum caracteristica este exponentul numrului la care s-a adunat 64, rezult c se pot reprezenta exponeni de la 64 pn la +63. Sintetiznd: 0 C 127; -64 E 63.
5. Detectarea i corecia erorilor

n procesul de transmitere a informaiei n sistemele numerice, aceasta poate fi alterat. n vederea determinrii corectitudinii informaiei recepionate, se pot folosi coduri detectoare i corectoare de erori.
5.1. Coduri detectoare de erori

Codurile detectoare de erori au urmtoarea proprietate: apariia unei singure erori transform un cuvnt valid ntr-un cuvnt invalid. O metod pentru detecia erorilor este metoda bitului de paritate. Ideea de baz n controlul de paritate este de a aduga o cifr binar n plus la fiecare cod cuvnt al unui cod dat, pentru a face ca numrul de bii de 1 din fiecare cuvnt 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 excepia cuvntului 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 3 4 5 6 7 8 9

0 0 1 1 0 1 0 0 1 0 0

1 0 1 0 1 0 1 0 0 1 0

2 0 0 1 1 0 0 1 0 0 1

4 1 0 0 0 1 1 1 0 0 0

7 1 0 0 0 0 0 0 1 1 1

162

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

n general, pentru a obine un cod de n bii de detecie a erorii, nu se pot folosi mai mult de jumtate din cele 2n combinaii posibile ale cifrelor. Pentru a obine un cod detector de erori pentru 10 cifre sunt necesare cel puin 5 cifre binare. Este util s definim distana dintre 2 coduri cuvnt ca numrul de cifre care trebuie s fie schimbate ntr-un cuvnt pentru a rezulta alt cuvnt. Distana minim a unui cod este cel mai mic numr de bii prin care difer dou coduri. Astfel distana minim dintre BCD si Exces 3 este 1. Un cod este cod detector de erori dac distana sa minim este mai mare sau egal cu 2.
5.2. Coduri corectoare de erori

Spunem c un cod este corector de eroare dac cuvntul de cod corect poate fi ntotdeauna dedus din cuvntul eronat. Un tip de coduri de corecie este cunoscut sub numele de coduri Hamming. Codurile Hamming corectoare de erori singulare au distana de 3. Numrul minim de bii de control necesari pentru corectarea erorilor singulare se determin conform relaiei lui Hamming: . ) 2 k m + k + 1 ( A 110 unde m este numrul de bii de informaie, iar k - numrul de bii de control. Vom explica acum construcia unui cod Hamming cu m = 4 (mesaj original n BCD). Din relaia lui Hamming rezult k = 3, deci 3 bii de control trebuie adugai celor 4 bii de informaie. Poziiile biilor sunt numerotate de la 1 la 7:
Tabelul A-1.5 Poziia biilor de control la codul Hamming

1 c1

2 c2

3 b1

4 c3

5 b2

6 b3

7 b4

Biii de pe poziiile puteri ale lui 2 sunt folosii ca bii de control: c1, c2, c3. Celelalte poziii corespund biilor de informaie: de la b1 la b4. Biii de control se calculeaz astfel: c1 = b1 b2 b4 c2 = b1 b3 b4 c3 = b2 b3 b4 ( A 1.11)

SISTEME DE NUMERAIE I CODURI

163

Exemplu: b1b2b3b4 = 0100 c1 = 1, c2 = 0, c3 = 1 Secvena de cod va fi: 1001100. 6. Probleme propuse

1. Realizai 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, determinai valoarea lui b. b) (292)10 = (1204)b, determinai valoarea lui b. 3. Fiecare din urmtoarele operaii aritmetice este corect n cel puin un sistem de numeraie. Determinai bazele posibile ale numerelor din fiecare operaie: a) 1234 + 5432 = 6666 b) 41/3 = 13 41 = 5 c) 4. a) Codificai cifrele zecimale 0, 1, 2, 3, 9 cu ajutorul urmtoarelor coduri ponderate: 6 3 1 -1 7 3 2 -1 7 3 1 -2 5 4 -2 -1 b) Determinai care dintre codurile de mai sus este autocomplementar. 5. Urmtorul mesaj a fost codificat n cod Hamming i transmis pe un canal cu zgomote. Decodificai mesajul presupunnd c n fiecare cod cuvnt a survenit cel mult o singur eroare: 1001001 0111001 1110110 0011011

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. Iniializarea editorului schematic Editorul schematic poate fi activat n mai multe moduri. Cea mai rapid modalitate de a desena o nou schem este urmtoarea: 1. Pornii Active-HDL fcnd dublu-clic pe pictograma corespunztoare ; 2. Cnd apare fereastra Getting Started, selectai Create New Workspace pentru a deschide fereastra New Design Wizard (figura A2.1);

Figura A-2.1 Posibilitile de creare a unui nou proiect

EDITORUL I SIMULATORUL ACTIVE-HDL

165

3. Selectai Create an empty design i apoi scriei numele proiectului, directorul i eventual un nume diferit pentru biblioteca proiectului. Se permite, n mod adiional, selectarea instrumentelor pentru sintez i implementare fizic, selectarea familiei de dispozitive FPGA, a configuraiei editorului schematic i a limbajului de descriere hardware; 4. Bibliotecile pe care le putei folosi n proiect se pot vizualiza cu View Library Manager din meniu sau cu butonul . Vei observa bibliotecile disponibile. Se pot aduga mai multe biblioteci la proiectul curent cu sau renuna cu . nchidei fereastra Library Manager; din lista 5. Pornii editorul schematic activnd butonul New Diagram din stnga de sub meniuri sau selectnd opiunea Add New File din Design Browser i alegnd Block Diagram (cu numele dorit de utilizator); 6. Fereastra editorului schematic va deschide o pagin schematic (.bde). Dac nu ai dat nume paginii, ea va fi numit BlocDiagram, urmat de un numr (numerotarea ncepe cu 1). Putei s creai cte pagini dorii. 2. Operaii de baz pentru introducerea desenelor Dup crearea unei pagini schematice, realizai urmtoarele: Setai pagina schematic, orientarea i tipul bordurii cu opiunea Page Setup din meniul File; Selectai modul Symbol fcnd clic pe pictograma din bara de instrumente orizontal. Se deschide fereastra Symbols Toolbox. ncepei s introducei dispozitive selectndu-le n fereastra cu simboluri i trgndu-le pe pagin; Selectai modul Wire fcnd clic pe pictograma conexiunile ntre pini; i desenai

, Pentru a aduga terminale (intrri / ieiri) selectai pictograma alegei tipul de terminal dorit i plasai-l pe schem. Putei modifica numele ataate implicit la terminale prin editarea lor. Legarea terminalelor se face tot cu fire Wire; Pentru a opera schimbri n desenul schematic, facei clic pe

pictograma Select . La pornirea editorului schematic, urmtoarele operaii sunt realizate automat: Lista simbolurilor este ncrcat n memorie. Lista conine toate simbolurile din toate bibliotecile care au fost selectate pentru proiect.

166

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Lista conine doar numele simbolurilor i nu simbolurile propriuzise; Fiierul cu coninutul proiectului (*.aws) este deschis i n el se va ncrca lista de pagini schematice care aparin proiectului curent; Schemele folosite nainte vor fi deschise. Ele vor arta exact aa cum au fost afiate pe ecran, incluznd poziiile ferestrei, zoom-ul i alte setri 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. Operaiile de introducere a schemei Operaiile 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 cutrii componentelor.

Figura A-2.2 Fereastra principal a editorului schematic

EDITORUL I SIMULATORUL ACTIVE-HDL

167

activeaz modul de desenare a firelor. Fcnd Pictograma Wire clic pe un pin, ncepei un fir. Fcnd clic pe un alt pin se deseneaz un fir. Fcnd clic pe un spaiu gol se ncepe un fir cu simbolul terminal de fir, care se poate termina n alt punct de pe schem . permite desenarea magistralelor fcnd clic la Pictograma Bus orice locaie a ecranului . Pentru adugarea unui terminal unei magistrale, facei clic cu butonul din dreapta al mouse-ului i selectai Terminal. Legturile dintre magistrale i pinii bus-taps arat ca n figura A2.3.

Figura A-2.3 Pin bus-tap legat de magistral Fcnd clic pe o magistral i apoi pe simbolul pinilor se vor conecta automat aceti pini cu magistrala i apoi se vor numerota secvenial bustaps (derivaiile magistralei) ca n figura A-2.4.

Figura A-2.4 Conectarea i numerotarea firelor individuale la magistral Pictograma Terminal denumirea lor. permite alegerea terminalelor de I/O i

Pictogramele Power Symbol sau permit plasarea direct a simbolurilor alimentrii (VCC i GND) pe pagina schematic.

168

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

permite desenarea elementelor Pictograma Graphics toolbox grafice. Tot ceea ce este desenat n acest mod nu are proprieti electrice. Acest mod trebuie folosit doar pentru desene neelectrice sau pentru adugarea de informaii adiionale care nu necesit salvarea n baza de date electric. 4. Operaii generale Pictograma Select este cea mai folosit operaie. Permite selectarea obiectelor din schem pentru procesarea n continuare. Opiunea Select este setat implicit cu cteva operaii de editare schematic. Pictograma Hierarchy Push/Pop activeaz cursorul ierarhic. Fcnd dublu clic cu mouse-ul pe un macrou se va afia schema sa intern i se va activa cursorul. Fcnd dublu clic pe un spaiu gol n schema intern, se va reveni la macrou i se va dezactiva cursorul. Pictogramele Select i Hierarchy Push/Pop nu produc schimbri ale desenului. Ele doar faciliteaz alte operaii pe scheme. Afiarea riglei este controlat din Tools / Preferences / Editors / Block Diagram Editor la opiunea Rulers visible. Rigla este afiat n stnga (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 opiunea Grid putem stabili dac s se vad caroiajul sau nu i care s fie dimensiunea unui ptrel al grilei de desen. 5. Verificarea desenului Verificarea desenului este compus din dou etape: verificarea conexiunilor i simularea. Verificarea conectrii schematice se face din meniul Diagram cu comanda Check Diagram. Rezultatele se afieaz n consol i se nscriu n fiierul log. Pentru a putea simula o schem este necesar nti compilarea ei. Compilarea se face cu comenzile din meniul Design sau cu pictogramele Compile, Compile All sau Compile All with File Reorder. Compilarea fiierului curent se poate face i de la tastatur cu comanda F11. Dac fiierul nu a fost compilat nc, n dreptul lui apare semnul ntrebrii . Dac n urma compilrii s-au descoperit erori n dreptul fiierului apare semnul . Pentru atenionri (warnings) se folosete

EDITORUL I SIMULATORUL ACTIVE-HDL

169

semnul exclamrii . Erorile i atenionrile apar n fereastra Console. Dac fiierul a fost compilat cu succes (situaie indicat n Design Browser cu marcajul n dreptul fiierului), n partea de sus a Design Browser, n list, trebuie selectat numele dat schemei ce urmeaz a fi simulat. deschide o fereastr de simulare i Pictograma New Waveform lanseaz n execuie simulatorul. Din meniul Waveform sau cu pictograma se adaug cu Add semnalele n fereastra de simulare. Selectnd cu mouse-ul un semnal se vor activa n meniul Waveform comanda , care permit asocierea Stimulators i pe bara de instrumente pictograma de valori logice corespunztoare intrrilor schemei desenate. Figura A-2.5 prezint fereastra n care apar stimulii ce pot fi asociai semnalelor logice. Este de reinut c atunci cnd avei fire simple (wire) avei la dispoziie 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 funcionrii schemei. Simularea se face utiliznd meniul Simulation sau bara de pictograme din figura A-2.7. Din meniu trebuie selectat Initialize Simulation pentru a iniializa simularea.

Figura A-2.5 Fereastra pentru stimuli

170

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Figura A-2.6 Asocierea de stimuli de la tastatur

Figura A-2.7 Pictogramele pentru comenzile simulrii Pictograma Run pornete simularea pe o perioad nespecificat

face o simulare pe o perioad de timp de timp. Pictograma Run For (pas) specificat n lista din figura A-2.7 (valoarea de 1 ns). Pictograma face simularea pe o perioad de timp care se alege din Run Until fereastra care se deschide n urma acionrii ei. n timpul simulrii se poate folosi comanda , pentru a face o pauz n simulare. Pictograma este utilizat pentru a opri simularea. Dac dorii s terminai o sesiune de simulare, n meniul Simulation . exist comanda de End Simulation sau se poate folosi pictograma Putei s tergei formele de und cu comanda Clear All Waveforms din meniul Waveform, . Dac se dorete restartarea simulrii se poate folosi . comanda Restart Simulation din meniu sau pictograma O alt sesiune nou de simulare se pornete reiniializnd simularea din meniu. n figura A-2.8 este prezentat o fereastr de simulare n care se pot urmri formele de und rezultate n urma simulrii.

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 acelai 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 arta, de exemplu, ca n figura A-2.9.
Input0 1 Input1 Input2 0 Input3
0 1

U1
I1 I0 O

NET971I

NET1130 O
I1 O

I1 I0

I0 O

Output0

NET1190

Figura A-2.9 Probe n fereastra de editare La avansarea pailor de simulare n fereastra Waveform de simulare, valorile probelor din fereastra de editare se modific i ele.

172

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

6. Utilizarea i editarea simbolurilor Pentru a plasa o nou component pe o pagin schematic, comutai pe modul Symbol activnd pictograma Symbols Toolbox (vezi figura A-2.2). O fereastr cu o bibliotec de simboluri este automat afiat n partea dreapt a ecranului (vezi figura A-2.2). Pentru a gsi componenta dorit, facei clic pe un simbol listat n fereastr pentru a face s apar cursorul evideniat. Apoi, parcurgei lista de simboluri cu cursorul sau cu bara de defilare. Dac tiprii numele simbolului n partea de sus a ferestrei, el va fi automat cutat i evideniat n list. Simbolul curent selectat este evideniat n albastru. Dac tragei cursorul mouse-ului n fereastra schematic, simbolul grafic al componentei selectate va apare dup cursor. Prin selectarea componentei putei vedea simbolurile i fr s le plasai pe schem, n partea de jos a ferestrei Symbols Toolbox. Plasarea se poate face i trgnd n fereastra schematic simbolul astfel afiat. Pentru a plasa un simbol, deplasai simbolul ataat cursorului mouseului la locaia dorit i lsai butonul mouse-ului. Pe msur ce micai simbolul spre partea exterioar a ferestrei, schema se va deplasa automat sub controlul software-ului de auto-panning (deplasare automat). Putei roti orice component selectat dac apsai butonul dreapta al mouse-ului cu comenzile de Rotate (putei roti cu 90, 180 sau 270 de grade) sau apsnd R (rotire la dreapta), L (rotire la stnga). Pentru a plasa alt simbol pe schem, selectai-l n fereastra Symbols Toolbox i repetai procesul de plasare a componentei. Pentru a terge simboluri trebuie s le selectai i apoi apsai tasta Del. Putem terge orice simbol, terminal sau fir n modul Select . Aceasta este modalitatea cea mai ntrebuinat de a edita o schem. Pentru a terge un element putei i s selectai opiunea Delete din meniul Edit. Dac ai ters din greeal un simbol, putei s l punei la loc activnd opiunea Undo din meniul Edit. Toate contururile simbolurilor sunt dreptunghice. Ele sunt afiate atunci cnd simbolurile sunt selectate n modul Select. La plasarea pe pagin este necesar s existe un spaiu liber ntre simboluri. Bibliotecile ACTIVE-HDL includ un numr mare de simboluri. Fiecare simbol are atributele lui care determin clasa i funcia sa logic. Atributele pot fi folosite pentru simplificarea cutrii simbolurilor dorite.

EDITORUL I SIMULATORUL ACTIVE-HDL

173

Pentru a filtra simbolurile dorite din lista de simboluri, activai pictograma Query Window care afieaz n dreapta fereastra Query Window. Toate simbolurile sunt automat denumite cnd sunt plasate pe schem. Numele simbolului este compus dintr-un text (ir de caractere) i un sufix numeric, care este incrementat de fiecare dat cnd plasai un simbol nou. Exemple sunt U1, U2, U3 etc. Pentru a gestiona parametrii la un dispozitiv schematic, comutai pe i facei clic dreapta cu mouse-ul pe componenta selectat. modul Select Alegei Properties i va fi afiat fereastra Symbol Properties (figura A2.10). Putei s facei modificri care vor fi n continuare utilizate pentru componenta respectiv.

Figura A-2.10 Fereastra Symbol Properties Editorul de simboluri este destinat crerii i editrii de simboluri. El asigur editarea simbolurilor existente, crearea unor simboluri noi, salvarea sau ncrcarea n / din fiiere externe (cu extensia *.bds) i utilizarea unei biblioteci care pune la dispoziie forme de circuite predefinite numite Stencils . Fereastra editorului de simboluri nu este condiionat de existena unei ferestre de editor schematic sau de limbaj de descriere hardware.

174

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Editorul de simboluri poate fi activat prin mai multe metode. Dac se folosete 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, coninut, pini. Simbolul va fi introdus n biblioteca curent i va putea fi observat n Symbols Toolbox. Dac se alege Symbol din lista din stnga 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 cnd ne aflm 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 modificri asupra simbolului. Dac facei modificri asupra unui simbol, toate apariiile 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. Interfaarea cu celelalte componente de pe schem se face prin porturi, care apar ca pini. Caracteristicile care fac diferena ntre simbolurile de componente i Fubs sunt urmtoarele: Forma, dimensiunea i numrul 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 acelai Fub ntr-o schem dect 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 situaie este o consecin a faptului c simbolul pentru Fub este creat nainte de a se defini coninutul lui; Un Fub poate fi convertit ntr-un simbol obinuit, 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 diferena ntre un simbol obinuit i un Fub.

EDITORUL I SIMULATORUL ACTIVE-HDL

175

Figura A-2.11 Simbol i Fub Dup crearea grafic a Fub-ului adugarea 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 fiier surs n care va trebui descris funcionarea Fub (implementarea lui). 7. Realizarea conexiunilor Pentru a intra n modul de desenare a conexiunilor, facei clic pe pictograma Wire ( ) sau apsai tasta W. Va apare imediat cursorul de conectare a firului care afieaz un fir i un nod de fir. Fcnd clic cu acest cursor la pini de componente sau la conexiunile firului se va ncepe o nou conexiune. Firul va fi desenat dup cum micai mouse-ul. Pentru a desena un col sau un segment de fir, facei clic n punctul n care dorii schimbarea direciei. Fcnd clic pe alt pin sau fir se va termina conectarea firului. Pictograma Wire activeaz desenarea firelor simple. Exist o mulime de alte moduri de conectare a simbolurilor, prin magistrale sau legturi ntre fire i magistrale (bus taps). Pictograma Power Symbol firelor la alimentare sau la mas. este folosit pentru conectarea

din meniul Edit este folosit pentru anularea Pictograma Undo ultimei operaii 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 / ieire (I/O terminals). Pentru a termina temporar un fir n orice loc de pe ecran, facei dublu clic i firul se

176

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

va termina cu simbolul terminal de fir, care este un ptrel de culoare magenta. Pentru a modifica un nume de net la un fir existent facei dublu clic cu mouse-ul pe fir i din fereastra de proprieti (Wire Properties) care se deschide selectai View Texts i bifai Name. Numele asociat automat firului va apare lng fir scris cu albastru. Cu dublu clic numele intr n regim de editare i poate fi modificat dup dorina utilizatorului. Pentru a terge un nume de fir, facei clic pe nume i apsai butonul Delete. Pentru a muta un nume de fir de conexiune la alt locaie, comutai pe modul Select, facei clic pe nume i tragei-l la locaia dorit lng fir. Cnd selectai modul wiring (cablare) editorul este n modul autopanning. De fiecare dat cnd mutai cursorul mai aproape de marginea ferestrei, acesta va aluneca n mod automat pentru a permite accesul imediat la alte pri ale schemei fr a folosi barele de derulare. Pentru a activa legarea automat, selectm Tools / Preferences / Editors / Block Diagram Editor i la opiunea Autoruting bifm Enabled. Tot aici putem limita timpul necesar algoritmului automatic routing pentru a cuta conexiunea cea mai bun. Evident c se poate face dezactivarea opiunii 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-ieire reprezint macrourile ierarhice ale pinilor de intrare-ieire. Ele sunt doar simboluri logice de conectare i nu reprezint nici o conexiune fizic. Doar terminalele de intrare-ieire din nivelul cel mai nalt al schemei sunt convertite n pini de intrare-ieire ai dispozitivului i vor fi adugai netlist-ei ca pini conectori. Pentru a plasa un terminal de intrare-ieire, facei clic pe pictograma I/O Terminal i vei alegere tipul su (intrare, ieire, bidirecional, 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 desenm o conexiune. Pentru a termina un fir cu un terminal de intrare-ieire, ncepem s desenm firul i cnd ajungem la locaia unde ar trebui plasat terminalul, facem clic pe butonul din dreapta al mouse-ului pentru a alege un terminal. Terminalul va fi plasat la locaia unde firul a fost terminat anterior. Putem plasa un ir de terminale de intrare-ieire similare deoarece la activarea pictogramei terminalul respectiv rmne ataat la cursorul mouseului.

EDITORUL I SIMULATORUL ACTIVE-HDL

177

n editorul schematic al ACTIVE-HDL exist posibilitatea plasrii 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 legturi 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 attea 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 trasrii de fire separate, se poate crea o singur linie de magistral care conine toate firele. n mod obinuit, magistralele reprezint liniile de semnal de acelai tip (ex. toate liniile de adres sau toate liniile de date). Oricum, magistrala poate fi folosit la conectarea oricror tipuri de semnal, nu neaprat aflate ntr-o relaie. Magistralele sunt proiectate s fac schemele mai accesibile, i utilizarea lor depinde de aplicaia specific.

178

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Deoarece conexiunile magistralei depind de modul n care sunt denumii membrii magistralei i nu de modul n care apar n schem, este mai uor s faci o greeal 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 conin numele tabloului (ex. DATA) i definirea indexurilor de semnal superior i inferior (ex. [0:15]). Un nume tipic de magistral este o combinaie ntre nume i index: NAME[X;Y] unde X,Y sunt numere ntregi mai mari sau egale cu 0. Numrul de semnale N dintr-o magistral este calculat cu formula: N = X Y +1 Observm 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 numr din intervalul lui X,Y (inclusiv ambele limite). De exemplu, magistrala DATA[0:3] conine semnalele DATA0, DATA1, DATA2, DATA3. Atenie! 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] conin aceeai mulime de semnale, dar acestea definesc o ordine diferit a semnalelor n magistral. Ordinea de definire a semnalelor este important cnd o magistral este conectat cu un pin de magistral. Semnificaia membrilor magistralei este dat de programul pentru care Editorul Schematic produce date. n

EDITORUL I SIMULATORUL ACTIVE-HDL

179

proiectele XILINX magistralele trebuie definite cu cel mai semnificativ bit (cel cu indexul mai mare) pe prima poziie i cel mai puin 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 puin semnificativ DATA3 definit ultimul.
NOT: Folosirea aceleiai 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 Cnd se conecteaz o magistral la un pin, conexiunile dintre semnalele coninute n aceste dou obiecte vor fi stabilite n ordinea definirii semnalelor, adic de la bitul definit primul la bitul definit ultimul. Dac numrul de semnale din linia de semnal a magistralei i pinul de magistral sunt diferite, semnalele cu indecii care depesc numrul semnalelor din magistrala mai mic nu vor fi conectai deloc. De exemplu, conectnd un pin de magistral al unui simbol A[0:3] la magistrala Bus[7:0] (figura A-2.14), se vor crea urmtoarele 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.
CJ8CE Q(7:0) COMP4

Bus(7:0)

Bus(3) Bus(4) Bus(5) Bus(6)

A0 A1 A2 A3 B0 B1 B2 B3 EQ

CE CLK RST

CE C CLR

EQ

VCC

Figura A-2.14 Exemplu de conectare ntre magistral i pin de magistral

180

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

NOT: Numele magistralelor i a pinilor de magistral sunt irelevante pentru efectuarea conexiunilor fizice. De exemplu, conectnd pinul de magistral A[0:3] la magistrala A[3:15] vor fi produse urmtoarele 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 acelorai reguli de conectivitate ca i magistralele i pinii de magistral. Pinii de magistral sunt folosii la conectarea unei magistrale direct la pinii simbolului (figura A-2.15). Terminalele de magistral duc la economisirea spaiului n schem i o fac mai clar.

CJ8RE Q(7:0) CE C R

BusOut(7:0)

BusOut(7:0)

Figura A-2.15 Terminal de magistral NOT: Cu excepia cazului cnd 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 fr nume Pinii de magistral pot fi conectai prin magistrale fr nume. n acest caz, semnalele magistralei sunt conectate via membrii de magistral fr nume, iar ordinea de conectare este guvernat de ordinea de definire a pinului de magistral. De exemplu, conectnd pinul de magistral A[0:8] la pinul de magistral D[3:0] printr-o magistral fr nume vor fi produse urmtoarele conectri: 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 conectai.

EDITORUL I SIMULATORUL ACTIVE-HDL

181

9. Gestiunea proiectului multi-pagin

Se vor folosi proiecte multi-pagin de cte ori proiectul este prea mare ca s ncap pe un sigur ecran. Un proiect multi-pagin presupune existena mai multor pagini (ecrane) ntr-un acelai fiier. Important de reinut 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 legturi logice ntre ele, considerndu-le acelai semnal sau terminal. 9.1 Adugarea noilor pagini Pentru a crea iniial 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 stnga 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 crete pe msura adugrii paginilor noi.

Din meniul Diagram, cu comanda Multiple pages, Add Page se pot crea cte pagini se consider necesare pentru proiectul multi-pagin respectiv. Fiecare nou pagin (ecran) este automat adugat la coninutul proiectului curent. Poziionarea 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 separat.

permite deschiderea paginii selectate ntr-o pagin

182

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

9.2 Adugarea la un proiect a unor pagini existente Pentru a aduga la proiectul curent o schem din alt proiect, se utilizeaz meniul Diagram, Multiple pages, Add Pages From File . din De asemenea se poate folosi comanda Add Pages From File fereastra Block Diagram Editor (figura A-2.17). Se selecteaz n fereastra Add Files fiierul(ele) schemelor care se doresc a fi adugate i se execut clic pe butonul Add. Editorul schematic citete fiecare pagin adugat i verific dac simbolurile folosite n aceste scheme sunt disponibile i dac nu exist numere de referin duplicate. Pentru a selecta fiiere de pe alte uniti de memorie extern sau directoare, se face modificarea n Look In. Lista paginilor proiectului va fi instantaneu adus la zi i va fi afiat n Design Browser, tab-ul File.
Not: Editorul schematic adaug automat la proiectul curent bibliotecile utilizate de ctre paginile nou adugate.

9.3 Deschiderea paginilor care nu aparin proiectului sau pe opiunea Open Cnd se execut clic pe pictograma Open din meniul File, sunt afiate doar paginile care aparin proiectului curent. Dac se dorete deschiderea unei pagini care nu aparine proiectului curent, se folosete cutarea fiierelor adiionale pe hard discuri i n directoare. Schemele nou deschise pot fi editate. Cu toate acestea, ele nu aparin proiectului pn cnd opiunea Add Current Document din meniul Design nu este activat.
Not: Cnd o plan schematic din alt proiect este deschis, ea este copiat n directorul proiectului curent, astfel nct orice modificare a schemei nu va afecta proiectul din care a fost copiat.

Numele de referin ale componentelor din paginile adugate 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.

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: Opiunea Delete elimin pagina din coninutul proiectului i terge fiierul schematic de pe disc.

9.5 Deschiderea paginilor proiectului Pentru a deschide paginile cu scheme care aparin 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 referinelor de simbol Numerele de referin ale simbolurilor sunt asociate secvenial, 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 dorii 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 convenie de numire simplific urmrirea simbolurilor pe paginile schematice. 9.7 Reguli de conectivitate pentru schemele multi-pagin Toate reelele cu nume identice sunt automat conectate de ctre editor. Aceast regul se aplic att proiectului mono-pagin ct i celui multi-pagin. Din aceast cauz nu este necesar conectarea circuitelor de pe diferite pagini cu conectori sau pini terminali. Toate reelele de fire cu nume identice sunt conectate mpreun. Magistralele cu nume identice sunt conectate doar prin numele de fire membre.

184

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

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 folosete un mixaj dintre aceste dou metode de proiectare. La abordarea Top Down se pornete 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 utiliznd 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 cnd se ajunge la ultimul nivel, cel mai nalt, al structurii proiectului. Din punctul de vedere al coninutului, 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 coninutul descris folosind o diagram bloc. Structura unui proiect ierarhic poate fi observat n Design Browser n tab-ul Structure. n cele ce urmeaz prezentm 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 din lista din stnga sus de sub meniuri. Se folosete pictograma Design 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.

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, incluznd terminalele de intrare InA, InB, InC i de ieire Out. Se salveaz schema folosind opiunea Save din meniul File.
InA InB
I1 I0 NAND2 I1 O NAND2 O

InC

I0

Out

Figura A-2.17 Schema sch1 Pasul 4. Se creeaz simbolul sch1

Se compileaz fiierul sch1.bde. Dac nu exist erori, n biblioteca proiectului se adaug sch1. n acelai 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 ieirea Out. Acest simbol poate fi utilizat ca orice alt simbol din bibliotec. Dup utilizarea cel puin o dat a simbolului ntr-o pagin schematic, sch1 va disprea 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 ieire se va denumi Q. Se salveaz schema folosind opiunea Save din meniul File.
Pasul 6. Se creeaz simbolul sch2

Se compileaz fiierul sch2.bde. Dac nu exist erori, n biblioteca proiectului se adaug sch2. sch2 apare i n Symbols Toolbox, la Ierarhic,

186

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Units without Symbols. Simbolul sch2 va avea pinii de intrare Set, D, CLK i Reset i pinul de ieire Q.
Set D CLK Reset
D FDRS S

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 denumete 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.
U1 InA1 InB1 InC1
InA InB InC Out

U3
CLK D Reset Set Q

Q1

sch1 U2 InA2 InB2 InC2


InA InB InC Out

sch2 U4
CLK D Reset Set Q

Q2

sch1 CLK Reset

GND

sch2

Figura A-2.19 Schema top de la nivelul cel mai nalt

EDITORUL I SIMULATORUL ACTIVE-HDL

187

Pasul 8. Folosirea opiunii Push/Pop pentru vizualizarea schemelor

Cu dublu clic pe oricare din simbolurile U1 sau U2 (operaiunea de Push) se va deschide schema sch1, prezentnd schema intern a simbolului. La fel se ntmpl i dac se face dublu clic pe simbolurile U3 sau U4, de data aceasta deschizndu-se schema sch2. Din schemele sch1 i sch2, dac facem clic cu mouse-ul pe o zon nedesenat se revine la nivelul superior top (operaiunea de Pop). Operaiunea de Pop se poate realiza i cu pictograma Hierarchy Pop .

Pasul 9. Vizualizarea coninutului 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 folosete opiunea File->Save pentru a salva modificrile i pentru a actualiza toate schemele.

BIBLIOGRAFIE

1. Cmpeanu, A., Jivet, I. OrCAD. Bucureti, Editura Teora, 1995. 2. Cre, O., Vcariu, 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. Vcariu, L., Cre, O. Analiza i sinteza dispozitivelor numerice. ndrumtor 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