Documente Academic
Documente Profesional
Documente Cultură
Library TUM
Reason: I attest to the
accuracy and integrity
of this document
Chiinu
2015
Chiinu
Editura Tehnica-UTM
2015
1
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
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.
00
01
11
10
x3
0
1
1
1
x1 x3
x1 x2 ;
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;
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
b)
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
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
2:
3:
4:
5:
6:
7:
8:
1b:
2b:
5b:
6b:
3b:
7b:
20
4b:
8b:
a)
b)
a)
b)
A
0
0
1
1
Pi+1
0
0
0
0
1
1
1
1
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)
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.
2:
3:
4:
5:
6:
7:
8:
1b:
2b:
5b:
6b:
3b:
7b:
31
4b:
8b:
T1
Z0
+
X1=1
T2, T3
T2
Z2
Z1
X2=1
?
T3
Z4
T2
Z3
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)
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
000
Z1
001
Z2
010
Z3
011
Z4
100
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
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).
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
a)
b)
Fig. 3.22. Diagrama RTL a automatului sintetizat fr modulul
BTN_Press (a) i cu el (b)
40
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.
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
45
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
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
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
{
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
58
59
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
Varianta 2:
Varianta 3:
Varianta 4:
61
Varianta 5:
Varianta 6:
Varianta 7:
Varianta 8:
62
Bibliografie
1.
. : ,
2012, 337.
2.
3.
. :
,
. : ,
2007, 408 .
4.
5.
6.
. .
. 15.01.2013,
http://www.al.cs.msu.su/system/files/HDL_3L.pdf
7.
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