Page 1
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 1/98
ΠΡΟΗΓΜΕΝΗ ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ
ΣΥΣΤΗΜΑΤΩΝ
ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 2013 – 2014
ΚΑΘ. ΑΝΤΩΝΗΣ ΠΑΣΧΑΛΗΣ
ΥΛΟΠΟΙΗΣΗ RISC ΕΠΕΞΕΡΓΑΣΤΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ MIPS R2000ΜΕ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΕΝΣΩΜΑΤΩΜΕΝΗΣ ΑΥΤΟΔΟΚΙΜΗΣ (ΒIST)
ΚΑΙ ΚΩΔΙΚΑ ΑΝΙΧΝΕΥΣΗΣ ΚΑΙ ΔΙΩΡΘΩΣΗΣ ΛΑΘΩΝ (EDAC)
Α.Μ.: 2012518
ΕΠΩΝΥΜΟ: Φωτέας
ΟΝΟΜΑ: Ανδρέας
Page 2
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 2/98
Περιεχόμενα
1.Εισαγωγή.............................................................................................................................................. 4
1.1. Διατύπωση του προβλήματος ..................................................................................................... 4
1.2. Μεθοδολογία ............................................................................................................................... 6
2. Τεχνική Περιγραφή ........................................................................................................................... 10
2.1. Τεχνική περιγραφή όλων των entities του επεξεργαστή .......................................................... 10
2.1.1. ALU ...................................................................................................................................... 10
2.1.2 Α-L ........................................................................................................................................ 13
2.1.3 ΑL – MUX .............................................................................................................................. 16
2.1.4. INC ....................................................................................................................................... 16
2.1.5. PSD ...................................................................................................................................... 17
2.1.6. ΕΧΤ S/Z ................................................................................................................................ 18
2.1.7. REG_FILE ............................................................................................................................. 18
2.1.8. SEL ....................................................................................................................................... 20
2.1.9 Λοιπές μονάδες .................................................................................................................... 21
2.2 Τεχνική περιγραφή της διόδου δεδομένων ............................................................................... 21
2.3 Τεχνική περιγραφή μονάδας ελέγχου ........................................................................................ 31
2.3.1. Control_FSM ....................................................................................................................... 32
2.3.2. CNTR_comb ......................................................................................................................... 40
2.4. Τεχνική περιγραφή μνημών ....................................................................................................... 56
2.4.1 Μνήμη εντολών ................................................................................................................... 56
2.4.2 DM control ........................................................................................................................... 57
2.4.3 Μνήμη δεδομένων με κωδικοποίηση Hamming ................................................................. 62
2.5. Τεχνική περιγραφή όλου του επεξεργαστή (processor) ........................................................... 62
2.6 Τεχνική περιγραφή του πολλαπλασιαστή με τη χρήση τεχνικών αύξησης της
δοκιμαστικότητας ......................................................................................................................... 66
2.6.1. BIST ...................................................................................................................................... 66
2.6.2. Test Control ......................................................................................................................... 69
2.6.3 Σήματα εισόδου πολλαπλασιαστή ...................................................................................... 71
2.6.4 Συμπίεση εξόδου πολλαπλασιαστή ..................................................................................... 74
2.6.5. Λοιπές μονάδες BIST ........................................................................................................... 74
2.6.6 Software based self test ....................................................................................................... 77
2.7. Τεχνική περιγραφή της κωδικοποίησης και αποκωδικοποίησης της μνήμης δεδομένων ....... 80
2.7.1 Decoder ................................................................................................................................ 80
2.7.2 Encoder ................................................................................................................................ 85
3. Επαλήθευση της ορθής σχεδίασης με προσομοίωση ...................................................................... 91
Page 3
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 3/98
3.1 Επαλήθευση ολόκληρου του επεξεργαστή ................................................................................ 91
3.1.1 Behavioral Test ..................................................................................................................... 93
3.1.2 Post-Place & Route Model Test ........................................................................................... 95
4. Αποτελέσματα Υλοποίησης .............................................................................................................. 97
Page 4
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 4/98
1.Εισαγωγή
1.1. Διατύπωση του προβλήματος
Ο επεξεργαστής υλοποιεί τις ακόλουθες εντολές:
Εντολές Φόρτωσης & Αποθήκευσης (Τύπου Ι)
LW $s1,100($s2) Load wordSW $s1,100($s2) Store word (W)LB $s1,100($s2) Load byte (με επέκταση πρόσημου) LBU $s1,100($s2) Load byte unsigned (με επέκταση μηδενός)LH $s1,100($s2) Load half-word (με επέκταση πρόσημου)LHU $s1,100($s2) Load half-word unsigned (με επέκταση μηδενός)SB $s1,100($s2) Store least significant byte (LSB)
SH $s1,100($s2) Store least significant half-word (LSH)
Αριθμητικές και Λογικές Εντολές (Τύπου Ι)
ΑDDI $t1,$s1,3 Addition immediate (με επέκταση πρόσημου)ΑDDIU $t1,$s1,3 Addition immediate (με επέκταση προσήμου)Α NDI $t1,$s1,3 AND immediate (με επέκταση μηδενός)ORI $t1,$s1,3 OR immediate (με επέκταση μηδενός)ΧΟRI $t1,$s1,3 XOR immediate (με επέκταση μηδενός)
Αριθμητικές και Λογικές Εντολές (Τύπου R)
ΑDD $s1,$s2,$s3 Addition (προσημασμένοι αριθμοί - με υπερχείλιση)ΑDDU $s1,$s2,$s3 Addition (μη προσημ/νοι αριθμοί - χωρίς υπερχείλιση)SUB $s1,$s2,$s3 Subtract (προσημασμένοι αριθμοί - με υπερχείλιση)SUBU $s1,$s2,$s3 Subtract (μη προσημ/νοι αριθμοί - χωρίς υπερχείλιση)Α ND $s1,$s2,$s3 ANDOR $s1,$s2,$s3 OR
NOR $s1,$s2,$s3 NORΧΟR $s1,$s2,$s3 XORMULT $s2,$s3 Multiply (προσημασμένοι αριθμοί)
Μεταφοράς Δεδομένων (Τύπου R)
MFHI $t1 Move from HiMFLO $t1 Move from LoMTHI $t1 Move to HiMTLO $t1 Move to Lo
Page 5
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 5/98
Εντολές Ολίσθησης (Τύπου R)
SLL $s1,$s2, 3 Shift left logical (σταθερός αριθμός ολισθήσεων) SRL $s1,$s2, 3 Shift right logical (σταθερός αριθμός ολισθήσεων) SRA $s1,$s2, 3 Shift right arithmetic (σταθερός αριθμός ολισθήσεων
με επέκταση πρόσημου) SLLV $s1,$s2,$s3 Shift left logical variable (μεταβλητός αρ. ολισθήσεων) SRLV $s1,$s2,$s3 Shift right logical variable (μεταβλητός αρ. ολισθήσεων)SRAV $s1,$s2,$s3 Shift right arithmetic variable (μεταβλητός αριθμός ολισθήσεων με
επέκταση πρόσημου)
Εντολές Διαχείρισης Σταθερών (Τύπου Ι)
LUI $t1,100 Load upper immediate
Εντολές Σύγκρισης - Set (Τύπου Ι)
SLTI $t0, $s0, 10 Set less than immediateIf Reg[s0] < 10 then Reg[t0]=1 else Reg[t0]=0Η σύγκριση γίνεται μεταξύ προσημασμένων αριθμών
SLTIU $t0, $s0, 10 Set less than unsigned immediateIf Reg[s0] < 10 then Reg[t0]=1 else Reg[t0]=0Η σύγκριση γίνεται μεταξύ μη προσημασμένων αριθμών
Εντολές Σύγκρισης - Set (Τύπου R)
SLT $t0, $s0, $s1 Set less thanIf Reg[s0] < Reg[s1] then Reg[t0]=1 else Reg[t0]=0Η σύγκριση γίνεται μεταξύ προσημασμένων αριθμών
SLTU $t0, $s0, $s1 Set less than unsignedIf Reg[s0] < Reg[s1] then Reg[t0]=1 else Reg[t0]=0Η σύγκριση γίνεται μεταξύ μη προσημασμένων αριθμών
Εντολές Διακλάδωσης (Τύπου Ι)
BEQ $s1, $s2, label Branch on equal
If Reg[s1] = Reg[s2]then PC = PC + 4 + 4μ else PC = PC + 4 BNE $s1, $s2, label Branch on not equal If Reg[s1] ≠ Reg[s2]
then PC = PC + 4 + 4μ else PC = PC + 4
Εντολές Μεταπήδησης (Τύπου R)
JR $t0 Jump register, PC = Reg[t0]JALR $t0 Jump and link register, Reg[ra] = PC+4 & PC = Reg[t0]
Άλλες Εντολές Διακλάδωσης (Τύπου Ι)
Page 6
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 6/98
BLEZ $s1, label Branch on less than equal zeroIf Reg[s1] ≤ 0 then PC = PC + 4 + 4μ else PC = PC + 4
BGTZ $s1, label Branch on greater than zero If Reg[s1] > 0 then PC = PC + 4 + 4μ elsePC = PC + 4
BLTZ $s1, label Branch on less than zero If Reg[s1] < 0 then PC = PC + 4 + 4μ else
PC = PC + 4BGEZ $s1, label Branch on greater than equal zero
If Reg[s1] ≥ 0 then PC = PC + 4 + 4μ else PC = PC + 4
Άλλες Εντολές Μεταπήδησης (Τύπου J)
J target Jump, PC = PC(4msb):target_address:00JAL target Jump and link,
Reg[ra] = PC+4 &PC = PC(4msb):target_address:00
1.2. Μεθοδολογία
Σχεδιαστικές και αρχιτεκτονικές επιλογές :
Ο επεξεργαστής μας σχεδιάστηκε με τις με τις ρυθμίσεις του ακόλουθου πίνακα.
Page 7
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 7/98
Με βάση την γενική μορφή της διόδου δεδομένων που φαίνεται στο ακόλουθο σχήμα
Έγιναν οι ακόλουθες αλλαγές:
Αφαιρέθηκε ο καταχωρητής IR μιας και η IM_SRAM βγάζει τα δεδομένα έτσι καιαλλιώς τον επόμενο κύκλο από αυτόν που δέχεται την διεύθυνση, και άρα η ύπαρξή τουπροσθέτει στο σύστημα έξτρα περιττή καθυστέρηση.
Αφαιρέθηκαν οι καταχωρητές Α και Β μιας και η μονάδα REG_FILE βγάζει ταδεδομένα έτσι και αλλιώς τον επόμενο κύκλο από αυτόν που δέχεται την διεύθυνση, και άραη ύπαρξή του προσθέτει στο σύστημα έξτρα περιττή καθυστέρηση, επίσης με την αφαίρεσήτους τα δεδομένα Β και Ι θα εισέρχονται πια ταυτόχρονα στη μονάδα A-L MUX.
Προστέθηκαν 3 επιπλέον καταχωρητές στο σύστημα, οι MDR_out_enc ,MDR_out_cor, MDR_in_enc ώστε να γίνεται δυνατή η υποστήριξη ανίχνευσης και διόρθωσηςλαθών (EDAC).
Page 8
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 8/98
Page 9
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 9/98
Επίσης έγιναν και τροποποιήσεις στη μονάδα CNTRL_FSM που θα αναλυθούν στα επόμενακεφάλαια.
Page 10
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 10/98
2. Τεχνική Περιγραφή
2.1. Τεχνική περιγραφή όλων των entities του επεξεργαστή
2.1.1. ALU
Γενική περιγραφή
Σε αυτή τη μονάδα εκτελούνται όλες οι αριθμητικές και λογικές πράξεις τουεπεξεργαστή με εξαίρεση τον πολλαπλασιασμό. Σχηματικά η δομή της φαίνεται στο ακόλουθοσχήμα :
Block διάγραμμα:
Page 11
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 11/98
VHDL κώδικας
Page 12
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 12/98
Page 13
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 13/98
2.1.2 Α-L
Γενική περιγραφή
Αυτή η μονάδα ενώνει την ALU με τον πολλαπλασιαστή, άρα είναι η μονάδα στηοποία εκτελούνται όλες οι λογικές και αριθμητικές πράξεις του επεξεργαστή.
Page 14
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 14/98
Block διάγραμμα:
VHDL κώδικας
Page 15
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 15/98
Page 16
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 16/98
2.1.3 ΑL – MUX
Γενική περιγραφή
Επιλέγει την τιμή του Βus_B για το αν θα πάρει την τιμή του καταχωρητή Β η του Ι ανάλογα
με το σήμα ΒοrI
Block διάγραμμα:
VHDL κώδικας
2.1.4. INC
Γενική περιγραφή
Αυξάνει την τιμή του μετρητή του προγράμματος PC κατά 4.
Block διάγραμμα:
Page 17
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 17/98
VHDL κώδικας
2.1.5. PSD
Γενική περιγραφή
Υπολογίζει την επόμενη τιμή του PC σε εντολές τύπου jump εκτελώντας τη πράξη :
D = P&IR[addr]]&00
Block διάγραμμα:
VHDL κώδικας
Page 18
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 18/98
2.1.6. ΕΧΤ S/Z
Γενική περιγραφή
Εκτελεί sign_extend ή zero_extend στο πεδίο immediate ανάλογα με την τιμή του σήματος
ελέγχου SorZ.
Block διάγραμμα:
VHDL κώδικας
2.1.7. REG_FILE
Γενική περιγραφή
Μονάδα που περιέχει τους 32 καταχωρητές του επεξεργαστή και διαχειρίζεται την ενημέρωσητων τιμών τους.
Page 19
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 19/98
Block διάγραμμα:
VHDL κώδικας
Page 20
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 20/98
2.1.8. SEL
Γενική περιγραφή
Επιλέγει ανάλογα με τις τιμές των Z και Νe αν θα εκτελεστεί η μεταπήδηση για κάθε μια από
τις εντολές τύπου Branch.
Block διάγραμμα:
VHDL κώδικας
Page 21
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 21/98
2.1.9 Λοιπές μονάδες
Το datapath περιέχει και αρκετές ακόμα μικρότερες μονάδες, όπως 2 πολυπλέκτες, τους RFκαι NPC mux , 3 ακόμα πολυπλέκτες που δίνουν σταθερή τιμή στα σήματα rt rd και shamtανάλογα με τα αντιστοιχα σήματα ελέγχου, μια μονάδα που εκτελεί SLLκατά 2 για τον
υπολογισμό της διεύθυνσης τις εντολές τύπου branch και αρκετούς καταχωρητές 32 και 39 bit.
2.2 Τεχνική περιγραφή της διόδου δεδομένων
Γενική περιγραφή
Σε αυτή τη μονάδα εκτελούνται σχεδόν όλες οι λειτουργίες του επεξεργαστή με εξαίρεση τηνπαραγωγή των σημάτων ελέγχου για την κάθε εντολή.
Block διάγραμμα:
Page 22
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 22/98
VHDL κώδικας
Page 23
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 23/98
Page 24
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 24/98
Page 25
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 25/98
Page 26
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 26/98
Page 27
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 27/98
Page 28
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 28/98
Page 29
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 29/98
Page 30
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 30/98
Page 31
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 31/98
2.3 Τεχνική περιγραφή μονάδας ελέγχου
Γενική περιγραφή
Για τον έλεγχο της λειτουργίας του επεξεργαστή έχουν κατασκευαστεί 2 μονάδες , Οι
CNTR_FSM και CNTR_comb. H πρώτη ελέγχει πόσους κύκλους ρολογιού θα εκτελείται κάθε
εντολή και πότε θα γίνεται εγγραφή του PC, του ΙR, των καταχωρητών του REG_FILE και της
μνήμης δεδομένων. Επίσης σε περίπτωση EDAC mode δέχεται ανατροφοδότηση από τον
αποκωδικοποιητή και ρυθμίζει ανάλογα τα βήματα των εντολών Load. H δεύτερη μονάδα
απλά δίνει τιμές σε ένα σύνολο από 19 σήματα ελέγχου για κάθε εντολή.
Page 32
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 32/98
2.3.1. Control_FSM
Διάγραμμα καταστάσεων
Σήματα ελέγχου για κάθε κατάσταση:
S0 IR_Write = 1MAR_Write = 0DMEM_Write = 0REG_Write = 0PC_Write = 0
Page 33
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 33/98
S1 IR_Write = 0MAR_Write = 0DMEM_Write = 0REG_Write = 0PC_Write = 0
S2a IR_Write = 0MAR_Write = 1DMEM_Write = 0REG_Write = 0PC_Write = 0
S2b IR_Write = 0MAR_Write = 0DMEM_Write = 0REG_Write = 0
PC_Write = 0
S3a,b,c IR_Write = 0MAR_Write = 0DMEM_Write = 0REG_Write = 0PC_Write = 0
S4a IR_Write = 0MAR_Write = 0DMEM_Write = 0REG_Write = 1PC_Write = 1
S4b IR_Write = 0MAR_Write = 0DMEM_Write = 1REG_Write = 0PC_Write = 1
S4c IR_Write = 0
MAR_Write = 0DMEM_Write = 0REG_Write = 0PC_Write = 1
S4d IR_Write = 0MAR_Write = 0DMEM_Write = 1REG_Write = 1PC_Write = 1
Page 34
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 34/98
Block Διάγραμμα
Page 35
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 35/98
Page 36
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 36/98
Page 37
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 37/98
Page 38
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 38/98
Page 39
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 39/98
Page 40
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 40/98
2.3.2. CNTR_comb
Πίνακας τιμών σημάτων ελέγχου
Page 41
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 41/98
Block διάγραμμα:
Page 42
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 42/98
Page 43
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 43/98
Page 44
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 44/98
Page 45
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 45/98
Page 46
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 46/98
Page 47
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 47/98
Page 48
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 48/98
Page 49
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 49/98
Page 50
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 50/98
Page 51
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 51/98
Page 52
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 52/98
Page 53
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 53/98
Page 54
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 54/98
Page 55
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 55/98
Page 56
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 56/98
2.4.
Τεχνική περιγραφή μνημών
2.4.1 Μνήμη εντολών
Page 57
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 57/98
Για τη μνήμη εντολών χρησιμοποιήθηκε ο έτοιμος κώδικας από το αρχείο imem.vhd.Για την αρχικοποίηση γεμίζουμε με εντολές τις μονάδες R1_0, R1_1,R1_2 και R1_3ξεκινώντας από την R1_0 όπως φαίνεται στο επόμενο σχήμα
2.4.2 DM control
Γενική περιγραφή
Αυτή η μονάδα παράγει τα σήματα WE για την μνήμη δεδομένων και πραγματοποιείsign ή zero extend στις LH και LB. Επίσης ανάλογα με το αν βρισκόμαστε σε edac_mode ήκανονική λειτουργία χρησιμοποιεί τους καταχωρητές MDR_in, MDR_out, MDR_out_enc,MDR_out_cor και MDR_in_enc αντίστοιχα.
VHDL κώδικας
Page 58
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 58/98
Page 59
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 59/98
Page 60
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 60/98
Page 61
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 61/98
Page 62
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 62/98
2.4.3 Μνήμη δεδομένων με κωδικοποίηση Hamming
Γενική περιγραφή
Για αυτή τη μνήμη δεδομένων χρησιμοποιήθηκε έτοιμο component που μας δινότανε, το
αρχείο dmem.vhd. Σε αυτό το αρχείο δεν υπήρχε υποστίρηξη κωδικοποίησης hamming οπότεέγινε μια μετατροπή και προστέθηκε μία ακομα μονάδα spdistram και αυξήθηκε το πεδίο weκατά 1 bit. Τώρα πια τα δεδομένα αποθηκεύονται στα πρώτα 32 bit της μνήμης και από τα
υπόλοιπα 8 που περισσεύουν στα 7 αποθηκεύονται τα διανύσματα P και Ph όπως ορίζονταιστην κωδικοποίηση hamming. Η αλλαγή που έγινε στον κώδικα φαίνεται στην επόμενηεικόνα:
2.5. Τεχνική περιγραφή όλου του επεξεργαστή processor)
Block Διάγραμμα
Page 63
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 63/98
VHDL κώδικας
Page 64
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 64/98
Page 65
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 65/98
Page 66
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 66/98
2.6 Τεχνική περιγραφή του πολλαπλασιαστή με τη χρήση τεχνικών αύξησης της
δοκιμαστικότητας
Γενική περιγραφή
Η κεντρική ιδέα αυτής της μονάδας είναι να πραγματοποιεί έλεγχο στο hardware τουπολλαπλασιαστή και να παράγει ένα σήμα για το αν λειτουργεί κανονικά η όχι. Ο έλεγχοςαποτελείται από 3 σύνολα εισόδων του πολλαπλασιαστή, παραγωγή των γινομένων, συμπίεσήτους σε 3 ξεχωριστά διανύσματα, και σύγκριση αυτών των διανυσμάτων με 3 που έχουν
υπολογιστεί από πριν και είναι αποθηκευμένα σε μια μνήμη. Αν οι τιμές συμπίπτουν τότε ημονάδα λειτουργεί σωστά. Αυτή η μονάδα παράγει σήμα που όταν πραγματοποιεί έλεγχοσταματάει την λειτουργία της μονάδας ελέγχου control_fsm.
2.6.1. BIST
Block Διάγραμμα
VHDL κώδικας
Page 67
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 67/98
Page 68
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 68/98
Page 69
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 69/98
2.6.2. Test Control
Block Διάγραμμα
VHDL κώδικας
Page 70
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 70/98
Page 71
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 71/98
2.6.3 Σήματα εισόδου πολλαπλασιαστή
LFSR
Σε αυτή τη μονάδα γίνεται παραγωγή ψευδοτυχαίων αριθμών σύμφωνα με τον ακόλουθοαλγόριθμο:
Σε κάθε clock παράγεται καινούριο σήμα όταν reset = 0
Page 72
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 72/98
DTMN
Αυτή η μονάδα υλοποιείται στο top level του bist. Παράγει ψευδοτυχαία διανύσματα με τηχρήση ενός counter και επιλογής μερικών από τα bit του όπως φαίνεται στον παρακάτωκώδικα.
Q_signal <= counter;
ATPG
Με τη χρήση ενός κατάλληλου εργαλείου λογισμικού για ATPG παράγουμε τα απαιτούμεναμη κανονικά διανύσματα δοκιμής που μπορούν να αποθηκευθούν σε μία embedded ROM.H ROM φαίνεται στο επόμενο σχήμα:
Page 73
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 73/98
Page 74
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 74/98
2.6.4 Συμπίεση εξόδου πολλαπλασιαστή
Κατά την διάρκεια του ελέγχου του πολλαπλασιαστή για κάθε μια από τις 3 δοκιμέςπαράγονται πληθώρα διανυσμάτων εξόδου του πολλαπλασιαστή. Αυτά συμπιέζονται σε 1(signature) για κάθε δοκιμή . Η μονάδα που πραγματοποιεί την συμπίεση φαίνεται στονεπόμενο κώδικα.
2.6.5. Λοιπές μονάδες BIST
BIST comparator
Page 75
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 75/98
MULT
Page 76
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 76/98
BIST MUX
Για την κανονική λειτουργία του επεξεργαστή πρέπει να έχουμε δώσει στο σήμα BIST του επεξεργαστή την τιμή “11”, για την LFSR δοκιμή την τιμή “00” για την DTMN δοκιμή τηντιμή “01” ενώ για την ATPG δοκιμή την τιμή “10”.
BIST_ROM
Σε αυτή την μονάδα είναι αποθηκευμένα τα signatures για κάθε ένα από τα 3 test.
Page 77
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 77/98
2.6.6 Software based self test
LFSR
.text
# sbst ---> lfsr##$1 = counter#$2 = step = 1#$3 = max_iterations = 80#$4 = seed#$5 = lfsr_reg#$6 = lfsr_tap#$7 = mult_hi#$8 = mult_lo#$9 = misr_reg_hi#$10 = misr_reg_lo#$11 = misr_tap_hi#$12 = misr_tap_lo#$13 = temp_1#$14 = temp_2
#$15 = misr_out_hi#$16 = misr_out_lo#$17 = sig_hi#$18 = sig_lo#$20 = result if $20 == '0' then mult is working perfectly
main:
XORI $3, $0, 80XORI $2,$0,1LUI $17,0x98d3XORI $17,$17,0x2109LUI $18,0x45ecXORI $18,$18,0xd107LUI $4 , 0xdeadXORI $4, $4, 0xbeef
ANDI $5,$0,0XORI $5,$4,0MULT $5, $5MFHI $9MFLO $10
while : XOR $13, $0, $5ANDI $6, $13,1SRL $13,$13,1ANDI $14,$13,1XOR $6,$14,$6SRL $13,$13,2ANDI $14,$13,1XOR $6,$14,$6SRL $13,$13,1ANDI $14,$13,1XOR $6,$14,$6
SLL $5,$5,1OR $5,$5,$6MULT $5, $5MFHI $7MFLO $8ANDI $11,$9,1ANDI $12,$10,1SRL $9,$9,1SRL $10,$10,1ANDI $13,$9,1ANDI $14,$10,1XOR $11, $13, $11XOR $12,$14,$12SRL $9, $9 ,2SRL $10,$10 ,2ANDI $13,$9,1
ANDI $14,$10,1XOR $11, $13 , $11XOR $12,$14,$12
Page 78
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 78/98
SRL $9, $9 ,1SRL $10,$10 ,1ANDI $13,$9,1ANDI $14,$10,1XOR $11, $13 , $11XOR $12,$14,$12SLL $9,$9,1SLL $10,$10,1
OR $9,$9,$11OR $10,$10,$12XOR $9,$9,$7XOR $10,$10,$8ADD $1,$1,$2BNE $2,$3,while
XOR $13 ,$17,$9XOR $14 ,$18,$10OR $20,$13,$14
Στον παραπάνω κώδικα επειδή ο επεξεργαστής μας είναι 32 bit έχει γίνει προσομοίωσητου LFSR και του MISR υλοποιώντας τον ίδιο αλγόριθμο 2 φορές για τα 32 most και τα 32least significant bits του MULT.
DTMN
.text
# sbst ---> lfsr##$1 = counter#$2 = step = 1#$3 = max_iterations = 80#$4 = QA_signal#$5 = QB_signal#$7 = mult_hi#$8 = mult_lo#$9 = misr_reg_hi#$10 = misr_reg_lo#$11 = misr_tap_hi#$12 = misr_tap_lo#$13 = temp_1#$14 = temp_2#$15 = misr_out_hi#$16 = misr_out_lo#$17 = sig_hi#$18 = sig_lo#$20 = result if $20 == '0' then mult is working perfectly
main:
XORI $3, $0, 80
XORI $2,$0,1LUI $17,0xf639XORI $17,$17,0xa32fLUI $18,0x3079XORI $18,$18,0xd35cMULT $1, $1MFHI $9MFLO $10
while : ANDI $4,$4,0ANDI $5,$5,0
ANDI $13 ,$13, 0xfANDI $14, $14,0xf0XOR $4,$4, $14XOR $5,$5,$13SRL $14,$14,4
SLL $13,$13,4XOR $4,$4, $14XOR $5,$5,$13
Page 79
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 79/98
SLL $14,$14,8SLL $13,$13,4XOR $4,$4, $14XOR $5,$5,$13SLL $14,$14,4SLL $13,$13,4XOR $4,$4, $14XOR $5,$5,$13
SLL $14,$14,4SLL $13,$13,4XOR $4,$4, $14XOR $5,$5,$13SLL $14,$14,4SLL $13,$13,4XOR $4,$4, $14XOR $5,$5,$13SLL $14,$14,4SLL $13,$13,4XOR $4,$4, $14XOR $5,$5,$13SLL $14,$14,4SLL $13,$13,4XOR $4,$4, $14XOR $5,$5,$13
MULT $5, $4MFHI $7MFLO $8ANDI $11,$9,1ANDI $12,$10,1SRL $9,$9,1SRL $10,$10,1ANDI $13,$9,1ANDI $14,$10,1XOR $11, $13, $11XOR $12,$14,$12SRL $9, $9 ,2SRL $10,$10 ,2ANDI $13,$9,1ANDI $14,$10,1XOR $11, $13 , $11
XOR $12,$14,$12SRL $9, $9 ,1SRL $10,$10 ,1ANDI $13,$9,1ANDI $14,$10,1XOR $11, $13 , $11XOR $12,$14,$12SLL $9,$9,1SLL $10,$10,1OR $9,$9,$11OR $10,$10,$12XOR $9,$9,$7XOR $10,$10,$8ADD $1,$1,$2BNE $2,$3,while
XOR $13 ,$17,$9XOR $14 ,$18,$10OR $20,$13,$14
Και για τους 2 παραπάνω κώδικες τα αρχεία .disasm υπάρχουν στον φακελο τηςεργασίας. Τέλος κατά την εισαγωγή του κώδικα στην IMEM πρέπει να κάνουμε εναλλαγή τωνθέσεων των εντολών add και bne γιατί ο επεξεργαστής μας δεν έχει delay slot ούτε υποστηρίζει
pipeline.
Το πλεονέκτημα του software_based_self_test είναι ότι δεν αυξάνεται ο χώρος πουκαταλαμβάνεται πάνω στο fpga λόγω της προσθήκης υλικού, και μπορείς να επιτύχειςκαλύτερες συχνότητες λειτουργίας.
Page 80
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 80/98
2.7. Τεχνική περιγραφή της κωδικοποίησης και αποκωδικοποίησης της μνήμης
δεδομένων
Γενική περιγραφή
Για την υποστήριξη της κωδικοποίησης hamming και του EDAC από τον επεξεργαστή προστέθηκαν 2 μονάδες ακόμα. Ένας κωδικοποιητής και ένας αποκωδικοποιητής. Επίσηςέγιναν τροποποιήσεις στην μονάδα ελέγχου control_fsm. Αυτές οι τροποποιήσεις είναι ηπαροχή σήματος ανατροφοδότησης από το datapath προς τον cntrl_fsm για το αν έχει προκύψεισφάλμα αποκωδικοποίησης. Επίσης προστέθηκαν 2 ακόμα καινούριες καταστάσεις, οι S3b καιS3c όπου στην πρώτη εκτελείται η αποκωδικοποίηση ενώ στη δεύτερη πραγματοποιείται ηκωδικοποίηση. Σημαντικό ρόλο στη λειτουργία του EDAC παίζει και η μονάδαDM_CONTROL που ανάλογα με το αν έχουμε edac_mode ελέγχει την εγγραφή και τηνανάγνωση στους καταχωρητές MDR_out_enc , MDR_out_cor και MDR_in_enc.
2.7.1 Decoder
Block Διάγραμμα
VHDL Κώδικας
Page 81
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 81/98
ΧΟR_Tree
Page 82
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 82/98
Page 83
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 83/98
Binary_decoder
Page 84
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 84/98
Page 85
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 85/98
2.7.2 Encoder
Block Διάγραμμα
Page 86
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 86/98
Page 87
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 87/98
Page 88
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 88/98
VHDL κώδικας
Page 89
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 89/98
ΧΟR_tree
Page 90
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 90/98
Page 91
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 91/98
3. Επαλήθευση της ορθής σχεδίασης με προσομοίωση
3.1 Επαλήθευση ολόκληρου του επεξεργαστή
Για την διαδικασία επαλήθευσης υλοποιήθηκε ο ακόλουθος κώδικας assembly
.text
main:J 4JAL 8BEQ $31, $20, mainBNE $21, $20, mainXORI $8,$0,6ORI $9,$9,36SUB $10,$8,$9BLEZ $8, main
BGTZ $10, mainBLTZ $8, mainBGEZ $10, mainBLTZAL $8, mainBGEZAL $10, mainADDI $10,$5, 34ADDIU $10,$5, 34SLTI $20,$15,8SLTIU $20,$15,8ANDI $20,$15,8LUI $12, 0xdeadSLL $12,$20,2SRL $12,$20,2SRA $12,$20,2SLLV $12,$20,$8SRLV $12,$20,$8MULT $8,$7MFHI $6MTHI $8MFLO $5MTLO $7ADD $8,$7,$5ADDU $5,$5,$5SUBU $5,$7,$9AND $5,$7,$9OR $5,$7,$9XOR $5,$7,$9
NOR $5,$7,$9SLT $5,$7,$9SLTU $5,$7,$9LB $5,4($0)LH $5,4($0)LW $5,4($0)SW $5,4($0)SH $5,4($0)SB $5,4($0)JALR $5
Θέσαμε τα σήματα BIST = “11” και edac_mode = ‘0’ στο testbench αρχείο. Δηλαδήκανονική λειτουργία χωρίς edac_mode ενεργοποιημένο.
Page 92
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 92/98
Ο παραπάνω κώδικας assembly τρέχοντας το asm2mem δημιουργεί το παρακάτω αρχείοdisasm :
test: file format elf32-bigmips
No symbols in "test".Disassembly of section .text:0x00000000 08000001 j 0x000000040x00000004 00000000 nop0x00000008 0c000002 jal 0x000000080x0000000c 00000000 nop0x00000010 13f4fffb beq $ra,$s4,0x000000000x00000014 00000000 nop0x00000018 16b4fff9 bne $s5,$s4,0x000000000x0000001c 00000000 nop0x00000020 38080006 xori $t0,$zero,0x60x00000024 35290024 ori $t1,$t1,0x240x00000028 1900fff5 blez $t0,0x000000000x0000002c 01095022 sub $t2,$t0,$t10x00000030 1d40fff3 bgtz $t2,0x000000000x00000034 00000000 nop0x00000038 0500fff1 bltz $t0,0x000000000x0000003c 00000000 nop0x00000040 0541ffef bgez $t2,0x000000000x00000044 00000000 nop0x00000048 0510ffed bltzal $t0,0x000000000x0000004c 00000000 nop0x00000050 0551ffeb bgezal $t2,0x000000000x00000054 00000000 nop0x00000058 20aa0022 addi $t2,$a1,340x0000005c 24aa0022 addiu $t2,$a1,34
0x00000060 29f40008 slti $s4,$t7,80x00000064 2df40008 sltiu $s4,$t7,80x00000068 31f40008 andi $s4,$t7,0x80x0000006c 3c0cdead lui $t4,0xdead0x00000070 00146080 sll $t4,$s4,0x20x00000074 00146082 srl $t4,$s4,0x20x00000078 00146083 sra $t4,$s4,0x20x0000007c 01146004 sllv $t4,$s4,$t00x00000080 01146006 srlv $t4,$s4,$t00x00000084 01070018 mult $t0,$a30x00000088 00003010 mfhi $a20x0000008c 00000000 nop0x00000090 00000000 nop
0x00000094 01000011 mthi $t00x00000098 00002812 mflo $a10x0000009c 00000000 nop0x000000a0 00000000 nop0x000000a4 00e00013 mtlo $a30x000000a8 00e54020 add $t0,$a3,$a10x000000ac 00a52821 addu $a1,$a1,$a10x000000b0 00e92823 subu $a1,$a3,$t10x000000b4 00e92824 and $a1,$a3,$t10x000000b8 00e92825 or $a1,$a3,$t10x000000bc 00e92826 xor $a1,$a3,$t10x000000c0 00e92827 nor $a1,$a3,$t10x000000c4 00e9282a slt $a1,$a3,$t1
0x000000c8 00e9282b sltu $a1,$a3,$t10x000000cc 80050004 lb $a1,4($zero)0x000000d0 84050004 lh $a1,4($zero)
Page 93
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 93/98
0x000000d4 8c050004 lw $a1,4($zero)0x000000d8 ac050004 sw $a1,4($zero)0x000000dc a4050004 sh $a1,4($zero)0x000000e0 00a0f809 jalr $a10x000000e4 a0050004 sb $a1,4($zero)
3.1.1 Behavioral Test
Page 94
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 94/98
Page 95
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 95/98
3.1.2 Post-Place & Route Model Test
Page 96
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 96/98
Όπως φαίνεται από τα παραπάνω σχήματα έχουμε πλήρη ταύτιση των αποτελεσμάτωνπου παίρνουμε στο behavioral και στο post place & route simulation, όπου είναι και τααναμενόμενα.
Page 97
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 97/98
4. ποτελέσματα Υλοποίησης
Post Map Static Timing
Post-Place & Route Static Timing
Λόγω των παραπάνω έγινε επιλογή το ρολόι να είναι 40 ns. Η ταχύτητα είναι αρκετά μειωμένηλόγο της ύπαρξης της μονάδας του BIST. Ο χώρος που καταλαμβάνει η μονάδα μας πάνω στοfpga φαίνεται στο ακόλουθο σχήμα, όπου με μπλέ χρώμα είναι τα slices που χρησιμοποιούνται:
Page 98
7/25/2019 Σχεδίαση σε VHDL του mips2000
http://slidepdf.com/reader/full/-vhdl-mips2000 98/98