Sunteți pe pagina 1din 12

UPG

Departamentul AC

Prima lucrare de laborator

Disciplina: SNP
Dedicată studenților MAAVZ, I

Titlul

Utilizarea CircuitMaker pentru simularea


funcționării structurilor programabile

1
1. Scopul și motivația lucrării

2
2. Breviar teoretic (mai lung)

6.2 Extinderea capacităţii de memorare. Dialoguri imaginare

Vom lua în discuţie posibilitatea de extindere a capacităţii de memorare


(mărirea dimensiunii cuvântului de date memorat şi/sau mărirea numărului de
cuvinte memorate) folosind ca memorie de bază chip-ul HEF4505 [19] accesibil
în CircuitMaker. Este o memorie de tip RAM (Random Access Memory sau
Read/Write Memory) cu capacitatea de 64 cuvinte (6 linii de adresă, 2 6  64 ) de
câte un bit (Fig. 6.1a). Adică, 4505 are o capacitate de memorare de 2 6  1 . Tabelul
de funcţionare este prezentat în Fig. 6.1b [22].
, , Mod
L L Z Chip nevalidat
H L Z Scriere (Write)
L H Z Chip nevalidat
H H Egal cu data Citire (Read)
din memorie

(a) (b)

Fig. 6.1 Simbolul şi tabelul de funcţionare pentru circuitul HEF4505 [19].

Să începem...
Deschidem CircuitMaker..., aşteptăm..., gata!
Am putea să vedem mai bine dacă vrem şi dacă ştim ce să facem...
View > Display Scale. Alegem 150%.
Pentru a putea organiza bine o schemă logică, este nevoie de repere.
Options > Schematic se alege Grid Visible > OK
Digital by function > RAM > 4505 > Place
În conformitate cu tabelul de funcţionare, la intrările ST , CE1 şi CE 2 trebuie
să se aplice aceeaşi valoare (0 sau 1). Deci, conectăm împreună aceste intrări şi
aplicăm un semnal logic prin comutatorul logic C (Control) (Switches > Digital
>Logic Switch). Dorim să înscriem în memorie 0 sau 1; deci, la intrarea DIN
conectăm un alt comutator logic D (Data). În continuare, conectăm un alt
comutator logic ( R / W !!!) la intrarea corespunzătoare pentru a putea comanda o
scriere ( R / W  0 ) sau o citire ( R / W  1 ). Ar trebui să avem posibilitatea să
impunem adresa la care se scrmie un cuvât. Adică, ar trebui să conectăm alte 6
comutatoare logice la intrările de adrese. Datele trebuie să poată fi citite, DOUT
trebuie să poată fi citit; conectăm la DOUT un indicator logic (Displays > Digital
> Logic Display). Obţinem schema din Fig. 6.2.
O schemă logică trebuie să fie corectă, utilă, dar şi să arate bine! De exemplu,
modul în care am aranjat comutatoarele de intrare ar trbui să vă ajute să răspundeţi
la o eventuală întrebare: scrieţi în hexazecimal adresele de scriere/citire?
3
Fig. 6.2 Circuit folosit pentru înţelegerea funcţionării
unei memorii de tip 4505.

Salvaţi circuitul pe care l-aţi desenat.


Simulation > Digital Mode > Run. Este vorba despre un circuit digital.
Avem posibilitatea să aplicăm semnale de intrare şi să citim semnale de ieşire.
Ar trebui să scriem ceva în memorie după care, să citim ce am scris.
Setăm comutatorul C  1 (din tabelul de funcţionare înţelegem că pentru
scriere/citire trebuie ca ST  CE1  CE 2  1 ).
Vom scrie câteva cuvinte în memorie apoi le vom citi.
Scriem ( R / W  0 )...
Setăm adresa de scriere A5 A4 A3 A2 A1A0  000000 .
Stabilim valoarea care trebuie scrisă. Să scriem un 1. Stabilim comutatoru D  1
Adică, până acum am scris un 1 la adresa 000000.
Să citim...
Adică, setăm adresa de citire A5 A4 A3 A2 A1A0  000000 şi R / W  1 (citire).
Citim.... nu „merge”. Adică, nu citim 1 la DOUT .
Nu merge pentru că nu am citit destul sau nu am înţeles ceea ce am citit [22].
Probabil este de vină Limba Engleză!
„The memory is strobed for reading or writing only when the strobe input ( ST
), chip enable inputs ( CE1 and CE 2 ) are HIGH simultaneously. The output data
is available at the data output ( DOUT ) only when the memory is strobed, the
read/write input ( R / W ) is HIGH and after the read access time has passed. Note
that the three-state output is initially disabled and always goes to the LOW state
before data is valid. The output is disabled in the high-impedance OFF-state,
when the memory is not strobed or R / W is LOW. R / W may remain HIGH
during a read cycle or LOW during a write cycle. The output data has the same
polarity as the input data”.

4
Fig. 6.3 Testarea unui chip de memorie 4505.

Se pare că va trebui să aplicăm semnale de comandă separate pentru ( CE1 şi


CE 2 ) şi ST (Strobe) (Fig. 6.3).
Strobe este un fel de semnal de ceas!

Acum: să scriem câteva date la nişte adrese. Vom scrie 1 la adresa 000000, 0
la adresa 000001, 1 la adresa 000010, 1 la adresa 000011.

Exerciţii ???De continuat...

Bine, am învăţat ceva! Cum se lucrează cu memoria 4505!

Trebuie să ne ridicăm mai sus de genunchiul broaştei [Ion Creangă]. Să folosim


memorii 64  1 pentru a obţine o memorie 64  2 . Adică, să păstrăm numărul de
adrese (cuvinte memorate) la 64 ( 2 6 ) dar, la adresele respective, să se memoreze
cuvinte de doi biţi.
Ne gândim la întâmplare: vom folosi două chipuri de memorie 4505. Yes!
Mai greu este să ne imaginăm cum le conectăm!
Fără niciun fel de alte informaţii eu, student, ghicesc: intrările ST conectate
împreună la comutatorul de intrare Strobe, intrările CE1 şi CE 2 împreună la
comutatorul de intrare CE , intrările R / W împreună la comutatorul de intrare
R / W . Adresele A5A4A3A2A1A0 sunt comune la cele două chip-uri (Fig. 6.4).
Arată bine sau nu!?
De fapt, ce înseamnă CE ? Limba Engleză... Chip Enable! Semnal de validare
pentru componenta respectivă, semnal activ 1 logic (în acest caz).

5
Fig. 6.4 Obţinerea unei memorii 64x2 folosind două chip-uri 64x1.

Se poate simula funcţionarea ca la varianta 2 6  1 .


Complicăm puţin această nouă variantă. Să folosim scrierea numerelor binare
de şase biţi (adresele) în hexazecimal şi să le afişăm pentru a le citi uşor (Tabelul
6.1). Structura se complică! O soluţie posibilă este prezentată în Fig. 6.5.

Tabelul 6.1
Nr. zecimal Nr. binar Nr.
DIN DOUT
A5A4_A3A2A1A0 hexazecimal
H1H0
0 00_0000 00 11
1 00_0001 01 10
2 00_0010 02 01
3 00_0011 03 00
… … … …
10 00_1010 0A 10
11 00_1011 0B 01
… … … …
20 01_0100 14 01
21 01_0101 15 10
… … … …
61 11_1101 3D 01
62 11_1110 3E 10
63 11_1111 3F 11

6
Fig. 6.5 Circuit folosit pentru simularea funcţionării unei memorii RAM de tip 64x2.

Afişare numere binare în hexazecimal cu un afişaj cu şapte segmente.


Displays > 7 Segment LED > CC (Catod comun) 7 Seg
Dar, în realitate, între comutatoarele de intrare (A5, ..., A0) şi celulele fizice de
afişare trebuie introduse decodificatoare (binar – 7 segmente). De fapt, există şi
celule de afişare care conţin decodificatoare.
Căutăm...
Digital by Function > Decode/Demux...
Apare a listă cu numere care nu vă spun prea multe.
Ce alegem?
Well, la asta este bun un profesor! Să vă spună cum şi ce să căutaţi!
Dacă nu găsiţi, nu înseamnă că nu există! Doar că, nu ştiţi ce şi cum să căutaţi.
Atunci, va trebui să proiectaţi şi să realizaţi/construiţi acel circuit.
Ne gândim (şi nu doare!): câte intrări şi câte ieşiri trebuie să aibă acest deco-
dificator? Aproape evident: 4 intrări (vreau să afişez cuvinte binare de patru biţi),
7 ieşiri (afişaj clasic cu 7 segmente). Ar trebui să ştiţi cum obţineţi un astfel de
decodificator: tabel de adevăr, ecuaţii logice simplificate – Karnaugh), schema
logică cu porţi [7, 11, 13, 15].

7
Să revenim... Căutăm un astfel de decodificator (integrat) în CM.
Prima componentă care apare în listă este 4028. Ce vedem: o componentă cu
10 ieşiri (asta ştiu eu) şi 4 intrări. La intrări se potriveşte, dar nu şi la ieşiri.
A doua componentă este 4511. Asta chiar mă interesează pentru că are nişte
semnale notate a, b, ...,f. Adică, segmentele unei celule tipice de afişare. Înseamnă
că această componentă ar putea fi luată în considerare. Mai vedem...
4514... Prea multe ieşiri.
4515... La fel.
4543... Arată bine, ar putea fi.
4555... Nu.
4556... Nu are nicio legătură cu afişajul cu 7 segmente.
Insistaţi...
Mai găsiţi ceva care ar putea fi util: 74247, 74248, 7447, 7448.
Aşadar, avem de ales între 4511, 4543, 74247, 74248, 7447 şi 7448, orice vor
fi înseamnând aceste coduri (numere).
Trecem la Google (sau Bing!) şi căutăm pdf. Texas Instruments este mama (şi
tata!) circuitelor logice integrate. Reţineţi această adresă: www.ti.com. Atunci
când această adresă nu va mai exista, vom fi cu toţi oale şi ulcele sau vom fi trimis
reprezentanţi pe alte planete. Vom reuşi... să ajungem acolo. Apoi, în 2000 – 3000
de ani vom reuşi din nou! Ce credeţi? Să distrugem acea planetă aşa cum am
distrus Pământul!
... ş. a. m. d.
....Forever and ever!
Să revenim.
4511 datasheet
Desigur, găsesc şi aleg (profu’ dixit) ceva cu ti. Şi bine faceţi!
Şi citesc: CMOS BCD to 7 Segment Latch Decoder Drivers.
Mă laşi?! Am auzit aceste cuvinte pe la diverse cursuri dar, parcă erau separate,
în propoziţii diferite.
Am o sclipire: pe documentul pdf văd, în primele rânduri cifrele zecimale (0,
1, 2, ..., 9). Eu sunt inginer (voi fi), trebuie să decid: este bun 4511 pentru afişare
de cifre hexa?
NU, bineînţeles! Acesta poate afişa numai în zecimal.
Eh, va fi mai uşor în continuare. Oare!?
Google/Bing (USA)
4543 datasheet
Desigur, aleg acum mama circuitelor integrate digitale, tot ti.com.
Ce văd? Afişează cod BCD (adică zecimal 0, 1, ..., 9) şi este pentru celule de
afişare cu cristale lichide. Nu mă interesează!
74247 datasheet

8
Văd BCD to 7 segment decoders/drivers. Prima pagină arată bine doar că nu
spune ce cifre afişează. Răsfoiesc... Nu prea mult. În pagina următoare văd ce se
poate afişa. Nişte caractere ciudate, nici vorbă de hexa A, B,...

74248 datasheet
Trec direct la a doua pagină şi văd aceleaşi caractere ciudate. Nu este bun.

Acum ce mai fac? Au mai rămas două variante. Nu profu’ le-a aranjat aşa!
Credeţi sau nu, aştept cu interes să văd ce facem mai departe!

7447 datasheet
Găsesc la pagina 2 sau 3 aceleaşi caractere ciudate.
7448 datasheet
La fel.

Nene! Se pare că nu există pe lume decodificatorul de care avem nevoie!

Avem două variante:


1. Folosim un decodificator care există (???) dar care afişează caractere
nestandard (ciudate) şi facem noi un tabel (o convenţie): ce se afişează pentru A,
pentru B, pentru C ş. a. m. d.

sau, ceea ce ar trebui să vă placă foarte mult,

2. Proiectăm şi realizăm circuitul de care avem nevoie.

Acum chiar mă gândesc cu toţi neuronii: nu s-a gândit nimeni până acum la
acest decodificator?! De ce oare?
După cum spuneam mai sus: 4 intrări, 7 ieşiri, tabel de adevăr, Karnaugh,
schema logică cu porţi. Desigur, rămâne ca exerciţiu!

Mergem mai departe. Să construim o memorie 128  1 folosind 4505. Adică


2 1. Aceasta înseamnă 128 cuvinte de câte 1 bit. Aproape imediat ne gândim:
7

folosim 2 x 4505 pentru a obţine 128 de cuvinte. Dar, cum vom face să
scriem/citim pe rând cele două chip-uri (Fig. 6.6)?
La fel ca în cazul anterior, folosim scrierea numerelor binare de şapte biţi
(adresele) în hexazecimal şi să le afişăm pentru a le citi uşor (Tabelul 6.2).
Pentru simulare: la scriere: RW  0 , DIN  1 (de ex), ST se comută din 0 – 1 –
0; la citire: R / W  1 , ST  1 .

9
Fig. 6.6 Memorie RAM 128x1 formată din memorii 64x1.

Tabelul 6.2
Nr. Nr. Nr. binar Nr.
chip zecimal A6A5A4_A3A2A1A0 hexazecimal
DIN DOUT
H1H0
0 000_0000 00 1
1 000_0001 01 1
2 000_0010 02 0
3 000_0011 03 1
… … … …
#0 10 000_1010 0A 1
11 000_1011 0B 1
… … … …
61 011_1101 3D 1
62 011_1110 3E 1
63 011_1111 3F 1
64 100_0000 40 0
65 100_0001 41 0
… … … …
82 101_0010 52 0
83 101_0011 53 1
… … … …
#1 99 110_0011 63 1
100 110_0100 64 0
101 110_0101 65 1
… … … …
125 111_1101 7D 0
126 111_1110 7E 1
127 111_1111 7F 1

10
Ultima extindere de memorie: să obţinem o memorie 128  2 folosind
„cărămizi” de tip 4505 (Fig. 6.7).

Fig. 6.7 Memorie RAM 128x2 formată din memorii 64x1.

11
3. Desfășurarea lucrării

4. Întrebări și probleme

3.6.3 Codificator dual de priorităţi

3.6.4 Comparator dependent de mod

12

S-ar putea să vă placă și