3. Circuitele secventialeacs.pub.ro/~cpop/CN1_2CB_2CD/LabCN1_2019-20/Lab3/Lab3.pdf3. Circuitele...

11
3. Circuitele secvent , iale 3.1 Detaliile problemei Circuitele secvent , iale sunt circuitele a c˘ aror ies , ire depinde de aparit , ia frontului pozitiv sau negativ de ceas. În cadrul acestei lucr˘ ari de laborator vom dori s˘ a proiect˘ am s , i s˘ a implement˘ am un circuit care s˘ a simuleze un ceas cronometru. Vom folosi dispozitivele 7 segmente existente pe plac˘ a pentru a afis , a valoarea curent˘ a a ceasului, 2 switch-uri pentru RESET s , i PAUZ ˘ As , i un led pentru a verifica funct , ionarea ceasului. Proiectarea necesit˘ a parcurgerea urm˘ atorilor pas , i: 1. Determinarea semnalelor de I/O precum. În cazul nostru vom folosi semnalele din tabelul 3.1. Semnal Dimensiune Descriere Intr˘ ari clk 1 bit semnal de ceas. Toate semnalele circuitului nostru vor fi sincronizate cu ceasul. pauza 1 bit semnal folosit pentru oprirea ceasului cronometru reset 1 bit orice circuit are nevoie de un semnal de reset care aduce circuitul în starea init , ial˘ a în care toate semnalele sunt init , ializate cu 0. De regul˘ a acest semnal este 1 init , ial pentru 20 ns s , i apoi el devine 0. Ies , iri An 8 bit , i semnal care va explicat în sect , iunea dedicat˘ a afis , orului 7 segmente. Seg 8 bit , i semnal care va fi explicat în sect , iunea dedicat˘ a modulului de afis , are 7 segmente DP 1 bit semnal care va explicat în sect , iunea dedicat˘ a modulului de afis , are 7 segmente clik_out 1 bit semnal de ies , ire legat la un led pentru a observa funct , ionarea ceasului Tabela 3.1: Semnalele de intrare - ies , ire (I/O) 2. Determinarea modulelor componente:

Transcript of 3. Circuitele secventialeacs.pub.ro/~cpop/CN1_2CB_2CD/LabCN1_2019-20/Lab3/Lab3.pdf3. Circuitele...

Page 1: 3. Circuitele secventialeacs.pub.ro/~cpop/CN1_2CB_2CD/LabCN1_2019-20/Lab3/Lab3.pdf3. Circuitele secvent,iale 3.1 Detaliile problemei Circuitele secvent, iale sunt circuitele a c˘aror

3. Circuitele secvent,iale

3.1 Detaliile problemei

Circuitele secvent,iale sunt circuitele a caror ies, ire depinde de aparit,ia frontului pozitiv sau negativde ceas. În cadrul acestei lucrari de laborator vom dori sa proiectam s, i sa implementam un circuitcare sa simuleze un ceas cronometru.

Vom folosi dispozitivele 7 segmente existente pe placa pentru a afis, a valoarea curenta a ceasului,2 switch-uri pentru RESET s, i PAUZA s, i un led pentru a verifica funct,ionarea ceasului. Proiectareanecesita parcurgerea urmatorilor pas, i:

1. Determinarea semnalelor de I/O precum. În cazul nostru vom folosi semnalele din tabelul 3.1.

Semnal Dimensiune Descriere

Intra

ri

clk 1 bit semnal de ceas. Toate semnalele circuitului nostru vor fisincronizate cu ceasul.

pauza 1 bit semnal folosit pentru oprirea ceasului cronometru

reset 1 bitorice circuit are nevoie de un semnal de reset care aduce circuitulîn starea init,iala în care toate semnalele sunt init,ializate cu 0. Deregula acest semnal este 1 init,ial pentru 20 ns s, i apoi el devine 0.

Ies ,ir

i

An 8 bit,isemnal care va explicat în sect,iunea dedicata afis, orului 7segmente.

Seg 8 bit,isemnal care va fi explicat în sect,iunea dedicata modulului deafis, are 7 segmente

DP 1 bit semnal care va explicat în sect,iunea dedicata modulului deafis, are 7 segmente

clik_out 1 bit semnal de ies, ire legat la un led pentru a observa funct,ionareaceasului

Tabela 3.1: Semnalele de intrare - ies, ire (I/O)

2. Determinarea modulelor componente:

Page 2: 3. Circuitele secventialeacs.pub.ro/~cpop/CN1_2CB_2CD/LabCN1_2019-20/Lab3/Lab3.pdf3. Circuitele secvent,iale 3.1 Detaliile problemei Circuitele secvent, iale sunt circuitele a c˘aror

24 Aplicat,ia 3. Circuitele secvent,iale

• Din documentat,ia placii se cunoas, te faptul ca frecvent,a de lucru a ceasului intern placiieste de 50MHz sau de 100MHz. Ambele frecvent,e sunt foarte mari s, i drept urmare faraexistent,a unui divizor de ceas orice am încerca sa afis, am, se va afis, a mult prea repede casa poata fi s, i observat. Ca atare vom proiecta în Verilog un divizor de ceas care sa reducafrecvent,a de funct,ionare a ceasului de la 50MHz la 1Hz (aprox 1s) ca în figura 3.1:

clkout =clkin

DIV(3.1)

Figura 3.1: Divizorul de ceas

Pentru a obt,ine o frecvent,a de 1Hz va trebui sa facem o împart,ire cu 50.000.000 valoarece rezulta din conversie 1 sau se pot face conversiile din Hz direct în s2.În cadrul proiectarii noastre vom avea o implementare a divizorului dea ceas un pic maidiferita deoarece vom prefera sa facem un divizor de ceas care sa primeasca ca intrarevaloarea de ceas a placii (50MHz) s, i sa ne ofere la ies, ire 2 valori ale ceasului (una pentrua aprinde led-ul cu o frecvent,a observabila s, i o a doua valoare care va aprinde circuitulde afis, are cu 7 segmente). În concluzie, vom avea nevoie sa proiectam un divizor de ceascu 2 intrari s, i 2 ies, iri (clk_in, reset / clk_out_led, clk_out_seg). Rezultatul proiectariiîn Verilog al acestui modul este prezentat în figura 3.2.

• Vom avea nevoie de proiectarea unui numarator binar care sa numere de 0 la 59. Acestmodul va avea ca intrari semnalele: clk_out_led, reset, pauza iar ca ies, iri valoare_bin,carry_out. Modulul trebuie proiectat s, i implementat în cadrul laboratorului.

• Un modul de conversie din binar în BCD este necesar pentru a face conversia numa-rului rezultat din numarator într-o valoare reprezentata în cod BCD (conversia BCD s, ioperat,iile BCD sunt prezentate mai jos). Acest modul va avea urmatoarele semnale deI/O: valoare_bin / BCD0, BCD1. Valorile de ies, ire BCD0 s, i BCD1 vor corespundevalorii minutelor s, i vom mai avea nevoie de duplicarea acestui modul pentru a trata cazulsecundelor.

1https://www.rapidtables.com/convert/frequency/mhz-to-hz.html

2https://www.unitjuggler.com/convert-frequency-from-s(p)-to-Hz.html

Page 3: 3. Circuitele secventialeacs.pub.ro/~cpop/CN1_2CB_2CD/LabCN1_2019-20/Lab3/Lab3.pdf3. Circuitele secvent,iale 3.1 Detaliile problemei Circuitele secvent, iale sunt circuitele a c˘aror

3.2 Numere ZCB 25

Figura 3.2: Proeictarea unui divizor de ceas

• Ultimul modul necesar este modulul de afis, are care va prelua valorile BCD produse decele doua numaratoare s, i le va afis, a pe un dispozitiv 7 segmente.

3. Generarea diagramei care cont,ine toate modulele s, i semnalele necesare implementarii proiec-tului.

Figura 3.3: Diagrama circuitului

3.2 Numere ZCB

În calculatoarele numerice, informat,ia memorata în format binar se regases, te în memorie sau înregistrele procesorului. Registrele cont,in date sau informat,ii de control. Informat,ia de controleste formata dintr-un grup de bit,i utilizat în vederea specificarii secvent,ei semnalelor de comandanecesare manipularii datelor în registre. Datele sunt numere si alte informat,ii codificate binar, caresunt prelucrate în vederea obt,inerii unui rezultat numeric.

Page 4: 3. Circuitele secventialeacs.pub.ro/~cpop/CN1_2CB_2CD/LabCN1_2019-20/Lab3/Lab3.pdf3. Circuitele secvent,iale 3.1 Detaliile problemei Circuitele secvent, iale sunt circuitele a c˘aror

26 Aplicat,ia 3. Circuitele secvent,iale

Numarhexazecimal

Hexazecimalcodificat binar

Numaroctal

Octalcodificat binar Numar ZCB Numar

zecimal0 0000 0 000 0000 01 0001 1 001 0001 12 0010 2 010 0010 23 0011 3 011 0011 34 0100 4 100 0100 45 0101 5 101 0101 56 0110 6 110 0110 67 0111 7 111 0111 78 1000 1000 89 1001 1001 9A 1010 10B 1011 11C 1100 12D 1101 13E 1110 14F 1111 15

Tabela 3.2: Reprezentarea numerelor zecimale în diferite sisteme de numerat,ie

Toate tipurile de date, cu except,ia numerelor binare, sunt reprezentate în registrele calculatoruluiîn forma binara, deoarece acestea sunt alcatuite din bistabile, care pot memora informat,ie 0 sau 1.

Utilizarea numerelor binare codificate zecimal (ZCB). Este foarte important sa nu se confundeconversia numerelor zecimale în binar si codificarea binara a numerelor zecimale. Când se realizeazaconversia numarului zecimal 99 într-un numar binar se obt,ine s, irul de bit,i 1100011, reprezentareaZCB fiind 10011001. Singura diferent,a consta în simbolurile utilizate pentru reprezentarea bit,ilor.

În tabelul 3.2 se poate observa codificarea numerelor zecimale în diferite sisteme de numerat,ie.În calculatoarele numerice precum si în diverse aplicat,ii este necesar sa se utilizeze alte coduri

precum codul Gray, codul 2421, codul excess-3 Gray, etc. Acestea sunt prezentate în tabelul 3.3.

Digital zecimal Grey BCD 8421 2421 Excess-3 Excess-3 Grey0 0000 0000 0000 0011 00101 0001 0001 0001 0100 01102 0011 0010 0010 0101 01113 0010 0011 0011 0110 01014 0110 0100 0100 0111 01005 0111 0101 1011 1000 11006 0101 0110 1100 1001 11017 0100 0111 1101 1010 11118 1100 1000 1110 1011 11109 1101 1001 1111 1100 1010

Tabela 3.3: Diferite coduri pentru cifrele zecimale

În majoritatea dispozitivelor numerice, operat,iile de prelucrare a informat,iilor se desfas, oara în

Page 5: 3. Circuitele secventialeacs.pub.ro/~cpop/CN1_2CB_2CD/LabCN1_2019-20/Lab3/Lab3.pdf3. Circuitele secvent,iale 3.1 Detaliile problemei Circuitele secvent, iale sunt circuitele a c˘aror

3.2 Numere ZCB 27

binar. În multe aplicat,ii este necesara o afis, are directa, pe dispozitive cu s, apte segmente (sau tuburiNIXIE), a informat,iei prelucrate. Din acest motiv, este necesara o conversie a valorii binare, înzecimal codificat binar (ZCB). Codul ZCB permite o decodificare us, oara pentru dispozitive cu s, aptesegmente.

Convertoarele prezentate sunt de urmatoarele tipuri:• ASINCRON – realizate numai cu ret,ele combinationale de port,i logice. Tehnica de conversie

se bazeaza pe metodele descrise de J.P. Couler;• SINCRON – serie si paralel, utilizând registre de deplasare si sumatoare;• SECVENTIAL – utilizând numaratoare binare si decadice.

3.2.1 Conversie din binar în ZCB

Un numar binar, se exprima de obicei sub forma: Nb = bn�1bn�2...b1b0 unde n este numarul de bit,is, i b j este o valoare egala cu 0 sau 1. Valoarea zecimala a acestui numar este:

NZ = bn�1 ⇤2n�1 +bn�2 ⇤2n�2 + ...+b1 ⇤21 +b0 ⇤20 (3.2)

Sau sub forma de înmult,ire cu 2 prin împachetare:

NZ = (...((bn�1 ⇤2+bn�2)⇤2+bn�3)⇤2+ ...+b1)⇤2+b0 (3.3)

Înmult,irea cu 2 prin împachetare, se poate realiza prin deplasare la stânga (exemplu în tabelul3.4).

0 0 0 b3 NZ = b30 0 b3 b2 NZ = b3 ⇤2+b20 b3 b2 b1 NZ = (b3 ⇤2+b2)⇤2+b1b3 b2 b1 b0 NZ = ((b3 ⇤2+b2)⇤2+b1)⇤2+b0

Tabela 3.4: Exemplu: NZ = (((b3 ⇤ 2+ b2)+ b1)+ b0 valoarea zecimala a numarului binar NB =b3b2b1b0

Se observa ca pentru a converti un numar binar NB într-un numar ZCB, trebuie modificateponderile corespunzatoare bit,ilor registrului, efectuând corect,iile necesare în timpul deplasarii. Înacest scop registrul, care va pastra numarul ZCB, va trebui împart,it în grupe de 4 bit,i (decade). Bit,iiunei decade d8d4d2d1 vor avea ponderile 8, 4, 2, 1 si valoarea reprezentata nu va depas, i valoarea 9.

Orice deplasare la stânga va însemna o înmult,ire cu 2. În momentul în care o decada cont,ine unnumar mai mare decât 4, rezultatul deplasarii va depas, ii valoarea 10 si în acest caz va trebui facutaurmatoarea corect,ie: înainte de deplasare, se adauga valoarea 3, la acele decade care cont, in unnumar mai mare decât 4. Corect,ia prezentata rezulta din urmatoarele constatari:

• daca valoarea decadei este mai mica sau egala cu 4 prin deplasare la stânga cu o pozit,ie seobt,ine un numar mai mic decât 9. Prin urmare nu trebuie facuta nici o corect,ie

• daca valoarea decadei este mai mare decât 4 si mai mica sau egala cu 7, prin deplasarea lastânga cu o pozit,ie se obt,ine un numar mai mare decât 9. se poate scrie:

decada⇤2 = (5+(decada�5))⇤2 = 10+(decada�5)⇤2 (3.4)

Se observa ca înainte de deplasare se scade 5, iar dupa deplasare se adauga 1 la pozit,ia ceamai put,in semnificativa din decada urmatoare. Acelas, i lucru se poate realiza daca se scade

Page 6: 3. Circuitele secventialeacs.pub.ro/~cpop/CN1_2CB_2CD/LabCN1_2019-20/Lab3/Lab3.pdf3. Circuitele secvent,iale 3.1 Detaliile problemei Circuitele secvent, iale sunt circuitele a c˘aror

28 Aplicat,ia 3. Circuitele secvent,iale

valoarea 5 înainte de deplasare si se fort,eaza în bitul d8 al decadei valoarea 1 (echivalent cu aaduna valoarea 8 înainte de deplasare). Deci înainte de deplasare, se adauga 8 si se scade 5,ceea ce este echivalent cu a aduna 3 înainte de deplasare.

• daca valoarea decadei este mai mare sau egala cu 8 si mai mica sau egala cu 9, dupa deplasare,bitul cu ponderea 8 (egal cu 1) va trece în bitul cel mai put,in semnificativ al decadei urmatoare.Prin aceasta, valoarea se modifica de la 8 la 10 în loc sa se modifice de la 8 la 16. Are loc opierdere egala cu 6. Corect,ia se poate face, dupa deplasare, adunând 6 la valoarea decadei sauînainte de deplasare adunând 3.

Figura 3.4: Exemplu conversie ZCB

Modul de conversie prezentat mai sus este serie-sincron si necesita un transfer paralel – seriea informat,iei la intrare. Conform teoriei prezentate, modulul Verilog de conversie binar-ZCB esteprezentat în figura 3.5.

Figura 3.5: Modul conversie ZCB

Page 7: 3. Circuitele secventialeacs.pub.ro/~cpop/CN1_2CB_2CD/LabCN1_2019-20/Lab3/Lab3.pdf3. Circuitele secvent,iale 3.1 Detaliile problemei Circuitele secvent, iale sunt circuitele a c˘aror

3.3 Operat, ii ZCB 29

3.3 Operat,ii ZCB

3.3.1 Adunarea în ZCB

Pentru codul ZCB se considera codul ponderat 8-4-2-1. Adunarea în cod ZCB este identica cuadunarea binara. Suma pentru fiecare decada trebuie corectata considerând transferul la decadaurmatoare s, i rezultatele care au valori cuprinse între 10 s, i 15. În momentul adunarii a doua decaderezulta douazeci de sume posibile. Dintre acestea, numai zece vor fi corecte, celelalte necesitândcorect,ii. În tabelul urmator sunt prezentate sumele a doua cifre ZCB înainte de corectare s, i dupacorectare.

Suma incorecta Suma corectaTp j Sp j8 Sp j4 Sp j2 Sp j1 Tj S j8 S j4 S j2 S j1

0 0 0 0 0 0 0 0 = 00 0 0 1 0 0 0 1 = 10 0 1 0 0 0 1 0 = 20 0 1 1 0 0 1 1 = 30 1 0 0 0 1 0 0 = 40 1 0 1 0 1 0 1 = 50 1 1 0 0 1 1 0 = 60 1 1 1 0 1 1 1 = 71 0 0 0 1 0 0 0 = 81 0 0 1 1 0 0 1 = 91 0 1 0 1 0 0 0 0 = 101 0 1 1 1 0 0 0 1 = 111 1 0 0 1 0 0 1 0 = 121 1 0 1 1 0 0 1 1 = 131 1 1 0 1 0 1 0 0 = 141 1 1 1 1 0 1 0 1 = 15

1 0 0 0 0 1 0 1 1 0 = 161 0 0 0 1 1 0 1 1 1 = 171 0 0 1 0 1 1 0 0 0 = 181 0 0 1 1 1 1 0 0 1 = 19

Tabela 3.5: Rezultatele adunarii ZCB a doua numere

Pentru o suma egala sau mai mare decât 10, este necesar un transport spre decada urmatoare s, i ocorect,ie ce consta în a scadea valoarea 10 din decada urmatoare. Scaderea valorii 10 este echivalentacu adunarea complementului fat, a de 2, care este 0110 sau 6 în zecimal. Din tabelul de mai sus seobserva ca transferul Tj în cazul sumei corectate este: Tj = Tp j + t j unde Tp j este transferul bituluiSp j8 la stânga în cazul sumei necorectate, iar t j este o funct,ie de Sp j8, Sp j4, Sp j2, Sp j1. Funct,ia t jrezulta din diagrama Karnaugh din figura 3.6.

3.3.2 Scaderea în ZCB

Daca se scade o cifra zecimala s, i eventual un împrumut dintr-o cifra zecimala, în codul 8-4-2-1,exista 20 de diferent,e corecte de la 9 la –10. În tabelul urmator se prezinta diferent,ele incorecte s, idiferent,ele corecte ale unei operat,ii de scadere.

Page 8: 3. Circuitele secventialeacs.pub.ro/~cpop/CN1_2CB_2CD/LabCN1_2019-20/Lab3/Lab3.pdf3. Circuitele secvent,iale 3.1 Detaliile problemei Circuitele secvent, iale sunt circuitele a c˘aror

30 Aplicat,ia 3. Circuitele secvent,iale

Figura 3.6: Diagraga Karnaugh pentru t j

Diferent, a incorecta Diferent, a corecta1 0 0 1 1 0 0 1 = 91 0 0 1 1 0 0 0 = 80 1 1 1 0 1 1 1 = 70 1 1 0 0 1 1 0 = 60 1 0 1 0 1 0 1 = 50 1 0 0 0 1 0 0 = 40 0 1 1 0 0 1 1 = 30 0 1 0 0 0 1 0 = 20 0 0 1 0 0 0 1 = 10 0 0 0 0 0 0 0 = 0

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

Tabela 3.6: Scaderea în ZCB

Daca numarul împrumuta o unitate (-1) el apare în reprezentarea prin complement fat, a de 10.În continuare vom considera ca operanzii negativi vor fi reprezentat,i în complement fat, a de 9. Înaceasta reprezentare operat,ia de scadere va fi mai us, or de realizat. Operat,ia de scadere a doi operanziZCB consta în adunarea complementului fat, a de 9 al scazatorului la descazut. Complementul fat, ade 9 al unei cifre zecimale reprezentate în cod ZCB, se realizeaza conform diagramei prezentate întabelul urmator:

Din tabelul 3.7 rezulta ecuat,iile logice pentru complementul fat, a de 9:

c8 = d8 ⇤d4 ⇤d2

c4 = d4 +d2

c2 = d2

c1 = d1

(3.5)

Page 9: 3. Circuitele secventialeacs.pub.ro/~cpop/CN1_2CB_2CD/LabCN1_2019-20/Lab3/Lab3.pdf3. Circuitele secvent,iale 3.1 Detaliile problemei Circuitele secvent, iale sunt circuitele a c˘aror

3.4 Afis, area 7 segmente 31

Cifra ZCB Complementfat, a de 9

0 0 0 0 1 0 0 10 0 0 1 1 0 0 00 0 1 0 0 1 1 10 0 1 1 0 1 1 00 1 0 0 0 1 0 10 1 0 1 0 1 0 00 1 1 0 0 0 1 10 1 1 1 0 0 1 01 0 0 0 0 0 0 11 0 0 1 0 0 0 0

Tabela 3.7: Complementul fat, a de 9 al unei cifre ZCB

3.4 Afis, area 7 segmente

Pentru a realiza afis, area 7 segmente se urmaresc detaliile din figura 3.7 s, i tabelul 3.8.

Figura 3.7: Afis, aj 7 segmente

Astfel modulul de afis, are 7 segmente în Verilog poate fi descris ca în figura 3.8.

Page 10: 3. Circuitele secventialeacs.pub.ro/~cpop/CN1_2CB_2CD/LabCN1_2019-20/Lab3/Lab3.pdf3. Circuitele secvent,iale 3.1 Detaliile problemei Circuitele secvent, iale sunt circuitele a c˘aror

32 Aplicat,ia 3. Circuitele secvent,iale

Numar A B C D E F G0000 0 0 0 0 0 0 10001 1 0 0 1 1 1 10010 0 0 1 0 0 1 00011 0 0 0 0 1 1 00100 1 0 0 1 1 0 00101 0 1 0 0 1 0 00111 0 0 0 1 1 1 11000 0 0 0 0 0 0 01001 0 0 0 0 1 0 0

>=1010 1 1 1 1 1 1 1

Tabela 3.8: Codificare pe 7 segmente

Figura 3.8: Module afis, aj 7 segmente

Cerint,a de lucru 1:

Proiectat,i restul elementelor conform schemei generale, realizat,i un modul top în Verilog s, i simulat,iîn placut,a disponibila în cadrul laboratorului.

Cerint,a de lucru 2:

Se dores, te proiectarea unui automat pentru bauturi racoritoare. Pentru a simplifica problem, seconsidera ca se poate elibera un singur tip de bautura racoritoare. Aceasta costa 3 RON. Automatulaccepta bancnote de 1, 5 , respectiv 10 RON s, i elibereaza rest daca s-a introdus o suma mai maredecât pret,ul bauturii. Se presupune ca exista un mecanism pentru sortarea banilor s, i care emite treisemnale, câte unul pentru fiecare tip de bancnota. Semnalele determina tranzit,ia automatului dintr-ostare în alta.

Page 11: 3. Circuitele secventialeacs.pub.ro/~cpop/CN1_2CB_2CD/LabCN1_2019-20/Lab3/Lab3.pdf3. Circuitele secvent,iale 3.1 Detaliile problemei Circuitele secvent, iale sunt circuitele a c˘aror

3.4 Afis, area 7 segmente 33

Figura 3.9: Maparea constrângerilor pentru placa Nexys