[Geben Sie hier die Überschrift ein] - MPC
[Geben Sie hier die Überschrift ein] - MPC
[Geben Sie hier die Überschrift ein] - MPC
- TAGS
- mpc.belwue.de
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
.NOP {255:8 0:5 0:5 0:4 0:10 0:16 0:16 }<br />
.BRK {00000000b:8 0:5 0:5 0:4 0:10 0:16 0:16 }<br />
.JMP à {2:8 0:5 0:5 0:4 0:10 Cd:16 @1:16}<br />
.BRA Cà,à {2:8 0:5 0:5 0:4 0:10 @1:16 @2:16}<br />
.CALL Cà,à {3:8 0:5 0:5 0:4 0:10 @1:16 @2:16}<br />
Abbildung 3: Auszug aus der HASM-Def. mit Befehlsformaten.<br />
Init NOP<br />
BRK<br />
MISC MAGU1An, 0020h<br />
LOOP L_End, #3<br />
NOP<br />
L_End BRK<br />
NOP<br />
Abbildung 4: HASM Assemblerprogramm.<br />
sembler für beliebige Prozessoren, Mikrocontroller<br />
und Signalprozessoren generieren zu können.<br />
Die Generierung des Assemblers für den Soft-Core-<br />
Prozessor erfolgt dabei über <strong>ein</strong>e Tabelle, in der <strong>die</strong><br />
Befehle des Prozessors auf Bit-Ebene definiert sind.<br />
Außerdem können in der Tabelle physikalische und<br />
virtuelle Speicher-Segmente, Assemblerdirektiven und<br />
weitere Anweisungen definiert werden [8]. Der<br />
HASM Assembler basiert auf <strong>ein</strong>er Konfigurationstabelle,<br />
mit der <strong>die</strong> Architektur des Soft-Core-<br />
Prozessors abgebildet wird. Die Konfigurationstabelle<br />
ist zeilenorientiert und wird durch das erste Zeichen in<br />
der Zeile festgelegt. In Abbildung 3 ist <strong>ein</strong> Ausschnitt<br />
aus der Konfigurationstabelle zu sehen. Eine Prozessorinstruktion<br />
wird über <strong>ein</strong>en Punkt als Präfix <strong>ein</strong>geleitet<br />
und für den Assembler in Form von mnemonischen<br />
Abkürzungen definiert. Der Bezeichnung der<br />
Prozessorinstruktion folgt <strong>ein</strong>e Sequenz von Argumenten,<br />
<strong>die</strong> das Instruktionsformat repräsentieren.<br />
Die eigentlichen Umsetzungsanweisungen, zusammengesetzt<br />
aus den Anweisungen, müssen in geschweiften<br />
Klammern gesetzt werden. Alle Anweisungen<br />
haben dabei immer <strong>die</strong> Form :.<br />
Getrennt durch <strong>ein</strong>en Doppelpunkt steht <strong>hier</strong>bei auf<br />
der linken Seite das Argument und auf der rechten<br />
Seite <strong>die</strong> Anzahl der Bits, <strong>die</strong> für <strong>die</strong>ses Argument<br />
verwendet werden sollen. Ein variables Argument<br />
wird mit ‚@‘ gekennzeichnet und bei der Assemblierung<br />
durch <strong>ein</strong>en Wert ersetzt.<br />
In Abbildung 4 ist <strong>ein</strong> Ausschnitt aus <strong>ein</strong>em Assemblerbeispielprogramm<br />
zu sehen. Das Programm<br />
beginnt mit <strong>ein</strong>em Init-Label, gefolgt von <strong>ein</strong>er NOP<br />
Instruktion. Namen, <strong>die</strong> in der ersten Spalte des Assemblerprogramms<br />
stehen, werden als Labels interpretiert.<br />
Dabei ist darauf zu achten, dass zwischen den<br />
Labels und den Instruktionen mindestens <strong>ein</strong> Leerzeichen<br />
enthalten ist. Enthält <strong>ein</strong>e Zeile nur Code, muss<br />
<strong>die</strong>se mit <strong>ein</strong>em Leerzeichen beginnen.<br />
SOFT-CORE-PROZESSOR MIT<br />
MULTITHREADING FÜR DSP-ANWENDUNGEN<br />
Tabelle 1: Auszug aus der Report-Datei mit dem Ressourcen-<br />
Verbrauch des Soft-Core-Prozessors nach der Synthese für <strong>die</strong><br />
Spartan6-Familie.<br />
Ressourcen Utilization Available Utilization<br />
Register 3021 54576 5 %<br />
LUT 3793 27288 13 %<br />
Slice 1235 6822 18 %<br />
IO 34 218 15 %<br />
RAMB 11 116 9 %<br />
BUFG 2 16 12 %<br />
VII. VERIFIKATION<br />
Die Funktionalität des Designs wurde mittels <strong>ein</strong>er<br />
Simulation überprüft. Für <strong>die</strong> Simulation des Soft-<br />
Core-Prozessors wurde <strong>ein</strong>e Testbench implementiert,<br />
<strong>die</strong> alle notwendigen Signalwechsel (Stimuli) an den<br />
Eingängen der zu testenden Einheit (DUT - Device<br />
Under Test) bereitstellt. Die Ausgangssignale vom<br />
DUT wurden anhand <strong>ein</strong>er grafischen Darstellung des<br />
zeitlichen Verlaufs überprüft. Mit <strong>die</strong>ser Testbench<br />
lassen sich typische Fehler bei der Abarbeitung von<br />
Instruktionen im Prozessor erkennen. Diese Testbench<br />
basiert auf <strong>ein</strong>em Testprogramm, welches mit dem<br />
HASM-Assembler generiert wurde und verschiedene<br />
Testfälle abdeckt, um so <strong>die</strong> Eigenschaften des Soft-<br />
Core-Prozessors zu testen. Das Testprogramm b<strong>ein</strong>haltet<br />
im Wesentlichen <strong>ein</strong>zelne Tests für arithmetisch-logische<br />
Operationen, bedingte und unbedingte<br />
Sprünge sowie Schleifenanweisungen für <strong>die</strong> korrekte<br />
Adressgenerierung und Interrupts. Des Weiteren wird<br />
durch <strong>die</strong> Testbench <strong>die</strong> funktionale Korrektheit gewährleistet,<br />
wenn der Soft-Core-Prozessor mit <strong>ein</strong>er<br />
variablen Anzahl an Threads skaliert wird. Insbesondere<br />
stellt <strong>die</strong> Testbench sicher, dass der Threadkontext<br />
des jeweiligen Threads auch bei maximaler Auslastung<br />
des Prozessors konsistent bleibt. Weiterführende<br />
Informationen zur funktionalen Verifikation<br />
sind in [9], [10] zu finden.<br />
VIII. SYNTHESEERGEBNISSE<br />
Die Analyse wurde mit PlanAhead, <strong>ein</strong>er leistungsfähigen<br />
Analyse- und Floorplanning Software durchgeführt.<br />
Tabelle 1 listet <strong>ein</strong>ige wesentliche Kennzahlen<br />
nach dem Place & Route (PAR) zur Ressourcenauslastung<br />
des DSP auf dem XC6SLX45-CSG324 aus<br />
der Spartan6 Familie auf. Bei <strong>die</strong>sen Werten handelt<br />
es sich um <strong>ein</strong>en Mindestbedarf. Dieser Bedarf erhöht<br />
sich entsprechend, wenn <strong>die</strong> Applikation Threads über<br />
<strong>die</strong> Mindestanzahl hinaus benötigt. Der Soft-Core-<br />
Prozessor wurde auf <strong>ein</strong>em Spartan6 der Firma Xilinx<br />
platziert. Nach dem Place und Route kann er mit <strong>ein</strong>er<br />
maximalen Taktrate von 133,245 MHz betrieben werden.