Sunteți pe pagina 1din 65

Digitally signed by

Library TUM
Reason: I attest to the
accuracy and integrity
of this document

UNIVERSITATEA TEHNIC A MOLDOVEI

PROIECTAREA SISTEMELOR ELECTRONICE

Ghid pentru lucrri de laborator


Partea II

Chiinu
2015

UNIVERSITATEA TEHNIC A MOLDOVEI


FACULTATEA INGINERIE I MANAGEMENT
N ELECTRONIC I TELECOMUNICAII
CATEDRA SISTEME I DISPOZITIVE ELECTRONICE

PROIECTAREA SISTEMELOR ELECTRONICE

Ghid pentru lucrri de laborator


Partea II

Chiinu
Editura Tehnica-UTM
2015
1

Acest ghid pentru lucrri de laborator este destinat pentru


obinerea abilitilor la efectuarea proiectelor n sistemele de
proiectare Quartus II i Eclipse. Proiectarea se efectueaz n baza
microcircuitelor cu logica programabil prin intermediul
limbajului VHDL i n editorul Schematic.
Lucrrile de laborator prezente sunt destinate consolidrii
cunotinelor n domeniul proiectrii dispozitivelor digitale, iar
efectuarea lucrrilor n baza plachetelor de depnare (kit-urilor)
este destinat aprofundrii cunotinelor practice n acest domeniu.
Ghidul este recomandat studenilor, masteranzilor i
doctoranzilor de profil i reflect tendinele contemporane de
proiectare a sistemelor electronice n baza dispozitivelor cu logica
programabil.

Autori: lector univ. S. Gricov


lector asist. D. Lazr
Recenzent: conf. univ., dr. P. Nistiriuc

Redactor: E. Gheorghiteanu

Bun de tipar19.06.15
Formatul hrtiei 60x84 1/16
Hrtie ofset. Tipar RISO Tirajul 30 ex.
Coli de tipar 4,0
Comanda nr.65

2004, UTM, Chiinu, bd. tefan cel Mare i Sfnt, 168


Editura Tehnica-UTM
2068,Chiinu, str. Studenilor, 9/9
UTM, 2015
2

Lucrarea de laborator nr. 1


Sinteza schemelor combinaionale
Scopul lucrrii const n studierea metodelor de sintez a
circuitelor combinaionale i sinteza schemei logice n baza
sarcinii (vezi sarcinile la sfritul acestei lucrri de laborator) n
sistemul de proiectare Quartus II n Schematic i n baza
limbajului VHDL, precum i efectuarea simulrii n timp i
configurarea FPGA.
De exemplu o s lum n considerare funcia prezentat mai
jos:

x1 x2 x3

x2 x3

x1 x2 x3

(1.1)
n baza acestei ecuaii putem realiza funcia y, folosind
elementele logice I, SAU i Negaie. n rezultat se va
obine circuitul prezentat n fig. 1.1.

Fig. 1.1. Schema dispozitivului indicat n sarcin

n dispozitivele reale, la realizarea oricrei funcii logice,


preventiv se efectueaz minimizarea pentru reducerea resurselor
hardware (dac este posibil). Pentru efectuarea minimizrii este
necesar s cunoatem teoremele din algebra boolean. Teoremele
fundamentale ale algebrei booleene sunt prezentate mai jos:
3

De asemenea, diagramele Carnaugh ne pot ajuta i la


minimizarea funciei date. Minimizarea cu ajutorul diagramelor
Carnaugh va fi analizat n continuare.
Efectuarea acestei lucrri de laborator const din
urmtoarele puncte:
1.1. Primul pas este transformarea funciei date n FNDD
(forma normal disjunctiv desvrit) sau n FNCD (form
normal conjunctiv desvrit). Vom folosi FNDD. Exemplul
transformrii funciei date n FNDD este prezentat mai jos:

FNDD reprezint o ecuaie boolean n care toate termele


au aceeai lungime (sub term se subneleg elementele ecuaiei
separate prin semnul disjunciei, de exemplu: x1x2x3).
1.2. Apoi alctuim un tabel (tab. 1.1).
Tabelul 1.1. Diagrama Carnaugh
x1x2

00

01

11

10

x3
0
1

1
1

Valorile vecine x1x2 din tabel trebuie s difere numai cu o


singur valoare, adic 00 i 11 nu pot fi amplasate alturi,
deoarece valorile att x1, ct i x2 sunt diferite. Termele n tabel pot
fi mprite pe x1 i x2x3. Dac ntr-un term vor fi mai multe
elemente, atunci ele vor fi grupate cte dou: x1x2 i x3x4. n tabel
este introdus valoarea "1" n cazul n care un term n forma
FNDD al funciei date coincide cu valoarea din tabel (de exemplu,
termul x1x2x3 corespunde valorilor x1 = 1 i x2x3 = 11). Dup ce
toate termele vor fi incluse n tabel, termele adiacente se combin.
Ultimele terme din stnga i dreapta sunt considerate adiacente
(aceleai condiii vor fi pentru ultimele terme din partea de sus i
de jos n cazul, cnd rndurile din tabel vor fi mai multe dect
dou). Termele combinate pot fi de asemenea combinate n cazul
n care acestea sunt adiacente.
1.3. n rezultat obinem dou terme:

x1 x3

x1 x2 ;

Observm c ecuaia original (1.1) a fost redus, ceea ce


va economisi resursele hardware pentru implementarea
dispozitivului. n rezultat putem sinteza schema reprezentat n
fig. 1.2.
5

Fig. 1.2. Schema dispozitivului dup minimizare

1.4. Trecem la realizarea proiectului n sistemul de


proiectare Quartus II n mediul Schematic. Crem un proiect nou
(vezi p. 1.1 partea 1). n rezultat obinem un circuit, reprezentat n
fig. 1.3.

Fig. 1.3. Schema dispozitivului n Schematic

1.5. Efectum compilarea proiectului i trecem la simularea


lui (vezi p. 1.2, partea 1). n rezultat obinem diagrama de timp,
prezentat n fig. 1.4.

Fig. 1.4. Simularea funcionrii dispozitivului


6

1.6. Apoi efectum configurarea FPGA-lui de pe kit-ul


(vezi p. 1.3, partea 1). Kit-ul cu proiectul ataat i conectat este
demonstrat n fig. 1.5.

Fig. 1.5. Kit-ul cu proiectul ataat i conectat

Urmtorul pas este crearea proiectului folosind limbajul


VHDL. Efectum aceiai pai ca i n cazul proiectrii n mediul
Schematic:
1.7. Crem un proiect nou.
1.8. Efectum simularea lui.
1.9. Configurm FPGA.
Descrierea lingvistic a proiectului poate s reduc n mare
msur durata proiectrii. Dispozitivul poate fi descris prin codul
reprezentat mai jos:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY LogicVHDL IS
7

PORT
(
x1
: in std_logic;
x2
: in std_logic;
x3
: in std_logic;
y
: out std_logic
);
END LogicVHDL;
-- Architecture Body
ARCHITECTURE Logic_architecture OF LogicVHDL IS
BEGIN
y <= ((not x1) and x3) or (x1 and x2) ;
END Logic_architecture;

Fig. 1.6. Diagrama RTL a proiectului

Ca urmare, dup proiectare n mediul Schematic i cu


ajutorul limbajului VHDL trebuie s obinem aceleai rezultate.
Pentru compararea proiectelor n cel mai simplu mod, comparm
diagramele RTL, obinute dup compilarea ambelor proiecte.
Diagrama RTL, obinut n rezultatul proiectrii cu ajutorul
limbajului, este reprezentat n fig. 1.6. De asemenea, comparaia
poate fi efectuat n baza diagramelor obinute n rezultatul
simulrii n timp.
n aceast lucrare de laborator au fost analizate dou
moduri de prezentre a sarcinii proiectului: n editorul schematic i
folosind limbajul VHDL. Exist, de asemenea, posibilitatea de a
8

crea un proiect mixt n sistemul Quartus II. De exemplu, putem


aduga un bloc n editorul schematic i s-i descriem funcionarea
folosind limbajul VHDL. n lucrrile de laborator ulterioare vom
lucra doar cu descrierea proiectelor cu ajutorul limbajului VHDL.
Cerinele ctre lucrarea de laborator nr. 1 (coninutul
raportului):
1) S se prezinte schema construit n sistemul Quartus II.
2) S se prezinte diagrama RTL a proiectului compilat.
3) S se demonstreze diagramele de simulare n timp n
QSim.
4) S se prezinte codul proiectului n limbajul VHDL.
5) S se prezinte diagrama RTL a proiectului compilat (n
VHDL).
6) S se prezinte exemplul funcionrii proiectului pe kit (n
raport s fie artat fereastra de configurare a FPGAului).
7) S se prezinte concluziile corespunztoare.
ntrebri de control:
1.
2.
3.
4.
5.
6.
7.

Care sunt metodele minimizrii funciilor logice?


Ce reprezint FNDD i cum putem s-o obinem?
Explicai principiul realizrii diagramelor Carnaugh.
Comparai metodele de proiectare n mediul Schematic i
cu ajutorul limbajului VHDL.
Ce demonstreaz diagrama RTL?
De ce este necesar a efectua simularea n timp a unui
proiect?
Ce avantaje are FPGA fa de alte microcircuite digitale?

Variantele sarcinii pentru lucrarea de laborator nr. 1:


variantei
1

x1 x2 x3 x4

x1 x2 x3 x4

x1 x2 x3 x4

x1 x2 x3

x1 x2 x3 x4

x1 x2 x3 x4

x1 x2 x3 x4

x1 x2 x3

x1 x2 x3 x4

x1 x2 x3 x4

Sarcina

x1 x2 x3

x1 x2 x3 x4

x1 x2 x3 x4

x1 x2 x3 x4

x1 x2 x3

x1 x2 x3 x4

x1 x2 x3 x4

x1 x2 x3 x4

x1 x2 x3

x1 x2 x3 x4

x1 x2 x3 x4

x1x2 x3 x4

x1 x2 x3 x4

x1 x2 x3 x4

x1x2 x3 x4

x1x2 x3 x4

x1 x2 x3 x4

x1 x2 x3 x4

x1x2 x3 x4

x1x2 x3 x4

x1 x2 x3 x4

x1 x2 x3 x4

x1 x2 x3 x4

x1x2 x3 x4

x1x2 x3 x4

x1 x2 x3 x4

10

x1 x2 x3 x4

11

x1 x2 x4

12

x1 x2 x3 x4

13

14

x1x2 x3 x4

x1 x2 x3 x4

x1 x2 x4

x1x2 x3 x4

x1x2 x3 x4

x1 x2 x3 x4

x1x3 x4

x1x2 x3 x4

x1x2 x3 x4

x1 x2 x3

x1 x2 x3 x4

x1x2 x3 x4

x1 x2 x3 x4

x2 x3 x4

x1 x2 x3 x4

x1x2 x3 x4

x1 x2 x3 x4

15

x1 x2 x3 x4

x1x2 x3 x4

x2 x3 x4

x1 x2 x3 x4

16

x1 x2 x3 x4

x1 x2 x3 x4

x1x2 x3 x4

17

x1 x2 x3 x4

x1 x2 x3 x4

x1x3 x4

x1 x2 x3 x4

18

x1x2 x3 x4

x1 x2 x3 x4

x1 x2 x4

x1 x2 x3 x4

19

x1 x2 x3 x4

x2 x3 x4

x1x2 x3 x4

x1 x2 x3 x4

20

x1 x2 x3 x4

x1 x2 x3 x4

x1 x3 x4

x1 x2 x3 x4

10

x2 x3 x4

Lucrarea de laborator nr. 2


Implementarea bistabilelor i registrelor
Scopul lucrrii const n studierea metodelor de sintez a
bistabilelor i registrelor i n sinteza bistabilului dat i registrului
dat (vezi sarcinile la sfritul acestei lucrri de laborator) n
sistemul de proiectare Quartus II cu ajutorul limbajului VHDL,
precum i efectuarea simulrii n timp i configurarea FPGA.
Vom lua n considerare un exemplu de realizare a
bistabilului i registrului, prezentate n fig. 2.1.

b)

Fig. 2.1. Bistabilul () i registrul (b) dup sarcin

Funcionarea bistabilului dat este prezentat n tab. 2.1.


Tabelul 2.1. Tabelul de adevr al bistabilului
R

n baza datelor din tab. 2.1 se vede c intrarea R este


intrarea de resetare a bistabilului n 0. Cnd impulsurile se aplic
la linia de tactare C, valoarea ieirii Q depinde de valoarea
semnalului la intrarea D. n alte moduri bistabilul se afl n modul
de stocare (atunci cnd valoarea la intrarea R este 0). n baza
11

acestui bistabil se realizeaz i registrul (fig. 2.1, b). Datele n


registru se nscriu secvenial prin intrarea D i pot fi citite de la
ieiri paralele Q0 Q3. Intrarea C este utilizat pentru deplasarea
datelor (cnd se face trecerea la C din 0 n 1), dar intrarea R
pentru resetarea ieirilor registrului n 0000.
Efectuarea acestei lucrri de laborator const din
urmtoarele puncte:
2.1. Trecem la crearea proiectului (vezi p. 1.1, partea 1).
Primul proiect o s-l numim Trigg. Putem descrie proiectul
folosind codul urmtor:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY Trigg IS
PORT
(
R_Tg
: in std_logic;
C_Tg
: in std_logic;
BTN
: in std_logic;
D_Tg
: in std_logic;
Q_Tg
: out std_logic
);
END Trigg;
-- Architecture Body
ARCHITECTURE Trigg_architecture OF Trigg IS
signal T
: integer range 0 to 11000000;
signal BTN_Out : std_logic;
BEGIN
Process (BTN_Out, R_Tg, D_Tg) modulul de descriere
Begin
-- a bistabilului
if R_Tg = '1' then
Q_Tg <= '0';
12

elsif rising_edge (BTN_Out) then


Q_Tg <= D_Tg;
end if;
end process;
--////////// Reinerea de timp pentru butonul ///////////////
BTN_Press:process (R_Tg,BTN)
begin
if (R_Tg = '1' or T = 10000000) then
BTN_Out <= '0';
elsif rising_edge (BTN) then
BTN_Out <= '1';
end if;
end process BTN_Press;
BTN_Press1:process (R_Tg,C_Tg,BTN)
begin
if R_Tg = '1' then
T <= 0;
elsif rising_edge (C_Tg) then
if BTN_Out='1' then
T <= T+1;
else
T <= 0;
end if;
end if;
end process BTN_Press1;
--///////////////////////////////////////////
END Trigg_architecture;
n codul prezentat mai sus ENTITY Trigg descrie intrrile i
ieirile proiectului, unde _Tg este intrarea de tactare (se
conecteaz la generatorul de cuar), R_Tg intrarea de resetare (se
conecteaz la comutatorul SW), BTN butonul pentru tactarea
bistabilului (se conecteaz la butonul fr fixare), D_Tg datele
13

aplicate la intrarea bistabilului (se conecteaz la comutatoarele


SW), Q_Tg valorile citite de la ieirea bistabilului (se conecteaz
la LED-uri). n lucrrile de laborator configurarea intrrilor i
ieirilor poate s nu coincid cu exemplul prezentat. Tactarea
bistabilului se efectueaz prin apsarea butonului, care se
conecteaz la intrarea BTN. Dar acest semnal nu poate fi aplicat la
intrarea tactrii bistabilului, pentru c n momentul apsrii
butonului apar nite zgomote (impulsuri parazitare), astfel este
necesar s fie introdus reinerea de timp ~ 0,25ms (pentru tierea
acestor impulsuri parazitare) descrise n BTN_Press i
BTN_Press1. De asemenea, n proiect este inclus modulul process,
care descrie comportamentul (funcionarea) bistabilului.
2.2. n rezultatul proiectrii obinem diagrama RTL,
reprezentat n fig. 2.2, n care este alocat bistabilul sintetizat.

Fig. 2.2. Diagrama RTL a bistabilului sintetizat

2.3. Dup efectuarea cu succes a compilrii proiectului,


trecem la procesul simulrii acestuia (vezi p. 1.2, partea 1). n
rezultat obinem diagrama de timp, prezentat n fig. 2.3
(simularea este efectuat fr linie BTN, se are n vedere c
impulsurile de tactare se aplic la intrarea bistabilului nu de la
BTN_Out, dar de la C_Tg).

Fig. 2.3. Simularea corectitudinii funcionrii bistabilului


14

2.4. Apoi efectum configurarea FPGA de pe bordul kitului (vezi p. 1.3, partea 1). n baza bistabilului sintetizat trecem la
sinteza registrului, care este prezentat n fig. 2.1,b.
2.5. Vom crea un proiect nou, care se numete Reg. Astfel,
modulul cu acelai nume (ENTITY) Reg va fi acceptat automat de
compilator ca un modul principal. Putem s descriem proiectul
folosind codul urmtor:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY Trigg IS
PORT
(
R_Tg
: in std_logic;
C_Tg
: in std_logic;
D_Tg
: in std_logic;
Q_Tg
: out std_logic
);
END Trigg;
-- Architecture Body
ARCHITECTURE Trigg_architecture OF Trigg IS

BEGIN
Process (C_Tg, R_Tg, D_Tg)
begin
if R_Tg = '1' then
Q_Tg <= '0';
elsif rising_edge (C_Tg) then
Q_Tg <= D_Tg;
end if;
end process;
END Trigg_architecture;
15

------------------------------------------LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY Reg IS
PORT
(
R
: in std_logic;
C
: in std_logic;
BTN : in std_logic;
D
: in std_logic;
Q
: buffer std_logic_vector (3 downto 0)
);
END Reg;
-- Architecture Body
ARCHITECTURE Reg_architecture OF Reg IS
COMPONENT Trigg Is
PORT
(
R_Tg
: in std_logic;
C_Tg
: in std_logic;
D_Tg
: in std_logic;
Q_Tg
: out std_logic
);
END COMPONENT;
signal T
: integer range 0 to 11000000;
signal BTN_Out : std_logic;
BEGIN
--////////// Reinerea de timp pentru butonul ///////////////
BTN_Press:process (R,BTN)
begin
if (R = '1' or T = 10000000) then
BTN_Out <= '0';
elsif rising_edge (BTN) then
16

BTN_Out <= '1';


end if;
end process BTN_Press;
BTN_Press1:process (R,C,BTN)
begin
if R = '1' then
T <= 0;
elsif rising_edge (C) then
if BTN_Out='1' then
T <= T+1;
else
T <= 0;
end if;
end if;
end process BTN_Press1;
--///////////////////////////////////////////
Trigg0_3: for i in 0 to 3 generate
Trigg0_3: if i=0 generate
Reg0: Trigg port map (C_Tg=>BTN_OUT,
R_Tg=>R, D_Tg=>D, Q_Tg=>Q(0));
end generate Trigg0_3;
Trigg1_3: if i>0 generate
Reg1: Trigg port map (C_Tg=>BTN_OUT,
R_Tg=>R, D_Tg=>Q(i-1), Q_Tg=>Q(i));
end generate Trigg1_3;
end generate Trigg0_3;
END Reg_architecture;
n codul prezentat mai sus ENTITY Trigg deja a fost descris
n prima parte a lucrrii de laborator. Modulul principal ENTITY
Reg descrie intrrile i ieirile proiectului, este intrarea de tactare
(se conecteaz la generatorul de cuar), R intrarea de resetare (se
conecteaz la comutatorul SW), BTN butonul pentru tactarea
registrului (se conecteaz la un buton), D datele aplicate la
17

intrarea registrului (se conecteaz la comutatoarele SW), Q


valorile citite de la ieirea registrului (se conecteaz la LED-uri).
La lucrrile de laborator configurarea intrrilor i ieirilor poate s
nu coincid cu exemplul prezentat. Semnalul BTN_Out este ieirea
la care apar impulsurile de tactare i care se conecteaz la intrarea
de tactare a registrului. Pentru a exclude zgomotul care apare de la
buton, se folosesc dou module: BTN_Press i BTN_Press1. De
asemenea, proiectul include modulul process, care descrie
comportamentul (funcionarea) registrului, care este creat n baza
componentei conectate COMPONENT Trigg.
2.6. n rezultatul proiectrii obinem diagrama RTL,
prezentat n fig. 2.4.

Fig. 2.4. Diagrama RTL a registrului sintetizat

2.7. Dup efectuarea compilrii cu succes a proiectului


trecem la procesul simulrii lui (vezi p. 1.2, partea 1). n rezultat
obinem diagrama de timp, prezentat n fig. 2.5 (simularea este
efectuat fr linie BTN, se are n vedere c impulsurile de tactare
se aplic la intrarea bistabilului nu de la BTN_Out, dar de la
C_Tg).

Fig. 2.5. Simularea corectitudinii funcionrii registrului


18

2.8. Apoi efectum configurarea FPGA de pe bordul kitului (vezi p. 1.3, partea 1).
n baza acestui exemplu poate fi implementat orice bistabil,
iar n baza acestui bistabil este convenabil a realiza registre de
orice configuraie.
Cerinele ctre lucrarea de laborator nr.2 (coninutul
raportului):
1) S se prezinte codul proiectului n limbajul VHDL (pentru
bistabil).
2) S se prezinte diagrama RTL a proiectului compilat
(pentru bistabil).
3) S se demonstreze diagramele de simulare n timp n
QSim (pentru bistabil).
4) S se prezinte codul proiectului n limbajul VHDL (pentru
registru).
5) S se prezinte diagrama RTL a proiectului compilat
(pentru registru).
6) S se demonstreze diagramele de simulare n timp n
QSim (pentru registru).
7) S se prezinte exemplul funcionrii proiectului pe kit (n
raport s se arate fereastra de configurare a FPGA-ului).
8) S se prezinte concluziile corespunztoare.
ntrebri de control:
Enumerai tipuri de bistabile cunoscute.
Desenai i explicai tabelele de funcionare a bistabilelor
JK, RS, D i T.
3. Enumerai tipurile de registre cunoscute i explicai
particularitile acestora.
4. Dai exemple de utilizare a operatorului if n VHDL. Ce
scheme pot fi sintetizate n baza acestui operator?
5. Dai exemple de utilizare a operatorului generic n VHDL.
Ce scheme pot fi sintetizate n baza acestui operator?
1.
2.

19

Variantele sarcinii pentru lucrarea de laborator nr. 2:


1:

2:

3:

4:

5:

6:

7:

8:

1b:

2b:

5b:

6b:

3b:

7b:

20

4b:

8b:

Lucrarea de laborator nr. 3


Sinteza contoarelor i sumatoarelor
Scopul lucrrii const n studierea metodelor de sintez a
sumatoarelor i contoarelor i n sinteza sumatorului i contorului
dat (vezi sarcinile la sfritul acestei lucrri de laborator) n
sistemul de proiectare Quartus II cu ajutorul limbajului VHDL,
precum i efectuarea simulrii n timp i configurarea FPGA.
Contorul reprezint un dispozitiv digital, care la fiecare tact
de impulsuri de intrare de la generator crete starea sa cu o valoare.
n general, contorul se sintetizeaz n baza bistabilelor T conectate
n serie (fig. 3.1, a). Aceste bistabile sunt de numrare, adic la
schimbarea valorii la intrarea C din 0 n 1 (sau invers), starea
de ieire a bistabilului se va inversa. La a doua intrare a
bistabilului, de asemenea, se va produce schimbarea din 0 n 1,
dar de 2 ori mai rar dect la intrarea primului bistabil. Astfel, dac
vom urmri schimbarea strii la ieirile ambelor bistabile vom
vedea c strile se schimb n felul urmtor: 0, 1, 2 i 3 n
sistemul binar prin aplicarea impulsurilor la intrarea bistabilelor,
adic obinem un contor.

a)

b)

Fig. 3.1. Schema contorului secvenial (a) i paralel (b)

Dezavantajul acestui circuit const n aceea c valoarea


ultimului bistabil va aprea atunci cnd se vor schimba strile la
toate bistabilele care se afl pn la acest ultim bistabil. Astfel,
rapiditatea comutrii contorului este dirijat de timpul sumar de
21

comutare a tuturor bistabilelor. Acest dezavantaj poate fi evitat n


cazul n care bistabilele vor fi conectate n paralel (fig. 3.1, b). n
acest caz, se adaug un circuit combinational (n cazul nostru S1)
la toate bistabilele cu excepia primului, pentru a se calcula n ce
moment trebuie s-i schimbe valoarea fiecare bistabil.
Dezavantajul acestei structuri const n complexitatea fiecrei
structuri a circuitului combinaional Si care, pentru fiecare bistabil
ulterior, este mai complicat dect cea anterioar. Acest lucru
nseamn c, pentru realizarea contorului paralel sunt necesare
mult mai multe resurse hardware n comparaie cu cel secvenial.
De asemenea, contorul poate fi prezentat ca un sumator
(acumulator), care i adaug o unitate la rezultatul su. Acest
sumator poate fi reprezentat schematic n modul urmtor (fig. 3.2).

Fig. 3.2. Schema contorului n baza sumatorului


Aceast soluie schemotehnic permite realizarea unui
contor paralel cu o cantitate minim de resurse hardware, mai ales
atunci cnd este necesar a sintetiza un contor cu o lungime mai
mare a cuvntului de ieire (de 10 i mai muli bii). n acest caz,
avem nevoie de un registru pentru stocarea rezultatului i un
sumator care adaug la rezultat o unitate. Deseori sumatoarele sunt
realizate n baza a dou semisumatoare. Semisumatorul poate fi
sintetizat n baza elementelor logice aa cum este artat n fig. 3.3.
22

a)

b)

Fig. 3.3. Schema semisumatorului (a) i sumatorului (b)

Tabelul de adevr pentru semisumator este reprezentat n


tab. 3.1 stnga, iar pentru sumator n partea dreapt a tabelului.

A
0
0
1
1

Tabelul 3.1. Tabelul de adevr al semisumatorului


i sumatorului
B
S
P
A
B
Pi
S
0
0
0
0
0
0
0
1
1
0
0
0
1
1
0
1
0
0
1
0
1
1
0
1
0
1
1
1
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1

Pi+1
0
0
0
0
1
1
1
1

Dup analizarea principiilor de funcionare a contoarelor i


sumatoarelor putem trece la sintetizarea lor n baza limbajului
VHDL.
Efectuarea acestei lucrri de laborator const din
urmtoarele puncte:
3.1. Crem n sistemul QUARTUS II un proiect nou.
Sintetizm sumatorul numerelor A i B cu lungime de cuvnt de 4
bii a fiecrui numr. Pentru realizarea acestui proiect vom avea
23

nevoie de efectuarea conversiei de tipuri a datelor, care va fi luat


n considerare n codul proiectului.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
ENTITY Adder IS
PORT
(
A
: in std_logic_vector (3 downto 0);
Sum : out std_logic_vector (4 downto 0);
Sub : out std_logic_vector (4 downto 0)
);
END Adder;
-- Architecture Body
ARCHITECTURE Adder_architecture OF Adder IS
signal B : std_logic_vector (3 downto 0);
signal Ai : integer range 0 to 2**4-1;
signal Bi : integer range 0 to 2**4-1;
signal Sumi : integer range 0 to 2**5-1;
signal Subi : integer range -2**4-1 to 2**4-1;
BEGIN
B(3 downto 0) <= "1101";
Ai <= to_integer(unsigned (A));
Bi <= to_integer(unsigned (B));
Sumi <= Ai + Bi;
Subi <= Ai - Bi;
Sum <= std_logic_vector(to_unsigned(Sumi, 5));
Sub <= std_logic_vector(to_signed(Subi, 5));
END Adder_architecture;
n codul reprezentat mai sus ENTITY Adder descrie
intrrile i ieirile proiectului, unde A este valoarea primlui numr
(se conecteaz la comutatorul SW), B valoarea celui de-al doilea
numr (prezint variabila de tip signal). Deoarece kit-urile (DE024

Nano) conin doar 4 switch-uri, numrul A se introduce cu ajutorul


switch-urilor, iar numrul B se introduce n program. Sum
rezultatul nsumrii celor dou numere (se conecteaz la LED-uri),
Sub rezultatul scderii B din A (se conecteaz la LED-uri). La
lucrrile de laborator configurarea intrrilor i ieirilor poate s nu
coincid cu exemplul prezentat. Semnalul BTN_Out este ieirea la
care apar impulsuri de tactare i care se conecteaz la intrarea de
tactare a registrului. Pentru a exclude zgomotul care apare, la
apsarea unui buton se folosesc dou module: BTN_Press i
BTN_Press1. n proiect se utilizeaz funcii de conversie a
tipurilor de date: to_integer(unsigned (A)) pentru trecerea de la
std_logic_vector la integer, unde
valoarea de tip
std_logic_vector, i std_logic_vector(to_unsigned(Sumi, 5)) se
utilizeaz pentru trecerea de la tipul integer la tipul
std_logic_vector, unde Sumi valoarea de tip integer, 5 indic
dimensiunea semnalului obinut de tip std_logic_vector.
3.2. n rezultatul proiectrii obinem diagrama RTL,
prezentat n fig. 3.4.

Fig. 3.4. Diagrama RTL a sumatorului sintetizat

3.3. Dup efectuarea compilrii cu succes a proiectului,


trecem la procesul de simulare al acestui proiect (vezi p. 1.2, partea
1). n rezultat obinem diagrama de timp, prezentat n fig. 3.5.
Simularea a fost efectuat pentru cazul cnd semnalele A i B
reprezint semnale de intrare n proiectul Adder.
25

Fig. 3.5. Simularea corectitudinii funcionrii sumatorului

n fig. 3.5 acelai rezultat este prezentat n form zecimal


(unsigned decimal pentru variabile fr semn, i signed decimal
pentru variabilele cu semn) i binar (binary). Formatul datelor
(la intrri i ieiri) este specificat n determinarea semnalelor de
intrare n simulator (evideniem o intrare sau o ieire, de exemplu:
A, facem un click pe dreapta i n fereastra care va aprea
selectm Radix formatul variabilei).
3.4. Apoi efectum configurarea FPGA de pe bordul kitului (vezi p. 1.3, partea 1).
3.5. O s trecem la crearea unui contor de 8-bii. Crem un
proiect nou. Putem s descriem contorul, folosind codul urmtor:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
ENTITY Counter IS
PORT
(
26

R
: in std_logic;
C
: in std_logic;
BTN : in std_logic;
Q
: out std_logic_vector (7 downto 0)
);
END Counter;
-- Architecture Body
ARCHITECTURE Counter_architecture OF Counter IS
signal T : integer range 0 to 2**8-1;
signal BTN_Out : std_logic;
signal T1
: integer range 0 to 11000000;
BEGIN
Process (BTN_Out, R) -- modulul descrierii contorului
begin
if R = '1' then
Q <= x"00";
T <= 0;
elsif rising_edge (BTN_Out) then
Q <= std_logic_vector(to_unsigned(T, 8));
T <= T+1;
end if;
end process;
--////////// Reinerea de timp pentru butonul ///////////////
BTN_Press:process (R,BTN)
begin
if (R = '1' or T1 = 10000000) then
BTN_Out <= '0';
elsif rising_edge (BTN) then
BTN_Out <= '1';
end if;
end process BTN_Press;
BTN_Press1:process (R,C,BTN)
begin
if R = '1' then
T1 <= 0;
elsif rising_edge (C) then
if BTN_Out='1' then
27

T1 <= T1+1;
else
T1 <= 0;
end if;
end if;
end process BTN_Press1;
END Counter_architecture;
n codul prezentat mai sus ENTITY Counter descrie
intrrile i ieirile proiectului, unde este intrare de tactare (se
conecteaz la generatorul de cuar), R intrarea de resetare (se
conecteaz la comutatorul SW), BTN butonul pentru tactarea
registrului (se conecteaz la un buton), Q valorile citite de la
ieirea contorului (se conecteaz la LED-uri). La lucrrile de
laborator configurarea intrrilor i ieirilor poate s nu coincid cu
exemplul prezentat. Semnalul BTN_Out este ieirea la care apar
impulsuri de tactare i care se conecteaz la intrarea de tactare a
registrului. Pentru a exclude zgomotul care apare, cnd se apas un
buton se folosesc dou module: BTN_Press i BTN_Press1. De
asemenea, n proiect este modulul process, care descrie
comportamentul (funcionarea) contorului.
3.6. n rezultatul proiectrii obinem diagrama RTL,
prezentat n fig. 3.6.
Dup cum se vede din fig. 3.6, contorul este construit n
baza sumatorului i dou registre (al doilea registru a aprut de
aceea c am utilizat conversia de tipuri a datelor). n general, acest
circuit corespunde variantei de realizare a contorului, reprezentat
n fig. 3.2.
3.7. Dup efectuarea compilrii cu succes a proiectului,
trecem la procesul simulrii acestuia (vezi p. 1.2, partea 1). n
rezultat obinem diagrama de timp, reprezentat n fig. 3.7
(simularea este executat fr linia BTN, adic impulsurile de
tactare la intrarea corespunztoare a contorului se aplic nu de la
BTN_Out, dar de la C).

28

a)

b)
Fig. 3.6. Diagrama RTL a contorului sintetizat fr modulul
BTN_Press (a) i cu acesta (b)

Fig. 3.7. Simularea corectitudinii funcionrii contorului


29

3.8. Apoi efectum configurarea FPGA de pe bordul kitului (vezi p. 1.3, partea 1).
n baza simulrii corectitudinii funcionrii contorului se
vede c procesul de numrare se efectueaz corect. n ce form va
fi prezentat rezultatul simulrii (zecimal, binar, sau altele),
proiectantul alege de sine stttor.
Cerinele ctre lucrarea de laborator nr. 3 (coninutul
raportului):
1) S se prezinte codul proiectului n limbajul VHDL (pentru
sumator).
2) S se prezinte diagrama RTL a proiectului compilat
(pentru sumator).
3) S se demonstreze diagramele de simulare n timp n
QSim (pentru sumator).
4) S se prezinte codul proiectului n limbajul VHDL (pentru
contor).
5) S se prezinte diagrama RTL a proiectului compilat
(pentru contor).
6) S se demonstreze diagramele de simulare n timp n
QSim (pentru contor).
7) S se prezinte exemplul funcionrii proiectului pe kit (n
raport s se arate fereastra de configurare a FPGA-ului).
8) S se trag concluziile corespunztoare.
ntrebri de control:
1.
2.
3.
4.

Cte tipuri de contoare dup structur exist? Care sunt


particularitile fiecrui tip?
Sintetizai circuitul semisumatorului i explicai
principiile de funcionare ale acestuia.
Sintetizai circuitul sumatorului i explicai principiile de
funcionare ale acestuia.
Cum se efectueaz o conversie de tipuri a datelor n
VHDL?
30

Variantele sarcinii pentru lucrarea de laborator nr. 3:


1:

2:

3:

4:

5:

6:

7:

8:

1b:

2b:

5b:

6b:

3b:

7b:

31

4b:

8b:

Lucrarea de laborator nr. 4


Sinteza unui automat finit
Scopul lucrrii const n studierea metodelor de sintez a
automatelor finite i n sinteza automatului Mealy (vezi sarcinile la
sfritul acestei lucrri de laborator) n sistemul de proiectare
Quartus II cu ajutorul limbajului VHDL, precum i efectuarea
simulrii n timp i configurarea FPGA.
La elaborarea sistemelor digitale adesea apare necesitatea
de sintez a unei uniti de comand care va putea efectua
controlul unui sistem anumit. Astfel, unitatea de comand trebuie
s genereze nite impulsuri de control pentru module diverse ntr-o
ordine strict determinat de algoritmul de control. n mai multe
cazuri, un algoritm de control este definit cu un graf (fig. 4.1).

Fig. 4.1. Exemplul unui graf


Graful G[Z, T] reprezint un sistem format din noduri Z,
care sunt unite cu muchii T. Dac muchiile au direcii, ele sunt
numite arcuri, iar graful este un graf orientat. n fig. 4.1 Z0 - Z4
sunt nodurile grafului, iar sgeile care unesc nodurile arcuri. De
asemenea, algoritmul de control poate fi definit n forma unui tabel
(tab. 4.1), sau ntr-o form de diagram bloc, care este prezentat
n fig. 4.2.
32

T1
Z0
+

X1=1

T2, T3

T2
Z2

Z1

X2=1

?
T3

Z4
T2
Z3

Fig. 4.2. Definirea algoritmului de control cu o diagram bloc

n baza grafului prezentat mai sus (tabelul sau diagrama


bloc) poate fi sintetizat o unitate de comand, care altfel poate fi
numit ca automat finit. Un automat finit poate fi descris cu
ecuaia urmtoare:

unde: I o mulime a simbolurilor de intrare (alfabet);


S o mulime de stri ale automatului;
S0 strile iniiale ale automatului;
funcie de tranziie;
F funcie de ieire.
Metodele cunoscute de sintez ale automatelor finite sunt
sinteza automatelor Mealy i Moore. Ele sunt definite de
urmtoarele ecuaii:
33

a(t 1)
{
w(t 1)

(a(t ), z (t ));

(4.2)

(a(t ), z (t )).

a(t 1)
(a(t ), z (t ));
{
w(t 1)
(a(t )).
unde: z alfabetul de intrare;
w strile de ieire;
a strile interne;
funcie de tranziie;
funcie de ieire.

(4.3)

Dup cum se vede din (4.2) automatul Mealy depinde de


starea curent a automatului i de alfabetul de intrare, dar
automatul Moore (4.3) depinde numai de starea curent a
automatului, adic automatul Moore nu depinde n mod explicit de
alfabetul de intrare.
Automatul finit poate fi definit i n forma unui tabel.
Acelai automat finit, care este definit ntr-un graf din fig. 4.1
poate fi definit n tab. 4.1.
Tabelul 4.1. Funcii de tranziii i de ieiri ale automatului finit
X1 X2
0 0
0 1
1 0
1 1

Z0

Z1

Z2

Z3

Z4

Z2 / T2
Z2 / T2
Z1 / T2T3
Z1 / T2T3

Z3 / T2
Z3 / T2
Z3 / T2
Z3 / T2

Z4 / T3
Z3 / T2
Z4 / T3
Z3 / T2

Z0 / T1
Z0 / T1
Z0 / T1
Z0 / T1

Z3 / T2
Z3 / T2
Z3 / T2
Z3 / T2

Graful (fig. 4.1) descrie funcionarea automatului Mealy.


Celulele din tabel arat la ce stare are loc trecerea din starea Zi,
pentru toate valorile de intrare posibile X1 i X2, precum i ce
semnale de control T sunt generate n fiecare caz.
Efectuarea acestei lucrri de laborator const din
urmtoarele puncte:
4.1. Vom sinteza automatul finit (fig. 4.1). n primul rnd
vom codifica strile Z0Z4 (tab. 4.2).
34

Tabelul 4.2. Codificarea strilor Z0 Z4


Z0

000

Z1

001

Z2

010

Z3

011

Z4

100

4.2. Urmtorul pas const n completarea tabelului de


tranziie, care descrie trecerea din starea curent n cea ulterioar
(tab. 4.3).
Tabelul 4.3. Tabelul de tranziie al automatului finit
Starea
iniial

Condiiile
tranziiilor

Strile
ulterioare

Z0

Semnalele
de control

Q0 Q2

D0

D1

D2

Semnalele
de ieire
T1

T2

T3
1

x1

Z1

001

x1

Z2

010

Z1

Z3

011

Z2

x2

Z3

011

x2

Z4

100

Z3

Z0

000

Z4

Z3

011

1
1
1

n tab.4.3 n prima coloni, sunt enumerate toate strile


automatului finit. n a doua coloni sunt nscrise aciunile de
intrare. n a treia coloni sunt prezentate toate tranziiile posibile
lund n considerare aciunile de intrare. Pentru pstrarea strilor
automatului avem nevoie de elementele memoriei. Cele mai
35

simple elemente ale memoriei sunt bistabilele. n acest caz vom


aplica bistabilele D. Atunci, urmtoarele stari ale automatului finit
(valorile Q0 Q2 din tab. 4.3) vor fi definite de valori la intrrile
D0 D2, care n cazul nostru vor fi aceleai ca i la Q0 Q2. n
ultima coloni prin 1 sunt indicate cazurile, cnd la ieirile
corespunztoare trebuie s apar un semnal.
4.3. n baza tab. 4.3 putem alctui ecuaii pentru
determinarea semnalelor de intrare a bistabilelor D0 D2 i
semnalele de ieire ale automatului finit T0 T2.
) Ecuaiile pentru semnalele de intrare ale bistabilelor:
D0 Z2 x2 ;

D1 Z0 x1 Z1 Z2 x2 Z4 ;
D2 Z 0 x1 Z1 Z 2 x2 Z 4 .
b) Ecuaiile pentru semnalele de ieire:
T1 Z 3 ;
T2

Z0 x1 Z0 x1

Z1 Z2 x2

Z4

Z0

Z1 Z2 x2

Z4 ;

T3 Z0 x1 Z2 x2 .
n baza acestor ecuaii putem asambla schema automatului
Mealy (fig. 4.3).

Fig. 4.3. Circuitul sintetizat al automatului Mealy


36

Dup alctuirea ecuaiilor este necesar a efectua


minimizarea care va permite a reduce resursele hardware necesare
pentru realizarea automatului finit. Semnalele Z se formeaz n
circuit conform codificrii strilor din tab. 4.2.
4.4. Crem n sistemul QUARTUS II un proiect nou. n
baza VHDL realizm schema automatului Mealy sintetizat.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY Mealy IS
PORT
(
C
: in std_logic;
BTN
: in std_logic;
R
: in std_logic;
X1,X2
: in std_logic;
T1, T2, T3
: out std_logic
);
END Mealy;
-- Architecture Body
ARCHITECTURE Mealy_architecture OF Mealy IS
signal Z0, Z1, Z2, Z3, Z4 : std_logic;
signal D0, D1, D2 : std_logic;
signal Q0, Q1, Q2 : std_logic;
signal BTN_Out : std_logic;
signal T
: integer range 0 to 11000000;
BEGIN
process (R,BTN_Out)
begin
if R = '1' then
Q0 <= '0';
elsif rising_edge (BTN_Out) then
Q0 <= D0;
end if;
end process;
process (R,BTN_Out)
37

begin
if R = '1' then
Q1 <= '0';
elsif rising_edge (BTN_Out) then
Q1 <= D1;
end if;
end process;
process (R,BTN_Out)
begin
if R = '1' then
Q2 <= '0';
elsif rising_edge (BTN_Out) then
Q2 <= D2;
end if;
end process;
Z0 <= (not Q0) and (not Q1) and (not Q2);
Z1 <= Q0 and (not Q1) and (not Q2);
Z2 <= (not Q0) and Q1 and (not Q2);
Z3 <= Q0 and Q1 and (not Q2);
Z4 <= (not Q0) and (not Q1) and Q2;
D2 <= Z2 and (not X2);
D1 <= (Z0 and (not X1)) or Z1 or (Z2 and X2) or Z4;
D0 <= (Z0 and X1) or Z1 or (Z2 and X2) or Z4;
T1 <= Z3;
T2 <= Z0 or Z1 or (Z2 and X2) or Z4;
T3 <= (Z0 and X1) or (Z2 and (not X2));
--////////// Reinerea de timp pentru butonul ///////////////
BTN_Press:process (R,BTN)
begin
if (R = '1' or T = 10000000) then
BTN_Out <= '0';
elsif rising_edge (BTN) then
BTN_Out <= '1';
end if;
38

end process BTN_Press;


BTN_Press1:process (R,C,BTN)
begin
if R = '1' then
T <= 0;
elsif rising_edge (C) then
if BTN_Out='1' then
T <= T+1;
else
T <= 0;
end if;
end if;
end process BTN_Press1;
--///////////////////////////////////////////
END Mealy_architecture;
n codul reprezentat mai sus, ENTITY Mealy descrie
intrrile i ieirile proiectului, unde este intrarea de tactare (se
conecteaz la generatorul de cuar), R intrarea de resetare (se
conecteaz la comutatorul SW), BTN butonul pentru tactarea
automatului (se conecteaz la buton), X1, X2 datele care definesc
comportamentul (ramuri ale algoritmului care vor fi executate)
automatului (se conecteaz la comutatorul SW), T1, T2, T3
impulsuri de control generate de automatul finit (se conecteaz la
LED-uri). La lucrrile de laborator configurarea intrrilor i
ieirilor poate s nu coincid cu exemplul prezentat. Semnalul
BTN_Out este ieirea la care apar impulsuri de tactare i care se
conecteaz la intrarea de tactare a registrului. Pentru a exclude
zgomotul ce apare la tactarea butonului se folosesc dou module:
BTN_Press i BTN_Press1. De asemenea, n proiect este modulul
process, care descrie comportamentul (funcionarea) elementelor
de memorie (bistabilelor), automatului i operatorilor ce definesc
valorile la intrrile semnalelor Z, D i .
39

4.5. n rezultatul proiectrii obinem diagrama RTL,


prezentat n fig. 3.22.

a)

b)
Fig. 3.22. Diagrama RTL a automatului sintetizat fr modulul
BTN_Press (a) i cu el (b)

4.6. Dup efectuarea compilrii cu succes a proiectului,


trecem la procesul simulrii lui (vezi p. 1.2, partea 1). n rezultat
obinem diagrama de timp, prezentat n fig. 4.5.

40

Fig. 4.5. Simularea corectitudinii funcionrii automatului finit

4.7. Apoi efectum configurarea FPGA de pe bordul kitului (vezi p. 1.3, partea 1).
Cerinele ctre lucrarea de laborator nr. 4 (coninutul
raportului):
1) S se prezinte graful automatului Mealy n baza tabelului
de tranziii i de ieiri prezentate n sarcin (sau invers).
2) S se sintetizeze automatul Mealy n baza tabelului de
tranziii i de ieiri prezentat n lucrarea dat.
3) S se prezinte codul proiectului n limbajul VHDL.
4) S se prezinte diagrama RTL a proiectului compilat.
5) S se demonstreze n QSim diagramele de simulare n
timp.
6) S se prezinte exemplul funcionrii proiectului pe kit (n
raport sse arate fereastra de configurare a FPGA-ului).
7) S se trag concluziile corespunztoare.
ntrebri de control:
1.
2.
3.
4.

Care este diferena ntre automatele Mealy i Moore?


Care sunt modurile de prezentare a sarcinii automatelor
finite? Aducei exemple pentru fiecare mod.
Enumerai i explicai etapele de sintez ale automatului
Mealy.
Desenai un exemplu de graf i dai definiiile de baz din
teoria grafurilor?
41

Variantele sarcinii pentru lucrarea de laborator nr. 4:


Varianta 1:
X1 X2
0 0
0 1
1 0
1 1

Z0

Z1

Z2

Z3

Z4

Z2 / T3
Z2 / T3
Z1 / T2
Z1 / T2

Z3 / T1
Z4 / T3
Z3 / T1
Z4 / T3

Z4 / T2
Z4 / T2
Z4 / T2
Z4 / T2

Z0 / T3
Z0 / T3
Z0 / T3
Z0 / T3

Z0 / T1
Z0 / T1
Z0 / T1
Z0 / T1

Varianta 2:
X1 X2
0 0
0 1
1 0
1 1

Z0

Z1

Z2

Z3

Z4

Z1 / T1
Z1 / T1
Z1 / T1
Z1 / T1

Z2 / T3
Z2 / T3
Z2 / T3
Z2 / T3

Z4 / T1
Z4 / T1
Z3 / T2
Z3 / T2

Z4 / T3
Z0 / T1
Z4 / T1
Z0 / T3

Z0 / T2
Z0 / T2
Z0 / T2
Z0 / T2

Varianta 3:
X1 X2
0 0
0 1
1 0
1 1

Z0

Z1

Z2

Z3

Z4

Z1 / T1
Z1 / T1
Z1 / T1
Z1 / T1

Z3 / T3
Z3 / T3
Z2 / T2
Z2 / T2

Z2 / Z4 / T1
Z2 / Z4 / T1

Z4 / T2
Z4 / T2
Z4 / T2
Z4 / T2

Z0 / T3
Z0 / T3
Z0 / T3
Z0 / T3

Varianta 4:
X1 X2
0 0
0 1
1 0
1 1

Z0

Z1

Z2

Z3

Z4

Z1 / T2
Z1 / T2
Z1 / T2
Z1 / T2

Z3 / T3
Z3 / T3
Z2 / T1
Z2 / T1

Z4 / T2
Z4 / T2
Z4 / T2
Z4 / T2

Z4 / T1
Z4 / T1
Z4 / T1
Z4 / T1

Z0 / T3
Z4 / Z0 / T3
Z4 / -

42

Varianta 5:

Varianta 6:

Varianta 7:

Varianta 8:

43

Lucrarea de laborator nr. 5


nscrierea, pstrarea i citirea datelor din memoria
operativ (RAM)
Scopul lucrrii const n studierea principiilor de
funcionare a RAM i n sinteza blocului de memorie dup sarcin
n baza modulelor bibliotecare MegaWizard (vezi sarcinile la
sfritul acestei lucrri de laborator) n sistemul de proiectare
Quartus II n baza limbajului VHDL, precum i efectuarea
simulrii n timp i configurarea FPGA.
n prezent, dispozitivele de memorie digital constituie
circa 70-80% din toate elementele electronice utilizate n circuitele
digitale. Dispozitivele de memorie digital cunoscute pot fi
mprite n RAM (memorie cu acces aleator) i ROM (memorie
care poate fi numai citit). RAM este mprit ntr-o memorie
RAM static (SRAM Static Random Access Memory) sau RAM
dinamic (DRAM Dynamic Random Access Memory). n acest
laborator, vom analiza doar RAM static (n continuare SRAM).
Gestionarea SRAM este prezentat n fig. 5.1.

Fig. 5.1. Diagrama de gestionare a memoriei SRAM


44

Liniile de intrare CE, WE i OE sunt de control. Linia CE


permite funcionarea SRAM, linia WE permite nscrierea, linia OE
permite citirea. Pentru realizarea nscrierii, pe liniile CE i WE se
aplic simultan un impuls. Valoarea adresei celulei se definete
cnd impulsul trece din unu n zero. Datele, de asemenea, se
definesc cnd impulsul trece din unu n zero. Pe frontul cresctor
al impulsului se efectueaz procesul de nscriere a datelor ntr-o
celul anumit a SRAM-ului. Pentru citirea datelor din memoria
unui impuls pe liniile CE i OE se aplic simultan un impuls.
Valoarea adresei celulei se definete cnd impulsul trece din unu
n zero, iar datele se citesc pe frontul cresctor al impulsului.
Efectuarea acestei lucrri de laborator const din
urmtoarele puncte:
5.1. n lucrarea de laborator vom lua n considerare
funcionarea modulului RAM din biblioteca MegaWizard. Vom
efectua nscrierea datelor ntr-un anumit numr de celule de
memorie, vom citi valorile din aceste celule i vom compara datele
citite cu cele care au fost nscrise.
Vom lua n considerare exemplul conectrii modulului
bibliotecar MegaWizard.

Fig. 5.2. Conectarea modulului RAM din bibliotec (pasul 1)

45

5.2. Crem un proiect nou i i dm denumire: SRAM.


Crem dou fiiere VHDL. Unui i dm denumirea: SRAM, iar
celui de-al doilea: RAM. Accesm Tools MegaWizard Plug-In
Manager la bara de instrumente. n fereastra care apare (fig. 5.2),
selectm Create a new custom megafunction variation i apsm
Next. n fereastra urmtoare (fig. 5.3) n partea stnga selectm
Memory Compiler RAM: 1-PORT. n partea dreapt selectm
familia de circuite Cyclone IV E, limbajul VHDL i fiierul n care
va fi nscris modulul RAM.vhd. Se va deschide o fereastr n care
apsm OK.

Fig. 5.3. Conectarea modulului RAM din bibliotec (pasul 2)

n fereastra urmtoare (fig. 5.4) indicm limea magistralei


de date (n cazul nostru 2 bii) i limea magistralei de adrese a
memoriei (alegem cea mai mic posibil 32 de cuvinte). n
consecin, RAM va conine 32 de celule de 2 bii fiecare. Apsm
butonul Next.
46

Fig. 5.4. Conectarea modulului RAM din bibliotec (pasul 3)

n fereastra urmtoare (fig. 5.5), scoatem bifa n zona: q


output port. Apsm butonul Finish.

Fig. 5.5. Conectarea modulului RAM din bibliotec (pasul 4)


47

Astfel va aprea o fereastr n care apsm pe Yes. n


fiierul RAM.vhd va aprea codul care descrie modulul de memorie
conectat.
5.3. Apoi conectm fiierul RAM la fiierul principal
SRAM, reprezentat n codul de mai jos:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
use ieee.numeric_std.all;
ENTITY SRAM IS
PORT
(
C
: in std_logic;
R
: in std_logic;
BTN
: in std_logic;
BTNenW : in std_logic; -- Button "Enable Write"
DataIn : in std_logic_vector(1 downto 0);
addr_to_LED : out std_logic_vector(1 downto 0);
DataOut
: out std_logic_vector(1 downto 0)
);
END SRAM;
-- Architecture Body
ARCHITECTURE SRAM_architecture OF SRAM IS
--//********************// COMPONENT RAM
COMPONENT RAM is
port
(address: IN STD_LOGIC_VECTOR (4 DOWNTO 0);
clock : IN STD_LOGIC := '1';
data : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
wren : IN STD_LOGIC ;
q
: OUT STD_LOGIC_VECTOR (1 DOWNTO 0)
);
END COMPONENT;
48

signal addrM : std_logic_vector(4 downto 0);


signal addr_CT: integer range 0 to 3; --Contor de adrese
signal BTN_Out : std_logic;
signal T
: integer range 0 to 11000000;
BEGIN
--//********** Block of RAM ***********//
Mem : RAM
Port map (address=>addrM, clock=>BTN_Out,
data=>DataIn, wren=>BTNenW, q=>DataOut);
--////////// Reinerea de timp pentru butonul ///////////////
BTN_Press:process (R,BTN)
begin
if (R = '1' or T = 10000000) then
BTN_Out <= '0';
elsif rising_edge (BTN) then
BTN_Out <= '1';
end if;
end process BTN_Press;
BTN_Press1:process (R,C,BTN)
begin
if R = '1' then
T <= 0;
elsif rising_edge (C) then
if BTN_Out='1' then
T <= T+1;
else
T <= 0;
end if;
end if;
end process BTN_Press1;
--///////////////////////////////////////////
-- Incrementarea adresei dup apsarea butonului:
process (R,BTN_Out)
49

begin
if R = '1' then
addr_CT <= 0;
elsif rising_edge (BTN_Out) then
addr_CT <=addr_CT+1;
end if;
end process;
-- Afiarea adresei pe LED-uri:
addr_to_LED <= std_logic_vector(to_unsigned(addr_CT, 2));
-- Dterminarea adresei blocului de memorie RAM:
addrM(1 downto 0) <= std_logic_vector(to_unsigned(addr_CT,
2));
addrM(4 downto 2) <= "000";
END SRAM_architecture;
n codul reprezentat mai sus, ENTITY SRAM descrie
intrrile i ieirile proiectului, unde este intrarea de tactare (se
conecteaz la generatorul de cuar), R intrarea de resetare (se
conecteaz la comutatorul SW), BTN butonul pentru modulul de
memorie (se conecteaz la buton), BTNenW intrarea care
definete procesul nscrierii i citirii datelor din memorie (se
conecteaz la comutatorul SW), DataIn datele care se aplic la
memorie (se conecteaz la comutatorul SW), addr_to_LED
afiarea adresei celulei cu care lucrm, nscriem sau citim (se
conecteaz la LED-uri), DataOut datele citite din memorie (se
conecteaz la LED-uri). La lucrrile de laborator configurarea
intrrilor i ieirilor poate s nu coincid cu exemplul prezentat.
Modulul COMPONENT RAM reprezint conectarea modulului de
memorie generat. Semnalul BTN_Out este ieirea la care apar
impulsuri de tactare i care se conecteaz la intrarea de tactare a
registrului. Pentru a exclude zgomotul ce apare, la apsarea
butonului se folosesc dou module: BTN_Press i BTN_Press1.
Ultimul modul n proiect este process, care formeaz adresele de
memorie (addr_CT).
Gestionarea memoriei RAM se efectueaz n modul
urmtor: pentru nscriere aplicm adresa i datele la intrrile
50

corespunztoare, iar la BTNenW aplicm 1 (permis pentru


nscriere). Datele se nscriu n celula de memorie corespunztoare
pe frontul cresctor al impulsului la intrarea . Pentru citire
aplicm adresa la intrarea corespunztoare, dar la BTNenW
aplicm 1 (permis pentru nscriere). Citirea celulei de memorie
corespunztoare se efectueaz pe frontul cresctor al impulsului la
la intrarea .
5.4. n rezultatul proiectrii obinem diagrama RTL,
prezentat n fig. 5.6.

Fig. 5.6. Diagrama RTL a memoriei sintetizate SRAM

5.5. Dup efectuarea compilrii cu succes a proiectului


trecem la procesul simulrii acestuia (vezi p. 1.2, partea 1). n
rezultat obinem diagramele de timp, reprezentate n fig. 5.7.

Fig. 5.7. Simularea funcionrii corecte a memoriei SRAM

5.6. Apoi efectum configurarea FPGA de pe bordul kitului (vezi p. 1.3, partea 1).
n rezultatul proiectrii am obinut modulul de memorie de
51

2 bii cu 4 celule active n care pot fi nscrise datele stocate i citite


pn la deconectarea alimentrii dispozitivului.
Cerinele ctre lucrarea de laborator nr. 5 (coninutul
raportului):
1) S se prezinte scrinoturile conectrii modulului de
memorie RAM din biblioteca MegaWizard.
2) S se prezinte codul proiectului n limbajul VHDL.
3) S se prezinte diagrama RTL a proiectului compilat.
4) S se demonstreze diagramele de simulare n timp n
QSim.
5) S se prezinte exemplul funcionrii proiectului pe kit (n
raport s se arte fereastra de configurare a FPGA-ului).
6) S se trag concluzii corespunztoare.
ntrebri de control:
Enumerai tipurile cunoscute de memorie i descriei-le?
Prezentai un exemplu al schemei de structur a memoriei
RAM i explicai principiul de funcionare al acesteia?
3. Pe ce este bazat principiul funcionrii memoriei FLASH?
4. Explicai scopul subsistemului MegaWizard al sistemului
QUARTUS II. Ce avantaje ofer acest subsistem n
comparaie cu proiectarea standard?
5. Ce module pot fi generate n baza MegaWizard?
1.
2.

Variantele sarcinii pentru lucrarea de laborator nr. 5:

Dimensiunea magistralei
variantei
de adrese (bit)
1
2
2
2
3
2
4
2
5
3
6
3
7
3
8
3
52

Dimensiunea
magistralei de date (bit)
3
4
5
6
3
4
5
6

Lucrarea de laborator nr. 6


Generarea procesorului NIOS i crearea proiectului n baza
limbajului C
Scopul lucrrii const n studierea metodelor software de
sintez a sistemelor cu procesor i n generarea sistemului cu
procesor n baza procesorului Nios i crearea programului efecte
de lumini (vezi sarcinile la sfritul acestei lucrri de laborator) n
sistemul de proiectare Quartus II n baza limbajului VHDL i n
sistemul Eclipse n baza limbajului C, precum i efectuarea
simulrii n timp i configurarea FPGA.
n ultimii ani au aprut circuitele digitale cu sisteme cu
processor. Acest procesor se sintetizeaz cu ajutorul software-ului.
Procesoarele Nios se sintetizeaz n baza resurselor hardware ale
FPGA-ului de firma Altera. n baza circuitului FPGA pot fi
sintetizate de la unu pn la cteva zeci de procesoare Nios. n
aceast lucrare vom sintetiza un procesor Nios, n baza cruia vom
realiza proiectul efecte de lumini. Principiul de funcionare al
acestui proiect este reprezentat n fig. 6.1. Cifra unu indic c
LED-ul este pornit, 0 oprit.

Fig. 6.1. Programul efecte de lumini


53

Efectuarea acestei lucrri de laborator const din


urmtoarele puncte:
6.1. Sintetizm un sistem cu procesor n baza procesorului
Nios, care este prezentat n fig. 6.3 (vezi p. 2.1, partea 1).

Fig. 6.2. Sistemul bazat pe procesorul Nios

Sistemul const dintr-un procesor Nios de 32 de bii,


modulul JTAG UART pentru
programarea i depnarea
procesorului, timerul (timer_0), port de ieire de 8-bii
(PORT_LED) i memoria de program RAM cu mrimea de 20480
celule de 32 de bii. La port de ieire vom conecta LED-uri. Pentru
a crea un interval de timp de 0,25 secunde avem nevoie de un
timer (intervalul de timp poate fi oricare) ntre comutarea LEDurilor. Intrrile suplimentare sunt clk linia de tactare (conectat la
un oscilator de cristal) i Reset linia de resetare a procesorului la
starea iniial (conectat la buton).
6.2. Dup generarea sistemului microprocesoral trecem la
compilarea proiectului n sistemul Quartus II.
6.3. Apoi efectum configurarea intrrilor i ieirilor
FPGA, aa, cum este artat n fig. 6.3.
54

Fig. 6.3. Configurarea intrrilor i ieirilor proiectului

6.4. n continuare efectum configurarea FPGA (vezi p.


1.3, partea 1).

Fig. 6.4. Configurarea proiectului n sistemul Eclipse


55

6.5. Trecem la crearea proiectului n limbajul C, n sistemul


Eclipse. Crem un proiect nou LED_Proj. n calitate de exemplu
alegem proiectul Hello World Small. Toi parametrii necesari ai
proiectului sunt enumerai n fig. 6.4. Apoi facem un clic pe
butonul Finish. Astfel va fi generat proiectul Hello World Small.
6.6. Urmtorul pas este crearea codului programului n
limbajul C. Pentru aceasta facem un clic dublu n zona Project
Explorer pe map LED_Proj i pe fiierul hello_world_small, aa
cum este indicat n fig. 6.5.

Fig. 6.5. Mapa cu proiectul creat


n zona de proiectare aprut nlocuim codul prezent cu
codul urmtor:
#include <stdio.h>
#include "alt_types.h"
#include "altera_avalon_pio_regs.h"
#include "altera_avalon_timer.h"
#include "altera_avalon_timer_regs.h"
#include "system.h"
static alt_u8 temp;
//*******************************************
static void tim_init()
56

{
IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER_0_
BASE, 0x00BE); // Delay 0.25 s f = (50 MHz / 4)-1
IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER_0_
BASE, 0xBC1F);
IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_0_B
ASE, 0);
// Clear Flag TO
IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_0
_BASE, 0x07);
}
static void tim_del()
{
IOWR_ALTERA_AVALON_TIMER_STATUS(TIME
R_0_BASE, 0);
// Clear Flag TO
if (temp>0)
{
temp = temp << 1;
IOWR_ALTERA_AVALON_PIO_DATA(PORT_LE
D_BASE, temp);
}
else
{
temp = 1;
IOWR_ALTERA_AVALON_PIO_DATA(PORT_LE
D_BASE, temp);
}
}
//********************************************
int main()
{
alt_putstr("Hello from Nios II!\n");
tim_init();
57

alt_irq_register (TIMER_0_IRQ, NULL, tim_del);


/* Event loop never exits. */
while (1);
return 0;
}
Codul programului include 6 biblioteci, care permit
folosirea a astfel de module ca timer i port de ieire de date. irul
static alt_u8 temp specific crearea variabilei temp cu lungimea de
cuvnt de 8 bii. Corpul programului este format din 3 funcii:
static void tim_init(), static void tim_del() i int main(). n funcie
int main() este executat afiarea pe consola irului "Hello de la
Nios II!", se efectueaz iniializarea timer-ului prin funcia
tim_init(), permiterea ntreruperilor timer-ului se ndeplinete prin
funcia alt_irq_register() i se efectueaz un ciclu infinit, n care
nu se realizeaz nici o operaie (se ateapt o ntrerupere de la
timer). Funcia tim_init() iniializeaz timer-ul, stabilind intervalul
de timp (numrul de impulsuri de tactare de la generator), dup
care va fi declanat ntreruperea, setnd indicatori necesari n
registrele timer-ului. Funcia tim_del() este apelat n cazul n care
ntreruperea timer-ului este declanat, adic la fiecare 0,25
secunde. n funcia tim_del() n variabila temp se nscrie valoarea
1, sau se realizeaz deplasarea de 1 la stnga la fiecare apel al
funciei date. Valoarea variabilei temp este afiat pe port de ieire
de date.
6.7. Pentru a compila proiectul, facem clic cu dreapta pe
mapa cu proiectul LED_Proj din fereastra dreapt i alegem Build
Project. Ateptm sfritul compilrii. Trecem la conectarea
proiectului creat la sistemul microprocesoral (vezi p. 2.2, partea 1).
Rezultatele configurrii sistemului microprocesoral sunt prezentate
n fig. 6.6.

58

Fig. 6.6. Proiectul efecte de lumini

n aceast lucrare s-a realizat un program n care se


utilizeaz ntreruperi de timer dup coinciden (ntreruperea este
activat atunci cnd timer-ul va numra pn la valoarea nscris n
registrele TIMER_PERIODH i TIMER_PERIODL). Nucleul
procesoral NIOS poate genera pn la 32 de vectori de ntrerupere,
care pot monitoriza mai exact anumite evenimente.
Dup cum se poate observa din acest exemplu, crearea unui
sistem microprocesoral necesit un timp suplimentar al
utilizatorului, dar este posibil a crea un sistem oarecare de
configuraie dorit (limitat de module bibliotecare). Acest fapt
face proiectul mai flexibil i reduce resursele consumate. Resursele
hardware rmase ale FPGA-ului pot fi utilizate pentru
implementarea modulelor suplimentare sau alte uniti de calcul.

59

Cerinele ctre lucrarea de laborator nr. 6 (coninutul


raportului):
1) S se genereze sistemul microprocesoral n baza
procesorului Nios.
2) S se efectueze configurarea FPGA (n raport s se arte
fereastra de configurare a FPGA-ului).
3) S se creeze un proiect n sistemul Eclipse (n raport s se
arte screenshot-uri de creare a proiectului).
4) S se prezinte codul proiectului n limbajul C.
5) S se prezinte screenshot-ul de consol cu rezultatul de
proiectare.
6) S se prezinte exemplul funcionrii proiectului pe kit (n
raport s se arate fotografii ale kit-ului n procesul de
funcionare).
7) S se trag concluziile corespunztoare.

1.

2.
3.
4.

5.

ntrebri de control:
Comparai procesoarele Nios cu microcontrolerele
cunoscute. Care sunt avantajele i dezavantajele
procesoarelor Nios?
Care sunt variantele sistemelor cu procesoare (dup
arhitectur), care pot fi generate n SOPC-Builder?
Dai un exemplu de aplicaie al sistemului cu procesor n
baza cip-ului FPGA.
Ce trebuie schimbat n codul programului, prezentat n
aceast lucrare, ca s fie deplasate n fiecare 0,25 secunde
nu numai un led, iar dou LED-uri?
Calculai valorile registrelor TIMER_PERIODH i
TIMER_PERIODL n codul programului prezentat n
aceast lucrare, ca intervalul reinerii de timp s fie egal
cu 0,3 secunde.

60

Variantele sarcinii pentru lucrarea de laborator nr. 6:


Varianta 1:

Varianta 2:

Varianta 3:

Varianta 4:

61

Varianta 5:

Varianta 6:

Varianta 7:

Varianta 8:

62

Bibliografie
1.

. : ,
2012, 337.

2.

. VHDL. : , 2002, 224 .

3.

. :
,
. : ,
2007, 408 .

4.

BODEAN Gh. Proiectarea aparatajului electronic


implementat cu dispozitive programabile. Chiinu:
UTM, 2007, 311 p.

5.

Quartus II Handbook Volume 1: Design and Synthesis.


18.08.2014,
http://www.altera.com/literature/hb/qts/quartusii_handbook
.pdf

6.

. .
. 15.01.2013,
http://www.al.cs.msu.su/system/files/HDL_3L.pdf

7.

LEWIS J. VHDL Math Tricks of the Trade, 15.01.2013,


http://www.synthworks.com/papers/vhdl_math_tricks_map
ld_2003.pdf

63

CUPRINS
1. Lucrarea de laborator nr. 1 ..................................................... 3
2. Lucrarea de laborator nr. 2 ................................................... 11
3. Lucrarea de laborator nr. 3 ................................................... 21
4. Lucrarea de laborator nr. 4 ................................................... 32
5. Lucrarea de laborator nr. 5 ................................................... 44
6. Lucrarea de laborator nr. 6 ................................................... 53
Bibliografie ............................................................................... 63

64

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