XILINX FPGA DESIGN WITH AUTOLOGIC II

 

Αυτό το κείμενο σκοπεύει να μας οδηγήσει στην χρήση των εργαλείων της Mentor Graphics για την σχεδίαση και εξομοίωση κυκλωμάτων. Αυτά τα εργαλεία περιλαμβάνουν QuickVHDL, Autologic, Design Architect, Design Manager και Xilinx utilities. Θα δούμε πως κάνουμε compile τις σχεδιάσεις, πως δημιουργείται το σχηματικό και εξομοιώνεται και τρέχει η σχεδίαση στο XC4003 PLD.

 

Δημιουργία ενός μοντέλου VHDL

Δημιουργούμε ένα κατάλογο εργασίας δίνοντας στο unix prompt την εντολή:

mkdir directory_name

Αυτό θα είναι το directory από το οποίο θα τρέξουμε τα εργαλεία της Mentor Graphics.

Δίνουμε την εντολή : setenv MGC_WD path, όπου path είναι η διαδρομή από το δικό μας root directory μέχρι τον κατάλογο εργασίας που δημιουργήσαμε στο προηγούμενο βήμα. Αυτή την εντολή μπορούμε να την δώσουμε στο αρχείο ‘ .cshrc’ για να αποφύγουμε να την δίνουμε κάθε φορά που συνδεόμαστε (log on) στον υπολογιστή.

Πληκτρολογούμε το παρακάτω αρχείο παράδειγμα, σε ένα text editor και το σώζουμε σαν “ sample1.vhd”. Αυτό το πρόγραμμα είναι ένα διάγραμμα καταστάσεων, όπως φαίνεται στην εικόνα 1.

 

εικόνα 1

 

entity statemachine is

port (clk , x : in bit;

y : out bit);

end statemachine;

architecture datapath of statemachine is

type state is (state0, state1, state2, state3);

signal state : states := state0;

begin

--output y based on state

y <= ‘1’ when state = state0 and x = ‘1’ else ‘0’ ;

s:

process (clk)

begin

if clk ‘ event and clk = ‘0’ then

case state is

when state0 =>

state <= state1;

when state1 =>

state <= state2;

when state2 =>

state <= state3;

when state3 =>

state <= state0;

end case;

end if;

end process;

end;

 

Compile VHDL models with QuickVHDL

Το QuickVHDL είναι ένα εργαλείο που μεταφράζει (compile) VHDL κώδικα σε ένα εξομοιώσιμο μοντέλο. Αφού το μοντέλο έχει γίνει compile μπορεί να εξομοιωθεί χρησιμοποιώντας τον QuickVHDL simulator ή να φορτωθεί στο Autologic.

Πληκτρολογούμε : qvlib work στο unix command prompt για να δημιουργήσουμε μία βιβλιοθήκη εργασίας. Αυτή η εντολή δημιουργεί ένα κατάλογο ο οποίος ονομάζεται work και περιέχει τα αρχεία που χρειάζονται για να εξομοιώσουν την σχεδίαση χρησιμοποιώντας το QVSim.

Πληκτρολογούμε : qvcom sample1.vhd –synth για να δημιουργήσουμε μοντέλο VHDL για σύνθεση. Το μοντέλο θα αποθηκευθεί στον κατάλογο sample1, ο οποίος βρίσκεται ακριβώς κάτω από τον κατάλογο work, που δημιουργήσαμε στο προηγούμενο βήμα.

Σημείωση: Δεν πρέπει να διαγράφουμε, μετακινούμε, αντιγράφουμε ή συντάσσουμε αρχεία που βρίσκονται στον κατάλογο ‘sample1’ χρησιμοποιώντας εντολές του Unix. Αν χρειαστεί να διαγράψουμε αρχεία, χρησιμοποιούμε την εντολή qvdel model_name από τον κατάλογο εργασίας ή χρησιμοποιούμε το Design Manager για να το διαγράψουμε.

 

Σύνθεση κυκλώματος με το AutoLogic II

Το Autologic II είναι ένας επεξεργαστής δικτυωμάτων (netlist processor). Συνθέτει το μοντέλο χρησιμοποιώντας λογικές εξισώσεις και αντιλαμβάνεται αυτές τις εξισώσεις χρησιμοποιώντας λογικά εξαρτήματα από μία technology-specific βιβλιοθήκη για να ‘χτίσει’ την σχεδίαση. Επίσης μπορεί να κάνει διάφορες βελτιώσεις στην σχεδίαση για να εξοικονομήσει χώρο ή να αυξήσει την απόδοση της επιλεγούσας τεχνολογίας. Για να ξεκινήσει το Autologic II, πληκτρολογούμε : alui στο Unix command prompt.

 

Φορτώνοντας τα μοντέλα VHDL σχεδίων

Χρησιμοποιώντας το ποντίκι, επιλέγουμε από το μενού στην κορυφή της οθόνης File -> Open -> Design .

Επιλέγουμε το αρχείο sample1.vhd όπως φαίνεται στην εικόνα 2.

εικόνα 2

 

Επιλογή της Destination Technology (Xilinx 4000 Family)

Από το μενού επιλέγουμε : Setup -> Destination Technology και από την παρακάτω λίστα των βιβλιοθηκών σύνθεσης που εμφανίζεται στο Destination Technology dialog box, επιλέγουμε : xc4k/default , και κατόπιν κάνουμε κλικ στο ΟΚ.

Library / Technology

sample_lib

scna20orbit_fast

scna20orbit_nom

scna20orbit_slow

xc4k/default

altera/default

Αυτό θα φορτώσει την βιβλιοθήκη Xilinx, που θα χρησιμοποιηθεί στην δημιουργία των σχηματικών. Η βιβλιοθήκη Xilinx περιέχει τα απαραίτητα λογικά εξαρτήματα για την σύνθεση των σχεδιάσεων στην XC4003 και άλλων FPGA της σειράς Xilinx4000.

Σύνθεση του δικτυώματος του κυκλώματος (Circuit Netlist)

Από το μενού επιλέγουμε : Synthesize -> Synthesize VHDL Design . Ένα dialog box, όπως αυτό της εικόνας 3, θα εμφανιστεί στην οθόνη.

Αυτό θα δημιουργήσει ένα unoptimized δικτύωμα το οποίο μπορεί να χρησιμοποιηθεί για την εξομοίωση της σχεδίασης.

εικόνα 3

 

Βελτιώνοντας την σχεδίαση του κυκλώματος

Από το μενού στην κορυφή της οθόνης επιλέγουμε : Optimize -> Optimize Design .

Ένα dialog box όπως αυτό της εικόνας 4, θα εμφανιστεί.

Σημείωση: Η βελτίωση για χώρο (Optimizing for Area) θα δημιουργήσει μία σχεδίαση η οποία χρησιμοποιεί τον ελάχιστο αριθμό λογικών πυλών για να εκτελέσει τις επιθυμητές λειτουργίες της σχεδίασης.

εικόνα 4

 

Για άλλη μία φορά επιλέγουμε : Optimize -> Optimize Type . Αυτή τη φορά επιλέγουμε : Add I/O Buffers από το dialog box.

Σημείωση: Βελτιώνοντας για Ι/Ο cells θα προσθέσει buffer εισόδου και εξόδου σε όλες τις γραμμές που έρχονται μέσα ή βγαίνουν από την σχεδίαση.

Βελτιώνοντας ξανά για χώρο (area), αλλά αυτή τη φορά επιλέγοντας “Map” από τις επιλογές “Area Optimization Options”. Αυτό θα προσθέσει εξωτερικά Ι/Ο pads στις πόρτες εισόδου και εξόδου.

 

Save the design netlist and/or schematic

Το σώσιμο της σχεδίασης θα κάνει το Autologic να δημιουργήσει αρχεία δικτυωμάτων (netlist) και (προαιρετικά) ένα σχηματικό. Από το μενού επιλέγουμε:

File -> Save -> Eddm.

Το Save Design κουτί διαλόγου θα εμφανιστεί , όπως φαίνεται στην εικόνα 5.

εικόνα 5

Όταν σωθεί η σχεδίαση, ένας νέος κατάλογος που ονομάζεται “eddm” θα προστεθεί κάτω ακριβώς από τον κατάλογο εργασίας. Όλα τα καινούργια αρχεία που παράγονται από το Autologic II θα τοποθετούνται στον καινούργιο αυτό κατάλογο. Η δομή του καταλόγου είναι η ακόλουθη.

Σημείωση: Από την στιγμή που το Autologic II δημιουργεί αυτά τα αρχεία στην μνήμη κατά την διάρκεια της λειτουργίας, όλες οι αλλαγές θα χαθούν αν δεν σωθούν πριν την έξοδο από το πρόγραμμα.

 

Βλέποντας την σχεδίαση με το Design Architect

Το Design Architect είναι ένα εργαλείο για να βλέπουμε τα σχηματικά που παράγονται από το Autologic καθώς και για να συντάσσουμε (edit) αυτά. Μπορούμε να προσθέσουμε ή να αφαιρέσουμε εξαρτήματα από την σχεδίαση. Μπορεί επίσης να ελένξει την σχεδίαση για λάθη και να παράγει αναφορές βασισμένες στην σχεδίαση.

Για να ξεκινήσει το Design Architect πληκτρολογούμε στο Unix command prompt την εντολή: pld_da.

Επιλέγουμε Design Sheet από το toolbox που βρίσκεται στα δεξιά του παραθύρου Design Architect ή κάνουμε κλικ στο Open -> Design Sheet του μενού που βρίσκεται στην κορυφή της οθόνης. Πληκτρολογούμε eddm/work/sample1 ή επιλέγουμε τον navigator όπως φαίνεται στην εικόνα 6, για να ανοίξουμε το αρχείο sheet1.

εικόνα 6

 

Αυτό θα ανοίξει το σχηματικό και θα το εμφανίσει στην οθόνη.

Κάνουμε κλικ στο View -> All για να ολόκληρο το σχηματικό στο παράθυρο.

Για να κάνουμε zoom σε μία συγκεκριμένη περιοχή της σχεδίασης, κρατάμε πατημένο το μεσαίο πλήκτρο του ποντικιού και μετακινούμε το ποντίκι από αριστερά προς τα κάτω δεξιά, πάνω από την περιοχή που θέλουμε να δούμε. Ελευθερώνουμε το πλήκτρο και η περιοχή που έχει επιλεγεί θα εμφανιστεί στο παράθυρο.

 

Τροποποίηση της σχεδίασης

Κάνουμε κλικ στο Libraries -> XACT_LIB του μενού που βρίσκεται στην κορυφή της οθόνης.

Επιλέγουμε Unified από το κουτί επιλογής βιβλιοθηκών στα δεξιά της οθόνης.

Επιλέγουμε XC4000 LIB από το κουτί επιλογής βιβλιοθηκών που βρίσκεται στα δεξιά της οθόνης.

Επιλέγουμε By Type από το κουτί επιλογής βιβλιοθηκών που βρίσκεται στα δεξιά της οθόνης.

Μπορούμε να προσθέσουμε εξαρτήματα στην σχεδίαση επιλέγοντας το εξάρτημα από την βιβλιοθήκη και τοποθετώντας το στην επιθυμητή τοποθεσία στο παράθυρο του σχηματικού. Όταν το επιθυμητό εξάρτημα έχει επιλεγεί από το κουτί επιλογής εξαρτημάτων (parts selection box), το οποίο βρίσκεται στα δεξιά της οθόνης, αυτό αυτόματα προσκολλάται στον δείκτη του ποντικιού. Για προσθέσουμε το εξάρτημα απλά μετακινούμε το ποντίκι μέχρι το highlighted εξάρτημα βρεθεί πάνω από την επιθυμητή θέση και κάνουμε κλικ το αριστερό πλήκτρο του ποντικιού. Το εξάρτημα θα προσκολληθεί μόνο του στο κύκλωμα.

 

Δίνοντας ονόματα στα pads

Σημείωση: Πριν τοποθετήσουμε αριθμούς στα pins, στα pads εισόδου και εξόδου, πρέπει να καθορίσουμε κατάλληλα pins που θα χρησιμοποιηθούν στο Xilinx demonstration board.

Τοποθετούμε τον δείκτη του ποντικιού πάνω στην ετικέτα (label) PXX που βρίσκεται στο pad. Πατάμε πάνω στο πληκτρολόγιο. Η ετικέτα στο pad θα υπερφωτισθεί και ένα dialοg box θα εμφανισθεί στο κάτω μέρος της οθόνης. Χρησιμοποιώντας το ποντίκι, κάνουμε κλικ στο text box και πληκτρολογούμε τον επιθυμητό αριθμό (πχ P61), και τότε πατάμε το πλήκτρο. Η εικόνα 7 δείχνει ένα σχηματικό που έχει παραχθεί από το Autologic II για το μοντέλο sample1, με εισόδους και εξόδους ορισμένες στα pins 67,68 και 61 αντίστοιχα.

εικόνα 7

 

Managing the project

Το Design Manager είναι ένα σύστημα διαχείρισης των αρχείων των μοντέλων που δημιουργούμε. Μπορούμε να δούμε, σβήσουμε, συντάξουμε και να διαχειριστούμε τα μοντέλα μας από αυτό το εργαλείο. Επίσης μπορούμε να ξεκινήσουμε και κάποια από τα άλλα εργαλεία της Mentor Graphics από εδώ. Για να ξεκινήσει το Design Manager πληκτρολογούμε στο Unix command prompt : pld_dmgr.

εικόνα 8

 

Create a Viewpoint with PLD DVE

Το πρόγραμμα PLD DVE είναι ένα εργαλείο το οποίο δημιουργεί ένα viewpoint για την σχεδίαση. Αυτά τα viewpoints χρησιμοποιούνται από το QuickSim όταν εξομοιώνουμε την σχεδίαση.

Επιλέγουμε το εικονίδιο pld_dve από το παράθυρο tools, που βρίσκεται στην αριστερή πλευρά της οθόνης και κάνουμε διπλό κλικ σε αυτό για να ξεκινήσει το πρόγραμμα PLD DVE. Ένα dialog box όπως αυτό της εικόνας 9, θα εμφανιστεί.

Πληκτρολογούμε eddm/work/sample1 στο Design Object’ text box.

Επιλέγουμε XC4000” από τις επιλογές PLD Technology.

Κάνουμε κλικ στο ΟΚ ή πατάμε το <Enter> για να αρχίσει η διαδικασία δημιουργίας των viewpoint.

 

εικόνα 9

 

Εξομοίωση της σχεδίασης με το QuickSim II

Το QuickSim II είναι ένα εργαλείο το οποίο θα διαβάσει το δικτύωμα (netlist) του σχηματικού της σχεδίασης και θα εξομοιώσει την λειτουργία του όπως αυτή θα γινόταν στο τσιπ. Είναι πολύ χρήσιμο για τον έλεγχο της λειτουργίας της σχεδίασης για να σιγουρευτούμε ότι θα μας δώσει τα επιθυμητά αποτελέσματα.

 

Κάλεσμα (invoke) του QuickSimII και φόρτωμα του δικτυώματος

Επιλέγουμε το εικονίδιο QuickSim II από το παράθυρο tools, στο αριστερό μέρος της οθόνης και κάνουμε διπλό κλικ σε αυτό για να ξεκινήσει το πρόγραμμα. Ένα dialog box όπως αυτό της εικόνας 10, θα εμφανισθεί.

Στο “Design Pathname text box πληκτρολογούμε : eddm/work/sample1.

Κάνουμε κλικ στο ΟΚ ή πατάμε το <Enter> για αρχίσει το QuickSim II.

 

εικόνα 10

 

 

Εμφάνιση σημάτων στο παράθυρο List

εικόνα 11

 

 

εικόνα 12

 

Δημιουργία αρχείου Force

Ο καθορισμός των ακολουθιών των διεγέρσεων των εισόδων γίνεται εύκολα με ένα αρχείο “force file”, στο οποίο όλες οι διεγέρσεις των εσόδων είναι σε μία λίστα με ζευγάρια χρόνου-τιμής (time-value pairs). Με την χρήση ενός κειμενογράφου δημιουργούμε ένα ASCII force file παρόμοιο με το παρακάτω.

--- initialize values

force // globalsetreset 1 0

force x 0 0

force y 0 0

force clk 0 0

force state 0 0

force // globalsetreset 0 60

-- start simulation

force clk 0 60

force clk 1 80

force clk 0 100

force clk 1 120

force clk 0 140

force clk 1 160

force clk 0 180

force clk 1 200

force clk 0 220

force clk 1 240

force clk 0 260

force clk 1 280

force clk 0 300

force clk 1 320

force clk 0 340

force clk 1 360

force clk 0 380

force x 1 380

force clk 1 400

force clk 0 420

force clk 1 440

force clk 0 460

force clk 1 480

force clk 0 500

force clk 1 520

force clk 0 540

run 600

 

Τρέχοντας την εξομοίωση και αναλύοντας τα αποτελέσματα

Από το μενού στην κορυφή της οθόνης επιλέγουμε : Setup -> Force -> From File .

Ένα dialog box όπως αυτό της εικόνας 12 θα εμφανισθεί. Πληκτρολογούμε force_control ή χρησιμοποιούμε τον navigator για να φορτώσουμε το αρχείο και πατάμε <Enter>. Αυτό θα κάνει τον εξομοιωτή να τρέξει το force file. Οι τιμές των σημάτων θα εμφανισθούν στο παράθυρο List , όπως φαίνονται στην εικόνα 13.

εικόνα 13

 

Η λειτουργία του “μοντέλου” sample1 είναι να κάνει κύκλο από κατάσταση σε κατάσταση, δίνοντας μία τιμή στην έξοδο y η οποία βασίζεται στο σήμα εισόδου x. Αν η τιμή του x είναι 1 την στιγμή της μετάβασης μεταξύ των state3 και state0, η τιμή του y θα γίνει 1, αλλιώς η τιμή του y είναι 0.

Για να ελένξουμε αν η έξοδος του μοντέλου είναι σωστή, κοιτάμε τις τιμές των x και y κατά την διάρκεια της μετάβασης από κατάσταση σε κατάσταση. Το σήμα y είναι 1 μόνο όταν το x είναι 1 και state είναι 0.

 

Build the XC4003 Chip Design Using the Xilinx Tools

Τα εργαλεία Xilinx χρησιμοποιούνται για να προετοιμάσουν την σχεδίαση για να τρέξει στο XC4000 demonstration board.

Μετατροπή του σχηματικού στο Xilinx Netlist Format:

Στο Unix command prompt πληκτρολογούμε :

Men2xnf8 sample1 –p xc4003apc84-5 –verbose .

Αυτή η εντολή μετατρέπει το σχηματικό σε ένα EDIF netlist και κατόπιν σε Xilinx netlist XNF file.

 

Δημιουργία της σχεδίασης και παραγωγή ενός bitstream αρχείου:

Στο Unix command prompt πληκτρολογούμε : xmake –x sample1 .

Αυτή η εντολή τρέχει μερικά εργαλεία τα οποία χωρίζουν σε τμήματα (partition) την σχεδίαση, τοποθετούν και δρομολογούν (route) την σχεδίαση για το XC4003 PLD. Αυτή η εντολή παράγει επίσης και ένα bitstream αρχείο, το οποίο καλείται sample1.bit , το οποίο μπορεί γίνει downloaded στο XC4000 demonstration board, ώστε η σχεδίαση να μπορεί να τρέξει στο τσιπ.

 

Ελέγχοντας το κύκλωμα στο XC4003 Demonstration Board

Για να ελένξουμε ένα κύκλωμα στο XC4003 Demonstration Board, τα pins εισόδου και εξόδου πρέπει να συνδεθούν σε διακόπτες και LED αντίστοιχα, η σχεδίαση να φορτωθεί (download) στο board μέσω του Xchecker cable, και τότε οι διακόπτες να δώσουν διάφορα σήματα έτσι να παραχθούν επιθυμητές αποκρίσεις από το κύκλωμα.

Σύνδεση των Ι/Ο pins σε διακόπτες και LED

Download της σχεδίασης μέσω του Xchecker cable

 

 

Eπιστροφή στο Mentor Graphics Tools