Introduction to IP Cores Part 1: Digital Design -- Using IP Cores to Simplify Design Στον κόσµο του ψηφιακού σχεδίου, µπορούµε να χρησιµοποιήσουµε τις γλώσσες περιγραφής υλικού για να περιγράψουµε σύνθετες λειτουργίες λογικής. Εάν ένας µηχανικός επρόκειτο να κωδικοποιήσει έναν αθροιστή, και κάθε φορά που ήταν σε ένα project, ο µηχανικός θα έπρεπε να κωδικοποιήσει όλα από την αρχή τότε θα σπαταλούσε το χρόνο του και αρκετά χρήµατα που είναι αχρείαστο. Λόγω αυτού, ένας ψηφιακός µηχανικός σχεδίου µπορεί ακριβώς να χρησιµοποιήσει έναν πρότυπο κώδικα του IP, Intellectual Property (πνευµατική ιδιοκτησία). Ένας πυρήνας IP είναι κοµµάτια κώδικα HDL που άλλοι µηχανικοί (engineers) έχουν γράψει ήδη για να εκτελέσουν µια συγκεκριµένη λειτουργία. Είναι ένα συγκεκριµένο κοµµάτι του κώδικα µε σκοπό να κάνει µια συγκεκριµένη εργασία. Μπορεί να χρησιµοποιηθούν αυτοί οι κώδικες σε ένα πολύπλοκο κύκλωµα αντί να σχεδιαστεί η δεδοµένη λειτουργία από την αρχή και έτσι π.χ. ένας µηχανικός θα µπορούσε να κερδίσει πολύτιµο χρόνο. Ένα τέτοιο εργαλείο όπως το IP έχει τα πλεονεκτήµατα και τα µειονεκτήµατα του. Αν και ένα πρότυπο IP µπορεί να απλοποιήσει ένα πολύπλοκο κύκλωµα, ο µηχανικός πρέπει να σχεδιάσει ολόκληρο το πρόγραµµα γύρω από τις απαιτήσεις του πρότυπου IP. Και ενώ ένα πρότυπο IP µπορεί να µειώσει το χρόνο σχεδίου, ο µηχανικός πρέπει συχνά να πληρώσει για το δικαίωµα να χρησιµοποιηθεί το πρότυπο, δεδοµένου ότι είναι πνευµατική ιδιοκτησία κάποιου άλλου. Part 2: VHDL Structural description Η δοµική περιγραφή είναι το χαµηλότερο επίπεδο αφαίρεσης για να περιγράψεις ένα κύκλωµα ή ένα σύστηµα που χρησιµοποιεί VHDL. Η περιγραφή θα αποτελέσει βασικά την προδιαγραφή της σύνδεσης µεταξύ των διαφορετικών συστατικών του υποσυστήµατος. Βλέπε στο Figure 1. a b I0 I1 U1 O1 signal sig_1 o c I0 I1 U2 O1 entity black_box
Figure 1: Κύκλωµα που περιγράφεται χρησιµοποιώντας το (structural design ) δοµικό σχεδιασµό Το σύστηµα black_box γίνεται από τα δύο συστατικά: U1 και U2. Το πρώτο βήµα είναι να δηλωθούν αυτά τα συστατικά ως τµήµα του συστήµατος. Αυτό γίνεται όπως φαίνεται στο κοµµάτι του κώδικα πιο κάτω. architecture STRUCTURAL of black_box is (line 1) component U1 (line 2) port ( (line 3) I0, I1: IN std_logic; (line 4) O1: OUT std_logic; (line 5) ); (line 6) end component; (line 7) component U2 (line 8) port ( (line 9) I0, I1: IN std_logic; (line 10) O1: OUT std_logic; (line 11) ); (line 12) end component; (line 13) begin (line 14) Σηµειώστε ότι τα συστατικά δηλώνονται µεταξύ της γραµµής architecture declaration (γραµµή 1 στον κώδικα πιο πάνω) και begin (γραµµή 14). Η δήλωση του συστατικού (component) αποτελείται απλά από την περιγραφή των εισόδων και των εξόδων του συστατικού. Μετά από την δήλωση του συστατικού, ακολουθεί component instantiation που είναι η προδιαγραφή των συνδέσεων µεταξύ των συστατικών. Component instantiation για το κύκλωµα που παρουσιάζεται στο Figure 1 θα ήταν όπως περιγράφεται από τον κώδικα πιο κάτω: begin (line 1) your_instance_name : U1 (line 2) port map ( (line 3) I0 => A, (line 4) I1 => B, (line 5) O1 => sig_1 (line 6) ); (line 7) your_instance_name2 : U2 (line 8) port map ( (line 9) I0 => sig_1, (line 10) I1 => C, (line 11) O1 => o (line 12) ); (line 13) end structural; (line 14) Η γραµµή 1 είναι η εντολή begin που προσδιορίζει ότι αρχίζει η δοµική περιγραφή. Σηµειώστε ότι το όνοµα των εισόδων και των εξόδων των συστατικών δηλώνεται στην αριστερή στήλη ενώ το 2
όνοµα των συνδέσεων δηλώνεται στη δεξιά στήλη. Παράδειγµα η γραµµή 4 λέει ότι η είσοδος I0 του συστατικού U1 συνδέεται µε την είσοδο του κυκλώµατος Α. Οµοίως η γραµµή 10 λέει ότι η είσοδος I1 του συστατικού U2 συνδέεται µε την είσοδο C του κυκλώµατος. Από το Figure 1 ξέρουµε ότι θέλουµε να συνδέσουµε την παραγωγή O1 του συστατικού U1 µε την είσοδο I0 του συστατικού U2. Αυτή η σύνδεση δεν µπορεί να γίνει άµεσα επειδή ένα σηµείο της σύνδεσης είναι µια είσοδο ( I1 ) και το άλλο σηµείο είναι µια έξοδος (O1). εν µπορούµε να αναµείξουµε τα µήλα και τις πατάτες (είσοδοι και έξοδοι) από κοινού. Γι αυτό πρέπει να δηλώσουµε ένα σήµα (signal) που θα ενεργήσει ως γέφυρα µεταξύ τις εισόδου και τις εξόδου που θέλουµε να συνδέσουµε. Γι αυτό, η γραµµή 6 του κώδικα παρουσιάζει µια σύνδεση µεταξύ O1 του συστατικού U1 µε το σήµα sig_1, και η γραµµή 11 παρουσιάζει µια σύνδεση µεταξύ O1 του συστατικού U2 µε το ίδιο σήµα. Το σήµα που χρησιµοποιήσαµε πρέπει να δηλωθεί στο ίδιο τµήµα του κώδικα µε τη συστατική δήλωση ως εξής: signal sig_1 : std_logic; Προσέξτε ότι στο πιο πάνω κώδικα παρουσιάζετε µια ετικέτα " your_instance_name" πριν από το όνοµα του συστατικού U1 ή U2. Αυτή η ετικέτα θα φέρει ένα όνοµα για component instantiation. Παραδείγµατος χάριν, εάν το σύστηµά µας έχει περισσότερα από ένα συστατικά του ίδιου είδους (αφήνει να πει δύο συστατικά U1), εκείνη η ετικέτα θα επιτρέψει σε µας να διαφοροποιήσουµε µεταξύ instantiation των δύο παρόµοιων συστατικών. Το structural design είναι πολύ χρήσιµο όταν σας δίνεται το κοµµάτι του κώδικα που αντιπροσωπεύει τα black boxes, για να τα βάλετε για να χτίσετε ένα σύστηµα. Part 3: Two's Complement Two's complement είναι ένα θεσιακό σύστηµα αρίθµησης που µας επιτρέπει να αντιπροσωπεύουµε θετικούς και αρνητικούς αριθµούς. Η βάση (r) του συστήµατος είναι 1. Που σηµαίνει ότι υπάρχει απόσταση 1 µεταξύ οποιονδήποτε δύο διαδοχικών αριθµών. Εάν το msb του αριθµού είναι 1, τότε ο αριθµός είναι αρνητικός. Finding the Value of a Two's Complement Number Figure 2 είναι η εξίσωση για να βρει την τιµή ενός τwo's complement αριθµούς. Στην εξίσωση, το b είναι bit και το n είναι ο αριθµός των bits Figure 2: Value of a Two s Complement Number Παράδειγµα 1: Βρείτε τη δεκαδική αξία του αριθµού: 11001 Ο αριθµός των bits: 5 3
Figure 3: Bit Positions of 11001 Λύση: Figure 4: Λύση για το παράδειγµα 1 Creating a Two's Complement Representation of a Negative Number 1. Represent the magnitude of the number in binary. 2. Complement each bit of the number. 3. Increment the binary number. Example 2: Find the Two's Complement of -7. 1. Binary representation of 7: 00111 2. Complement each bit of the number: 11000 3. Increment the binary number: 11001 Maximum and Minimum Representable Values The maximum and minimum values that can be represented depend of the number of bits. For a number with 5 bits, the maximum value is 15. The minimum value is -16. 4
Figure 5: Min and Max Values 5