PROIECT VLSI
2024
Table of Contents
Noțiuni preliminare............................................................................................................................. .3
Tranzistorul..................................................................................................................................... .3
Tranzistorul MOSFET.................................................................................................................... .3
Poarta NAND...................................................................................................................................4
Poarta NOT..................................................................................................................................... .4
Registre și magistrale.......................................................................................................................... .5
Registru pe 1 bit...............................................................................................................................5
Registru pe 8 biți..............................................................................................................................5
Necesitatea și implementarea unui decodificator........................................................................... .6
ALU – Unitatea Aritmetico-Logică......................................................................................................9
Unitatea de Comandă..........................................................................................................................11
Noțiuni preliminare
BUS – folosit pentru transferul informației
Registru – folosit pentru salvarea informației
ALU – Unitate Aritmetico-Logică
UC – Unitate de Control
8 biți = 1 byte
1K = 1024 biți = 210
64K = 64 * 1024 = 65536 biți = 216
1M = 1024 * 1024 = 220
8M = 223 = 210 * 210 * 23
1G = 230
4G = 232
Tranzistorul
D = drenă
G = gate
S = sursă
VGS > Vth => tranzistorul este ON – avem curent de la
drenă la sursă
VD = VS => tranzistorul este în scurt circuit
Pe G se aplică tensiune LOW (notată 0) sau HIGH (notată 1)
Figura 1 - Tranzistor
Tranzistorul MOSFET
VG = 1 VG = 0
Tranzistorul ON => D este Tranzistorul OFF => nu
NMOS conectat la S => tranzistorul avem curent între D și S
este un fir ceea ce înseamnă ceea ce înseamnă că
că VS = VD VS ≠ VD
VG = 1 VG = 0
PMOS Invers ca la NMOS Invers ca la NMOS
Aceste tranzistoare sunt switch-uri – comutatoare
Poarta NAND
Poarta NAND are implementarea prezentată mai jos. Este formată din 2
tranzistoare PMOS cuplate în paralel și 2 tranzistoare NMOS cuplate în serie.
in1 in out
2
0 0 1
0 1 1
1 0 1
1 1 0
Figura 2. Poarta NAND2
R1: Explicați funcționarea porții NAND 2
Poarta NOT
Se poate obține foarte ușor din legarea în serie a unui transzistor PMOS cu un
tranzistor NMOS. O altă versiune simplă de a obține un inversor este legarea
lui in1 cu in2 în implementarea porții NAND
R2: Desenați și explicați funcționarea unei astfel de porți în ambele
variante.
Registre și magistrale
Registru pe 1 bit
Realizarea unui registru pe 1 bit folosind tranzistori – o memorie de 1 bit
S = 1 și i = 1 atunci
întotdeauna out3 = 1.
Folosim doar circuitul de sus
S = 1 și i = 0 atunci out3 =
0. Când S = 1 ieșirea
urmărește intrarea
S = 0 și i = 1 atunci out3 =
0 doar dacă out3 a fost 0.
out3 = 1 doar dacă out3 a
fost 1
R3: Demonstrați
funcționarea unui
registru de 1 bit.
Figura 3. Registru pe 1 bit
Registru pe 8 biți
Se va copia registrul pe 1 bit de 8 și se leagă S împreună pentru toate registrele de 1 bit. LSB
(Least Significant Bit) va fi pe prima intrare i, iar MSB (Most Significant Bit) va fi pe ultima
intrare i.
R4: Se consideră intrarea 00101000. Care este ieșirea unui registru pe
8 biți dacă S = 1 ? Dar dacă S = 0 ?
Dorim să adăugăm semnalele de EN și CLK la registrul nostru. Pentru acest lucru se vor
observa transzistorii suplimentari introduși – reg1bit_CLK_EN.sch –
R5: Din punct de vedere de funcționare se va demonstra că S = 1 doar
dacă EN și CLK = 1. Altfel S = 0.
Necesitatea și implementarea unui decodificator
Am specificat că un registru este o celulă de memorie. În cazul în care dorim să adresăm mai multe
celule de memorie avem nevoie de un decodificator. În figura de mai jos este prezentată
funcționarea și utilitatea unui decodificator 2 x 4. El folosit pentru a selecta ce registru dinb cele 4
existente va fi activ. Un registru este activat în cazul în care EN = 1 și CLK = 1. Atunci ieșirea
registrului pe 8 biți (numărul 4 dacă intrarea în DEC 2x4 este 1, 1) va urmări intrarea.
În fapt intrarea decodificatorului nu este altceva decât adresa
registrului R0, R1, R2 sau R3. Funcție de intrarea existentă pe
Funcționarea unui DEC 2x4 trebuie să respecte următorul tabel
de adevăr.
i0 i1 out0 out1 out2 out3
0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 1 0 0 0 1
Figura 4. Necesitatea unui DEC
Implementarea unui decodificator utilizând tranzistoarele nMOS și pMOS poate fi observată în
Figura 5.
R6: Explicați funcționarea unui
DEC 2x4 conform implementării din
Figura 5.
Figura 5. Implementarea VLSI a unui DEC 2 x 4
Exemplu – scrierea într-o memorie RAM de 64K. Se consideră că avem disponibil în interiorul
procesorului un registru notat MAR. Acest registru ne va oferi adresa de memorie de unde trebuie să
citim/scriem informația dorită.
Se cunoaște că dacă avem n intrări într-un decodificator atunci avem 2n ieșiri. Dacă considerăm n =
8 atunci 28 = 256. Astefel, putem adresa 256 x 256 = 28 x 28 = 216 = 64K.
R7: Descrieți realizarea operației de
scriere în memorie
Figura 6. Operația de scriere (WRITE)
O altă operație importantă cu memoria este operația de citire (READ). Pentru a realiza această
operație avem nevoie de un alt circuit – MULTIPLEXOR. Un circuite de multiplexare este folosit
pentru a selecta la ieșire o singură intrare. Spre exemplu MUX 2:1 este circuitul care are 2 intrări, o
intrare de EN sau SEL și o ieșire. În cazul în care EN/SEL = 0 la ieșire se va transfera prima intrare.
În cazul în care EN/SEL = 1 atunci la ieșire se va transfera intrarea a doua.
Figura 7. Utilizarea unui MUX pentru READ
MUX 2:1
a, b - intrări
SEL – intrare de selecție
out - ieșire
Dacă SEL = 0 atunci out = a și nu
contează valoarea lui b. Dacă SEL = 1
atunci out = b și nu contează valoarea lui a.
R8: Descrieți realizarea operației de citire din memorie
Implementarea unui circuit MULTIPLEXOR utilizând tranzitoare nMOS și pMOS este prezentatî în
figura 8.
R9: Descrieți operarea
circuitului MUX 2:1
prezentat în Figura 8.
Figura 8. Implementarea unui MUX 2:1
ALU – Unitatea Aritmetico-Logică
Unitatea UAL va realiza două operații: adunare și scădere. Adunarea a mai fost studiată iar scăderea
o vom realiza în cod complement față de 2 pentru a folosi același hardware ca și la adunare.
Pe lângă resursele prezentate ăână acum avem nevoie de o poartă XOR implementată folosind
tranzitoare nMOS și pMOS conform figurii 9.
Figura 9. Implementarea unui XOR
Schema unui sumator complet pe 1 bit este prezentată în figura 10.
Acest sumator se va multiplica de 8
ori pentru a obține un sumator
complet pe 8 biți. A nu se uita să se
conecteze Cout la Cin -ul sumatorului
următor.
Figura 10. Sumator complet pe 1 bit
Pentru a folosi același hardware operația de scădere se reduce la o operație de adunare în cod
complement față de 2.
0000 0000 – 0111 1111 [0 : 128]
1000 0000 – 1111 1111 [-128 : 0)
Pentru a determina valoarea unui număr în cod complement față de 2 se neagă toți biții numărului și
se adaugă 1. Numărul 13 = 0000 1101. Negăm biții și obținem: 1111 0010. Acum adăugăm valoarea
1 și vom obține 1111 0011 = -13 în cod complement față de 2.
Vom avea nevoie de un noter care ne vă va genera b dacă a = 0 și not b daca a = 1. Acest noter este
compus din 8 porți XOR (reprezentate cu nMOS și pMOS). Intrarea a este aceeași la toate porțile
XOR – deci a va avea 1 bit, dar b va fi pe 8 biți.
Cin a fost ales pe post de a din explicațiile
anterioare pentru ușurință.
Figura 11. Poziționarea noter-ului.
Pentru partea de I/O vom folosi resursele disponibile în programele disponibile pentru elaborarea
proiectului – keyboard și afișor. Resursa keyboard se va lega la un registru denumit IN, iar registrul
OUT (pe 8 biți) ne va oferi adresele pentru o memorie ROM care va memora 15 biți ce reprezintă
informația afișată de led-uri.
Schema generală simplificată a calculatorului
Unitatea de Comandă