Creeaza.com - informatii profesionale despre


Evidentiem nevoile sociale din educatie - Referate profesionale unice
Acasa » referate » informatica » calculatoare
Elemente de descriere ale hardware-ului

Elemente de descriere ale hardware-ului


Elemente de descriere ale hardware-ului

Pentru descrierea hardware-ului este cunoscuta practica apelarii la limbaje dedicate cum ar fi VHDL (Very high speed integrated circuits Hardware Description Language), Verilog sau System C [Wake 00][Haye 98], pentru a aminti doar unele de larga circulatie. Prezenta anexa isi propune a releva complexitatea pe care o incumba apelarea la un asemenea limbaj, justificand astfel alegerea pentru descrierile schemelor de prezentul volum al unui pseudo-limbaj menit a inlesni urmarirea aspectelor functionale ale schemelor.

Astfel, orientandu-ne asupra limbajului VHDL (standard IEEE 1076), adoptam, in calitate de obiectiv al descrierii, schema foarte simpla a unui semisumator (half-adder), ale carui unele posibile implementari sunt date in fig.2.5. Problema poate fi abordata pe doua niveluri, cel de entitate (entity) si cel de arhitectura (architecture).

In ceea ce priveste partea entity, acesta permite descrierea elementului de structura la nivelul superior, ca si cand ar reprezenta o singura componenta, fara a detalia in vreun fel arhitectura sa interna. Prezinta interes doar interfata de interconectare cu alte dispozitive externe, asa cum rezulta din enuntul formal din fig.A.1.



Aceasta confera semisumatorului numele sau « formal half-adder », precum si numele asignate semnalelor de interconectare, de intrare (input) si iesire (output), acceptate drept port-uri. Distinctia dintre intrari si iesiri se realizeaza prin cuvintele cheie in si out. Dimensiunea fiecarui port input-output (IO), reprezentand numarul de semnale asociate acestuia, este specificat prin cuvantul cheie bit, corespunzand la un bit. Altfel spus entitatea half-adder din fig.A.1 are doua intrari de un bit, denumite x si y, si are doua iesiri de un bit, denumite sum (suma) si carry (transport). Figura mai contine aceeasi informatie data in forma grafica. La aceasta reprezentare, prin conventie, intrarile sunt amplasate in partea stanga si iesirile in dreapta, nefiind astfel necesara indicarea prin sageti a sensului de transmitere a semnalelor.

In ceea ce priveste partea architecture, limbajul VHDL permite specificarea atat a comportamentului logic cat si a structurii interne a elementului de structura descris. Referindu-ne, mai intai, la partea comportamentala, pentru semisumatorul exemplu descrierea este data in fig.A.2e.Remarcam utilizarea perechii (begin-end) pentru a cuprinde

Inputs

Outputs

x

y

sum

carry

privit ca un modul primitiv sau o  "cutie neagra" (black box), a carui structura interna este fie necunoscuta, fie nu prezinta interes. Functiile corespunzatoare celor 2 iesiri, sum si carry, sunt specificate prin doua functii booleene, xor (EXCLUSIVE-OR) si and (AND), constituind functii predefinite in cadrul limbajului VHDL. Simbolul este utilizat pentru asignarea semnalelor (signal assignement) si indica faptul ca valoarea expresiei din partea dreapta a semnului este atribuita semnalului din partea stanga. Astfel, arata ca semnalului carry i se asigneaza functia booleana AND dintre variabilele x si y. Dar limbajul prezinta o anume bogatie in sensul posibilitatii exprimarii aceleasi informatii in moduri diferite. Astfel, anteriorul enunt corespunzator lui carry poate fi substituit prin urmatorul: if then else , ceea ce corespunde informatiei specificate grafic sub forma de tabel de adevar (fig.A.2). De asemenea, limbajul VHDL permite comunicarea de caracteristici de performanta, respectiv de corelare temporala (timing) al semnalelor. In acest sens, spre exemplu, pentru a indica faptul ca semnalul carry apare la un interval de 5 nsec din momentul aplicarii intrarilor x si y, exista posibilitatea apelarii la un enunt structurat astfel :

In fine, atunci cand este de inteles structura interna a obiectivului descrierii, aceasta se poate realiza, in maniera asemanatoare partii entity, prin specificarea, mai intai, a componentelor utilizate la implementarea practica a schemelor. Astfel, pentru semisumatorul exemplu avem descrierea arhitecturii structurale din fig.A.3. Pot fi identificate doua tipuri de componente descrise prin enunturi VHDL tip component, asemanatoare ca forma enunturilor entity. Ele permit specificarea numelui tipului de componenta (xor_circuit si nand_gate, adica o schema EXCLUSIVE-OR, respectiv o poarta NAND), precum si numele si tipurile de semnale IO pentru fiecare componenta. Conexiunile interne dintre componente sunt specificate prin enunturi signal, cum este linia de semnal alpha de un bit (fig.A.3). Urmeaza descrierea arhitecturii cuprinsa intre paranteze (begin, end), in care sunt prezentate toate copiile aferente fiecarei componente utilizate in schema de implementare, specificandu-se numele lor individual si conexiunile lor. Aceasta descriere, asa cum rezulta si din partea grafica data in fig.A.3, corespunde cablajului (wiring) constituind de fapt, lista legaturilor (net list) dintre componente. Astfel, spre exemplu componenta NAND1 este de tip nand_gate si are aplicate la intrarile d si e variabilele x si y, iar iesirea sa este constituita de linia alpha.

Anterioara descriere in VHDL pentru elementul de structura simplu constituit de sumator pune in relief bogatia limbajului, dar reclama abilitate in manipularea acestuia, ceea ce, pentru majoritatea schemelor din prezentul volum, ridica dificultati de urmarire. Argumentand in acest mod, am apelat la un pseudo limbaj de descriere a hardware-ului care a fost inspirat dupa [Haye 98] si a carui caracteristica esentiala consta in simplitate. Principalele reguli si conventii ale limbajului folosit la descrierea unei mari parti a schemelor din aceasta lucrare sunt urmatoarele :

Elementele de structura constituite de registre sunt specificate prin enunturi de tip declare in care se precizeaza numele, numarul rangurilor si ordinea de numerotare a acestora. In calitate de exemplu, in Fig. A.4 se prezinta modalitatea de declarare a doua registre A si F. In ceea ce il priveste pe A, acesta are 8 ranguri numerotate intre 0 si 7, cu rangul A[7] situat in extremitatea stanga, respectiv A[0] in cea din dreapta. Legat de F, acesta reprezinta un registru format dintr-un singur element de memorare (spre exemplu, un flag), a carui specificare se face doar prin nume. Pe de alta parte, este posibila si specificarea unui registru de lungime dubla, care este dat de juxtapunerea celor doua nume, separate prin punct, cum ar fi registrul A.Q. Aceste denumiri apar, cu precadere, la registre de deplasare, cand continutul unuia este mutat in celalalt.

De o descriere asemanatoare se bucura si liniile de magistrala; o declarare, in acest sens, fiind de forma: declare IOBUS[15 :0], adica magistrala cu numele IOBUS are 16 linii, numerotati de la 0 la 15. In acest context mentionam ca magistralele sunt bidirectionale, dar pentru o mai facila urmarire a fluxului informational, consideram uneori, ca avem, de fapt, doua magistrale separate, INBUS si OUTBUS care, in realitate, sunt contopite.

In descriere, operatiile elementare (microoperatiile) se succed in ordinea prevazuta de procedura. Dintre acestea, cele care sunt non-conflictuale sunt separate doar prin virgula, semnificand ca ele pot fi declansate de catre acelasi impuls de CLOCK. Acele microoperatii care duc la conflicte logice daca sunt executate sincron, se impun a fi decalate temporal, adica controlate prin impulsuri de CLOCK succesive, ceea ce reclama, din punct de vedere formal, separarea lor prin punct si virgula (;).

Pentru atribuirea la un anumit semnal rezultat a unei valori anumite sau a celei corespunzatoare unei expresii, se foloseste semnul (:=). Spre exemplu, prin enuntul A:=0, se descrie microoperatia de initializare (aducere la 0) a continutului intregului registru A, comandand, prin semnalul de control al microoperatiei toate intrarile asincrone de RESET ale elementulor de memorare din care este configurat registrul A. Microoperatia descrisa poate viza selectiv doar anumite ranguri ale registrului, cand acestea trebuie specificate in mod explicit. Pe de alta parte, microoperatia F:=(Q[0]and M[7])orF atribuie flag-ului F valoarea expresiei din partea dreapta a semnului de egalitate, necesitand prealabila evaluare a acesteia. In expresie intervin functiile booleene and si or, care se considera ca exista in realizarea cablata in cadrul schemei.

5.Pe parcursul descrierii se pot folosi enunturi de salt neconditionat, de tip go to, respectiv de salt conditionat, implementat de constructorii de tipul if(conditie) then. Pentru a indica tinta saltului se utilizeaza etichete, care pot fi folosite si pentru a permite urmarirea, cu claritate a procedurii. Un exemplu il constituie enuntul if (CM<>0) then go to ADD, cu semnificatia: atunci cand continutul registrului CM este diferit de 0, se face salt neconditionat la eticheta ADD, astfel fiind respectata executia secventiala a microoperatiilor.

6.Sunt permise enunturi de tipul A[7] :=Q[0] ex-or M[7], Q[0] :=0 ; in care rangul Q[0] este atat citit, cat si scris, creand aparent o situatie de conflict, dar citirea se considera ca efectuata pe frontul urcator al impulsului de clock, iar scrierea pe frontul coborator, iar durata impulsului asigura ca cele doua microoperatii, separate doar prin virgula, sa fie neconflictuale.

Mai mentionam ca, prin conventie, la reprezentarea schemelor s-a facut distinctia intre caile de date si cele de control prin faptul ca pentru primele au fost folosite linii pline, iar pentru semnalele de control s-a uzat de liniii punctate.

Bibliografie

[Haye 98] John P. Hayes: "Computer Architecture and Organization" Mc Graw Hill, Third edition, 1998.

[Wake 00]  John F. Wakerly:"Digital Design.Principles and Practice" Prentice-Hall, 2000.





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.