Tutorial Quartus II

De la WikiLabs
Salt la: navigare, căutare

Programarea plăcii experimentale DE1 cu ajutorul programului Quartus II (versiunea 13.0sp1)

Exemplu: sinteza unui sumator pe 4 biți.

Pentru a deschide aplicația Quartus II puteți folosi:

- shortcut-ul de pe ecran

- fișierul executabil din locația de instalare

- meniul de programe

Etapele:

1. Crearea unui proiect

Atunci când deschidem programul Quartus II apare un ecran de întâmpinare, unde avem opțiunea „Create new project”. Dacă nu vedem această fereastră, selectăm „New Project Wizard” din meniul File, sau selectăm File - New și apoi „New Quartus II Project”). În ambele cazuri, se va deschide Wizard-ul care ne ajută să stabilim setările pentru noul proiect. Dacă apere un ecran de introducere, apăsăm Next (avem posibilitatea de a bifa “Don’t show this introduction again” pentru a trece peste acest pas pe viitor).

1.1. Numele și locația proiectului

Primul pas: setarea locației proiectului (working directory) și denumirea proiectului. Proiectul se va salva intr-un director nou, creat de noi in directorul /home/student. Proiectul trebuie să aibe un nume, care este de obicei același cu entitatea top-level design (care se completează automat când scriem numele proiectului). Dacă în locația proiectului mai sunt și alte proiecte Quartus II, apare un ecran de avertizare. Proiectul din acest tutorial se numește Adder și entitatea top-level design se numește tot Adder. Veți folosi nume adecvate pentru proiectul pe care îl implementați.

1.2. Adăugarea unor fișiere

Dacă în proiectul nostru vom folosi fișiere pe care le-am scris anterior, le putem adăuga de la început în proiect în această fereastră. Dacă nu doriți sa adăugați fișiere deja create proiectului vostru puteți apăsa Next pentru a trece la pasul următor. Se mai pot adăuga fișiere în proiect și ulterior din meniul Settings.

1.3. Selectarea dispozitivului

În pasul următor (al treilea ecran din wizard) se selectează dispozitivul care va fi folosit pentru implementare. Selectați Cyclone II la Device Family. Din lista de dispozitive specifice selectati EP2C20F484C7. (La Target device trebuie sa fie selectată opțiunea „Specific device selected in Available devices list”). Apăsați apoi Next pentru a trece la pasul următor.

1.4. Selectarea simulatorului

În pagina 4 din wizard vom menționa alte programe pe care le folosim în proiectare (pentru sinteză, simulare, verificare). De exemplu, dacă vrem să folosim ModelSim, selectăm la Simulation ModelSim pentru Verilog HDL. Putem de asemenea să ne bazăm pe ce pune la dispoziție software-ul Quartus II și să trecem peste acest pas apăsând Next.

După apăsarea butonului Next va apărea ultima fereastră din New Project Wizard în care este desfășurat un rezumat al opțiunilor alese pentru crearea proiectului. După apăsarea butonului Finish proiectul va fi creat.

2. Elaborarea fișierului sursă (entitatea top-level design)

Entitatea top-level design este un fișier Verilog sau o schemă.

Dacă ați scris deja fișierele și le-ați adăugat cu Add Files, treceți la etapa următoare. Dacă doriți să adăugați fișiere în această fază (și nu le-ați adăugat anterior), folosiți meniul Assignments -> Settings pentru a adăuga fișiere și apoi treceți la etapa următoare.

In continuare se va explica modul de utilizarea al editorului de text Quartus II.


Exemplu de implementare: vom implementa un sumator pentru numere binare pe 4 biți, care va fi numit Adder.v.

Atenție! Modulul top-level trebuie să aibă numele specificat anterior, când s-a creat proiectul.

Pentru a utiliza editorul Quartus II, selectați File -> New.

Se va deschide o fereastră în care veți selecta Verilog HDL File, apăsați OK. Se va deschide editorul de text.

Selectați File -> Save As pentru a putea alege numele fișierului. În fereastra care apare, veți scrie numele fișierului - pentru entitatea top level design este cel pe care l-ați ales anterior - și bifați “Add file to current project”. Apăsați Save. Fișierul va fi salvat în directorul proiectului.

Intrati in editor și continuați prin a scrie codul Verilog.

Exemplu:


module Adder (

			output [4:0] out,

			input [3:0] in0,

			input [3:0] in1);

assign out = in0 + in1;

endmodule

Salvați fișierul folosind File -> Save sau combinația de taste Ctrl-s. Pentru mai multe opțiuni ale editorului puteți accesa Tools-> Options -> Text Editor.

3. Compilarea

Selectați Start Compilation în meniul Processing sau apăsați butonul de compilare Start Compilation (cu simbolul folosit de obicei pentru Play) și așteptați rezultatul compilării.

Ignorați mesajele de Warning (avertizări) care apar în timpul compilării - acestea se datorează faptului că nu am fixat anumiți parametri pentru implementare.

Erorile posibile în această fază sunt în principal erori de sintaxă Verilog sau erori datorate faptului că am ales greșit numele modulului top-level.

Pentru corectarea setărilor folositi meniul Settings. De exemplu, se poate modifica entitatea top-level design din meniul Assignments - Settings.

4. Configurarea pinilor de intrare/ieșire

Adăugarea fișierului de constrângeri (Pin Assignments)

În timpul compilării, compilatorul Quartus II alege pinii FPGA pe care vor fi conectate intrările și ieșirile circuitului nostru. Placa DE1 are conexiunile deja făcute între pinii FPGA și alte componente de pe placă, prin urmare nu putem folosi decât anumiți pini, conform acestor conexiuni. Pentru intrările circuitelor proiectate de noi putem folosi cele 10 comutatoare și cele butoane ale plăcii. Pentru ieșiri putem folosi cele 18 leduri (10 leduri roșii și 8 leduri verzi) și afișajul 7 segmente.

De exemplu, vom lega intrarea in0 la switch-urile SW0 - SW3, intrarea in1 la switch-urile SW4 - SW7 și ieșirea out la ledurile LEDR0 - LEDR4. Consultați tabelul din documentația plăcii pentru corespondența pinilor.

Asignarea pinilor se face folosind Assignment Editor sau Pin Planner. Selectați Assignments -> Assignment Editor. Se va deschide o fereastră ca cea din imaginea următoare:

În acest editor, trebuie să scriem toate porturile circuitului și pinii la care le conectăm. Este mai simplu să facem această asociere în Pin Planner, unde trebuie să modificăm doar coloana „Location”. Observați că modificările făcute în Pin Planner se salveză automat în Assignement Editor.

Placa DE1 are asignări fixe de pini. Terminarea unui design poate ajuta utilizatorul prin folosirea acelorași asignări de pini pentru proiecte viitoare. Se poate încărca un fișieri de Pin Assignments selectând Assignments -> Import Assignments. (Se poate utiliza fișierul cu toate asignările pinilor de pe placa DE1 – DE1_pin_assignments.csv , editând denumirile). Salvați modificările. După asignarea pinilor rezultatul va arăta ca în imaginea de mai jos:


Recompilați utilizând butonul Start Compilation și așteptați rezultatul compilării.

5. Programarea plăcii

Etapa de programare a plăcii FPGA se desfășoară în felul următor:

Porniți placa folosind butonul roșu.

Atenție: asigurați-vă în acest moment că placa este pornită (cablul de alimentare este conectat, cablul USB este conectat, butonul roșu apăsat, Switch-ul RUN/PROG este pe poziția RUN).

Selectați Tools -> Programmer (sau apăsați pe butonul Programmer) pentru a ajunge la fereastra din figura următoare:

În partea de sus, trebuie să aveți selectat USB-Blaster și Modul JTAG.

Dacă USB-Blaster nu este selectat automat, apăsați pe butonul Hardware Setup și selectați USB-Blaster în fereastra care apare.

Dacă nu apare nici un fișier în fereastră apăsați butonul Add File și selectați fișierul Adder.sof (Acest fișier este creat de compilator). Îl găsiți în folderul proiectului, în folderul Output Files.

Asigurați-vă ca device-ul selectat este EP2C20F484 (în jumătatea de jos a ecranului).

Acum puteți apăsa butonul Start și veți aștepta programarea plăcii. În colțul din dreapta sus al ferestrei aveți un indicator de progres.

Erorile în această fază se pot datora faptului că nu ați setat corect dispozitul în proiect (se poate corecta această setare greșită în meniul Assignements/Device.

După ce programarea a fost finalizată puteți testa funcționarea corectă circuitului utilizând Switch-urile SW0-SW7 și observând rezultatele sumatorului pe ledurile roșii LEDR0-LEDR4.