Sunteți pe pagina 1din 11

Limbaje moderne de descriere hardware Laborator 1

Utilizarea programului Xilinx ISE

Pornirea ISE
Pentru a începe ISE, faceţi dublu-clic pe pictograma de pe desktop

sau porniţi ISE din meniul Start, selectând:


Start → All Programs→ Xilinx ISE Design Suite 11 → ISE→ Project Navigator
Notă: calea dvs. de pornire este stabilită în timpul procesului de instalare şi poate să difere
de cea de mai sus.

Accesarea Help
La orice moment, puteţi accesa ajutorul online pentru informaţii suplimentare despre
software-ul ISE şi unelte asociate.
Pentru a deschide Help (Ajutor), realizaţi una din următoarele:
• apăsaţi F1 pentru a vizualiza Help pentru instrumentul sau funcţia specifică pe care le-aţi
selectat sau evidenţiat.
• Lansează ISE Help Contents din meniul Help. Acesta conţine informaţii despre crearea
şi întreţinerea completă a procesului de proiectare în ISE.

Figura 1: Comenzi ISE Help

Creaţi un nou proiect


Creaţi un nou proiect ISE care va corespunde dispozitivului de pe placa demonstrativă
FPGA Spartan-3 Kit.

Pentru a crea un nou proiect:


1. Selectaţi File> New Project ... Apare New Project Wizard.
2. Scrieţi tutorial în câmpul Project Name.
3. Introduceţi sau căutaţi o locaţie (calea directorului) pentru noul proiect. Un subdirector
tutorial este creat automat.
4. În câmpul Description introduceţi textul "Primul proiect folosind Xilinx ISE"
5. Verificaţi că este selectat HDL de la lista Top-Level Source Type. Proiectarea se va face
folosind un limbaj de descriere hardware (HDL – hardware description language)
6. Click pe Next pentru a trece la pagina de proprietăţi de dispozitiv.
Limbaje moderne de descriere hardware Laborator 1

Figura 2: Crearea unui nou proiect.

7. Completaţi informaţiile privind dispozitivul şi proprietăţile proiectului, aşa cum este


arătat mai jos:
♦Product Category: All
♦Family: Spartan3A and Spartan3AN
♦Device: XC3S400A
♦Package: FT256
♦Speed Grade: -5
♦Top-Level Module Type: HDL
♦Synthesis Tool: XST (VHDL/Verilog)
♦Simulator: ISim (VHDL/Verilog)

♦ Verificaţi că Enable Enhanced Design Summary este selectat.


Lăsaţi valorile implicite în restul de câmpuri.
Când tabelul este complet, proprietăţile proiectului dvs. vor arăta astfel:
Limbaje moderne de descriere hardware Laborator 1

Figura 3: Proprietăţi dispozitivului proiectului

8. Faceţi clic pe Next pentru a trece la fereastra Create New Source (Creaţi un nou fişier
sursă) în New Project Wizard (asistentul pentru crearea unui proiect nou). La sfârşitul
secţiunii următoare, noul proiect va fi complet.

Creaţi o sursă HDL


În această secţiune, veţi crea pentru început fişierul HDL (în limbaj de descriere hardware)
de nivelul cel mai înalt pentru proiect. Stabiliţi limbajul pe care doriţi să-l utilizaţi pentru
tutorial.

Crearea unei surse Verilog


Creaţi fişierul Verilog sursă Top-Level pentru proiect, după cum urmează:
1. Faceţi clic pe New Source în caseta de dialog New Project.
Notaţi în tabelul de mai jos care sunt tipurile de fişiere sursă ce pot fi create din această
fereastră de dialog. Folosiţi butonul More Info pentru a completa rubrica Descriere.

Tip fişier sursă Descriere


Limbaje moderne de descriere hardware Laborator 1

2. Selectaţi Verilog Module ca tip sursă în caseta de dialog New Source. Ca urmare
limbajul de descriere hardware va fi Verilog.
3. Scrieţi numele de fişier counter.
4. Verifică dacă Add to Project (Adauga la proiect) este selectată.
5. Faceţi clic pe Next.
6. Declaraţi porturile circuitului counter prin completarea informaţiilor porturilor, aşa cum
este arătat în figura 4.
7. Apăsați Next, apoi Finish în caseta de dialog New Source Information pentru a încheia
sursa șablonului de fişier nou.
8. Faceţi clic pe Next, apoi Next, apoi Finish.
Fişierul sursă conţinând modulul counter este afişat în Workspace (zona de lucru), şi
modulul counter în fila Sources ce conţine fişierele sursă, aşa cum este arătat în figura 5.

Figura 4: Definirea modulului.


Limbaje moderne de descriere hardware Laborator 1

Figura 5: Proiect nou în ISE

Folosirea şabloanelor de limbaj (Verilog)


Următorul pas în crearea unei noi surse o constituie adăugarea descrierii comportamentale
pentru counter.
Utilizaţi un exemplu simplu de cod counter din ISE Language Templates şi
personalizaţi-o pentru proiectul de numărător.
1. Plasaţi cursorul pe rândul de mai jos de declaraţia output [3:0] count_out; .
2. Deschideţi Language Templates prin selectarea Edit→ Language Templates…

Notă: Puteţi pune alături fereastra Language Templates şi de fişierul counter, prin
comanda Window → Tile Vertically, pentru a le face vizibile pe ambele.
3. Folosind simbolul "+", pentru a parcurge următorul cod exemplu:

Verilog → Synthesis Constructs → Coding Examples → Counter → Binary →


Up/Down Counters → Simple Counter

4. Cu Simple Counter selectat, selectaţi Edit → Use in File, sau selectaţi butonul Use
Template in File din bara de instrumente. Acest pas copie şablonul în fişier sursă counter.

5. Închide Language Templates.

Editarea finală a sursei Verilog


1. Pentru a declara şi iniţializa registrul care stochează valoarea numărătorului, modifică
Limbaje moderne de descriere hardware Laborator 1

instrucţiunea declaraţie din prima linie a şablonului, după cum urmează:


înlocuieşte: reg [<upper>: 0] <reg_name>;
cu: reg [3:0] count_int = 0;
2. Personalizează şablonul pentru numărător prin înlocuirea numelor formale ale
semnalului şi portului cu cele reale, după cum urmează:
♦ înlocuiţi toate apariţiile de <clock> cu clock
♦ înlocuiţi toate apariţiile de <up_down> cu direction
♦ Înlocui toate apariţiile <reg_name> cu count_int
3. Adăugaţi următoarea linie deasupra endmodule pentru a atribui o valoare de registru
portului de ieşire:
assign count_out = Count_int;
4. Salvaţi fişierul, prin selectarea File → Save.

Când aţi terminat, codul pentru numărător va arata astfel:


module counter(
input clock,
input direction,
output [3:0] count_out
);
reg [3:0] count_int = 0;

always @(posedge clock)


if (direction)
count_int <= count_int + 1;
else
count_int <= count_int - 1;

assign count_out = Count_int;

endmodule

Acum aţi creat sursa Verilog pentru proiectul tutorial.

Verificarea sintaxei pentru modulul counter


Când fişierele sursă sunt complete, verificaţi sintaxa proiectului pentru a găsi eventualele
erori şi greşeli de scriere.
1. Verificaţi dacă opţiunea Sources for Implementation este selectată în partea de sus a
ferestrei Sources.

Figura 6: Selectarea opţiunii pentru implementare.


Limbaje moderne de descriere hardware Laborator 1

2. Selectaţi sursa counter din fereastra Sources pentru a afişa procesele asociate din
fereastra Processes.
3. Faceţi clic pe "+" alături de Synthesize-XST pentru a deschide grupul proceselor.
4. Dublu clic pe procesul Check Syntax.

Notă: Trebuie să corectaţi orice erori găsite în fişierul sursa al dvs. Puteţi verifica dacă sunt
erori în fila Console a ferestrei Transcript. Dacă veţi continua fără ca sintaxa să fie corectă,
nu veţi putea să simulaţi sau să sintetizaţi circuitul dvs.
5. Închideţi fişierul HDL.

Simularea circuitului
Verificarea folosind simularea comportamentală
Creaţi o formă de undă pentru un banc de test (test bech waveform) conţinând stimuli de
intrare care se poate utiliza pentru a verifica funcţionalitatea modulului counter. Forma de
undă este reprezentarea grafică a stimulilor generaţi de bancul de test.

1. Selectaţi fişierul HDL counter în fereastra Sources.


2. Creează un fişier sursă pentru un stand de test nou, prin selectarea Project → New
Source.
3. În asistentul New Source Wizard, selectaţi Verilog Test Fixture ca tip de sursă, şi
scrieţi counter_tb în câmpul File Name.
4. Faceţi clic pe Next.
5. Fereastra Associate Source (Asociere sursă) arată că asociaţi standul de test cu fişierul
sursă counter. Faceţi clic pe Next.
6. Pagina Summary (Sumar) arată că sursele vor fi adăugate la proiect, şi prezintă
directorul sursă, tipul şi numele. Faceţi clic pe Finish.

Această comandă crează fişierul counter_tb care conţine o parte din elementele necesare
standului de test şi îl deschide pentru ca proiectantul să adauge restul blocurilor necesare. Sunt
create automat numele modulului, semnalele necesare, este instanţiat modulul ce urmează a fi
testat cu numele implicit (uut), se iniţializează semnale de intrare. Proiectantului îi rămâne
sarcina să specifice stimulii şi modul de afişare a rezultatelor simulării. Completaţi codul
sursă a standului de test ca să arate ca cel de mai jos.

`timescale 1ns / 1ps

////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 18:01:26 10/02/2011
// Design Name: counter
// Module Name: c:/work/xilproj/tutorial/counter_tb.v
// Project Name: tutorial
// Target Device:
// Tool versions:
// Description:
//
// Verilog Test Fixture created by ISE for module: counter
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
Limbaje moderne de descriere hardware Laborator 1

////////////////////////////////////////////////////////////////////////////////

module counter_tb;

// Inputs
reg clock;
reg direction;

// Outputs
wire [3:0] count_out;

// Instantiate the Unit Under Test (UUT)


counter uut (
.clock(clock),
.direction(direction),
.count_out(count_out)
);

initial begin
// Initialize Inputs
clock = 0;
direction = 0;

// Wait 100 ns for global reset to finish


#100;

// Add stimulus here

#500 direction=1;

#1000 direction=0;

end

always begin
#5 clock=~clock;
end

initial begin
$monitor(" clock : %b %b %b \n",clock, direction, count_out);
end

endmodule

Pentru simulare asiguraţi-vă că în fereastra Sources este selectat Simulation.

Figura 7: Selectarea opţiunii pentru simulare comportamentală (Simulation Behavioral).

Selectaţi modulul counter_tb şi în fereastra Processes faceţi dublu clic pe Behavioral


Check Syntax pentru a verifica că acest cod nu are greşeli de sintaxă şi apoi dacă totul este în
ordine daţi dublu clic pe Simulate Behavioral Model.
Limbaje moderne de descriere hardware Laborator 1

Această comandă deschide fereastra programului ISim care realizează simularea


circuitului supus semnalelor din standul de test, rezultatele fiind afişate sub forma grafică a
formelor de undă
Urmăriţi de asemenea în partea de jos, în fereastra Console, rezultatele simulării afişate cu
ajutorul funcţiei $monitor.

Figura 8: Rezultatele simulării afişate în fereastra programului ISim.

Cu ajutorul butoanelor se poate mări (Zoom In), micșora (Zoom Out),


afișa întreaga simulare (Zoom to Full View) sau mări o zonă selectată din simulare (Zoom to
Selected).
Folosiți Zoom to Full View pentru a vedea întreaga simulare.
Utilizând informaţiile afişate în fereastra de simulare determinaţi care este perioada
semnalului de tact şi care este frecvenţa acestuia şi le treceţi în tabelul de mai jos:

Semnal Perioada Frecvenţa


clock
Limbaje moderne de descriere hardware Laborator 1

Fig. 9. Afișarea întregii simulări.

Dați clic în punctul în care semnalul direction își schimbă valoarea din 0 în 1 și apoi
apăsați de trei ori butonul Zoom Out. Veți observa zona respectivă mai în detaliu.

Fig. 10. Vizualizarea mai în detaliu a simulării.

Barele de butoane ale ferestrei de simulare conțin și alte butoane care pot fi folosite pentru
navigarea prin formele de undă ale simulării (salt la punctul inițial, respectiv final al simulării,
salt la tranziția anterioară, respectiv ulterioară punctului actual etc). În felul acesta, formele de
undă ale semnalelor pot fi analizate pentru a vedea dacă descrierea circuitului corespunde
celei așteptate.
Introduceți mai multe puncte de schimbare a sensului de numărare introducând linii de cod
astfel încât să rezulte următorul cod:

// Add stimulus here


#500 direction = 1;
#100 direction = 0;
#100 direction = 1;
#1000 direction = 0;

Inspectați punctele de tranziție și vedeți dacă numărătorul îşi schimbă într-adevăr direcția
de numărare.
Limbaje moderne de descriere hardware Laborator 1

În fereastra formelor de undă, selectați semnalul count_out. Dați clic dreapta și apoi
selectați modul de afișare în format zecimal folosind comanda Radix → Unsigned Decimal.
Conținutul numărătorului este astfel afișat în format zecimal fără semn.
Înlocuiţi linia de cod #5 clock=~clock; cu #25 clock=~clock;, refaceţi simularea şi
completaţi tabelul de mai jos cu noile valori ale perioadei şi frecvenţei semnalului clock.

Semnal Perioada Frecvenţa


clock

Dați comanda File→Exit pentru a ieși din modul de simulare a circuitului.

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