Introduction to Sequence Detectors and CPLDs Introduction Σε αυτό το εργαστήριο θα κάνουµε µια επανάληψη στο πώς δηµιουργούµε και συντάσσουµε ένα project για την programmable logic, προγραµµατισµένη λογική χρησιµοποιώντας το ISE και θα δείξουµε ποια είναι τα αναγκαία βήµατα για να φορτώσουµε το project µας σε ένα IC, τσιπ. Σε αυτό το εργαστήριο θα χρησιµοποιήσουµε το Coolrunner CPLD. In front of you is a black plastic board with two circuit boards on it. There should be labels. One should say FPGA and the other CPLD. We are going to use the CPLD board today. Θα χρησιµοποιήσουµε το α Coolrunner XPLA CPLD που είναι τοποθετηµένο στο Digilent demo board όπως το βλέπετε στην εικόνα πιο πάνω. Το CPLD είναι ένα IC σε τετραγωνισµένη µορφή και έχει 44-ποδαράκια. Το CPLD βρίσκετε στην µέση τις πλακετα που έχετε µπροστά σας. Ανάψετε το CPLD από το power switch. Εάν το CPLD ήταν προηγουµένως προγραµµατισµένο, µπορεί να δείτε µερικά φώτα να αναβοσβήνουν. Goals After completing this lab, you will be able to: Perform the basic operations to create, synthesize, simulate and download a project into a CPLD. Recognize basic characteristics of a CPLD Identify capabilities of XCR development board To use behavioral level of abstraction to describe a sequence detector. Design Description : Sequence Detectors Η ανίχνευση ακολουθίας είναι η αναγνώρισης µιας προκαθορισµένης σειράς εισόδων. Σηµειώστε ότι αυτό είναι ένα ακολουθιακό κύκλωµα εποµένως θα χρειαστούµε ένα clock, ρολόι. εδοµένου ότι XCR- CPLD board που θα εργαζόµαστε δεν περιλαµβάνει ένα ρολόι, θα χρησιµοποιήσουµε ένα αργό ρολόι που έχουµε: το δάχτυλό σας! ηµιουργήστε έναν ανιχνευτή ακολουθίας χρησιµοποιώντας VHDL που θα έχει τα ακόλουθα χαρακτηριστικά: Σειριακή είσοδο X Η ακολουθία που θα ανιχνεύεται είναι 10010. Πέντε bits έξοδος Z µε τιµή 00000 όταν δεν ανιχνεύεται καµία ακολουθία, 0000 1 όταν ανιχνεύεται το πρώτο bit της ακολουθίας, 00010 για το δεύτερο bit, 00100 για το τρίτο bit, 01000 για το τέταρτο και 10000 όταν ανιχνεύεται ολόκληρη η ακολουθία.
Εάν η είσοδος Υ είναι ένα, το σύστηµα θα κάνει reset και η έξοδος θα έχει τιµή 00000. Design Analisis Ο ανιχνευτής ακολουθίας θα ανιχνεύσει την ακολουθία 10010. Ο σχεδιασµός του ανιχνευτή πρέπει να αρχίσει µε ένα διάγραµµα καταστάσεων όπως φαίνεται figure 1. Figure 1; State diagram Figure 2; Block diagram Ένα βασικό διάγραµµα καταστάσεων του ανιχνευτή ακολουθίας παρουσιάζεται στο σχήµα 2. Start Project Navigator and Create the Project Step 1 1. ηµιουργηστε files for the project; As you have done previously, create a new directory for your project with the following format: C:\home\student_name\lab6. Download the files sequence.vhd, sequence_tb.vhd and sequence.ucf provided at the lab website and save them in your new directory. Make sure you are saving them without a.txt extension but a.vhd or.ucf extension. 2. Ανοιξετε το ISE software; Πηγαίνετε στο Start Menu Programs Xilinx ISE 6 Project Navigator. (or you can also look for the ISE icon on your desktop) 3. ηµιουργήστε το lab6 project; Από το Project Navigator παράθυρο, επιλέξτε το File New Project και στα setup options να τα αλλάξετε όπως δείχνει το figure 3. Click Next. 4. Setup CPLD options; Το figure 4 σας δείχνει τι πρέπει να βάλετε στο επόµενο παράθυρο που έχετε µπροστά σας. Σηµειώστε ότι το είναι σηµαντικό να επιλέξετε το σωστό αριθµό του CPLD για το project σας για να µπορεί να δουλέψει σωστά. Υπάρχουν τρόποι να αλλαχτεί αυτός ο αριθµός του CPLD µετά από την δηµιουργία του project σας, αλλά είναι ευκολότερο να επιλεχτεί το σωστό CPLD από την αρχή. 5. Όπως έχετε κάνει και στα προηγούµενα εργαστήρια κατεβαστέ τα αρχεία πού χρειάζεστε 2
για το lab6 από την ιστοσελίδα του µαθήµατος και τοποθετείστε στο κατάλογο C:\home\student_name\lab6. (sequence.vhd, sequence_tb.vhd and sequence.ucf). Σιγουρευτείτε ότι τα σώζετε χωρίς το.txt extension αλλά µε.vhd ή.ucf extension. 6. 7. Add VHDL code στο project; Πατήστε Next στο επόµενο παράθυρο (figure 5). Πατήστε στο Add Source και κοιτάξτε για τα αρχεία sequence.vhd (VHDL Design file) and sequence_tb.vhd (VHDL Test Bench File). Εάν για οποιοδήποτε λόγω χάσατε κάποιο παράθυρο και δεν έχετε προσθέσει κάποια από τα αρχεία, µπορείτε να τα προσθέσετε αργότερα όπως κάνατε στα προηγούµενα εργαστήρια: Πηγαίνετε στο Project Add source, επιλέξτε sequence.vhd (vhdl module) and sequence_tb.vhd (test bench associated to sequence.vhd). Figure 3. Creation of a new project. Figure 4: Device Settings Figure 5. Creating new sources Figure 6. Adding existing sources. Simulate the system Step 2 1. Synthesize the project; Επιλέξτε το αρχείο sequence.vhd. Από τα Processes for Current Source pane πατήστε πάνω στο + διπλά από το Implement Design και κάντε double click on Synthesize - XST. Σιγουρευτείτε ότι δεν υπάρχουν λάθοι ή σηµάνσεις.. 3
2. Τρέξετε την προσοµοίωση σας; 3. Ελέγξτε ότι ο ανιχνευτής ακολουθίας δουλεύει σωστά, εξετάζοντας τις κυµατοµορφές. (figure 7). Figure 7: Simulation Waveform Note: This current simulation says that if the required sequence is accompanied with a low reset and rising clock edges, the result will be a high output on Z. It says nothing about what will happen given any other set of inputs. Only one bit of the output Z is high at any time. Each bit in of Z represents a state. When only one state is allowed to be high at once, the design scheme is called one hot. Note: Z is a bus; to expand the bus into its individual signals click on the + symbol by the side of the signal s name. Also; sometimes it is useful to change the radix of the signal. Right click on the bus Z and change the radix of the signal to decimal or hexadecimal. Explore a Different Input Case Through Simulation Step 3 1. Ανοιξτε το test bench; Double click πάνω στο αρχείο sequence_tb.vhd από το Sources in Project παράθυρο to open the file. 2. Τροποποιήστε την ακολουθία εισόδου; Τροποποιήστε τις γραµµές που είναι κάτω από τα σχόλια Οι γραµµές που είναι κάτω από τα σχόλια προσδιορίζουν σε ποια σειρά θα περάσει η ακολουθία µας από τον προσοµοίωση. Following lines specify the input sequence of the simulation η ακολουθία εισόδου που έχει τώρα ο προσοµοίωτης είναι 001110010. Implement the Design on the XCR Board Step 4 Σε αυτό το τµήµα που θα χαρτογραφήσουµε τις τρεις εισόδους του project σε τρεις διακόπτες πάνω στο CPLD board και τις πέντε εξόδους σε πέντε LEDs. Το chip, IC, πάνω στο XCR board είναι Coolrunner XCR3064xl µε 44 ποδαράκια από τα οποία θα επιλέξουµε 8 κοιτάζοντας τον πίνακα µε τα ποδαράκια. Στο figure 8, βλέπουµε το διάγραµµα ροής που ακολουθείτε για την υαλοποίηση ενός κυκλώµατος πάνω σε CPLD ή σε FPGA board. 4
Figure 8: Design Process Flow Diagram 1. Για να βρούµε σε ποια ποδαράκια του CPLD θα ενώσουµε τους διακόπτες η τα LEDs θα πρέπει να κοιτάξουµε το αρχείο που περιγραφή την λειτουργία του CPLD. ΤΟ αρχείο αυτό βρίσκετε στην ιστοσελίδα του µαθήµατος κατεβαστέ το και βρείτε το πίνακα 3. Συµπληρώστε τον πίνακα στο Tutorial του worksheet µε τα pin numbers. 2. Για να δηµιουργήσουµε το User Constraints file πρέπει να κάνουµε το εξής: Κατεβαστέ το sequence.ucf αρχείο από την ιστοσελίδα και συµπληρώστε το χρησιµοποιώντας τον πίνακα 3. Σιγουρευτείτε ότι έχετε κατεβάσει το αρχείο µε extension.ucf και όχι.txt. Μπορείτε να κάνετε αλλαγές στο αρχείο χρησιµοποιώντας οποιοδήποτε επεξεργαστή κείµενου. Το extension αυτού του αρχείου ειναι UCF, τα αρχικά του UCF αρχείου σηµαίνουν User Constraints file. Το UCF αρχείο χρησιµοποιείτε για να προσδιορίσει τις εισόδους και εξόδους του CPLD. 3. Προσθήκη του UCF αρχείου στο project. Πηγαίνετε στο Project, New Source και προσθέστε το sequence.ucf αρχείο στο project. Επιλέξτε να συνδέσετε το UCF αρχείο µε sequence.vhd αρχείο and και πατήστε OK. Figure 9. Figure 9: Associate with Source 4. ηµιουργήστε το programming file; Επιλέξτε το sequence.vhd, πατήστε στο + που είναι διπλά από το Implement Design και double click Generate Programming File από µέσα στο Processes for Current Source pane. 5
5. ιαβάστε τα αποτελέσµατα τις υλοποιήσεις; πατήστε στο + που είναι διπλά από το Fit κάτω από το Implement Design και κάντε double click πάνω Fitter Report. Απαντήστε την ερώτηση που βρίσκετε στο tutorial που είναι βασισµένη στα αποτελέσµατα τις υλοποιήσεις. Note: By double click on the sequence.ucf file in the Sources in Project window a graphical interface for entering pins information can be seen and modified if necessary. Note: A graphical view of the chip and its pin assignment can be obtained by: highlight sequence.vhd in Sources in Project window; expand Implement Design under Processes in Project window; expand Fit under Implement Design process and double click on View Fitted Design (Chip Viewer). Note: Βεβαιωθείτε ότι το CPLD είναι πάνω στο ρεύµα και είναι αναµενο. Επίσης βεβαιωθείτε ότι ο µαύρος διακόπτης που βρίσκετε διπλά στο parallel port είναι στην θέση BAT. 6. Τρέχοντας το impact; πατήστε στο + που είναι διπλά από το Generate Programming File µέσα από το Processes for Current Source pane και κάντε double click on Configure Device (impact). Επιλέξτε Boundary-Scan Mode και πατήστε Next. Επιλέξτε Automatically connect to cable and identify Boundary-Scan chain και πατήστε Finish. Note: impact stands for Intelligent Multi-purpose Programming And Configuration Tool. Note that you can only have one instance of impact opened. If you have more than one you will an error indicating problems in the communication with the chip. 7. Ανάθεση του configuration file: Εάν νέο παράθυρο θα εµφανιστεί λέγοντας σας ότι έχει κάνει σύνδεση µεταξύ του υπολογιστή και του CPLD. Πατήστε Ok. 8. Κάντε Browse, να βρείτε το sequence.jed αρχείο που είναι µέσα στο κατάλογο του project και πατήστε Open. 9. Προγραµµατισµός του CPLD; Click on the Xilinx chip to highlight it and go to Operations, Program. Επιλέξτε Erase Before Programming και Verify. Πατήστε Ok. Figure 10. 6
Figure 10: Program Options Note: Επιλέγοντας την επιλογή Read Protect στο Program Options παράθυρο, απενεργοποιούµε το CPLD κύκλωµα από το να το διαβάσουµε πίσω. Αυτή η επιλογή είναι πολύ χρήσιµη για κυκλώµατα που είναι πνευµατικής ιδιοκτησίας. This is particularly useful for intellectual property protection. Στο κάτω µέρος του Program Option παραθύρου υπάρχει η επιλογή XPLA UES. Τα αρχικά UES σηµαίνουν user electronic signature. Μπορούµε να έχουµε ένα µικρό µήνυµα πάνω στο IC, όπως όνοµα, ηµεροµηνία κ.τ.λ για µελλοντική χρήση. Μόλις προγραµµατιστεί το CPLD θα λάβετε επιβεβαίωση. Κλειστε το impact και µην κανετε save. Αναφερθείτε στο Figure 11. Once the chip has been programmed you will receive a confirmation. Close impact and do not save. Refer to Figure 11. Figure 11: Programming Succeeded 7
Test the Project Step 5 1. Reset the board; Μετακινήστε τον διακόπτη που είναι για το reset σήµα να γίνει 1 (push it away from you). 2. Test reset state; Με reset διακοπτη να είναι 1, αλλαξετε τις τιµες τις εισοδου X, µετακινωντας τον διακοπτη που είναι για το X, από 1 σε 0 και αντιθετος. Για να περαση µια τιµη που εχουµε επιλεξη στο X θα πρεπει να δηµιουργουµε και clock cycles, µε το να µετακινουµε τον διακοπτη του clock κατω και µετα πανω. (by pushing the button assigned to the clock signal). 3. Looking for a sequenceq Metakiniste ton diakopth toy reset signal na e;inai 0. ωστε τιµη στην εισοδο του X και µετα δηµιουργηστε ένα clock cycle για να διαβασουµε την τιµη του X στο κυκλωµα µας. 4. Επίδειξη του συστήµατος στον διδάσκοντα. Εισάγετε λάθος ακολουθίες για να δείτε πως αλλάζουν οι καταστάσεις στο κύκλωµα σας. Αυτο µπορειτε να το επιβεβαιωσετε από το διαγραµµα καταστασεων. Να εισάγετε µια σωστή ακολουθία για να δείτε το σωστο αποτελεσµα. 5. Υπογραφή από το διδάσκοντα σας ότι το σύστηµα σας τρέχει σωστά. 6. Testing CPLD memory capacity; Σβηστέ το κύκλωµα σας και ανάψετε το ξανά από τον διακόπτη on and off. Τι έχει συµβεί: Final Task Step 6 1. Design a system: Design a system able to recognize the sequence 00101. 2. Implementing your design: Follow steps 1 to 5 and implement your design on the XCR board. Demonstrate your system to your T.A and ask him/her to sign your final report. Bonus Activity Step 7 The VHDL code given for the sequence detector (sequence.vhd) contains several processes. From what we have seen in classes we know that all of those processes are executed in parallel and within the processes, each instruction is executed in a sequential way. The first of the process describes the reset signal behavior. It is an asynchronous reset. 1. Change your design of Step 6 so that reset becomes synchronous (for the system to acknowledge the reset signal, a rising clock edge must occur) 8