PL2 cap14 updatedcs.ucv.ro/staff/edumitrascu/PSD/PL2_cap14.pdf · 2020. 3. 30. · 3urlhfwduh /rjlf...

28
Proiectare Logică 2 ============================================= Capitolul 14 Registre și numărătoare 14.1 Registre 14.1.1 Prezentare generală Ca şi în cazul CLC, anumite CLS sunt oferite sub formă de circuite integrate tipizate. Există două mari categorii de astfel de circuite şi anume registre şi numărătoare. Se numeşte registru o colecţie de bistabile acţionate simultan şi care permit păstrarea, redarea şi eventual deplasarea informaţiei binare. Un bistabil împreună cu logica aferentă formează o celulă a registrului. Numărul de celule ale registrului reprezintă lungimea registrului. Din punctul de vedere al modului în care se realizează încărcarea şi redarea datelor, pot fi puse în evidenţă următoarele tipuri de registre: 1) registru paralel-paralel la care informaţia este înscrisă simultan în toate bistabilele şi poate fi citită simultan din toate bistabilele (Fig. 14.1).

Transcript of PL2 cap14 updatedcs.ucv.ro/staff/edumitrascu/PSD/PL2_cap14.pdf · 2020. 3. 30. · 3urlhfwduh /rjlf...

  • Proiectare Logică 2 =============================================

    Capitolul 14

    Registre și numărătoare

    14.1 Registre 14.1.1 Prezentare generală Ca şi în cazul CLC, anumite CLS sunt oferite sub formă de

    circuite integrate tipizate. Există două mari categorii de astfel de circuite şi anume registre şi numărătoare.

    Se numeşte registru o colecţie de bistabile acţionate simultan şi

    care permit păstrarea, redarea şi eventual deplasarea informaţiei binare.

    Un bistabil împreună cu logica aferentă formează o celulă a

    registrului. Numărul de celule ale registrului reprezintă lungimea

    registrului. Din punctul de vedere al modului în care se realizează

    încărcarea şi redarea datelor, pot fi puse în evidenţă următoarele tipuri de registre:

    1) registru paralel-paralel la care informaţia este înscrisă

    simultan în toate bistabilele şi poate fi citită simultan din toate bistabilele (Fig. 14.1).

  • Proiectare Logică 2 =============================================

    Q QQQ

    TACT

    d0

    dn-1

    d2

    d1

    q0

    qn-1

    q2

    q1

    . . .

    Fig. 14.1

    2) registru paralel-serie la care informaţia este înscrisă simultan în toate bistabilele şi poate fi citită doar la ieşirea ultimului bistabil (Fig. 14.2).

    QTACT

    d0

    dn-1

    d2

    d1

    . . .Q QQ qn-1

    Fig. 14.2

    3) registru serie-paralel la care informaţia este înscrisă doar în primul bistabil şi poate fi citită simultan din toate bistabilele (Fig. 14.3).

    Q

    TACT

    d0 . . .Q QQ

    q0 qn-1q2q1

    Fig. 14.3

  • Proiectare Logică 2 =============================================

    4) registru serie-serie la care informaţia este înscrisă doar în primul bistabil şi poate fi citită doar la ieşirea ultimului bistabil (Fig.14.4).

    Q

    TACT

    d0 . . .Q QQ q

    n-1

    Fig. 14.4

    Observaţii! 1) Cele 4 regimuri de lucru puse în evidenţă anterior pot

    coexistă în practică în cadrul aceluiaşi circuit. 2) Pentru ultimile trei regimuri, registrul trebuie să asigure

    deplasarea informaţiei între celule. Din punctul de vedere al sensului deplasării prin convenţie se disting registre de deplasare dreapta (dinspre celula 0 spre celula n-1) şi registre de deplasare stânga (dinspre celula n-1 spre celula 0).

    În Fig. 14.5 este prezentată în detaliu implementarea unui registru de deplasare dreapta cu încărcare paralelă realizat cu 4 CBB tip D comutabile pe front şi MUX 2. Iniţializarea conţinutului registrului se realizează asincron prin semnalul CLR#.

    TACT

    CLR#

    CLK CLKCLKCLK

    R RRR

    D Q D Q D QD Q

    0

    1

    S0

    IS

    0

    1

    S0

    0

    1

    S0

    0

    1

    S0

    Y YYY

    D0

    D1

    D2

    D3

    Q3

    P/S

    Fig. 14.5

  • Proiectare Logică 2 =============================================

    /SP - semnalul de alegere a regimului de lucru; dacă /SP

    =0, este selectată încărcarea paralelă; dacă /SP =1, este selectată deplasarea serie dreapta;

    D0D3 - intrările pentru încărcarea paralelă a registrului; IS - intrare serie pentru deplasarea dreapta; CLR# - intrare de ştergere asincronă activă pe nivel coborât; TACT - intrare de tact activă pe frontul pozitiv; Q0Q3 – ieşiri paralele. Se observă că la un moment dat se poate realiza fie încărcarea

    paralelă, fie deplasarea dreapta. În cazul general, la activarea impulsului de tact asupra

    conţinutului unui registru se poate executa una dintre operaţiile:

    iniţializare sincronă sau asincronă prin aducerea în starea 0 a tuturor bistabilelor;

    încărcare paralelă; deplasare dreapta; deplasare stânga; blocare (nu se execută nici una dintre operaţiile

    prezentate anterior iar bistabilele nu-şi modifică starea).

    D DDDQ Q QQTACT

    Q0 Q3Q2Q1

    CLK CLKCLKCLK

    Y YYYS0 S0 S0 S0

    0 321 0 321 0 3210 321

    0

    D0Q0 0

    D1Q0Q1 0

    D2Q1Q2 0

    D3Q3

    ISDD

    S1 S1 S1 S1

    Q2

    C0

    C1

    Fig. 14.6

  • Proiectare Logică 2 =============================================

    În Fig. 14.6 este prezentată schema de principiu a unui registru de deplasare dreapta cu ştergere sincronă şi autoblocare.

    D0 D3 - intrări de date paralele. ISDD - intrare serie pentru deplasarea dreapta. C1 şi C0 - semnale de selecţie a regimului de lucru, conform

    specificaţiilor din tabelul de mai jos:

    C1 C0 operaţie 0 0 ştergere sincronă 0 1 autoblocare 1 0 deplasare dreapta 1 1 încărcare paralelă (deplasare stânga)

    Dacă se renunţă la încărcarea paralelă, prin conexiunile externe

    puse în evidenţă în schema bloc din Fig. 14.7 se poate realiza deplasarea stânga. În felul acesta registrul devine un registru serie-paralel cu deplasare dreapta/stânga.

    D0 D3D2D1

    Q0 Q3Q2Q1

    IS

    C0C1

    ISDD

    ISDS

    q0 q3q2q1

    Fig. 14.7

    Registrul prezentat în Fig. 14.8 permite realizarea tuturor operaţiilor prin circuitele interne. Ștergerea conţinultului bistabilelor se realizează sincron prin activarea semnalului CLR.

    Alegerea celorlalte operaţii se realizează prin comenzile C1C2,

    conform următorului tabel:

  • Proiectare Logică 2 =============================================

    C1 C0 operaţie 0 0 autoblocare 0 1 încărcare paralelă 1 0 deplasare dreapta 1 1 deplasare stânga

    D DDDQ Q QQTACT

    Q0 Q3Q2Q1

    CLK CLKCLKCLK

    Y YYYS0 S0 S0 S0

    0 321 0 321 0 3210 321

    D0

    Q0

    D1

    Q0

    Q1

    D2

    Q1

    Q2

    D3

    Q3

    ISDD

    S1 S1 S1 S1

    Q2

    C0

    C1

    CLR

    ISDS

    Q1

    Q2

    Q3

    Fig. 14.8

    14.1.2 Exemplu registru integrat

    În continuare va fi prezentat registrul TTL integrat 74194. Este un registru de deplasare bidirecţional pe 4 biţi având

    schema de principiu din Fig. 9.53. Se observă că bistabilele RS lucrează în regim de CBB tip D iar structurile AND-NOR formează 4 multiplexoare MUX 4.

    D0 D3 - intrări de date paralele. Q0 Q3 - ieşiri de date paralele. CLOCK - intrare de tact activ pe font pozitiv.

  • Proiectare Logică 2 =============================================

    CLEAR# - intrare de ştergere asincronă, activă pe nivel coborât.

    S1 şi S0 - semnale de selecţie a regimului de lucru, conform specificaţiilor din tabelul de mai jos:

    S1 S0 operaţie 0 0 autoblocare 0 1 deplasare dreapta 1 0 deplasare stânga 1 1 încărcare paralelă

    SHIFT RIGHT SERIAL INPUT - intrare serie pentru

    deplasare dreapta. SHIFT LEFT SERIAL INPUT - intrare serie pentru deplasare

    stânga.

    RCLR

    QS

    CK

    RCLR

    QS

    CK

    RCLR

    QS

    CK

    RCLR

    QS

    CK

    RCLR

    QS

    CK

    RCLR

    QS

    CK

    D0 D1 D2 D3

    CLOCK

    CLEAR#

    S1

    S0

    Q0

    Q1

    Q2

    Q3

    SHIFT RIGHTSERIAL INPUT

    SHIFT LEFT

    SERIAL INPUT

    Fig. 14.9 În Fig. 14.10 este prezentată o schemă de testare a registrului iar

    în Fig. 14.11 rezultatul testului.

  • Proiectare Logică 2 =============================================

    Fig. 14.10

    Fig. 14.11

    14.1.3 Interconectarea registrelor de deplasare

    În Fig.14.12 este prezentat un registru de deplasare bidirecţional cu încărcare paralelă şi autoblocare pe 12 biţi realizat prin interconectarea a 3 registre 74194. Se observă că registrul obţinut realizează aceleaşi funcţii ca şi un singur modul, fără să fie necesară logică auxiliară.

    Trebuie subliniat că indiferent câte module ar fi interconectate, întârzierile nu cresc deoarece deplasarea informaţiei se realizează printr-o singură celulă. Singura problemă rămâne asigurarea puterii

    S1DSTM1

    Implementation = S1

    LO

    S1DSTM2

    Implementation = S0

    S1

    y3

    INITN

    TACTS1DSTM3

    Implementation = TACT

    y0

    y2

    S0

    HI

    U1

    74HCT194

    109

    23456

    15

    13

    11

    147

    12

    1

    S1S0

    SRABCD

    QA

    QC

    CLK

    QBSL

    QD

    CL

    R

    S1DSTM4

    Implementation = INITN

    y1

    HI

  • Proiectare Logică 2 ============================================= pentru comanda unui număr mare de intrări în cazul circuitelor TTL (această problemă nu apare practic la circuitele CMOS) şi a întârzierilor datorate liniilor de transmisie şi a numărului mare de intrări interconectate.

    S1

    S0

    D1

    D3

    D2

    D0

    CK

    SR

    SI

    SLS

    I

    CL

    RQ

    1Q

    3Q

    2Q

    0

    S1

    S0

    D1

    D3

    D2

    D0

    CK

    SR

    SI

    SL

    SI

    CLR

    Q1

    Q3

    Q2

    Q0

    S1

    S0

    D1

    D3

    D2

    D0

    CK

    SR

    SI

    SL

    SI

    CLR

    Q1

    Q3

    Q2

    Q0

    q0

    q1

    q 7q

    11q 1

    0q

    9q

    8q

    6q

    5q

    4q 3

    q 2

    d0

    d1

    d 7d

    11d

    10d

    9d

    8d

    6d

    5d

    4d 3

    d 2

    ISD

    D

    TA

    CT

    INIT

    #

    ISD

    S

    C0

    C1

    Fig. 14.12

  • Proiectare Logică 2 =============================================

    14.1.4 Registre tampon pentru cuplare la magistrale

    În multe aplicaţii este necesară păstrarea unor informaţii cu scopul de a fi disponibile un timp mai îndelungat pe o magistrală. Din această cauză ieşirile unor astfel de circuite trebuie să fie de tipul tri-state.

    În continuare vor fi prezentate două registre frecvent utilizate în practică, 74HCT373 şi 74HCT374. Structura celor două registre este identică dar în timp ce în 74HCT373 elementele de memorie sunt latch-uri transparente pe durata activării impulsului validare, în 74HCT374 elementele de memorie sunt bistabile care preiau informaţia de la intrare pe frontul pozitiv al impulsului de tact. În Fig. 14.13 este prezentată schema bloc a celor două registre. În Fig. 14.14 şi Fig. 14.15 este prezentată o celulă din 74HCT373 respectiv 74HCT374. În Fig. 14.16 este prezentată schema de test a celor două registre în OrCAD iar rezultatul simulării este prezentat în Fig. 14.17.

    D0 D7D6D5D4D3D2D1

    Q0 Q7Q6Q5Q4Q3Q2Q1

    ENABLE/CLK

    OC

    Fig. 14.13

  • Proiectare Logică 2 =============================================

    OC

    D

    G

    Q

    ENABLE

    ...

    ...

    ...

    OC

    D

    CK

    Q

    CLK

    ...

    ...

    ...

    Q0 Q

    0

    D0 D0

    Fig. 14.14 Fig. 14.15

    Fig. 14.16

    S8DSTM1

    Implementation = d

    d2

    y4

    d1

    q5

    y6

    d5

    S1DSTM3

    Implementation = OC

    q6

    TACT/ENABLEy7

    d5

    S1DSTM2

    Implementation = TACT/ENABLE

    d6

    d[7..0]

    d7

    OC

    d3

    d6

    q1

    y1

    d0

    y3

    d7

    d0

    U1

    74HCT373

    111

    3478

    13141718

    256912151619

    OCC1D2D3D4D5D6D7D8D

    1Q2Q3Q4Q5Q6Q7Q8Q

    q0

    q3

    y2d2

    q2

    U2

    74HCT374

    1

    3478

    13141718

    256912151619

    11 OC

    1D2D3D4D5D6D7D8D

    1Q2Q3Q4Q5Q6Q7Q8Q

    CLK

    q7

    d4

    y0

    d4

    d3

    y5

    d1

    q4

  • Proiectare Logică 2 =============================================

    Fig. 14.17

    În Fig. 14.18 este prezentată realizarea unei magistrale bidirecţionale cu registre 74HCT374.

    Fig. 14.18

    OCN1

    OCN2TACT2

    BUS1[7..0]

    U2

    74HCT374

    1

    347813141718

    2569

    12151619

    11OC

    1D2D3D4D5D6D7D8D

    1Q2Q3Q4Q5Q6Q7Q8Q

    CLK

    U1

    74HCT374

    1

    3478

    13141718

    256912151619

    11 OC

    1D2D3D4D5D6D7D8D

    1Q2Q3Q4Q5Q6Q7Q8Q

    CLK

    BUS2[7..0]

    TACT1

  • Proiectare Logică 2 =============================================

    14.2 Numărătoare 14.2.1 Prezentare generală Se numeşte numărător un CLS care contorizează impulsurile

    primite pe intrarea de tact. Ca orice alt CLS şi numărătoarele pot fi: a) sincrone; b) asincrone; c) cvasisincrone atunci când numărătoare sincrone sunt

    interconectate asincron. Din punctul de vedere al modului de codificare a informaţiei la

    ieşire se pun în evidenţă: a) numărătoare binare dacă informaţia este codificată binar; b) numărătoare decadice dacă informaţia este codificată

    binar-zecimal. c) numărătoare în inel dacă fiecărei stări îi corespunde o

    celulă de numărare care se activează numai pe durata acelei stări. Din punctul de vedere al sensului de numărare se disting: a) numărătoare directe când numărarea se face în sens

    crescător; b) numărătoare inverse când numărarea se face în sens

    descrescător; c) numărătoare reversibile când sensul de numărare poate fi

    modificat cu ajutorul unei comenzi externe Indiferent de tipul numărătorului, la alegerea numărătorului

    este necesar să fie luaţi în considerare următorii parametri:

  • Proiectare Logică 2 =============================================

    1) Lungimea ciclului de numărare. Se spune că un numărător este numărător modulo n dacă

    ciclul de numărare are n stări. 2) Rezoluţia - reprezintă intervalul de timp minim aceptat între

    două impulsuri consecutive pentru ca acestea să poată fie contorizate separat. În cazul unui semnal de tact periodic, acest interval de timp este chiar perioada minimă Tmin acceptabilă pentru semnalul de tact. Pe baza acestei valori se calculează frecvenţa maximă de lucru:

    fmax=1/Tmin De obicei fmax se măsoară în MHz. 14.2.2 Exemple de numărătoare integrate În continuare va fi prezentat un numărător binar sincron tip

    74HCT163. Schema bloc a numarătorului apare în Fig. 14.19. Semnalele modulului au următoarele

    semnificaţii: CLK - semnal de tact care comandă

    contorizarea; este activ pe frontul pozitiv al impulsului de tact

    CLR - comanda de ştergere sincronă, activă pe nivel coborât;

    LD - comanda de încărcare paralelă sincronă, activă pe nivel coborât;

    ENP, ENT - semnale de control a semnalului de tact; pentru ca numărătorul să fie activ, este necesar ca ambele semnale să fie activate (pe nivel ridicat);

    Fig. 14.19 A,B,C,D - intrări de date paralele; QA,QB,QC,QD - ieşiri paralele; RCO - ieşirea de transport anticipat, activă pe nivel ridicat; se

    activează atunci când numărătorul are toate ieşirile pe nivel ridicat (starea 15).

    CLK

    QA

    ENTENP

    LDCLR

    QDQCQB

    RCO

    DCBA

  • Proiectare Logică 2 =============================================

    În Fig. 14.20 este prezentată schema de testare a numărătorului iar în Fig. 14.21 apare un eşantion din simularea funcţionării sale. În Fig. 14.22 apare un detaliu din diagrama precedentă cu scopul de a pune în evidenţă regimurile tranzitorii la comutarea stărilor.

    Fig. 14.20

    Fig. 14.21

    Fig. 14.22

    d0

    S1DSTM2

    Implementation = VALID

    q3q2

    d3

    q[3..0]

    q0

    INITN

    S4DSTM5

    Implementation = d

    U1

    74LS163A1

    3456

    210

    79

    1413121115

    CL

    R

    ABCD

    CLKENTENPLOAD

    QAQBQCQD

    RCO

    d[3..0]

    S1DSTM4

    Implementation = INITN

    TRAN

    q1

    S1DSTM1

    Implementation = TACT

    d1

    INCN

    TACT

    S1DSTM3

    Implementation = INCN

    HI

    VALID

    d2

  • Proiectare Logică 2 =============================================

    14.2.3 Interconectarea numărătoarelor

    În cazul în care se doreşte obţinerea unui numărător modulo N cu N>16 se recurge la interconectarea serie a două sau mai multe numărătoare de tipul celui prezentat anterior. Pentru interconectare se utilizează ieşirea RCO (ripple carry output) care se conectează la intrarea de validare ENT (Enable T).

    Exemplu: Să se implementeze folosind numărătoare '163 un

    numărător binar modulo 256.

    Pentru a obţine un numărător modulo 256 se vor interconecta serie două numărătoare ca în Fig. 14.23. Un eşantion al simulării funcţionării schemei este prezentat în Fig. 14.24. Se observă că al doilea numărător îşi modifică starea doar dacă RCO este activat, deci la fiecare 16 modificări de stare a primului numărător se produce o singură modificare de stare a celui de-al doilea.

    Fig. 14.23

    Fig. 14.24

    TACT

    S1DSTM2

    Implementation = INITN

    RCO2

    HI

    LO

    U2

    74LS163A

    13456

    210

    79

    1413121115

    CL

    RABCD

    CLKENTENPLOAD

    QAQBQCQD

    RCO

    q7

    U4

    74LS163A

    1

    3456

    210

    79

    1413121115

    CL

    R

    ABCD

    CLKENTENPLOAD

    QAQBQCQD

    RCO

    q[7..0]

    q2

    q4

    S1DSTM1

    Implementation = TACT

    INITN

    q1

    RCO1

    HI

    q3

    q5

    LO

    q6q0

  • Proiectare Logică 2 =============================================

    14.2.4 Numărător modulo N

    Un numărător binar modulo 2n cu comandă de încărcare sincronă sau comandă de ştergere sincronă poate fi foarte uşor transformat într-un numărător modulo N

  • Proiectare Logică 2 =============================================

    Fig. 14.26

    14.2.5 Divizoare de frecvenţă

    Un divizor de frecvenţă modulo N este o schemă logică secvenţială care oferă la ieşire un semnal cu perioada de N ori mai mare decât perioada semnalului de tact.

    În practică un divizor de frecvenţă seamănă cu numărător doar

    că nu contează cum este codificată informaţia la ieşire ci doar raportul de divizare şi eventual factorul de umplere al semnalului la ieşire.

    Schema bloc a divizorului este cea din Fig. 14.27 iar diagrama

    de timp aferentă unui divizor modulo 3 este cea din Fig. 14.28.

    :NTACT fN

    Fig. 14.27

    TACT

    fN

    tw

    t'w

    t'w(H)

    t

    t

    Fig. 14.28

  • Proiectare Logică 2 =============================================

    În general:

    t'w=N*tw

    u=t'w(H)/t'w*100%

    Pentru cazul considerat u=1/3*100%=33,33%. Exemplu: Să se realizeze un divizor de frecvenţă modulo 2,4,8,16,32

    utilizând un numărător tip 74LS163A. Pentru cazul considerat se va utiliza schema din Fig. 14.29. Rezultatul

    simulării este prezentat în Fig. 14.30.

    Fig. 14.29

    Fig. 14.30

    Exemplu: Să se realizeze un divizor de frecvenţă modulo 200 folosind doar două module SN74LS163A.

    Se conectează la intrările de date combinaţia ce reprezintă

    echivalentul binar al valorii 28-200=56. Schema este reprezentată în Fig. 14.31 iar rezultatul simulării în Fig. 14.32. Se observă că iniţializarea este

    f16

    f32f4f8

    S1DSTM1

    Implementation = TACT

    LO

    U2

    74LS163A1

    3456

    21079

    1413121115

    CL

    R

    ABCD

    CLKENTENPLOAD

    QAQBQCQD

    RCO

    LO

    S1DSTM2

    Implementation = INITN

    LOLN

    f2

    LO

    INITN

    TACT

    LO

    HI

    HI

    U3A

    74LS04

    12

    LO

    U1

    74LS163A

    1

    3456

    21079

    1413121115

    CL

    R

    ABCD

    CLKENTENPLOAD

    QAQBQCQD

    RCO

    LO

    LO

  • Proiectare Logică 2 ============================================= realizată prin semnalul de încărcare LOAD# iar ieşirea este semnalul de transport al modulului de la rangurile superioare.

    (56)(10)=00111000(2)

    Fig. 14.31

    Fig. 14.32

  • Proiectare Logică 2 =============================================

    14.3 Modelarea registrelor folosind VHDL 14.3.1 Modelare registru tampon (buffer)

    Fig. 14.33

    Fig. 14.34

  • Proiectare Logică 2 =============================================

    14.3.2 Modelare registru deplasare dreapta cu ștergere asincronă

    Fig. 14.35

    14.3.3 Modelare registru deplasare dreapta/stânga cu ștergere asincronă

    Scema bloc a unui registru de deplasare dreapta/stânga cu șstergere asincronă este prezentata în Fig. 14.36

    CBBsaY

    iaD

    oaQsaQ

    iClk

    iResetiPL_DH

    iDL_SH

    iSDD

    iSDS

    Fig. 14.36

  • Proiectare Logică 2 =============================================

    Fig. 14.37

    14.4 Modelarea numărătoarelor folosind VHDL

    14.4.1 Modelare numărător direct modulo 64

    Fig. 14.38

  • Proiectare Logică 2 =============================================

    Fig. 14.39

    14.4.2 Modelare numărător direct modulo 10

    Fig. 14.40

  • Proiectare Logică 2 =============================================

    Fig. 14.41

    14.4.3 Modelare numărător invers modulo 10

    Fig. 14.42

  • Proiectare Logică 2 =============================================

    Fig. 14.43

    Fig. 14.44

    14.4.4 Modelare numărător decadic Johnson

    Fig. 14.45

  • Proiectare Logică 2 =============================================

    Fig. 14.46

    Fig. 14.47

    14.4.5 Modelare divizor de frecvență decadic

    Fig. 14.48

  • Proiectare Logică 2 =============================================

    Fig. 14.49

    Fig. 14.50