Sunteți pe pagina 1din 26

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

LABORATOR nr. 4
VHDL. Unitile de proiectare de baz. Utilizarea mediului de programare Quartus II. 1. Scopul laboratorului
n cadrul acestei lucrri se urmresc dou obiective: 1. prezentarea unitilor fundamentale de proiectare VHDL i anume: perechea entitate/arhitectur, configuraiile, specificaiile de pachete i corpurile pachetelor. Se vor prezenta declaraiile acestor elemente cu exemplificri pe circuite reale simple. 2. se va utiliza mediul de programare Quartus II pentru a creea proiecte simple pentru porile I, SAU, NU etc.

2. Consideraii teoretice
2.1. Structura de baz a unui fiier VHDL
Un sistem digital n VHDL este alctuit dintr-o entitate de proiectare care poate conine i alte entiti care mai apoi sunt considerate componente ale entitilor de nivel nalt (top-level). Fiecare entitate este modelat de ctre o declaraie a entitii i de ctre un corp de tip arhitectur. Aa cum s-a mai prezentat, pe de o parte se poate considera declararea entitii ca o interfa cu lumea exterioar care definete semnalele de intrare i de ieire iar pe de alt parte arhitectura care conine descrierea entitii care este compus din entitii, procese i componente interconectate ntre ele i care opereaz concurenial aa cum se arat n figura 2.1. ntr-un proiect tipic, vor exista mai multe astfel de entiti conectate mpreun pentru a realiza funcia dorit. Entitatea VHDL Porturi Interfaa (Declaraia entitii)

Corpul (Arhitectura) Secvenial Procese combinaionale


Subprograme

Figura 2.1 O entitate VHDL care este alctuit dintr-o interfa (declaraia entitii) i un corp (descrierea arhitectural). VHDL utilizeaz cuvinte cheie rezervate care nu pot fi utilizate ca nume de semnale sau ca identificatori. Cuvintele cheie i identificatorii definii de ctre utilizator sunt cazuri deosebite. Liniile cu comentarii ncep cu dou cratime adiacente (--) care vor fi ignorate de ctre compilator. De asemenea VHDL ignor spaiile. VHDL este un tip de limbaj foarte 1

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR puternic orientat pe tip care implic declarea ntotdeauna a tipului fiecrui obiect care poate avea o valoare, precum semnalele, constantele i variabilele.

2.1.1. Declaraia entitii


Declaraia entitii definete NUMELE entitii i listeaz porturile de intrare i ieire. Forma general este urmtoarea : entity NUMELE_ENTITII is [ generic (declaraii_generice) ]; port (numele_semnalelor: mode tip; numele_semnalelor: mode tip; : numele_semnalelor: mode tip); end [NUMELE_ENTITII] ; O entitate ncepe ntotdeauna cu cuvntul cheie entity, urmat de ctre numele entitii i de cuvntul cheie is. Urmtoarele sunt declaraiile portului folosind cuvntul cheie port. O declaraie a entitii se termin ntotdeauna cu cuvntul cheie end, urmat opional [ ] cu entitii: NUMELE_ENTITII este un identificator selectat de utilizator. Numele_semnalelor este alctuit dintr-o list comun separat de identificatorul selectat de utilizator care specific semnalele interfeei externe. mode: este unul dintre cuvintele rezervate pentru a indica direcia semnalului: in indic faptul c semnalul este o intrare; out indic faptul c semnalul este o ieire a entitii a crui valoare poate fi doar citit de ctre alte entiti care o utlizeaz; buffer indic faptul c semnalul este o ieire a entitii a crui valoare poate fi citit din interiorul arhitecturii entitii; inout semnalul poate fi o intrare sau o ieire. type (tipul): tipul de semnal definit de utilizator. Exemple de tipuri sunt bit, bit_vector, boolean, caracter, std_logic i std_ulogic : bit poate avea valoarea 0 i 1 ; bit_vector este un vector al valorii bitului (de ex. bit_vector(0 to 7)) ; std_logic, std_ulogic, std_logic_vector, std_ulogic_vector : pot avea 9 valori pentru a indica valoarea i puterea unui semnal. Sunt preferate tipurile Std_logic i std_ulogic n loc de bit sau bit_vector. Boolean poate avea valoarea ADEVRAT i FALS ; Integer (ntreg) poate avea o scar de valori ntregi; Real poate avea o scar de valori reale; Character (caracter) afieaz orice caracter; Time (timp) pentru a indica timpul. generic: declaraiile generice sunt opionale i determin constantele locale utilizate pentru temporizarea i mrimea (de ex. mrimea magistralei) entitii. Un generic poate avea o valoare implicit. Sintaxa pentru generic este urmtoarea: generic ( numele_constantei: tip [ :=valoare] ; numele_constantei: tip [ :=valoare] ; : numele_constantei: tip [ :=valoare] ) ;

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Ca un exemplu, o s considerm un circuit simplu care avertizeaz pasagerii unei maini atunci cnd ua mainii este deschis sau nu este pus centura de siguran n momentul n care cheia mainii este introdus n contact pentru pornire. La nivelul comportamental aceasta poate fi scris astfel : Warning = Ignition_on AND (Door_open OR Seatbelt_off) DOOR IGNITION SBELT B1 WARNING

B2

Figura 2.2. Reprezentarea structural a unui circuit BUZZER.

-- comentariu: exemplu de circuit buzzer din figura 2.2 entity BUZZER is port (DOOR, IGNITION, SBELT : in std_logic ; WARNING: out std_logic); end BUZZER;

Entitatea este numit BUZZER i are trei porturi de intrare, DOOR, IGNITION i SBELT i un port de ieire, WARNING. De notat c numele BUZZER este un identificator. Intrrile sunt indicate prin cuvntul cheie in iar ieirile prin cuvntul cheie out. Din moment ce VHDL este un tip de limbaj foarte puternic, fiecare port este definit de ctre un tip. n acest caz, vom specifica tipul std_logic. Acesta este tipul preferat al semnalelor digitale. n comparaie cu tipul bit care poate avea doar valorile 0 i 1, tipurile std_logic i std_ulogic pot avea nou valori. Acest lucru e important pentru a descrie un sistem digital care include corect valorile binare 0 i 1, la fel ca i valoarea necunoscut X, valoarea neiniializat U, - pentru nu conteaz, Z pentru impendan nalt i cteva simboluri pentru a indica puterea semnalului (de ex. L pentru 0 slab, H pentru 1 slab, W pentru valoare slab necunoscut). Tipul std_logic este definit n pachetul std_logic_1164 din librria IEEE. Tipul definete setul de valori pe care un obiect le poate avea. Acesta are avantajul c poate ajuta la crearea de modele i ajut la reducerea erorilor. De exemplu, dac cineva ncearc s asigneze o valoare ilegal unui obiect, compilatorul va semnaliza eroarea. Alte cteva exemple de declaraii a entitii sunt urmtoarele : - multiplexor cu 4 intrri i 1 ieire n care fiecare intrare este un cuvnt pe 8 bii :

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
entity mux4_to_1 is port (I0, I1, I2, I3 : in std_logic_vector (7 downto 0) ; OUT1: out std_logic_vector (7 downto 0)); end mux4_to_1;

- un exemplu de declaraie a entitii a unui bistabil D flip-flop cu setarea i resetarea intrrilor este: entity dff_sr is port (D, CLK, S, R: in std_logic; Q, Qnot: out std_logic); end dff_sr;

2.1.2. Corpul arhitecturii


Corpul arhitecturii specific cum funcioneaz un circuit i cum este implementat. Aa cum s-a prezentat mai devreme, o entitate sau un circuit poate fi specificat ntr-o varietate de moduri, precum cel comportamental, structural (componente interconectate) ct i combinai ale acestora. Corpul arhitecturii arat dup cum urmeaz:

architecture numele_arhitecturii of Numele_entitii is -- Zona de declaraii -- declaraiile componentelor -- declaraiile semnalelor -- declaraiile constantelor -- declaraiile funciilor -- declaraiile procedurilor -- declaraiile tipurilor : begin -- Stri sau instruciuni concurente : end numele_arhitecturii;

a. Modelul comportamental (behavioral) Corpul arhitecturii pentru exemplul din figura 2.1, descris la nivel comportamental este urmtorul :

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
architecture comportamental of BUZZER is begin WARNING <= (not DOOR and IGNITION) or (not SBELT and IGNITION) ; end comportamental;

Linia de nceput a corpului arhitecturii definete numele arhitecturii, de ex. comportamental (behavioral) i o asociaz cu entitatea BUZZER. Numele arhitecturii poate fi orice identificator legal. Corpul principal al arhitecturii ncepe cu cuvntul cheie begin i ofer o expresie boolean a funciei. Simbolul <= reprezint un operator de asignare i ofer valoarea expresiei de la dreapta semnalului spre stnga. Corpul arhitecturii se termin cu un cuvnt cheie end urmat de ctre numele arhitecturii. Sunt date cteva exemple dup cum urmeaz : - descrierea comportamental a porii I cu dou intrri:

entity AND2 is port (in1, in2: in std_logic; out1: out std_logic); end AND2; architecture comportamental_2 of AND2 is begin out1 <= in1 and in2 ; end comportamental_2;

- un exemplu de poart XNOR cu dou intrri : entity XNOR2 is port (A, B: in std_logic; Z: out std_logic); end XNOR2; architecture comportamental_xnor of XNOR2 is -- declaraia semnalului (a semnalelor interne X,Y) Signal X, Y: std_logic; begin X <= A and B; Y <= (not A) and (not B); Z <= X or Y; end comportamental_xnor; Liniile de cod din corpul arhitecturii realizeaz utilizarea operatorilor logici. Operatorii logici permii sunt: and, or, nand, nor, xor, xnor i not. n plus, sunt permise i alte tipuri de operatori cum ar fi relaionali, de deplasare i aritmetici. b. Descrierea structural

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Circuitul din figura 2.1 poate fi de asemenea descris utiliznd i un model structural care specific ce pori sunt utilizate i cum sunt ele interconectate. Urmtorul exemplu prezint acest lucru :

architecture structural of BUZZER is -- Declaraii component AND2 port (in1, in2: in std_logic; out1: out std_logic); end component; component OR2 port (in1, in2: in std_logic; out1: out std_logic); end component; component NOT1 port (in1, in2: in std_logic; out1: out std_logic); end component; -- declaraia semnalelor utilizate pentru interconectarea porilor Signal DOOR_NOT, SBELT_NOT, B1, B2: std_logic; begin -- liniile de cod ale instanierilor componentei U0 : NOT1 port map (DOOR, DOOR_NOT); U1 : NOT1 port map (SBELT, SBELT_NOT); U2 : AND2 port map (IGNITION, DOOR_NOT, B1); U3 : AND2 port map (IGNITION, SBELT_NOT, B2); U4 : OR2 port map (B1, B2, WARNING); end structural; Dup nceput (header) urmeaz partea declarativ care ofer componentele (porile) care urmeaz s fie utilizate n descrierea circuitelor. n exemplul nostru, am folosit o poart AND cu dou intrri, o poart OR cu dou intrri i un invertor. Aceste pori trebuie s fie prima dat definite, adic vor avea nevoie de o declaraie a entitii i un corp al arhitecturii. Acestea pot fi stocate ntr-unul dintre pachetele la care se face referire la nceputul fiierului (vezi exemplele care urmeaz). Declaraiile pentru componente ne ofer intrrile (de ex. in1, in2) i ieirea (de ex. out1). Mai departe, trebuie definite legturile interne (numele semnalelor). n exemplul nostru aceste semnale sunt denumite DOOR_NOT, SBELT_NOT, B1, B2. De notat c ntotdeauna trebuie s se declare tipul de semnal.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Liniile de cod de dup cuvntul cheie begin ofer instanierile componentelor i descriu modul cum sunt acestea interconectate. O linie de cod care instaniaz o component creeaz un nou nivel n ierarhie. Fiecare linie ncepe cu numele instanei (de ex. U0) urmat de :, de numele componentei i de cuvntul cheie port map. Acest cuvnt cheie definete cum sunt conectate componentele. n exemplul anterior, acest lucru e posibil prin asocierea poziiei : DOOR corespunde intrrii, in1, a porii NOT1 i DOOR_NOT corespunde ieirii. Similar, pentru poarta AND2 primele dou semnale (IGNITION i DOOR_NOT) corespund intrrilor in1 i respectiv in2, iar semnalul B1 corespunde ieirii out1. O cale alternativ este s se utilizeze asociaia explicit dintre porturi, aa cum se prezint mai departe :

etichet: numele-componentei port map (port1=>semnal1, port2=>semnal2,portn=>semnaln);

U0 : U1 : U2 : U3 : U4 :

NOT1 NOT1 AND2 AND2 OR2

port map port map port map port map port map

(in1 => DOOR, out1 => DOOR_NOT); (in1 => SBELT, out1 => SBELT_NOT); (in1 => IGNITION, in2 => DOOR_NOT, out1 => B1); (in1 => IGNITION, in2 => SBELT_NOT, out1 => B2); (in1 => B1, in2 => B2, out1 => WARNING);

De notat c ordinea n care aceste linii de cod sunt scrise nu au nici o legtur n execuie din moment ce aceste linii de cod sunt concureniale i de aceea sunt executate n paralel.

2.1.3. Librria i pachetele: library i cuvntul cheie use


O librrie poate fi considerat ca un loc n care compilatorul i stocheaz informaia despre o descriere a proiectului. Un pachet VHDL este un fiier sau un modul care conine declaraiile comune ale obiectelor utilizate, tipurilor de date, declaraiile componentelor, semnalelor, procedurilor i funciilor care pot fi mprite ntre diferite modele VHDL. Am menionat anterior c std_logic este definit n pachetul ieee.std_logic_1164 din librria ieee. Pentru a utiliza std_logic este nevoie s se specifice librria i pachetul. Acest lucru este fcut de la nceputul fiierului VHDL utiliznd cuvintele cheie library i use dup cum urmeaz : library ieee; use ieee.std_logic_1164.all; Extensia .all indic s se utilizeze tot pachetul ieee.std_logic_1164. Xilinx Foundation Express vine cu cteva pachete pentru librria ieee cum ar fi: pachetul std_logic_1164: definete tipurile de date standard; pachetul std_logic_arith: furnizeaz funcia aritmetic, conversia i comparaia tipurile signed, unsigned, integer, std_logic, std_ulogic i std_logic_vector, std_logic_unsigned; pachetul std_logic_misc: definete suplimentar tipurile, subtipurile, constantele i funciile pentru pachetul std_logic_1164. Pentru a utiliza oricare dintre acestea trebuie s se includ clauzele library i use: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Librria rezumat (synopsis) are pachetul de atribute: library SYNOPSYS; use SYNOPSYS.attributes.all; Sintaxa de declarare a unui pachet este urmtoarea : -- declaraia pachetului package numele_pachetului is declaraiile pachetului end package numele_pachetului ; -- declaraiile pachetului -- declaraia corpului pachetului package body numele_pachetului is library ieee ; declaraiile corpului pachetului use ieee.std_logic_1164.all ; end package body numele_pachetului; Depackage basic_func isbaz pentru componentele AND2, OR2, NAND2, NOR2, XOR2 exemplu, funciile de etc., sunt necesare ca s fie definite nainte s fie utilizat una din ele. Acest lucru poate fi -- ntr-unul dintre pachet, fcutdeclaraia pentru AND2 de ex. funcia_de_baz (base_func) pentru fiecare dintre component AND2 aceste componente, dup cum urmeaz : generic (DELAY: timp :=5ns); port (in1, in2: in std_logic; out1: out std_logic); end component; --declaraia pentru OR2 component OR2 generic (DELAY: timp :=5ns); port (in1, in2: in std_logic; out1: out std_logic); end component; end package basic_func ; -- declaraiile corpului pachetului library ieee ; use ieee.std_logic_1164.all; package body basic_func is -- poart AND cu dou intrri entity AND2 is generic (DELAY: timp); port (in1, in2: in std_logic; out1: out std_logic); end AND2; arhitecture model_conc of AND2 is begin out1 <= in1 and in2 after DELAY; end model_conc; -- poart OR cu dou intrri entity OR2 is generic (DELAY: timp); port (in1, in2: in std_logic; out1: out std_logic); end OR2; arhitecture model_conc2 of AND2 is begin out1 <= in1 or in2 after DELAY; end model_conc2; 8 end package body basic_func;

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

De notat c s-a inclus o ntrziere (delay) de 5 ns. Totui, ar trebui de notat c specificaiile ntrzierii sunt ignorate de ctre Foundation synthesis tool. A trebuit s utilizm tipul predefinit std_logic care este declarat n pachetul std_logic_1164. S-au inclus n acest pachet library i clauza use. Acest pachet are nevoie s fie compilat i plasat ntr-o librrie. O s numim aceasta library my_func. Pentru a utiliza componentele acestui pachet, o dat ce a fost declarat, se utilizeaz library i clauza use : library ieee, my_func; use ieee.std_logic_1164.all, my_func.basic_func.all; Liniile de cod library i use sunt conectate la o linie de cod a entitii subsecvent. Linia de cod library i use trebuie s se repete pentru fiecare declaraie a entitii.

3. Utilizarea mediului de programare Quarus II


3.1. Pornirea aplicaiei Quartus II
Dup instalarea tipic, iconia Quartus II ar trebui s fie vizibil pe fiecare desktop. Pentru pornirea software-ului trebuie s se dea un dublu clic pe iconi i s se atepte pn cnd apare fereastra cu numele Quartus II. NOT: Pentru computerele mai lente este posibil s dureze cteva secunde pn cnd apare fereastra. A nu se da mai multe dublu clicuri pe iconi pentru a se evita deschiderea mai multor ferestre Quartus II. Prima fereastra care va fi afiat dup deschiderea mediului de programare Quartus II este de obicei fereastra Getting Started With Quartus II Software (figura 3.1.).

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 3.1. Fereastra Getting Started Din fereastra Getting Started se poate : - crea un proiect nou (Create a New Project) - deschide un proiect deja existent Prin selectarea opiunii Open Existing Project sau Prin selectarea numelui proiectului din lista aplicaiilor deschise recent; - deschide tutorialul interactiv (Open Interactive Tutorial).

3.2. Crearea unui proiect nou


Pentru crearea unui nou proiect se selecteaz opiunea Create a New Project (New Project Wizard) din fereastra Getting Started sau din meniul File al mediului de programare Quartus II. n fereastra care se deschide se selecteaz directorul de lucru pentru proiect, se introduce un nume pentru proiectul curent, apoi se introduce un nume pentru entitatea principal a proiectului. Fereastra ar trebui s arate ca n figura 3.2. Se d clic pe butonul Next pentru a continua.

10

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 3.2. Directorul de lucru i numele proiectului n fereastra urmtoare se pot include n proiect eventualele fiiere de design existente i / sau s se specifice librrii noi, diferite de cele implicite (figura 3.3.). Pentru a continua se d clic pe butonul Next.

11

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 3.3. Adugarea de fiiere noi sau selectarea altor librrii n cea de-a treia fereastr a wizardului se selecteaz dispozitivul hardware utilizat. La Device family se selecteaz Cyclone III, la Target device se selecteaz Specific device selected in Available devices list, iar in zona Show in Available device list se selecteaz pentru Package - FBGA, pentru Pin count - 324, iar pentru Speed grade se va selecta Fastest. Din zona Available devices se va selecta circuitul EP3C25F324C6, acesta fiind circuitul de pe plcile de dezvoltare Cyclone III Starter Kit. Aceast fereastr este prezentat n figura 3.4. Pentru a continua se apas butonul Next.

12

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 3.4. Selecia circuitului FPGA corespunztor n cea de-a patra fereastr a wizardului se pot selecta unelte EDA adiionale fa de cele incluse deja n mediul de programare Quartus II. Astfel se pot selecta unelte pentru introducerea schemelor i sintez, pentru simulare sau pentru analiza temporar. Deoarece noi vom utiliza uneltele incluse n mediul de programare Quartus II, n aceast fereastr nu vom face nicio setare. Fereastra este prezentat n figura 3.5. Pentru continuare se d clic pe butonul Next.

13

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 3.5. Selecia uneltelor EDA externe n ultima fereastr a wizardului avem prezentat un sumar al seleciilor fcute pn acum. Pentru a termina procesul de creare al unui proiect nou se d clic pe butonul Finish.

Figura 3.6. Sumarul setrilor efectuate 14

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

3.3. Implementarea schemei


Dup crearea noului proiect se intr n fereastra de lucru a mediului de dezvoltare Quartus II, dup cum se poate observa n figura 3.7.

Figura 3.7. Fereastra de lucru a programului Quartus II Pentru a putea implementa o schem nou, va trebui creat un fiier nou, de tipul Block Diagram / Schematic File. Pentru aceasta, din meniul File al mediului de dezvoltare se alege opiunea New. Din fereastra nou deschis se alege opiunea Block Diagram / Schematic File din cadrul opiunii Design Files, dup cum se poate observa n figura 3.8. Dnd clic pe butonul OK se va deschide foaia de lucru pentru introducerea schemei. Se va salva fiierul cu schema bloc prin selecia opiunii Save as din meniul File al mediului de dezvoltare Quartus II. De reinut c numele fiierului .bdf trebuie s fie numele declarat la crearea proiectului pentru entitatea principal. Dup salvarea fiierului cu schema bloc se poate trece la implementarea efectiv a schemei. Pentru a se introduce o component n schem, se d dublu clic pe foaia de lucru. Se deschide astfel fereastra de selecie a simbolurilor din cadrul bibliotecilor. Se selecteaz din lista de biblioteci megafunctions->gates i se selecteaz biblioteca lpm_and corespunztoare porii logice I (figura 3.9.). Se d clic pe butonul OK. Se va deschide o nou fereastr, ce ne permite configurarea componentei selectate la pasul anterior (figura 3.10.).

15

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 3.8. Crearea fiierului cu diagrama bloc

Figura 3.9. Selectarea componentei dorite

16

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR n aceast fereastr selectm tipul de fiier de ieire n limbaj HDL n care va fi convertit schema noastr. Putem selecta AHDL, VHDL i Verilog. Se va selecta limbajul VHDL. Numele fiierului de ieire va rmne cel selectat implicit, nu se va modifica. Pentru a merge mai departe, se va da clic pe butonul Next.

Figura 3.10. Managerul de componente Noua fereastr ce apare ne permite selecia parametrilor componentei selectate (figura 3.11.). Vom seta numrul de intrri al porii logice I ca fiind 2, iar limea intrrilor va fi setat la 1 bit. Pentru a continua se apas butonul Next.

Figura 3.11. Configurarea componentei 17

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Urmtoarea fereastr ce se deschide ne indic fiierele necesare simulrii schemei. Tot aici putem selecta dac s generm sau nu netlista pentru simularea temporal i pentru estimarea resurselor ocupate de componenta noastr (figura 3.12.).

Figura 3.12. Setrile pentru simulator Ultima fereastr ne afieaz lista fiierelor ce vor fi create. Dac dorim s crem i alte fiiere, le putem selecta aici din list, bifnd corespunztor csua din faa numelui fiierului. Pentru terminarea operaiunii de selectare i configurare a componentei, se d clic pe butonul Finish. Dup nchiderea ferestrei de configurare, se revine n foaia de lucru curent a mediului de programare Quartus II (figura 3.14). Componenta selectat este activ i o putem plasa pe foaia de lucru dnd un singur clic pe aceasta. Dup plasarea componentei va trebui s plasm i pinii pentru conectarea porii n exterior. Pentru aceasta vom da dublu clic pe suprafaa liber a foii de lucru, intrnd astfel n fereastra de selecie a simbolurilor din biblioteci (figura 3.15.). De aceast dat vom selecta din lista de biblioteci primitives->pin->input pentru a selecta pinii de intrare, respectiv output pentru pinii de ieire. Se d clic pe butonul OK i se revine n foaia de lucru, cu pinul activ. Pentru plasarea pinului, se d clic pe foaia de lucru n locul dorit. Se repet operaiunea pn sunt plasai toi pinii.

18

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 3.13. Lista fiierelor ce vor fi create

Figura 3.14. Plasarea componentei pe foaia de lucru 19

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 3.15. Selectarea pinilor Dup plasarea tuturor pinilor pe foaia de lucru se trece la conectarea lor cu terminalele porii logice. Pentru aceasta se d clic pe butonul Orthogonal Node Tool aflat n lista de butoane din partea stng a foii de lucru i se unesc, pe rnd, terminalele porii logice cu terminalele pinilor corespunztori (figura 3.16.). Pentru schimbarea numelor pinilor, se d dublu clic pe fiecare pin n parte i, n fereastra de configurare ce se deschide, se introduce numele dorit pentru fiecare pin.

Figura 3.16. Schema final 20

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Dup terminarea implementrii schemei se trece la analiza i elaborarea ei. Din meniul Processing se selecteaz submeniul Start cu opiunea Start Analysis & Elaboration (figura 3.17.).

Figura 3.17. Pornirea etapei de analiz i elaborare Pentru a putea realiza simularea funcional trebuie s crem un fiier cu stimulii pentru intrri. Pentru a realiza acest lucru, din meniul File se selecteaz opiunea New. n fereastra care apare selectm opiunea Vector Waveform File din meniul Verification / Debugging Files, apoi facem clic pe butonul OK. n fereastra nou aprut introducem intrrile porii logice I, cu numele selectate pentru pinii de intrare, apoi generm forma de und dorit pentru fiecare intrare n parte folosind butoanele din partea stng a ferestrei de lucru (figura 3.18.). Dup setarea semnalelor pentru cele dou intrri, se salveaz fiierul selectnd opiunea Save as din meniul File. Numele fiierului .vwf va fi acelai cu al schemei .bdf.

21

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 3.18. Crearea fiierului cu stimulii de intrare Pentru simularea funcional a schemei se va deschide simulatorul ncorporat n mediul de dezvoltare Quartus II prin selectarea opiunii Simulator Tool din meniul Processing. Se va deschide fereastra simulatorului (figura 3.19). La opiunea Simulation mode se va selecta Functional, iar la opiunea Simulation input se va selecta fiierul cu stimulii pentru intrri creat anterior. Apoi se va da clic pe butonul Generate Functional Simulation Netlist. Dup terminarea generrii netlistei funcionale se poate porni simularea dnd clic pe butonul Start. Dup ncheierea simulrii se poate vedea raportul simulrii dnd clic pe butonul Report. Se va deschide o nou fereastr n care apar semnalele de intrare generate anterior i semnalul de ieire obinut n urma simulrii (figura 3.20.). Se poate observa astfel dac schema funcioneaz corect.

22

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 3.19. Setarea i pornirea simulrii

Figura 3.20. Raportul simulrii 23

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Dup efectuarea cu succes a simulrii, se poate trece la implementarea practic a schemei n circuitul FPGA de pe placa de dezvoltare Cyclone III. Pentru aceasta este necesar ca pinii din schem s fie atribuii unor pini fizici ai circuitului FPGA. Acest lucru se realizeaz prin selectarea opiunii Pins din meniul Assignments. Se va deschide o fereastr n care vom putea selecta ce pini fizici vor corespunde intrrilor i ieirilor schemei (figura 3.21.). Pentru a putea observa funcionarea schemei dup ncrcarea ei n circuitul FPGA, se vor conecta cele dou intrri ale porii logice I la dou dintre butoanele programabile de ctre utilizator, iar ieirea acesteia se va conecta la unul din LED-urile programabile de ctre utilizator. Pinii corespunztori celor 4 LED-uri programabile de ctre utilizator sunt: LED LED1 LED2 LED3 LED4 PIN P13 P12 N12 N9

Pinii corespunztori celor 4 butoane programabile de ctre utilizator sunt: Buton Buton1 Buton2 Buton3 Buton4 PIN F1 F2 A10 B10

ATENIE. LED-urile sunt active (se aprind) pe 0 logic. Intrrile corespunztoare butoanelor sunt n starea 1 logic atunci cnd butoanele nu sunt apsate i trec n 0 logic atunci cnd butoanele sunt apsate. Dup ncheierea etapei de asignare a pinilor, pentru a putea ncrca i rula aplicaia pe circuitul FPGA, trebuie realizat compilarea proiectului n vederea obinerii fiierului .sof (SRAM Object File), fiier necesar programrii sistemului Cyclone III. Pentru aceasta se va selecta opiunea Start Compilation din meniul Processing. Dup terminarea compilrii i obinerea fiierului .sof, se selecteaz din meniul Tools opiunea Programmer. n fereastra care se deschide se apas butonul Hardware Setup pentru a se configura interfaa USB-Blaster necesar comunicrii cu kitul de dezvoltare Cyclone III. n acest moment, placa trebuie s fie conectat pe USB i alimentat. Se selecteaz interfaa USB-Blaster i se nchide fereastra apsnd butonul OK. n fereastra programatorului se selecteaz modul de conectare ca fiind modul JTAG, se ncarc dac este necesar fiierul .sof obinut la compilare i se d clic pe butonul Start. Dup ncrcarea 100% a programului se poate testa pe plac funcionarea schemei implementate, respectiv a porii logice I.

24

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 3.21. Asignarea pinilor

Figura 3.22. Programarea kitului de dezvoltare Cyclone III

25

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

4. Desfurarea lucrrii
1. Se vor crea proiecte pentru fiecare din porile logice fundamentale I, SAU, NU, SAU-NU, I-NU, SAU-EXCLUSIV. Se vor compila, se va simula funcional funcionarea lor i se vor implementa pe kitul de dezvoltare Cyclone III Starter Kit. Intrrile porilor logice se vor conecta la butoanele utilizator, iar ieirile acestora se vor conecta la LED-uri. 2. Se va crea o entitate numit BUZZER (exemplul prezentat n documentaia laboratorului). Se va compila i se va simula funcionarea ei i se va captura fiierul Waveform corespunztor. Se va implementa pe kitul de dezvoltare.

26