Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AstronomieBiofizicaBiologieBotanicaCartiChimieCopii
Educatie civicaFabule ghicitoriFizicaGramaticaJocLiteratura romanaLogica
MatematicaPoeziiPsihologie psihiatrieSociologie


Structurile sistemelor numerice

Matematica



+ Font mai mare | - Font mai mic



CUPRINS

DESCRIEREA STRUCTURII SISTEMELOR NUMERICE



Modalitati de descriere a structurii sistemelor numerice de prelucrare a datelor

Limbajul de descriere a structurilor numerice AHPL

Descrierea sistemelor numerice in AHPL

Tipuri de operanzi in AHPL

Tipuri de operatori

Operatori AHPL

Instructiuni AHPL

Instructiuni de atribuire

Instructiuni de salt

Descrierea in AHPL a schemelor logice combinationale

Sumatorul elementar complet

Sumator paralel pe 16 biti

Unitate logica combinationala pentru decodificator

Operatiile de citire / scriere cu memoria in AHPL

Operatia de scriere in memorie

Operatia de citire din memorie

Unitate logica combinationala pentru citire din memorie BUSFN

DESCRIEREA STRUCTURII SISTEMELOR NUMERICE

OBIECTIVE

Capitolul 2 este dedicat prezentarii principalelor modalitati de descriere a sistemelor numerice. Este prezentat limbajul AHPL (A Hardware Programming Language), care va fi utilizat pentru descrierea arhitecturii calculatorului didactic. Se exemplifica modalitatile de descriere a schemelor logice combinationale sub forma de unitati logice combinationale si a schemelor logice secventiale sub forma de module logice.

Modalitati de descriere a structurii sistemelor numerice de prelucrare a datelor

Descrierea structurii sistemelor de prelucrare a datelor se poate realiza:

fie examinand resursele hardware si software ca entitati diferite;

fie examinand resursele hardware si software ca entitati echivalente.

Descrierea se poate efectua la diferite grade de detaliere, care pot fi organizate ierarhic.

In cele ce urmeaza structurile numerice vor fi reprezentate sub forma ierarhica pe mai multe nivele, componentele hardware si software fiind tratate ca entitati diferite.

In cadrul fiecarui nivel, sistemul numeric este caracterizat, din punct de vedere structural, printr‑o multime finita de componente (unitati functionale) care poseda anumite proprietati (atribute) si o multime de modalitati de interconectare a acestor elemente.

Fiecarui element de la un anumit nivel de descriere ii corespunde pe nivelul imediat inferior un ansamblu de componente interconectate intr‑un mod specific.

Fiecare nivel de descriere se caracterizeaza printr‑un limbaj distinct, specific componentelor si modurilor de interconectare.

Nivelurile de descriere a structurilor numerice privite sub forma ierarhica sint:

Nivelul elementelor de circuit;

Nivelul proiectarii logice:

subnivelul circuitelor de comutatie (ASM);

subnivelul transferurilor intre registre (AHPL);

Nivelul interconectarii resurselor (PMS);

Nivelul programelor:

subnivelul setului de instructiuni (ISP);

subnivelul limbajelor;

subsistemul sistemelor de operare;

subsistemul aplicatiilor;

Nivelul elementelor de circuit ‑ corespunde nivelului inferior de descriere. La acest nivel se opereaza cu:

componente: rezistente, condensatori, tranzistori, etc.

structura: scheme realizate cu aceste componente care au fost reprezentate grafic sau descrise analitic prin ecuatii pe bucle si noduri.

Acest nivel nu este specific sistemelor de calcul, fiind utilizat in special in studiul circuitelor electrice.

Nivelul proiectarii logice ‑ corespunde descrierii la nivelul circuitelor logice. In cadrul acestui nivel distingem :

a) - subnivelul circuitelor de comutatie, care se refera la circuitele combinationale si la cele, secventiale:

componente: circuite logice elementare : SI, SAU, NU, DCD, MULTIPLEXOARE, BISTABILI, REGISTRE, etc.

structura: scheme logice sau sisteme de ecuatii logice, diagrame Karnaugh sau ASM (limbaj de descriere a masinilor algoritmice de stare)

b) ‑ subnivelul transferurilor intre registre, care descrie comportarea sistemului la nivelul unitatii de executie si a unitatii de comanda.

In cadrul descrierii unitatii de executie se opereaza cu:

componente: unitati logice combinationale, registre, memorii;

structura: interconectarea componentelor prin instructiuni de conexiune specifice

In cadrul descrierii unitatii de comanda se opereaza cu:

componente: algoritmi de comanda, microsecventiator;

structura: descrierea pasilor de comanda prin instructiuni de transfer specifice, microinstructiuni si microprogram.

Nivelul interconectarii resurselor ‑ corespunde descrierii sistemelor de calcul la nivelul subansamblelor. Se opereaza cu:

componente : P,M,S,L,P I/E,K,D,T.

structura : calculatoare numerice, sisteme multiprocesor, retele de calculatoare.

Acest nivel scoate in evidenta interconectarea componentelor si atributele intrinseci ale acestora.

Nivelul programelor ‑ corespunde descrierii resurselor software ale sistemelor de calcul

Distingem patru subnivele:

subnivelul setului de instructiuni ‑ opereaza cu:

componente: formatul instructiunii, moduri de adresare, registre;

structura: descrie modul logic de interpretare a setului de instructiuni. Se utilizeaza limbajul de descriere ISP.

subnivelul limbajelor :    descrie componentele limbajelor de programare;

subnivelul sistemelor de operare: descrie resursele hardware si sotfware;

subnivelul aplicatiilor:    descrie caracteristicile programelor de aplicatie pentru diverse domenii de activitate.

Limbajul de descriere a structurilor numerice AHPL

K. Iverson a propus limbajul APL (A Programming Language) care indeplineste in mare masura cerintele descrierii arhitecturii sistemelor numerice si intr‑o oarecare masura, si cerintele de descriere a unitatii de executie. Pornind de la un subset APL si completindu‑l cu o serie de facilitati specifice reprezentarii operatiilor la nivelul unitatii de comanda a unui subansamblu numeric, s‑a dezvoltat un limbaj de descriere denumit AHPL (A Hardware Programming Language). Operatiile reprezentate de AHPL au un echivalent direct in implementarea fizica. Totusi, in scopul unei descrieri mai clare, se utilizeaza si cateva conventii din APL care nu au echivalent direct la nivelul resurselor fizice, fiind incluse si acestea in AHPL.

Descrierea sistemelor numerice in AHPL

In AHPL un sistem numeric este descris cu ajutorul procedurilor si functiilor.

Procedurile descriu module ce contin elemente de memorie si secvente de control.

Functiile descriu unitati ce contin elemente combinationale.

Structura unei proceduri este urmatoarea:

MODULE: < nume modul >

< declaratii >

< secventa de control >

END SEQUENCE

< conexiuni >

< transferuri >

END

unde :

< nume modul >    - specifica numele modulului ce urmeaza sa fie descris in AHPL

< declaratiile > - specifica elementele modulului la nivel de memorie, intrari, iesiri, conexiuni cu exteriorul.

< secventa de control > - specifica actiunile ce se desfasoara la diverse momente de timp, asociate pasilor AHPL.

END SEQUENCE ‑ specifica terminarea secventei de control.

< conexiuni> - specifica conexiuni si transferuri ce nu sunt asociate unui

< transferuri > moment de timp (ele au loc tot timpul).

END ‑ specifica sfarsitul descrierii modulului.

Structura unei functii este urmatoarea:

UNIT: <nume functie> (lista de parametri)

<declaratii>

<conexiuni>

END

Declaratiile din cadrul modulului ajuta la specificarea elementelor din care este constituit acesta.

Limbajul AHPL recunoaste urmatoarele declaratii:

MEMORY: <lista de variabile>

‑ specifica prin lista de variabile asociata toate elementele de memorie (bistabili, registre, memorii) utilizate in modulul respectiv.

INPUTS: <lista de variabile>

‑ specifica prin lista de variabile asociata toate semnalele de intrare in modulul respectiv.

OUTPUTS: <lista de variabile>

‑ specifica prin lista de variabile asociata, semnalele de iesire din modul.

BUSES: <lista de variabile >

‑ specifica prin lista de variabile asociata magistralele din cadrul modulului.

COMBUSES: <lista de variabile>

‑ specifica prin lista de variabile asociata magistralele (bidirectionale) de comunicatie cu exteriorul.

ONE SHOTS: <lista de variabile> specifica prin lista de variabile asociata toate elementele de tip monostabil din cadrul modulului.

In cadrul procedurilor ce descriu un modul se pot utiliza iesirile unitatilor logice combinationale specificate prin functii.

Tipuri de operanzi in AHPL

Operanzii reprezinta variabile ce pot lua diverse valori numerice sau alfanumerice si sunt asociati unor operatori ce apartin limbajului.

Variabilele reprezinta nume prin care se pot face referiri simbolice la operanzi sau alte entitati ale limbajului.

Operanzii cu care opereaza AHPL sunt de trei tipuri:

Scalari, reprezentati prin litere mici: x,y,z;

Vectori, reprezentati prin litere mari: X,Y,Z;

Matrice, reprezentate prin litere mari aldine: X,Y,Z;

Prin scalari se reprezinta variabile independente, fara sa li se asocieze o structura oarecare.

Exemplu: bistabili individuali din unitatea de comanda sau executie.

Vectorul este un ansamblu de operanzi scalari structurati sub forma unui tablou unidirectional. Numarul de componente ale unui vector formeaza dimensiunea acestuia si poate fi determinata cu operatorul dimensiune <nume_vector >.

Registrele unui calculator sunt reprezentate prin vectori.

De exemplu un registru RA de 16 biti are dimensiunea RA=16, iar componentele sale se noteaza:

RA = ( RA0, RA1,,RA RA‑1

unde prin RAi se specifica bitul din pozitia i a registrului RA.

Matricea este un ansamblu de operanzi structurati intr‑un tablou bidimensional. Matricea are deci doua dimensiuni si in mod corespunzator exista doi operanzi dimensiune 1 si

2M =numarul de coloane ;

1M =numarul de linii.

Astfel o matrice M de dimensiunea ( 1M, 2M) se prezinta astfel:

Vectorul reprezinta linia i, iar

Vectorul reprezinta coloana j a matricei M.

Prin matrice se reprezinta ansamble de registre grupate pentru diferite operatii sau module de memorie. Astfel un modul de memorie de 4 K cuvinte de 16 biti poate fi reprezentat ca o matrice M cu 1M=4096 si 2M=16.

reprezinta cuvantul i din memorie,

iar reprezinta bitul j din cuvantul i.

Selectia unui subvector sau submatrici se face foarte simplu, in mod explicit astfel:

Ai:j reprezinta vectorul format cu elementele de la i pana la j ale vectorului A.

Mi:j reprezinta matricea formata cu liniile de la i pana la j ale matricii M, si reprezinta in general o zona de memorie.

Tipuri de operatori

Prin operatori se specifica prelucrarile ce se aplica asupra operanzilor. In functie de numarul operanzilor, operatorii pot fi unari sau binari iar in functie de tipul operanzilor, operatorii pot fi primitivi, daca se aplica asupra unor variabile scalare sau operatori micsti, daca se aplica asupra unor combinatii de variabile de tip scalar, vectorial sau matriceal.

Operatori AHPL

Operatorii de care dispune limbajul AHPL sunt:

operatori logici:

sau care realizeaza functiile logice SI, SAU, NU intre operanzii specificati.

Exemple:

Fie: A = ( A0, A1, , An )

B = ( B0, B1, , Bn )

doi vectori si a , b doi scalari

a b;

A + B = ( A0+B0, A1+B1, , An+Bn )

operatori de reducere:

/ ; /; +/ realizeaza functia logica specificata intre componentele vectorului asupra caruia actioneaza. Rezultatul este un scalar.

Exemple:

/A = A0 A1 A2 An

operatori de sincronizare

SYN <nume_semnal_asincron>

SL <nume_semnal>

Operatorul SYN sincronizeaza semnalul specificat ca parametru (nume_semnal_asincron) , cu semnalul de ceas al sistemului.

Operatorul SL genereaza un semnal de o durata egala cu perioada semnalului de ceas indiferent de durata semnalului specificat ca parametru (nume_semnal).

Exemplu:

SL(SYN(starta)) genereaza un semnal sincron cu semnalul de ceas si de o durata egala cu perioada semnalului de ceas, indiferent de durata semnalului starta.

operatori de selectie:

j ; i:j selecteaza biti dintr‑un registru sau zone de memorie.

Exemple:

Aj ‑ selecteaza bitul j din registrul A

Ai:j =(Ai, Ai+1, , Aj ) - selecteaza grupul de biti ai registrului A intre pozitiile i si j

Mi:j ‑ selecteaza zona de memorie cuprinsa intre adresele i si j

operator de selectie prin comprimare

X/Y elimina componentele din Y corespunzatoare componentelor egale cu 0 din X

Exemplu:

Fie A = (0, 1, 1, 0, 1, 0, 0, 1 )

B = (B0, B1, B2, B3, B4, B5, B6, B7 )

A / B = (B1, B2, B4, B7 )

operator de selectie prin comprimare si reducere:

M*F realizeaza eliminarea liniilor din matricea M corespunzatoare componentelor egale cu 0 din vectorul F

Exemplu:

Fie

si F=[0,0,1

rezulta:

M*F selecteaza linia 2, adica M2

operatori de concatenare

, concatenare pe linii

! concatenare pe coloane

Exemplu:

Fie a si b doi scalari, A si B doi vectori iar M o matrice

A=a,b reprezinta un vector care are ca si componente pe a si b

M=A!B reprezinta o matrice care are ca linii componetele A si B

De notat faptul ca daca vectorii concatenati pe coloane nu au aceeati dimensiune se face aliniere la dreapta.

operator de codificare

n T m; realizeaza codificarea binara a valorii reprezentata de numarul m intr‑un vector care are n componente binare. Rezultatul codificarii este un vector.

Exermplu:

4 T 5 genereaza vectorul (0,1,0,1)

8 T 7 genereaza vectorul (0,0,0,0,0,1,1,1)

operatori de decodificare

sau DCD; realizeaza functia inversa a codificarii adica interpreteaza componentele vectorului caruia i se aplica ca cifre binare si genereaza o valoare numerica. In general aceasta valoare reprezinta o adresa.

Exemplu:

(0,1,0,1) genereaza valoarea 5

DCD (0,0,0,0,0,1,0,1) genereaza valoarea 5

operator de atribuire

a) de conexiune = ,realizeaza conectarea resurselor specificate

b) de transfer ,realizeaza transferul informatiei de la sursa la destinatie. Resursa destinatie trebuie sa fie element cu posibilitate de memorare.

Exemplu:

a = b conecteaza semnalul b la semnalul a

Z = A conecteaza registrul A la iesirile Z ale unui modul

B A continutul registrului A se transfera in registrul B

operator de dimensionare

, aplicat unui vector, genereaza numarul de componente ale acestuia (lungimea vectorului). Fie A= ( A0, A1, , An ) atunci A genereaza valoarea n+1

operatori relationali

x R y, unde: R I stabileste relatia intre cei doi operanzi si genereaza valoarea adevarat (1 logic) daca relatia este indeplinita, si genereaza valoarea fals (0 logic) in caz contrar. In general relatia R este implementata cu ajutorul functiilor, prin unitati logice combinationale.

Instructiuni AHPL

Secventa de control a unei unitati de comanda se specifica cu ajutorul pasilor AHPL.

In continuare se vor prezenta atat modul in care se specifica diferite actiuni in limbajul AHPL cat si implementarea acestora la nivelul resurselor fizice.

Un pas AHPL specifica toate actiunile ce au loc in perioada de timp in care secventa de control se gaseste in starea respectiva. Durata unui pas AHPL este egala cu perioada semnalului de ceas (de tact).

Un pas AHPL poate deci specifica mai multe instructiuni care au loc in acelati moment de timp. Instructiunile AHPL sunt separate prin caracterul (;).

Un pas AHPL poate fi prezentat in mai multe linii sursa ce specifica instructiuni sau comentarii. Fiecare pas AHPL specifica atat actiunile ce au loc in pasul respectiv cat si adresa urmatoarei instructiuni din secventa de control.

Pasul AHPL urmator poate fi specificat in mod explicit prin instructiune de salt sau in mod implicit ca fiind urmatorul in textul programului.

Fiecare instructiune poate contine comentarii formate din siruri de caractere incadrate de delimitatori: /* comentariu */.

Instructiunie AHPL pot fi impartite in doua mari categorii:

‑ instructiuni de atribuire;

‑ instructiuni de salt.

Sfarsitul secventei de pasi AHPL este marcat cu declaratia END SEQUENCE., iar sfarsitul unui program AHPL este marcat cu declaratia END.

Instructiuni de atribuire

Formatul unei instructiuni de atribuire este:

<destinatie> <operator_de_atribuire> <expresie>

Valoarea obtinuta prin evaluarea expresiei este atribuita variabilei destinatie. Daca vectorii destinatie si sursa nu au aceeati dimensiune, se face alinierea dreapta.

Expresiile pot fi formate utilizand:

operatori logici:     (

operatori de sincronizare:     (SL ; SYN (semnal_asincron));

operatori de selectie:     (Aj; Am:n ; Mj ; Mm:n );

operator de selectie prin comprimare: ( X / Y );

operator de selectie prin comprimare si reducere: (M * F);

operatori de concatenare:     (A,B ; A!B);

operator de codificare:     ( n T p);

operatori de decodificare:     ( X ; DCD );

operatori relationali.

Pentru scrierea expresiilor trebuie sa se tina seama de urmatoarele:

indicii superiori si inferiori trebuie specificati prin valori constante (nu se admit expresii de indici);

expresiile (sau subexpresiile) din paranteze se evalueaza cu prioritate;

pentru a evita proliferarea parantezelor se vor avea in vedere prioritatile operatorilor astfel:

1. Negatie si SYN ‑prioritatea cea mai mare;

2. Operatori de selectie;

3. SI logic;

4. SAU si SAU EXCLUSIV;

5. Concatenare

Ca operanzi pentru scrierea expresiilor se pot utiliza:

‑ intrari provenite din alte module;

‑ functii logice combinationale;

‑ elemente de memorie (vectori, matrice);

‑ magistrale de date sau comenzi;

‑ constante binare.

Instructiunile de atribuire sunt impartite in doua categorii in functie de operatorul care se foloseste:

instructiuni de conexiune (operatorul de conexiune = );

instructiuni de transfer (operatorul de transfer

Prin operatiile de conexiune valoarea expresiei se atribuie variabilei doar pe durata pasului AHPL in care este specificata conexiunea respectiva. Deci actiunea are un caracter temporar. Prin operatiile de transfer, valoarea expresiei se atribuie variabilei din partea stanga, cand secventa de control a ajuns in pasul AHPL respectiv, si este memorata in variabila destinatie care pastreaza aceasta valoare pana la o noua atribuire. Actiunea are un caracter permanent specific functionarii circuitelor secventiale.

1. Instructiuni de conexiune

Daca se noteaza cu:

MAG ‑ o magistrala predeclarata

Z ‑ un vector de iesire;

VLCO - un vector de functii logice combinationale de iesire;

MLCO ‑ o matrice de vectori logici combinationali VLCO;

F ‑ un vector de constante binare sau functii logice

instructiunile de conexiune pot fi specificate prin una din urmatoarele forme:

Z = VLCO

MAG = VLCO

Z = MLCO*F

MAG = MLCO*F

In primele doua instructiuni are loc o conexiune neconditionata a iesirilor VLCO la intrarile Z sau MAG.

Fiecare componenta a vectorului VLCO poate fi o functie logica combinationala a carei iesire va fi conectata la intrarea corespunzatoare a vectorului destinatie.

Ultimele doua instructiuni specifica o conexiune conditionata in sensul ca, prin F se specifica linia din matricea de vectori de functii logice MLCO, care se va conecta la Z sau MAG. Operatia MLCO*F este echivalenta cu operatiile de comprimare si reducere.

Astfel daca: F=(f,g,h) iar MLCO = (A!B!C),

operatia MLCO*F este echivalenta cu

(A f) (B g) (C h)

ceea ce poate fi scris si sub forma:

(A0 f,A1 f,..,An f) (B0 g,B1 g,..,Bn g) (C0 h,C1 h,..,Cn h)

In general astfel de expresii se utilizeaza pentru specificarea operatiilor de multiplexare (cand +/F=1), dar se poate ca si (+/F > 1) sa fie utila in diferite situatii.

Pentru exemplificare se considera pasul AHPL urmator:

10.BUS=(A!B) * (f1 ,f2 )

unde A=(A0 ,A1 ) si B= (B0, B1)

Implementarea fizica a acestui pas este prezentata in Fig. 2.1. Se vede ca operatia de conexiune are loc numai daca bistabilul 10 este in 1, deci controlul este la pasul AHPL 10.

Fig.2.1 Conexiune selectiva

2. Instructiuni de transfer

Variabila destinatie este un bistabil sau un vector ce are ca echivalent un registru sau un cuvant de memorie. Inscrierea valorii expresiei in operandul destinatie se face sincronizat cu un semnal de tact. Acest semnal de tact poate fi specificat explicit printr‑o conexiune sau implicit ca fiind tactul unitatii de comanda.

Forma generala a unei instructiuni de transfer este:

VD VLCO

VD MLCO*F

MD*F VLCO

unde: VD este un vector destinatie iar

MD este o matrice destinatie

Prima instructiune specifica un transfer neconditionat.

Cea de a doua forma poate fi descompusa in urmatoarele operatii elementare: conexiune la intrarile vectorului destinatie a vectorului rezultat prin evaluarea expresiei si apoi inscrierea acestuia in VD.

Cea de a treia forma este echivalenta cu: valoarea lui VLCO se transfera in toate liniile matricei rezultate prin comprimarea si reducerea cu vectorul de selectie F.

Exemplu:

Fie MLCO = (A!B!C)

F = (f,g,h)

VD = D

Instructiunea:

D (A!B!C)*(f,g,h) se va implementa astfel:

D (A f) (B g) (C h).

Instructiunea:

(A!B!C)*(f,g,h) D se va implementa astfel:

(A!B!C) (((D!A)*(f,))!((D!B)*(g,))!((D!C)*(h,

sau

daca f=1 A D altfel A ramane neschimbat

daca g=1 B D altfel B ramane neschimbat

daca h=1 C D altfel C ramane neschimbat

Diferenta dintre cele doua implementari este urmatoarea:

In primul caz transferul se executa intotdeauna, datele de intrare fiind selectate in mod corespunzator. In al doilea caz functiile de transfer conditioneaza intrarea de tact si deci transferul are loc numai daca se indeplineste conditia.

Exemplu:

10. A*f B se va implementa astfel:

Instructiunea de mai sus se va implementa ca in Fig 2.2.a. cand transferul este conditionat pe intrari, si ca in Fig. 2.2.b, cand transferul este conditionat pe tact.

Fig.2.2a Transfer conditionat pe intrari

Fig.2.2b Transfer conditionat pe tact

3. Specificarea semnalului de tact

Se observa ca in ambele implementari tactul propriu-zis este dat de trecerea in 1 a bistabilului 10 care marcheaza executia programului la acest pas (trecere care este sincrona cu semnalul se tact al modulului).

Uneori este necesar ca transferul (conditionat sau neconditionat) sa se execute sincronizat cu unul din fronturile semnalului de tact (clock) sau cu un tact extern ceea ce permite transferuri asincrone in 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

cand toate resursele din pasul AHPL respectiv vor fi comandate de un semnal de tact extern, sau

CK [nume_resurs_] = semnal_de_tact

pentru a evidentia ca numai intrarile de tact ale resursei specificate sunt conectate la 'semnal_de_tact'.

Astfel considerind ca toti bistabilii si registrele comuta pe front crescator se considera urmatoarele exemple:

15. A B /* transferul are loc pe frontul crescator al semnalului de tact al modulului (CLOCK) */

16. CK[A] = TACT;

A B /* transferul are loc pe frontul crescator al unui tact extern (TACT) */

_______

17. CK[A] = CLOCK ; CK[C]=TACT

A B; /* transferul are loc pe frontul crescator al semnalului CLOCK */

C B; /* transferul are loc pe frontul crescator al semnalului TACT */

D B; /* transferul are loc pe frontul crescator al semnalului CLOCK */

______

18. CK = CLOCK;

A B;18

C B;

D B; /* toate transferurile, la acest pas, sunt efectuate pe frontul crescator al lui CLOCK*/

In toate aceste cazuri intrarea de tact va fi conditionata de valoarea expresiei din instructiunea CK = expresie

Astfel instructiunea:

15. CK[A] =

A B

Se va implementa ca in Fig. 2.3.

Fig.2.3. Transfer pe frontul cazator al tactului

4. Transferuri si conexiuni dupa END SEQUENCE

Transferurile si conexiunile specificate in secventa de control sunt actiuni care au loc la pasul respectiv, cand executia secventei de comanda ajunge in acel punct.

Exista situatii in care este necesara o conexiune cu caracter permanent, nu numai pe o perioada a semnalului de tact. De asemenea, in anumite situatii este necesar ca un transfer sa se execute la fiecare perioada de tact. Astfel de transferuri si conexiuni se specifica dupa declaratia END SEQUENCE si bineinteles, inainte de END.

Exemplu:

Conexiunea Z = (A!B)*(f1 ,f2 )

unde A=(A0 ,A1 ) si B=(B0 ,B1 ) specificata dupa END SEQUENCE se va implementa ca in Fig. 2.4. Se observa ca nu apare conditionarea cu vreun pas AHPL, conexiunea are loc tot timpul indiferent de punctul in care se gaseste executia secventei de control.

Fig. 2.4. Conexiune dupa END SEQUENCE

Fig. 2.5. Transfer dupa END SEQUENCE

Transferul A B specificat dupa END SEQUENCE se va implementa ca in Fig. 2.5.

Se vede ca registrul A 'urmareste' registrul B.

Daca A si B sunt in module diferite, cu semnele de tact diferite, se realizeaza un transfer sincron cu tactul modulului destinatie.

Instructiuni de salt

Cu ajutorul instructiunilor de salt se pot implementa structuri de control de tip: ramificatii in program, cicluri, secvente paralele.

Formatul instructiunilor de salt este:

1. (Si) Salt neconditionat

2. (F)/(S) Salt conditionat, unde F = S

3. (S) Salt multiplu (neconditionat), S > 1

unde:

Si este un numar reprezentand pasul AHPL cu care se va continua secventa de control, si trebuie specificat printr‑o constanta.

F este un vector de functii logice reprezentand conditiile de test.

S este un vector de constante reprezentand numerele de pasi AHPL la care se poate continua secventa, functie de valoarea vectorului F.

Pentru saltul conditionat se evalueaza expresiile pentru F si prin comprimarea lui S cu F, se obtin numerele pasilor AHPL cu care se continua executia.

Exista urmatoarele cazuri:

((F)/(S)) = 0 Se continua cu pasul urmator.

((F)/(S)) = 1 Se executa ca si saltul neconditionat.

((F)/(S)) > 1 Se initiaza o secventa paralela incepand cu pasii AHPL selectati.

Saltul prezentat la cazul 3 reprezinta un salt multiplu neconditionat, ce initiaza deci o secventa paralela.

In secventele de comanda care nu au o structura ciclica sau in cazul secventelor paralele se poate specifica terminarea executiei unei secvente prin instructiunea: DEAD END ,care va trece unitatea de comanda intr‑o stare terminala. In aceasta stare nu se mai executa nici o actiune dintre cele specificate in secventa de comanda pana la o noua initializare. DEAD END poate apare oriunde in secventa de comanda.

Pentru a facilita scrierea programelor in care au loc mai multe actiuni in aceasi perioada de tact, limbajul AHPL permite specificarea executiei mai multor pasi AHPL in aceasi perioada de timp. Astfel daca la un pas AHPL se specifica declaratia: NO DELAY, toate actiunile din acest pas se desfasoara in perioada de tact corespunzatoare pasului precedent din care provine (ultimul care nu contine declaratia NO DELAY).

Daca fiecare pas AHPL dintr‑o secventa de comanda contine declaratia NO DELAY, iar in cazul secventei se specifica numai conexiuni se obtine o schema logica combinationala. O astfel de secventa se poate scrie si dupa END SEQUENCE.

Descrierea in AHPL a schemelor logice combinationale

Pentru a facilita scrierea secventelor de descriere a circuitelor logice combinationale oferind si o flexibilitate de utilizare a acestora in diferite module, limbajul AHPL permite descrierea separata ca module de program distincte sub forma:

UNIT: nume_functie <lista de parametri>

<declaratii>

<conexiuni>

END

Daca o schema combinationala apare (este apelata) de mai multe ori cu aceeasi parametri efectivi ea va fi generata fizic o singura data cu conditia sa nu se depaseasca fan‑out-ul iesirilor.

Daca insa este apelata de mai multe ori, cu parametri diferiti se poate proceda in doua moduri:

‑ se implementeaza cate o copie a schemei pentru fiecare apelare;

‑ se implementeaza schema o singura data dar se prevede schema de selectie a parametrilor de intrare corespunzatori fiecarei apelari.

Alegerea uneia dintre modalitati se face prin analiza complexitatii functiei combinationale si a logicii de selectie a parametrilor.

Apelul unei unitati logice combinationale se face prin:

nume_functie(lista_de_parametri_efectivi).

Deci in expresii AHPL pot sa apara nume de unitati logice combinationale definite.

In continuare se vor prezenta cateva unitati logice combinationale foarte utilizate in structurile numerice.

Sumatorul elementar complet

Sumatorul elementar complet realizeaza operatia de adunare a unor operanzi de lungime un bit, tinand seama de transportul de intrare si genereaza pe langa suma si eventualul transport.

In Fig.2.6 se prezinta schema bloc a unui sumator elementar complet. Intrarile sunt cei doi operanzi si transportul din exterior iar iesirile sunt suma si transportul spre exterior.

Fig. 2.6. Sumator elementar complet

Tabela de adevar, diagramele Karnaugh si ecuatiile logice sunt prezentate in continuare.

Tabela de adevar:

x

y

tin

suma

tout

Ecuatiile logice rezultate sunt :

sum = x y tin

tout = ((x y) tin) (x y)

Aceste expresii logice pot fi descrise in AHPL astfel:

UNIT: SUMEC (x;y;tin)

INPUTS: (x;y;tin)

OUTPUTS: SUMEC [2;1]

1. a = x y

2. b = x y

3. sum = a tin

4. c = a tin

5. tout = b c

6. SUMEC00 = sum

7. SUMEC = tout

END

Implementarea unitatii logice combinationale a sumatorului elementar complet este prezentata in Fig. 2.7.

Fig. 2.7. Schema sumator elementar complet

Sumator paralel pe 16 biti

Pentru a descrie un sumator paralel pe 16 biti se va considera un vector de functii SUMEC obtinandu‑se astfel o matrice cu 2 linii reprezentand suma si transportul pe fiecare rang.

Operanzii sumatorului paralel sunt:

X = ( X0, X1 ,, X15 )

Y = ( Y0, Y1 ,, Y15 )

Suma si transportul din rangul cel mai semnificativ vor fi:

ADD = (ADD0, ADD1 ,,ADD16 )

Descrierea AHPL a sumatorului pe 16 biti este:

UNIT: ADD (X; Y; t16 )

INPUTS: X[16]; Y[16];t16

OUTPUTS: ADD [17]

1. T = SUMEC10:15 ( X; Y; T1:15,t16 )

2. S = SUMEC00:15 ( X; Y; T1:15,t16 )

3. ADD = T0 ,S0:15

END

Implementarea sumatorului paralel este data in Fig. 2.8.

Fig. 2.8. Sumator paralel pe 16 biti

Pentru efectuarea unor operatii aritmetice ca: adunare, scadere, complementare, sumatorul paralel proiectat se poate utiliza intr‑o schema ca si cea din Fig 2.9.

Fig. 2.9. Utilizarea sumatorului paralel


Cu schema din Fig.2.9 se pot efectua urmatoarele operatii:


Unitate logica combinationala pentru decodificator

Un decodificator primeste la intrare un vector binar oarecare de n biti si genereaza la iesire un vector de 2n biti astfel ca un singur bit are valoarea 1, ceilalti avand valoarea 0.

Schema bloc a unui decodificator de la n la 2n este aratata in Fig. 2.10.

Fig. 2.10. Decodificator cu n intrari si 2n iesiri

Bitul i din cei 2n biti de iesire va fi:

Unitatea ce descrie un decodificator paralel va fi descrisa astfel:

UNIT: DCD (A)

INPUTS:A[n]

OUTPUTS:DCD[m] /* unde m = 2n */

1.

2.

3. DCD = DE0:m‑1

END

Operatiile de citire / scriere cu memoria in AHPL

Se considera o memorie M [2n ,m] si un vector de selectie F cu F = 2n componente astfel ca +/F=1 (o singura componenta este egala cu 1).

Presupunem ca datele se citesc si se scriu in memorie printr‑un registru de date DM[m]. Schema generala pentru acces la memorie este prezentata in Fig. 2.11.

Fig. 2.11 Accesul la memorie

Operatia de scriere in memorie

Scrierea datelor din DM in M se va face cu instructiunea:

M*F DM

In schema din Fig. 2.12 vectorul de selectie F a fost inlocuit cu o schema logica combinationala care primeste la intrare un vector de n biti, registrul de adrese AM, si genereaza un vector decodificat de 2n biti care are o singura componenta egala cu 1 in orice moment. Aceasta schema logica este realizata de DCD (AM).

Instructiunea de scriere in memorie va fi deci:

M*DCD(AM) DM

Operatia de citire din memorie

Pentru citire din memorie se va utiliza o functie speciala denumita BUSFN, care are ca parametri memoria si adresa de la care se doreste citirea.

Formatul instructiunii de citire din memorie este:

DM BUSFN ((M;DCD(AM))

Fig.2.12 Citirea din memorie

Unitate logica combinationala pentru citire din memorie BUSFN

Operatia de citire din memorie consta in selectarea celulei de memorie a carei adresa este specificata de liniile de adresa. Prin utilizarea unui vector F, asociat functiei logice de decodificare a adresei DCD (AM), se poate scrie o unitate logica combinationala ce realizeaza selectarea celulei de memorie specificata.

Fie o memorie M ce are capacitatea 1M = n si 2M = m, n cuvinte de memorie a m biti fiecare, si un vector F asociat decodificatorului de adresa : F0:n‑1 =DCD (AM) cu proprietatea ca +/F=1.

Functia de citire din memorie BUSFN se poate descrie astfel:

UNIT: BUSFN (M;F)

INPUTS: M [n;m]; F[n]

OUTPUTS: BUSFN [m]

1.NIVS0:n‑1 = M0:n‑1 F0:n‑1 /* NIVS=M F */

2.NIV0:n‑1 = NIVS0 ! ( NIVS1:n‑1 NIV0:n‑2)

3.BUSFN=NIVn‑1

END

Exemplu:

Fie o memorie de 4 cuvinte a 8 biti. Unitatea logica combinationala ce asigura citirea din aceasta memorie are urmatoarea descriere:

UNIT BUSFN (M,F)

INPUTS: M [4,8], F [4]

OUTPUTS: BUSFN [8]

1. NIVS = M F

2. NIV = NIVS0 ! ( NIVS1:3 NIV0:2 )

3. BUSFN=NIV3

END

Implementarea unitatii logice combinationale este prezentata in Fig 2.13.

Fig. 2.13 Implementarea unitatii BUSFN



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2210
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved