Sunteți pe pagina 1din 23

2-0

CUPRINS
2. DESCRIEREA STRUCTURII SISTEMELOR NUMERICE .......................................................................... 2-1
2.1 MODALITI DE DESCRIERE A STRUCTURII SISTEMELOR NUMERICE DE PRELUCRARE A DATELOR ...................... 2-2
2.2 LIMBAJUL DE DESCRIERE A STRUCTURILOR NUMERICE AHPL ........................................................................... 2-3
2.3 DESCRIEREA SISTEMELOR NUMERICE N AHPL .................................................................................................. 2-3
2.3.1 Tipuri de operanzi n AHPL ..................................................................................................................... 2-4
2.3.2 Tipuri de operatori................................................................................................................................... 2-5
2.3.2.1 Operatori AHPL ................................................................................................................................................... 2-5
2.3.3 Instruciuni AHPL .................................................................................................................................... 2-7
2.3.3.1 Instruciuni de atribuire ........................................................................................................................................ 2-8
2.3.3.2 Instruciuni de salt.............................................................................................................................................. 2-14
2.4 DESCRIEREA N AHPL A SCHEMELOR LOGICE COMBINAIONALE ..................................................................... 2-15
2.4.1 Sumatorul elementar complet ................................................................................................................ 2-15
2.4.2 Sumator paralel pe 16 bii ..................................................................................................................... 2-17
2.4.3 Unitate logic combinaional pentru decodificator ............................................................................. 2-18
2.4.4 Operaiile de citire / scriere cu memoria n AHPL ................................................................................ 2-18
2.4.4.1 Operaia de scriere n memorie .......................................................................................................................... 2-19
2.4.4.2 Operaia de citire din memorie ........................................................................................................................... 2-19
2.4.4.3 Unitate logic combinaional pentru citire din memorie BUSFN .................................................................... 2-20



2-1

2. DESCRIEREA STRUCTURII SISTEMELOR NUMERICE












OBIECTIVE




Capitolul 2 este dedicat prezentrii principalelor modaliti de descriere a sistemelor numerice.
Este prezentat limbajul AHPL (A Hardware Programming Language), care va fi utilizat pentru
descrierea arhitecturii calculatorului didactic. Se exemplific modalitile de descriere a schemelor
logice combinaionale sub form de uniti logice combinaionale i a schemelor logice secveniale sub
form de module logice.


2-2

2.1 Modaliti de descriere a structurii sistemelor numerice de prelucrare a datelor

Descrierea structurii sistemelor de prelucrare a datelor se poate realiza:
fie examinnd resursele hardware i software ca entiti diferite;
fie examinnd resursele hardware i software ca entiti echivalente.
Descrierea se poate efectua la diferite grade de detaliere, care pot fi organizate ierarhic.
n cele ce urmeaz structurile numerice vor fi reprezentate sub form ierarhic pe mai multe
nivele, componentele hardware i software fiind tratate ca entiti diferite.
n cadrul fiecrui nivel, sistemul numeric este caracterizat, din punct de vedere structural,
printr-o mulime finit de componente (uniti funcionale) care posed anumite proprieti (atribute) i
o mulime de modaliti de interconectare a acestor elemente.
Fiecrui element de la un anumit nivel de descriere i corespunde pe nivelul imediat inferior un
ansamblu de componente interconectate ntr-un mod specific.
Fiecare nivel de descriere se caracterizeaz printr-un limbaj distinct, specific componentelor i
modurilor de interconectare.
Nivelurile de descriere a structurilor numerice privite sub form ierarhic snt:
Nivelul elementelor de circuit;
Nivelul proiectrii logice:
subnivelul circuitelor de comutaie (ASM);
subnivelul transferurilor ntre registre (AHPL);
Nivelul interconectrii resurselor (PMS);
Nivelul programelor:
subnivelul setului de instruciuni (ISP);
subnivelul limbajelor;
subsistemul sistemelor de operare;
subsistemul aplicaiilor;
Nivelul elementelor de circuit - corespunde nivelului inferior de descriere. La acest nivel se
opereaz cu:
componente: rezistene, condensatori, tranzistori, etc.
structura: scheme realizate cu aceste componente care au fost reprezentate grafic
sau descrise analitic prin ecuaii pe bucle i noduri.
Acest nivel nu este specific sistemelor de calcul, fiind utilizat n special n studiul circuitelor
electrice.
Nivelul proiectrii logice - corespunde descrierii la nivelul circuitelor logice. n cadrul acestui
nivel distingem :
a) - subnivelul circuitelor de comutaie, care se refer la circuitele combinaionale i la cele,
secveniale:
componente: circuite logice elementare : I, SAU, NU, DCD, MULTIPLEXOARE,
BISTABILI, REGISTRE, etc.
structura: scheme logice sau sisteme de ecuaii logice, diagrame Karnaugh sau ASM
(limbaj de descriere a mainilor algoritmice de stare)
b) - subnivelul transferurilor ntre registre, care descrie comportarea sistemului la nivelul
unitii de execuie i a unitii de comand.
n cadrul descrierii unitii de execuie se opereaz cu:


2-3
componente: uniti logice combinaionale, registre, memorii;
structura: interconectarea componentelor prin instruciuni de conexiune specifice
n cadrul descrierii unitii de comand se opereaz cu:
componente: algoritmi de comand, microsecveniator;
structura: descrierea pailor de comand prin instruciuni de transfer specifice,
microinstruciuni i microprogram.
Nivelul interconectarii resurselor - corespunde descrierii sistemelor de calcul la nivelul
subansamblelor. Se opereaz cu:
componente : P,M,S,L,P I/E,K,D,T.
structura : calculatoare numerice, sisteme multiprocesor, reele de calculatoare.
Acest nivel scoate n eviden interconectarea componentelor i atributele intrinseci ale acestora.
Nivelul programelor - corespunde descrierii resurselor software ale sistemelor de calcul
Distingem patru subnivele:
subnivelul setului de instruciuni - opereaz cu:
componente: formatul instruciunii, moduri de adresare, registre;
structura: descrie modul logic de interpretare a setului de instruciuni. Se
utilizeaz limbajul de descriere ISP.
subnivelul limbajelor : descrie componentele limbajelor de programare;
subnivelul sistemelor de operare: descrie resursele hardware i sotfware;
subnivelul aplicaiilor: descrie caracteristicile programelor de aplicaie
pentru diverse domenii de activitate.
2.2 Limbajul de descriere a structurilor numerice AHPL
K. Iverson a propus limbajul APL (A Programming Language) care ndeplinete n mare
msur cerinele descrierii arhitecturii sistemelor numerice i ntr-o oarecare msur, i cerinele de
descriere a unitii de execuie. Pornind de la un subset APL i completndu-l cu o serie de faciliti
specifice reprezentrii operaiilor la nivelul unitii de comand a unui subansamblu numeric, s-a
dezvoltat un limbaj de descriere denumit AHPL (A Hardware Programming Language). Operaiile
reprezentate de AHPL au un echivalent direct n implementarea fizic. Totui, n scopul unei descrieri
mai clare, se utilizeaz i cteva convenii din APL care nu au echivalent direct la nivelul resurselor
fizice, fiind incluse i acestea n AHPL.
2.3 Descrierea sistemelor numerice n AHPL
n AHPL un sistem numeric este descris cu ajutorul procedurilor i funciilor.
Procedurile descriu module ce conin elemente de memorie i secvene de control.
Funciile descriu uniti ce conin elemente combinaionale.
Structura unei proceduri este urmtoarea:
MODULE: < nume modul >
< declaraii >
< secvena de control >
END SEQUENCE
< conexiuni >
< transferuri >
END
unde :
< nume modul > - specific numele modulului ce urmeaz s fie descris n AHPL


2-4
< declaraiile > - specific elementele modulului la nivel de memorie, intrri, ieiri,
conexiuni cu exteriorul.
< secvena de control > - specific aciunile ce se desfoar la diverse momente de timp,
asociate pailor AHPL.
END SEQUENCE - specific terminarea secvenei de control.
< conexiuni> - specific conexiuni i transferuri ce nu sunt asociate unui
< transferuri > moment de timp (ele au loc tot timpul).
END - specific sfritul descrierii modulului.

Structura unei funcii este urmtoarea:

Declaraiile din cadrul modulului ajut la specificarea elementelor din care este constituit acesta.
Limbajul AHPL recunoate urmtoarele declaraii:
MEMORY: <lista de variabile>
- specific prin lista de variabile asociat toate elementele de memorie
(bistabili, registre, memorii) utilizate n modulul respectiv.
INPUTS: <lista de variabile>
- specific prin lista de variabile asociat toate semnalele de intrare n modulul
respectiv.
OUTPUTS: <lista de variabile>
- specific prin lista de variabile asociat, semnalele de ieire din modul.
BUSES: <lista de variabile >
- specific prin lista de variabile asociat magistralele din cadrul modulului.
COMBUSES: <lista de variabile>
- specific prin lista de variabile asociat magistralele (bidirecionale) de
comunicaie cu exteriorul.
ONE SHOTS: <lista de variabile> specific prin lista de variabile asociat toate elementele de
tip monostabil din cadrul modulului.
n cadrul procedurilor ce descriu un modul se pot utiliza ieirile unitilor logice
combinaionale specificate prin funcii.

2.3.1 Tipuri de operanzi n AHPL

Operanzii reprezint variabile ce pot lua diverse valori numerice sau alfanumerice i sunt
asociai unor operatori ce aparin limbajului.
Variabilele reprezint nume prin care se pot face referiri simbolice la operanzi sau alte entiti
ale limbajului.

Operanzii cu care opereaz AHPL sunt de trei tipuri:
- Scalari, reprezentai prin litere mici: x,y,z;
- Vectori, reprezentai prin litere mari: X,Y,Z;
- Matrice, reprezentate prin litere mari aldine: X,Y,Z;
UNIT: <nume funcie> (lista de parametri)
<declaraii>
<conexiuni>
END


2-5

Prin scalari se reprezint variabile independente, fr s li se asocieze o structur oarecare.
Exemplu: bistabili individuali din unitatea de comand sau execuie.
Vectorul este un ansamblu de operanzi scalari structurai sub forma unui tablou unidirecional.
Numrul de componente ale unui vector formeaz dimensiunea acestuia i poate fi determinata cu
operatorul dimensiune <nume_vector >.
Registrele unui calculator sunt reprezentate prin vectori.
De exemplu un registru RA de 16 bii are dimensiunea RA=16, iar componentele sale se noteaz:
RA = ( RA
0
, RA
1
,...,RA
RA-1
),
unde prin RA
i
se specific bitul din poziia i a registrului RA.
Matricea este un ansamblu de operanzi structurai ntr-un tablou bidimensional. Matricea are
deci dou dimensiuni i n mod corespunztor exist doi operanzi dimensiune 1 i 2.
2M =numrul de coloane ;
1M =numrul de linii.
Astfel o matrice M de dimensiunea (1M, 2M) se prezint astfel:

M
0 0
2M 1
0
1 1
2M 1
1
1M 1M
2M
1M
M M M
M M M
M M M
=

(
(
(
(
(
(

0 1
0 1
0
1
1
1
1
1


Vectorul
( )
0 1
i i
2M 1
i
M M M
L

reprezint linia i, iar
Vectorul
( )
j
0
j
1
j
1M 1
M M M
L

reprezint coloana j a matricei M.
Prin matrice se reprezint ansamble de registre grupate pentru diferite operaii sau module de
memorie. Astfel un modul de memorie de 4 K cuvinte de 16 bii poate fi reprezentat ca o matrice M cu
1M=4096 i 2M=16.

i
M
reprezint cuvntul i din memorie,
iar
j
i
M
reprezint bitul j din cuvntul i.
Selecia unui subvector sau submatrici se face foarte simplu, n mod explicit astfel:
A
i:j
reprezint vectorul format cu elementele de la i pn la j ale vectorului A.
M
i:j
reprezint matricea format cu liniile de la i pn la j ale matricii M, i reprezint n
general o zon de memorie.
2.3.2 Tipuri de operatori
Prin operatori se specific prelucrrile ce se aplic asupra operanzilor. n funcie de numrul
operanzilor, operatorii pot fi unari sau binari iar n funcie de tipul operanzilor, operatorii pot fi
primitivi, dac se aplic asupra unor variabile scalare sau operatori micti, dac se aplic asupra unor
combinaii de variabile de tip scalar, vectorial sau matriceal.
2.3.2.1 Operatori AHPL
Operatorii de care dispune limbajul AHPL sunt:
- operatori logici:


2-6
, , sau . , + , care realizeaz funciile logice I, SAU, NU ntre operanzii specificai.
Exemple:
Fie: A = ( A
0
, A
1
, ... , A
n
)
B = ( B
0
, B
1
, ... , B
n
)
doi vectori i a , b doi scalari
a b;
A + B = ( A
0
+B
0
, A
1
+B
1
, ..., A
n
+B
n
)
- operatori de reducere:
/ ; /; +/ realizeaz funcia logic specificat ntre componentele vectorului asupra cruia acioneaz.
Rezultatul este un scalar.
Exemple:
/A = A
0
A
1
A
2
... A
n

- operatori de sincronizare
SYN <nume_semnal_asincron>
SL <nume_semnal>
Operatorul SYN sincronizeaz semnalul specificat ca parametru (nume_semnal_asincron) , cu
semnalul de ceas al sistemului.
Operatorul SL genereaz un semnal de o durat egal cu perioada semnalului de ceas indiferent de
durata semnalului specificat ca parametru (nume_semnal).
Exemplu:
SL(SYN(starta)) genereaz un semnal sincron cu semnalul de ceas i de o durat egal cu
perioada semnalului de ceas, indiferent de durata semnalului starta.
- operatori de selecie:
j ; i:j selecteaz bii dintr-un registru sau zone de memorie.
Exemple:
A
j
- selecteaz bitul j din registrul A
A
i:j
=(A
i
, A
i+1
, ..., A
j
) - selecteaz grupul de bii ai registrului A ntre poziiile i i j
M
i:j
- selecteaz zona de memorie cuprins ntre adresele i i j
- operator de selecie prin comprimare
X/Y elimin componentele din Y corespunztoare componentelor egale cu 0 din X
Exemplu:
Fie A = (0, 1, 1, 0, 1, 0, 0, 1 )
B = (B
0
, B
1
, B
2
, B
3
, B
4
, B
5
, B
6
, B
7
)
A / B = (B
1
, B
2
, B
4
, B
7
)

- operator de selecie prin comprimare i reducere:
M*F realizeaz eliminarea liniilor din matricea M corespunztoare componentelor egale cu 0 din
vectorul F
Exemplu:
Fie

M
0
1
2
M
M
M
=

(
(
(
(
i F=[0,0,1]



2-7
rezult:
M*F selecteaz linia 2, adic M
2


- operatori de concatenare
, concatenare pe linii
! concatenare pe coloane
Exemplu:
Fie a i b doi scalari, A i B doi vectori iar M o matrice
A=a,b reprezint un vector care are ca i componente pe a i b
M=A!B reprezint o matrice care are ca linii componetele A i B
De notat faptul c dac vectorii concatenai pe coloane nu au aceeai dimensiune se face
aliniere la dreapta.
- operator de codificare
n T m; realizeaz codificarea binar a valorii reprezentat de numrul m ntr-un vector care are n
componente binare. Rezultatul codificrii este un vector.
Exermplu:
4 T 5 genereaz vectorul (0,1,0,1)
8 T 7 genereaz vectorul (0,0,0,0,0,1,1,1)
- operatori de decodificare
sau DCD; realizeaz funcia invers a codificrii adic interpreteaz componentele vectorului
cruia i se aplic ca cifre binare i genereaz o valoare numeric. n general aceast valoare
reprezint o adres.
Exemplu:
(0,1,0,1) genereaz valoarea 5
DCD (0,0,0,0,0,1,0,1) genereaz valoarea 5
- operator de atribuire
a) de conexiune = ,realizeaz conectarea resurselor specificate
b) de transfer ,realizeaz transferul informaiei de la surs la destinaie. Resursa
destinaie trebuie s fie element cu posibilitate de memorare.
Exemplu:
a = b conecteaz semnalul b la semnalul a
Z = A conecteaz registrul A la ieirile Z ale unui modul
BA coninutul registrului A se transfer n registrul B
- operator de dimensionare
, aplicat unui vector, genereaz numrul de componente ale acestuia (lungimea vectorului).
Fie A= ( A
0
, A
1
, ..., A
n
) atunci A genereaz valoarea n+1
- operatori relaionali
x R y, unde: R { < ; ; = ; ; > ; } stabilete relaia ntre cei doi operanzi i genereaz valoarea
adevrat (1 logic) dac relaia este ndeplinit, i genereaz valoarea fals (0 logic) n caz contrar. n
general relaia R este implementat cu ajutorul funciilor, prin uniti logice combinaionale.
2.3.3 Instruciuni AHPL
Secvena de control a unei uniti de comand se specific cu ajutorul pailor AHPL.
n continuare se vor prezenta att modul n care se specific diferite aciuni n limbajul AHPL
ct i implementarea acestora la nivelul resurselor fizice.


2-8
Un pas AHPL specific toate aciunile ce au loc n perioada de timp n care secvena de
control se gsete n starea respectiv. Durata unui pas AHPL este egal cu perioada semnalului de
ceas (de tact).
Un pas AHPL poate deci specifica mai multe instruciuni care au loc n acelai moment de
timp. Instruciunile AHPL sunt separate prin caracterul (;).
Un pas AHPL poate fi prezentat n mai multe linii surs ce specific instruciuni sau
comentarii. Fiecare pas AHPL specific att aciunile ce au loc n pasul respectiv ct i adresa
urmtoarei instruciuni din secvena de control.
Pasul AHPL urmtor poate fi specificat n mod explicit prin instruciune de salt sau n mod
implicit ca fiind urmtorul n textul programului.
Fiecare instruciune poate conine comentarii formate din iruri de caractere ncadrate de
delimitatori: /* comentariu */.
Instruciunie AHPL pot fi mprite n dou mari categorii:
- instruciuni de atribuire;
- instruciuni de salt.
Sfritul secvenei de pai AHPL este marcat cu declaraia END SEQUENCE., iar sfritul
unui program AHPL este marcat cu declaraia END.
2.3.3.1 Instruciuni de atribuire
Formatul unei instruciuni de atribuire este:

<destinaie> <operator_de_atribuire> <expresie>

Valoarea obinut prin evaluarea expresiei este atribuit variabilei destinaie. Dac vectorii
destinaie i surs nu au aceeai dimensiune, se face alinierea dreapta.
Expresiile pot fi formate utiliznd:
operatori logici: ( ; ;
-
);
operatori de sincronizare: (SL ; SYN (semnal_asincron));
operatori de selecie: (A
j
; A
m:n
; M
j
; M
m:n
);
operator de selecie prin comprimare: ( X / Y );
operator de selecie prin comprimare i reducere: (M * F);
operatori de concatenare: (A,B ; A!B);
operator de codificare: ( n T p);
operatori de decodificare: (
X
; DCD );
operatori relaionali.
Pentru scrierea expresiilor trebuie s se in seama de urmtoarele:
indicii superiori i inferiori trebuie specificai prin valori constante (nu se admit
expresii de indici);
expresiile (sau subexpresiile) din paranteze se evalueaz cu prioritate;
pentru a evita proliferarea parantezelor se vor avea n vedere prioritile operatorilor
astfel:
1. Negaie i SYN -prioritatea cea mai mare;
2. Operatori de selectie;
3. I logic;
4. SAU i SAU EXCLUSIV;
5. Concatenare


2-9

Ca operanzi pentru scrierea expresiilor se pot utiliza:
- intrri provenite din alte module;
- funcii logice combinaionale;
- elemente de memorie (vectori, matrice);
- magistrale de date sau comenzi;
- constante binare.
Instruciunile de atribuire sunt mprite n dou categorii n funcie de operatorul care se
folosete:
- instruciuni de conexiune (operatorul de conexiune = );
- instruciuni de transfer (operatorul de transfer ).
Prin operaiile de conexiune valoarea expresiei se atribuie variabilei doar pe durata pasului
AHPL n care este specificat conexiunea respectiv. Deci aciunea are un caracter temporar.
Prin operaiile de transfer, valoarea expresiei se atribuie variabilei din partea stnga, cnd
secvena de control a ajuns n pasul AHPL respectiv, i este memorat n variabila destinaie care
pstreaz aceasta valoare pn la o nou atribuire. Aciunea are un caracter permanent specific
funcionrii circuitelor secveniale.

1. Instruciuni de conexiune

Dac se noteaz cu:
MAG - o magistral predeclarat
Z - un vector de ieire;
VLCO - un vector de funcii logice combinaionale de ieire;
MLCO - o matrice de vectori logici combinaionali VLCO;
F - un vector de constante binare sau funcii logice
instruciunile de conexiune pot fi specificate prin una din urmtoarele forme:
Z = VLCO
MAG = VLCO
Z = MLCO*F
MAG = MLCO*F
n primele dou instruciuni are loc o conexiune necondiionat a ieirilor VLCO la intrrile Z
sau MAG.
Fiecare component a vectorului VLCO poate fi o funcie logic combinaional a crei ieire
va fi conectat la intrarea corespunztoare a vectorului destinaie.
Ultimele dou instruciuni specific o conexiune condiionat n sensul c, prin F se specific
linia din matricea de vectori de funcii logice MLCO, care se va conecta la Z sau MAG. Operaia
MLCO*F este echivalent cu operaiile de comprimare i reducere.
Astfel dac: F=(f,g,h) iar MLCO = (A!B!C),
operaia MLCO*F este echivalent cu
(A f) (B g) (C h)
ceea ce poate fi scris i sub forma:
(A
0
f,A
1
f,..,A
n
f) (B
0
g,B
1
g,..,B
n
g) (C
0
h,C
1
h,..,C
n
h)
n general astfel de expresii se utilizeaz pentru specificarea operaiilor de multiplexare (cnd
+/F=1), dar se poate ca i (+/F > 1) s fie util n diferite situaii.
Pentru exemplificare se considera pasul AHPL urmtor:
10.BUS=(A!B) * (f
1
,f
2
)


2-10
unde A=(A
0
,A
1
) i B= (B
0
, B
1
)

Implementarea fizic a acestui pas este prezentat n Fig. 2.1. Se vede c operaia de conexiune are loc
numai dac bistabilul 10 este n 1, deci controlul este la pasul AHPL 10.
Pas 10.
D Q
_
> CLK Q
CL
f2
f1
Clock
_____
Reset
B1 B0 A1
Bus
A0

Fig.2.1 Conexiune selectiva

2. Instruciuni de transfer
Variabila destinaie este un bistabil sau un vector ce are ca echivalent un registru sau un cuvnt
de memorie. nscrierea valorii expresiei n operandul destinaie se face sincronizat cu un semnal de
tact. Acest semnal de tact poate fi specificat explicit printr-o conexiune sau implicit ca fiind tactul
unitii de comand.
Forma general a unei instruciuni de transfer este:
VD VLCO
VD MLCO*F
MD*FVLCO
unde: VD este un vector destinaie iar
MD este o matrice destinaie
Prima instruciune specific un transfer necondiionat.
Cea de a doua form poate fi descompus n urmtoarele operaii elementare: conexiune la
intrrile vectorului destinaie a vectorului rezultat prin evaluarea expresiei i apoi nscrierea acestuia n
VD.
Cea de a treia form este echivalent cu: valoarea lui VLCO se transfer n toate liniile
matricei rezultate prin comprimarea i reducerea cu vectorul de selecie F.
Exemplu:
Fie MLCO = (A!B!C)
F = (f,g,h)
VD = D
Instruciunea:
D(A!B!C)*(f,g,h) se va implementa astfel:
D(A f) (B g) (C h).
Instruciunea:


2-11
(A!B!C)*(f,g,h) D se va implementa astfel:
(A!B!C) (((D!A)*(f,))!((D!B)*(g,))!((D!C)*(h,)))
sau
dac f=1 AD altfel A rmne neschimbat
dac g=1 BD altfel B rmne neschimbat
dac h=1 CD altfel C rmne neschimbat
Diferena dintre cele dou implementri este urmtoarea:
n primul caz transferul se execut ntotdeauna, datele de intrare fiind selectate n mod
corespunztor. n al doilea caz funciile de transfer condiioneaz intrarea de tact i deci transferul are
loc numai dac se ndeplinete condiia.
Exemplu:
10. A*fB se va implementa astfel:
Instruciunea de mai sus se va implementa ca n Fig 2.2.a. cnd transferul este condiionat pe
intrri, i ca n Fig. 2.2.b, cnd transferul este condiionat pe tact.
A1 Y1
A2 Y2
A3 Y3
A4 Y4
B1
B2
B3
B4
_
A/B
G
MUX 2:1
f
Clock
_____
Reset
A1
A0
PR
D Q
_
> CLK Q
CL
PR
D Q
_
> CLK Q
CL
PR
D Q
_
> CLK Q
CL
B0
B1

Fig.2.2a Transfer condiionat pe intrri
Clock
_____
Reset
A1
B0
A0
B1
PR
D Q
_
> CLK Q
CL
PR
D Q
_
> CLK Q
CL
PR
D Q
_
> CLK Q
CL
f

Fig.2.2b Transfer condiionat pe tact
3. Specificarea semnalului de tact


2-12
Se observ c n ambele implementri tactul propriu-zis este dat de trecerea n 1 a bistabilului
10 care marcheaz execuia programului la acest pas (trecere care este sincron cu semnalul se tact al
modulului).
Uneori este necesar ca transferul (condiionat sau necondiionat) s se execute sincronizat cu
unul din fronturile semnalului de tact (clock) sau cu un tact extern ceea ce permite transferuri
asincrone n raport cu semnalul de ceas al modulului.
Acesta se poate realiza prin specificarea, la pasul respectiv, a unei conexiuni de tipul:
CK = semnal_de_tact
cnd toate resursele din pasul AHPL respectiv vor fi comandate de un semnal de tact extern, sau
CK [nume_resurs_] = semnal_de_tact
pentru a evidenia c numai intrrile de tact ale resursei specificate sunt conectate la "semnal_de_tact".
Astfel considernd c toi bistabilii i registrele comut pe front cresctor se consider
urmtoarele exemple:
15. AB /* transferul are loc pe frontul cresctor al semnalului de tact al modulului
(CLOCK) */
16. CK[A] = TACT;
AB /* transferul are loc pe frontul cresctor al unui tact extern (TACT) */
_______
17. CK[A] = CLOCK ; CK[C]=TACT
________
AB; /* transferul are loc pe frontul cresctor al semnalului CLOCK */
CB; /* transferul are loc pe frontul cresctor al semnalului TACT */
DB; /* transferul are loc pe frontul cresctor al semnalului CLOCK */
______
18. CK = CLOCK;
AB;18
CB;
DB; /* toate transferurile, la acest pas, sunt efectuate pe frontul cresctor al lui
CLOCK*/
n toate aceste cazuri intrarea de tact va fi condiionat de valoarea expresiei din instruciunea
CK = expresie
Astfel instruciunea:
15. CK[A] = ;
AB
Se va implementa ca n Fig. 2.3.


2-13
Clock
_____
Reset
A1
B0
A0
B1
PR
D Q
_
> ClLK Q
CL
PR
D Q
_
> ClLK Q
CL
PR
D Q
_
> ClLK Q
CL

Fig.2.3. Transfer pe frontul cztor al tactului

4. Transferuri i conexiuni dup END SEQUENCE

Transferurile i conexiunile specificate n secvena de control sunt aciuni care au loc la pasul
respectiv, cnd execuia secvenei de comand ajunge n acel punct.
Exist situaii n care este necesar o conexiune cu caracter permanent, nu numai pe o perioad
a semnalului de tact. De asemenea, n anumite situaii este necesar ca un transfer s se execute la
fiecare perioad de tact. Astfel de transferuri i conexiuni se specific dup declaraia END
SEQUENCE i bineneles, nainte de END.
Exemplu:
Conexiunea Z = (A!B)*(f
1
,f
2
)
unde A=(A
0
,A
1
) i B=(B
0
,B
1
) specificat dup END SEQUENCE se va implementa ca n Fig. 2.4.
Se observ c nu apare condiionarea cu vreun pas AHPL, conexiunea are loc tot timpul
indiferent de punctul n care se gsete execuia secvenei de control.
A1
Z1
f1
f2
B0
A0
Z0
B1

Fig. 2.4. Conexiune dup END SEQUENCE


2-14
Clock
A1
B0
A0
B1
PR
D Q
_
> CLK Q
CL
PR
D Q
_
> CLK Q
CL
PR
D Q
_
> CLK Q
CL
PR
D Q
_
> CLK Q
CL

Fig. 2.5. Transfer dupa END SEQUENCE

Transferul AB specificat dup END SEQUENCE se va implementa ca n Fig. 2.5.
Se vede c registrul A "urmrete" registrul B.
Dac A i B sunt n module diferite, cu semnele de tact diferite, se realizeaz un transfer
sincron cu tactul modulului destinaie.
2.3.3.2 Instruciuni de salt
Cu ajutorul instruciunilor de salt se pot implementa structuri de control de tip: ramificaii n
program, cicluri, secvene paralele.
Formatul instruciunilor de salt este:
1. (S
i
) Salt necondiionat
2. (F)/(S) Salt condiionat, unde F = S
3. (S) Salt multiplu (necondiionat), S > 1
unde:
S
i
este un numr reprezentnd pasul AHPL cu care se va continua secvena de control, i
trebuie specificat printr-o constant.
F este un vector de funcii logice reprezentnd condiiile de test.
S este un vector de constante reprezentnd numerele de pai AHPL la care se poate continua
secvena, funcie de valoarea vectorului F.
Pentru saltul condiionat se evalueaz expresiile pentru F i prin comprimarea lui S cu F, se
obin numerele pailor AHPL cu care se continua execuia.
Exist urmtoarele cazuri:
((F)/(S)) = 0 Se continu cu pasul urmtor.
((F)/(S)) = 1 Se execut ca i saltul necondiionat.
((F)/(S)) > 1 Se iniiaz o secven paralel ncepnd cu paii AHPL selectai.
Saltul prezentat la cazul 3 reprezint un salt multiplu necondiionat, ce iniiaz deci o secven
paralel.
n secvenele de comand care nu au o structur ciclic sau n cazul secvenelor paralele se
poate specifica terminarea execuiei unei secvene prin instruciunea: DEAD END ,care va trece
unitatea de comand ntr-o stare terminal. n aceast stare nu se mai execut nici o aciune dintre cele
specificate n secvena de comand pn la o nou iniializare. DEAD END poate apare oriunde n
secvena de comand.
Pentru a facilita scrierea programelor n care au loc mai multe aciuni n aceai perioad de
tact, limbajul AHPL permite specificarea execuiei mai multor pai AHPL n aceai perioad de timp.


2-15
Astfel dac la un pas AHPL se specific declaraia: NO DELAY, toate aciunile din acest pas se
desfoar n perioada de tact corespunztoare pasului precedent din care provine (ultimul care nu
conine declaraia NO DELAY).
Dac fiecare pas AHPL dintr-o secven de comand conine declaraia NO DELAY, iar n
cazul secvenei se specific numai conexiuni se obine o schem logic combinaional. O astfel de
secven se poate scrie i dup END SEQUENCE.
2.4 Descrierea n AHPL a schemelor logice combinaionale
Pentru a facilita scrierea secvenelor de descriere a circuitelor logice combinaionale oferind i
o flexibilitate de utilizare a acestora n diferite module, limbajul AHPL permite descrierea separat ca
module de program distincte sub forma:
UNIT: nume_funcie <lista de parametri>
<declaraii>
<conexiuni>
END
Dac o schem combinaional apare (este apelat) de mai multe ori cu aceeai parametri
efectivi ea va fi generat fizic o singur dat cu condiia s nu se depeasc fan-out-ul ieirilor.
Dac ns este apelat de mai multe ori, cu parametri diferii se poate proceda n dou moduri:
- se implementeaz cte o copie a schemei pentru fiecare apelare;
- se implementeaz schema o singur dat dar se prevede schema de selecie a parametrilor de
intrare corespunztori fiecrei apelri.
Alegerea uneia dintre modaliti se face prin analiza complexitii funciei combinaionale i a
logicii de selecie a parametrilor.
Apelul unei uniti logice combinaionale se face prin:
nume_funcie(lista_de_parametri_efectivi).

Deci n expresii AHPL pot s apar nume de uniti logice combinaionale definite.
n continuare se vor prezenta cteva uniti logice combinaionale foarte utilizate n structurile
numerice.
2.4.1 Sumatorul elementar complet
Sumatorul elementar complet realizeaz operaia de adunare a unor operanzi de lungime un bit,
innd seama de transportul de intrare i genereaz pe lng sum i eventualul transport.
n Fig.2.6 se prezint schema bloc a unui sumator elementar complet. Intrrile sunt cei doi
operanzi i transportul din exterior iar ieirile sunt suma i transportul spre exterior.



2-16
SUMEC
sum
t
out
t
in
y x
0
1
SUMEC
SUMEC
0
0

Fig. 2.6. Sumator elementar complet

Tabela de adevr, diagramele Karnaugh i ecuaiile logice sunt prezentate n continuare.
Ecuaiile logice rezultate sunt :
sum = x y t
in

t
out
= ((x y) t
in
) (x y)
Aceste expresii logice pot fi descrise n AHPL astfel:

UNIT: SUMEC (x;y;t
in
)
INPUTS: (x;y;t
in
)
OUTPUTS: SUMEC [2;1]
1. a = x y
2. b = x y
3. sum = a t
in

4. c = a t
in

5. t
out
= b c
6. SUMEC
0
0
= sum
7. SUMEC
0
1
= t
out

END
Implementarea unitii logice combinaionale a sumatorului elementar complet este prezentat
n Fig. 2.7.
SUMEC
y
t
in
t
out
x
sum
0
1
SUMEC
0
0
SUMEC

Fig. 2.7. Schema sumator elementar complet
Tabela de adevr:
x y t
in
suma t
out

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


2-17
2.4.2 Sumator paralel pe 16 bii
Pentru a descrie un sumator paralel pe 16 bii se va considera un vector de funcii SUMEC
obinndu-se astfel o matrice cu 2 linii reprezentnd suma i transportul pe fiecare rang.
Operanzii sumatorului paralel sunt:
X = ( X
0
, X
1
,..., X
15
)
Y = ( Y
0
, Y
1
,..., Y
15
)
Suma i transportul din rangul cel mai semnificativ vor fi:
ADD = (ADD
0
, ADD
1
,...,ADD
16
)
Descrierea AHPL a sumatorului pe 16 bii este:
UNIT: ADD (X; Y; t
16
)
INPUTS: X[16]; Y[16];t
16

OUTPUTS: ADD [17]
1. T = SUMEC
1
0:15
( X; Y; T
1:15
,t
16
)
2. S = SUMEC
0
0:15
( X; Y; T
1:15
,t
16
)
3. ADD = T
0
,S
0:15

END
Implementarea sumatorului paralel este dat n Fig. 2.8.
SUMEC
ADD2 ADD1 ADD0 ADD15 ADD16
S
15
S
1
S
0
T2 T1 T0
Y0 X0
0
1
SUMEC
0
0
SUMEC
SUMEC
Y1 X1
SUMEC
T16
T15 T14
Y14 X14
SUMEC
Y15 X15

Fig. 2.8. Sumator paralel pe 16 bii
Pentru efectuarea unor operaii aritmetice ca: adunare, scdere, complementare, sumatorul
paralel proiectat se poate utiliza ntr-o schem ca i cea din Fig 2.9.

DM AC
Y X
T
16
t
t
ADD

Fig. 2.9. Utilizarea sumatorului paralel



2-18
Cu schema din Fig.2.9 se pot efectua urmtoarele operaii:

2.4.3 Unitate logic combinaional pentru decodificator
Un decodificator primete la intrare un vector binar oarecare de n bii i genereaz la ieire un
vector de 2
n
bii astfel c un singur bit are valoarea 1, ceilali avnd valoarea 0.
Schema bloc a unui decodificator de la n la 2
n
este artat n Fig. 2.10.

DCD
DCD(A)
n 2
n
A

Fig. 2.10. Decodificator cu n intrri i 2
n
ieiri
Bitul i din cei 2
n
bii de ieire va fi:


=
i = A dac 1
i A dac 0
DCDi

Unitatea ce descrie un decodificator paralel va fi descris astfel:
UNIT: DCD (A)
INPUTS:A[n]
OUTPUTS:DCD[m] /* unde m = 2
n
*/
1. ( )
A A A A A 1 n 2 1 0
,...., , ,

=
2. ( ) ( ) ( ) ( ) ( )
i DE
/ nTi / A , nTi / A =
3. DCD = DE
0:m-1

END
2.4.4 Operaiile de citire / scriere cu memoria n AHPL
Se consider o memorie M [2
n
,m] i un vector de selecie F cu F = 2
n
componente astfel ca
+/F=1 (o singur component este egal cu 1).
Presupunem c datele se citesc i se scriu n memorie printr-un registru de date DM[m].
Schema general pentru acces la memorie este prezentat n Fig. 2.11.
/ * DM AC AC * / DM;0), ADD(AC; AC t, +
/ * DM AC AC * / ;1), DM ADD(AC; AC t,
/ * A DM AC * / DM;1), ; AC ADD( AC t, C


2-19
M
2
n
xm
F
m-1 0
1
0
2
n
-1
DM
M
2
n
xm
D
C
D
AM
m-1 0
1
0
n-1
DM

Fig. 2.11 Accesul la memorie
2.4.4.1 Operaia de scriere n memorie

Scrierea datelor din DM n M se va face cu instruciunea:
M*F DM

n schema din Fig. 2.12 vectorul de selectie F a fost nlocuit cu o schem logic
combinaional care primete la intrare un vector de n bii, registrul de adrese AM, i genereaz un
vector decodificat de 2
n
bii care are o singur component egal cu 1 n orice moment. Aceast
schem logic este realizat de DCD (AM).
Instruciunea de scriere n memorie va fi deci:

M*DCD(AM) DM
2.4.4.2 Operaia de citire din memorie

Pentru citire din memorie se va utiliza o funcie special denumit BUSFN, care are ca
parametri memoria i adresa de la care se dorete citirea.
Formatul instruciunii de citire din memorie este:

DMBUSFN ((M;DCD(AM))

M BUSFN DCD AM
BUSFN 1 - m : 0
M
1 - n : 0
1 - m : 0
0:n-1
F


Fig.2.12 Citirea din memorie


2-20
2.4.4.3 Unitate logic combinaional pentru citire din memorie BUSFN

Operaia de citire din memorie const n selectarea celulei de memorie a crei adresa este
specificat de liniile de adres. Prin utilizarea unui vector F, asociat funciei logice de decodificare a
adresei DCD (AM), se poate scrie o unitate logic combinaional ce realizeaz selectarea celulei de
memorie specificat.
Fie o memorie M ce are capacitatea 1M = n i 2M = m, n cuvinte de memorie a m bii fiecare, i un
vector F asociat decodificatorului de adres : F
0:n-1
=DCD (AM) cu proprietatea c +/F=1.
Funcia de citire din memorie BUSFN se poate descrie astfel:
UNIT: BUSFN (M;F)
INPUTS: M [n;m]; F[n]
OUTPUTS: BUSFN [m]
1.NIVS
0:n-1
= M
0:n-1
F
0:n-1
/* NIVS=MF */
2.NIV
0:n-1
= NIVS
0
! ( NIVS
1:n-1
NIV
0:n-2
)
3.BUSFN=NIV
n-1

END

Exemplu:
Fie o memorie de 4 cuvinte a 8 bii. Unitatea logic combinaional ce asigur citirea din
aceast memorie are urmtoarea descriere:
UNIT BUSFN (M,F)
INPUTS: M [4,8], F [4]
OUTPUTS: BUSFN [8]
1. NIVS = M F
2. NIV = NIVS
0
! ( NIVS
1:3
NIV
0:2
)
3. BUSFN=NIV
3

END
Implementarea unitii logice combinaionale este prezentat n Fig 2.13.



2-21
F
0
M
0
NIV
0
NIVS
0
NIVS
1
F
1
M
1
NIV
1
NIVS
2
F
2
M
2
BUSFN(M;F)
NIV
3
NIV
2
NIVS
3
F
3
M
3

Fig. 2.13 Implementarea unitii BUSFN


2-0