Περιγραφή ψηφιακών συστημάτων με τη γλώσσα VHDL και ανάπτυξη σε προγραμματιζόμενες ολοκληρωμένες ηλεκτρονικές διατάξεις(fpga) Η χρήση της πλατφόρμας Altera DE-nano και του εργαλείου σχεδίασης Quartus-II Νοέμβριος-Δεκέμβριος 2014 1
Εργαστήριο Ψηφιακών Συστημάτων και Επεξεργασίας Ψηφιακών Μέσων (Digital Systems and Media Computing Laboratory- DSMC Lab) - Σχολή Θετικών Επιστημών & Τεχνολογίας του Ελληνικού Ανοικτού Πανεπιστημίου (ΕΑΠ) http://dsmc2.eap.gr/ Θεοφάνης Ορφανουδάκης, Επίκουρος Καθηγητής, ΣΘΕΤ, ΕΑΠ (fanis@eap.gr) Βασίλης Φωτόπουλος, Αναστάσιος Φαναριώτης Υποστήριξη εργαστηρίου 2
Εργαλεία Σχεδίασης FPGA TO ΛΟΓΙΣΜΙΚΟALTERAQUARTUS II 3
Ροή Σχεδίασης (Design flow)
Ροή Υλοποίησης (Synthesis flow)
Υλοποίηση ενός Project File -> New Project Wizard
Υλοποίηση ενός Project Εισάγετε τις ακόλουθες πληροφορίες σχετικά με το project σας: 1. Κατάλογος εργασίας (τα ονόματα δεν μπορεί να περιέχουν κενά) Π.χ., C: \My_design\DSMC_LAB_DEMO. 2. Όνομα project Π.χ. DSMC_LAB_DEMO. 3. Όνομα top-level design entity Π.χ. DSMC_LAB_DEMO.
Επιλογή τύπου FPGA
Επιλογή σχεδιαστικών εργαλείων
Σχεδίαση Top-Level Entity File > New > VHDL File: library IEEE; use IEEE.std_logic_1164.all; USE ieee.std_logic_arith.all; USE ieee.std_logic_unsigned.all ; entity DSMC_LAB_DEMO is port ( x: in std_logic; y: in std_logic; z: out std_logic ); end DSMC_LAB_DEMO ; architecture rtl of DSMC_LAB_DEMO is begin process (x, y) begin z<=x AND y; end process; end rtl; 10
Σχεδίαση Top-Level Entity 11
Pin Assignment Ποιες είναι οι είσοδοι; x: in std_logic; y: in std_logic; Ας δοκιμάσουμε να τις συνδέσουμε με σήματα εισόδου από εξωτερικά pin των οποίων ορίζουμε εμείς την κατάσταση (1, 0) Που λαμβάνω την έξοδο; z: out std_logic Ας δοκιμάσουμε να τη συνδέσουμε σε ένα σήμα εξόδου μέσω pin που θα οδηγεί ένα LED (π.χ. LED[0]) 12
Pin Assignment Processing > Start > Start Analysis & Elaboration Assignments > Pin Planner Ποια pin να διαλέξω; Επιλέγω τους διαθέσιμους πόρους του H/W που θα χρησιμοποιήσω RTFM (DE0_Nano_User_Manual) 13
Pin Assignment DE0_Nano_User_Manual: Output Z Input X Input Y 14
Pin Planner 15
Αρχείο Διαμόρφωσης *.qsf Η προηγούμενη διαδικασία αποτυπώνεται στο ακόλουθο αρχείο διαμόρφωσης στον φάκελο του project DSMC_LAB_DEMO.qsf... set_location_assignment PIN_D3 -to x set_location_assignment PIN_C3 -to y set_location_assignment PIN_A15 -to z set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to x set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to y set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to z... 16
Αρχείο Διαμόρφωσης *.qsf # -------------------------------------------------------------------------- # # # Copyright (C) 1991-2013 Altera Corporation # Your use of Altera Corporation's design tools, logic functions # and other software and tools, and its AMPP partner logic # functions, and any output files from any of the foregoing # (including device programming or simulation files), and any # associated documentation or information are expressly subject # to the terms and conditions of the Altera Program License # Subscription Agreement, Altera MegaCore Function License # Agreement, or other applicable license agreement, including, # without limitation, that your use is for the sole purpose of # programming logic devices manufactured by Altera and sold by # Altera or its authorized distributors. Please refer to the # applicable agreement for further details. # # -------------------------------------------------------------------------- # # # Quartus II 64-Bit # Version 13.1.0 Build 162 10/23/2013 SJ Web Edition # Date created = 19:53:08 November 05, 2014 # # -------------------------------------------------------------------------- # # # Notes: # # 1) The default values for assignments are stored in the file: # DSMC_LAB_DEMO_assignment_defaults.qdf # If this file doesn't exist, see file: # assignment_defaults.qdf # # 2) Altera recommends that you do not modify this file. This # file is updated automatically by the Quartus II software # and any changes you make may be lost or overwritten. # # -------------------------------------------------------------------------- # set_global_assignment -name FAMILY "Cyclone IV E" set_global_assignment -name DEVICE EP4CE22F17C6 set_global_assignment -name TOP_LEVEL_ENTITY DSMC_LAB_DEMO set_global_assignment -name ORIGINAL_QUARTUS_VERSION 13.1 set_global_assignment -name PROJECT_CREATION_TIME_DATE "19:53:08 NOVEMBER 05, 2014" set_global_assignment -name LAST_QUARTUS_VERSION 13.1 set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1 set_global_assignment -name NOMINAL_CORE_SUPPLY_VOLTAGE 1.2V set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (VHDL)" set_global_assignment -name EDA_OUTPUT_DATA_FORMAT VHDL -section_id eda_simulation set_global_assignment -name VHDL_FILE DSMC_LAB_DEMO.vhd set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "2.5 V" set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top set_location_assignment PIN_D3 -to x set_location_assignment PIN_C3 -to y set_location_assignment PIN_A15 -to z set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to x set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to y set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to z set_instance_assignment -name PARTITION_HIERARCHY root_partition -to -section_id Top 17
Αρχείο Διαμόρφωσης *.sdc # Create Clock create_clock -period 20 [get_ports CLOCK_50] # Create Generated Clock derive_pll_clocks # Set Clock Latency # Set Input Delay # Set Output Delay # Set Clock Groups # Set False Path # Set Clock Uncertainty derive_clock_uncertainty # Set Multicycle Path # Set Maximum Delay # Set Minimum Delay # Set Input Transition # Set Load 18
Εκτέλεση της συνολικής ροής Compile Design Πληροφοριακά Μηνύματα αναφορές προόδου, σφαλμάτων κλπ. 19
Και μετά τί; Περνάμε στον πραγματικό κόσμο ALTERA DE0 nano board 20
Σύνδεση στον Η/Υ μέσω USB 21
Προγραμματισμός FPGA Έτοιμοι να απολαύσετε τους καρπούς των κόπων σας: Tools > Programmer >Hardware Setup > currently selected Hardware > USB-Blaster [USB-0]. 22
Προγραμματισμός εξ αποστάσεως Τί γίνεται όταν δεν έχουμε το DE0 nano συνδεδεμένο στο υπολογιστή μας; Θα πρέπει να ορίσουμε στο Quartus που βρίσκεται o Server στον οποίο είναι συνδεμένο τo DE0-nano Tools > Programmer > > Hardware Setup > >JTAG Settings > > Add Server 23
Εργαστηριακή Υποδομή DSMCALTERA FPGA DESIGN REMOTE LAB 24
Παραμετροποίηση της Σύνδεσης Αφού εισάγουμε τα στοιχεία που μας έχουν δοθεί από το Web Interface(Server IP και Password) Θα πρέπει στο Connection Status να δούμε την ένδειξη OK Πρέπει να ορίσουμε τι υλικό θα χρησιμοποιήσουμε σε αυτό τον Server (Στην περίπτωση μας το USB-Blaster) 25
Παραμετροποίηση της Σύνδεσης Επιλέγουμε το Hardware Settings tab και κατόπιν από το Currently Selected Hardware το USB- Blaster on.. Τελικό βήμα: Close Μπορούμε πλέον να Προγραμματίσουμε το υλικό μας από τον τοπικό μας υπολογιστή 26
Το Web Interface Η Κεντρική σελίδα (Registration και Login). Με τα δύο κουμπιά στα Δεξιά ανοίγουν οι αντίστοιχες φόρμες. Αφού εισάγουμε τα στοιχεία μας, μπορούμε πλέον να πάμε στο επόμενο βήμα που είναι η επιλογή χρονοθυρίδας. 27
Το Web Interface Επιλογή και «κλείσιμο» Timeslot Σε δύο Βήματα: Επιλέγουμε Ημερομηνία Επιλέγουμε διαθέσιμη ώρα από την λίστα Ολοκληρώνουμε με το Register Session και μπαίνουμε στο Interface με το Enter Lab 28
To Web Interface Η Σελίδα ελέγχου του DE0-nano Χωρισμένη σε δυο τμήματα: Real-time Video Nano-Control Το πρώτο αφορά το Video και τον χρόνο που απομένει Το δεύτερο τον έλεγχο του DE0-nano και τα στοιχεία της σύνδεσης 29
Το Web Interface Οι λειτουργίες του Web Interface Οι πληροφορίες που χρειάζεται το Quartus για να συνδεθεί Με ένα κλίκ σε οποιοδήποτε σημείο της εικόνας μπορούμε να δούμε την αντιστοιχία των Pin του DE0-Nano και του Cyclone με τα Buttons του Interface Τα buttons του Interface ελέγχουν την στάθμη προκαθορισμένων I/Os του DE0-nano 30
Πως λειτουργεί το interface; Στα παρασκήνια του ελέγχου του DE0-nano Ανάλογα με το ποια buttons του Web interface έχει ενεργοποιήσει ο χρήστης, ο Server Στέλνει ένα Word (14Bit) στην USB του Arduino το οποίο συμφώνα με την τιμή του Word προσαρμόζει τις εξόδους του. Οι έξοδοι του Arduino είναι συνδεμένες σε προκαθορισμένα Pins του Nano και έτσι αυτά τα pins παίρνουν τις τιμές που έχουν οι έξοδοι του Arduino και άρα τις τιμές που έχουμε ορίσει εμείς από τα Buttons του Interface. Application server 14bit + (4bit spare) Arduino microcontroller ALTERA DE0-nano 31
Τα διαθέσιμα Hardware Interfaces Altera Cyclone IV pin name - Είσοδοι Τα buttons [0:13] του Interface ελέγχουν την στάθμη των GPIO_0[0:13] του DE0-nano (ένα-προς-ένα αντιστοίχιση) Connector position Top View Connector pin name 32
Τα διαθέσιμα Hardware Interfaces - Έξοδοι Top View Servo motor digital pin (control) GPIO_0(24) <= --f GPIO_0(26) <= --d GPIO_0(27) <= --a GPIO_0(28) <= --g GPIO_0(29) <= --b GPIO_0(30) <= --e GPIO_0(31) <= --c 33