Home

Ulrich Golze

image

Contents

1. Switch Matrix Nachbar Verbin SI dungen icy slice b Logikblock CLB Bild 6 13 Virtex II Pro a Chip Layout b Logikblock und c Slice 6 4 2 Logikblocke Die Plattform FPGAs bertreffen allein hinsichtlich der Zahl der Logikbl cke die XC4000 Serie im Abschnitt 6 3 bei Weitem und besitzen durch die PowerPCs und die brigen Komponenten so viele Zusatzfunktionen dass zum Beispiel schon ein kompletter DVD Player mit Linux Betriebssystem darauf realisiert wurde Allerdings muss die neue Technologie hier erst recht von ausgereiften Entwurfswerkzeugen unterst tzt werden damit sie von allen Entwicklern sinnvoll eingesetzt werden kann Viele der neuen Eigenschaften k nnen nur mit Expertenwissen voll ausgesch pft werden 6 4 Multiprozessor FPGA Plattformen 6 15 Virtex II Pro Logikbl cke CLB 1 500 55 000 Slice 4 Logikzelle 2 oder oder Lookup Table RAM Schieberegister Register Bild 6 14 LUT 16b 16b 1b CLB Aufbau Den hierarchischen Aufbau eines Logikblocks oder CLBs zeigt Bild 6 14 Danach setzt sich jeder CLB wie in Bild 6 13b aus vier Slices zusammen die untereinander ber eine Switch Matrix und mit benachbarten CLBs ber schnelle Verbindungen kommunizieren Jede Slice hat wiederum zwei Logikzellen die Bild 6 13c knap
2. Beispiel 3 23 Konstanten Durch DATA 1 bl erh lt DATA den Wert 1 obwohl die Konstante explizit die Weite 1 Bit hat Die restlichen Bits werden durch 0 erg nzt In DATA bz 3 22 3 Die wichtigsten Befehle von VERILOG wird keine Breite angegeben es wird in diesem Fall mit z statt mit 0 erg nzt Beispiel 3 24 erl utert die Bedeutung von x und z genauer Die zwei Register REG1 und REG2 treiben beide den Wire W Dies entspricht dem Zusammenschalten zweier m glicherweise hochohmiger Treiber an eine gemeinsame Ausgangsleitung Sind jedoch beide Treiber nicht hochohmig so kommt es bei unterschiedlichen Ausgangswerten zu Konflikten module constant_example_2 reg 7 0 REGI REG2 wire 7 0 W EG1 assign W EG2 initial begin display 0 display 8 bz display Se oy eli ae Pt Tis display 8 bx display 8 bz display REG1 0 REG1 10 end endmodule XXXXXXXX 00000000 00001010 xXxx1lx1x XXXXXXXX 00001010 33333323 how wed weal Beispiel 3 24 x und z Zum Beginn der Simulation sind REG1 und REG2 noch undefiniert mit x in allen Bit Positionen Ihre Verkn pfung liefert ebenfalls berall x Werden beide Register auf 0 gesetzt kommt es zu keinem Konflikt Durch REG1L 10 REG2 8 bz wird der zweite Treiber hochohmig sodass das erste Register den Ausgang W alleine treibt Nach der Zuweisung REG2 8 b11111111 kommt es nur an Bit Positionen mit unterschi
3. Match Unit Function i Counter ne clog MO TriggerPortd exactly one clock cycle Data Port Bus Signal xlo APLUSB_DBG_IN amp APLUSB_DBG_OUT gt APLUSB_DBG IN CH 0 DataPort O aay CH 1 DataPort 1 CH 2 DataPort 2 DCR_Write CH 3 DataPort 3 7 CH 4 DataPort 4 CH 5 DataPort 5 CH 6 DataPort 6 CH 7 DataPort CH 8 DataPort 8 CH 9 DataPort 9 CH 10 DataPort 1 0 CH 11 DataPort 11 CH 12 DataPort 1 2 CH 13 DataPort 13 CH 14 DataPort 14 CH 15 DataPort 15 CH 16 DataPort 16 CH 17 DataPort 17 CH 18 DataPort 1 8 CH 19 DataPort 19 CH 20 DataPort 20 CH 21 DataPort 21 CH 22 DataPort 22 CH 23 DataPort 23 CH 24 DataPort 24 CH 25 DataPort 25 CH 26 DataPort 26 CH 27 DataPort 27 CH 28 DataPort 28 CH 29 DataPort 29 CH 30 DataPort 30 CH 31 DataPort 31 CH 32 DataPort 32 OH 22 Natapantaa gt APLUSB_DBG_OUT INFO Cable Parallel IV Port LPT1 Speed 5 MHz INFO Found 0 Core Units in the JTAG device Chain COMMAND configure 1 C xilinx projects local 2_edk_software mplementation system bit 0 INFO Found 1 Core Unitin the JTAG device Chain Reading file C wiline projects local 2_edk_software implementationisystem bit Bild D 27 Triggern in Chipscope Abgabe 3 Pr sentieren Sie die mit Chipscope gemessenen Sig
4. Abh ngig von den verwendeten Kommunikations Schnittstellen und Protokollen m ssen IP Cores die nicht direkt f r Virtex II Pro entwickelt wurden noch an unsere CoreConnect Kommunikationsarchitektur angepasst werden Abschnitt 6 4 5 F r viele typische IP Interfaces wie AMBA oder WishBone stehen hierf r jedoch fertige Adapter so genannte Wrapper zur Verf gung Einen Eindruck der f r das ML310 verf gbaren IP vermittelt Tabelle 7 17 Viele weitere IP Cores etwa TFT Display Controller oder digitale Signalfilter sind unabh ngig vom Typ des eingesetzten FPGAs und des Prototyping Boards verf gbar Sie k nnen vom jeweiligen Hersteller gekauft und f r den Einsatz passend konfiguriert werden IP Core Bus Parameter Auswahl Slices LUTs FFs Speichergr e Anzahl Blockspeicher BRAM Controller PLB Zellen Burst Mode 171 234 133 32 64 Bit DDR RAM Auto Refresh Burst PLB Mode Error Correction Code ECC 1 970 2 261 1 841 Anzahl Speicherbanke DDR Synchronous DRAM Controller 8 16 32 IRQ Eingange kaskadierbar Interrupt Controller OPB flanken pegelgesteuert 99 395 342 Serielle 5 6 7 8 Bit pro Zeichen gerade ungerade Schnittstelle OPB Parit t Stop Bits verschiedene BAUD 442 534 401 UART Raten etc 10 100 1 000 Mbit Ethernet Memory OPB Mapped oder Direct Memory Access PLB DMA f r Gigabit Ethernet m ssen PLB und DMA verwendet werden Ethernet Controller 2 570 5 140
5. Projektname B 1 Hello World B 3 B 1 2 Ein neues Projekt Zuerst legen Sie ein neues Projekt mit File gt New Project an W hlen Sie ein Projektverzeichnis und den Projektnamen hello_world Bild B 3 Klicken Sie Weiter Stellen Sie im n chsten Dialog in Bild B 4 sicher dass die Device Family Virtex2P das Device xc2vp30 und der Simulator Modelsim ausgew hlt sind Klicken Sie wie bei den drei folgenden Dialogfeldern Weiter bzw Fertig stellen New Project x r Select the Device and Design Flow for the Project Property Name Value Device Family Virtex2P Device xc2vp30 Package ff896 Speed Grade 6 Top Level Module Type HDL Synthesis Tool XST VHDL Verilog Simulator Modelsim Generated Simulation Language Verilog Bild B 4 Abbrechen Hite Neues Projekt Einstellungen B 1 3 Benutzeroberflache von ISE Sie haben nun ein neues Projekt angelegt Die Benutzeroberfl che des Projekt Navigators hat wie in Bild B 2 vier Bereiche Das Quellenfenster oben links zeigt die Module Ihres Designs Mit einem Rechtsklick auf xc2vp30 6fg896 k nnen Sie bei Bedarf unter Properties Einstellungen ndern Mit einem einfachen linken Mausklick w hlen Sie ein Objekt aus f r das darunter das Prozessfenster vordefinierte Abl ufe anbietet wie einen Syntax Check oder eine Simulation Die Konsole unten meldet Hinweise und Fehler Was der Quelltext Editor tut versteht sich von selb
6. Verz gerung und wait warten auf Daher sind als Simulationsergebnisse m glich Ja Ja Nein Nein oder Nein Nein Ja Ja nicht aber Ja Nein Nein Ja Ja Nein Ja Nein 2 6 2 berblick zur Hardware Beschreibungssprache VERILOG und hnliche Mischformen Zur Vertiefung des beraus grundlegenden Parallelit ts begriffes wird auf Abschnitt 4 1 verwiesen Eine Konstante beginnt optional mit einem Vorzeichen und einer Bit Breite f r welche default m ig der kleinste notwendige Wert genommen wird F r die optionale Basis sind b Basis 2 o Basis 8 d Basis 10 und h Basis 16 erlaubt der Default ist 10 h12 etwa erzeugt eine 5 Bit breite Konstante 2 b1 die bin re 2 Bit Konstante 01 Weitere M glichkeiten zeigt Beispiel 2 6 Zeilen 8 13 Die Operationen in Tabelle 2 5 sind offensichtlich auf den Unterschied zwischen und sowie deren Negation wird sp ter eingegangen Operationsgruppe Bedeutung oS E Arithmetik lt lt gt gt Vergleich Gleichheit I amp amp logische Operatoren amp bit weise Operatoren 2 Auswahl lt lt gt gt Shift Tabelle 2 5 Operationen Beispiel 2 6 zeigt eine einfache ALU Arithmetic Logical Unit f r die Operatio nen Addition Multiplikation UND logisches UND das logische UND ist wahr wenn sowohl in A als auch in B mindestens ein Bit 1 ist Modulo und Links Shift Die Eingaben f r die ALU sind der Opcode und die beiden Operanden die Au
7. _ 4 6 4 Modellierungskonzepte in VERILOG always begin CP 0 10 1 10 CP end initial begin INPUT 0 20 INPUT 255 20 INPUT 8 haa 20 finish end endmodule Beispiel 4 6 Flipflop Kette mit lt 4 2 2 Eine Pipeline der Register Transfer Logik Die Flipflop Kette in Beispiel 4 6 war die Vorstufe zu beliebigen Register Transfer Logiken Offenbar war es dabei gar nicht n tig zwischen den Registern R1 und R2 und ihren Ausg ngen MIDDLE und OUTPUT zu unterscheiden so dass wir jetzt nur noch die Register selbst modellieren Es geht um eine vierstufige Pipeline wie in Bild 4 7 Zwischen je zwei Stufen befindet sich jetzt kombinatorische Logik also eine Funktion ohne Speicher die berechnet wird wenn ein Datum in der Pipeline von links nach rechts l uft Bild 4 7 Pipeline aus Flipflops und kombinatorischer Logik Zwischen den vier Registern sind die drei kombinatorische Logiken f1 bis f3 Die Funktion der Pipeline ist R4 3 f2 f1 R1 Rl 2 5 2 Die Zeilen 21 26 in Beispiel 4 8 sind das Herz der Pipeline In ihnen wird mit der positiven Flanke von CP jeweils f r jede Stufe aus dem alten Wert des vorigen Registers ein neuer Wert berechnet Die kombinatorischen Logiken sind in den Zeilen 28 41 als Funktionen definiert Den Takt generieren die Zeilen 43 47 CP ist High Schritte lang g ltig und f r Low Schritte 0 In den Zeilen 49 61 werden nach Ausgabe einer Simulationskopfzei
8. e die Ereignis Kontrolle und e die Anweisung wait Alle drei Zeitkontrollen k nnen die sequenzielle und zusammenh ngende Bearbeitung der Anweisungen in einem initial oder always Block unter brechen Bei der Zeitverz gerung und der Ereignis Kontrolle ist dies stets der Fall d h die unterbrochene Bearbeitung der Anweisungen wird zu einem sp teren oder im gleichen Zeitpunkt wieder aufgenommen Die wait Anweisung unterbricht die Ausf hrung nur falls die abzuwartende Bedingung nicht bereits erf llt ist V6 Warten Bei 7 tritt eine Zeitverz gerung von 7 Zeiteinheiten ein w hrend der andere parallele Prozesse weiterarbeiten Danach wird die Bearbeitung fortgesetzt Statt 7 k nnen auch variable Ausdr cke stehen Der always Block im Beispiel 3 8 gibt nderungen von DATA aus Der initial Block enth lt drei Zeitverz gerungen die mittlere befindet sich innerhalb einer Zuweisung In diesem Fall verschiebt sie die Zuweisung von 1 an DATA um 10 Zeiteinheiten sodass sich DATA erst zum Zeitpunkt 20 in 1 ndert Man beachte die Unterschiede zwischen 10 DATA A DATA 10 A und DATA A 10 module time_delay reg DATA always DATA display Zeit 2 0f DATA d time DATA initial begin DATA 0 10 DATA 10 1 10 end endmodule Zeit zeit 20 Beispiel 3 8 Warten mit Bei dem Block IN1 3 IN2 5 3 2 Zeitkontrollen 3 9 RESULT 1 RESULT 4 RESULT
9. hello_world v l8j xj File Edit View Project Sour Process Simulation Window Help gt 18 x osel sl SE eme fos Ae ee fmen z Qll alles A Seel wre re Bes 1 Pmodule hello_worid 4 helo_worldise 5 neues aa Dome E fuming raenia World iS Quellenfenster Bit Module View teu Snapshot DO Leray View Quelltext Editor ix Processes for Source helo_ word eI Add Existing Source Prozessfenster E View HDL Instantiation Template 7 ee um il Rit Process View E Design Sum V hella_warld v Compiling verilog file hello_world u Na errors in Compilation Konsole Bild E 1 berblick zum Projekt Navigator Analysis of file lt hello_world prj gt succeeded Process Check Syntax is up to date In 7 Col 10 Verilog e Quelltext Editor Hier schreiben Sie ihren Quelltext Bild E 1 e Quellenfenster Ein Rechtsklick erlaubt ihnen hier mit New Source neue Quellen hinzuzufiigen wie z B Module und Testrahmen e Prozessfenster In diesem Fenster werden alle f r die momentan ausgew hlte Quelle aus dem Quellenfenster verf gbaren Prozesse angezeigt Beachten Sie also dass Sie stets die richtige Quelle angew hlt haben um den gew nschten Prozess auszuf hren e Konsole Hier erscheinen die Konsolenausgaben die ber erfolgreiche Compi lierung oder gefundene Errors etc Auskunft geben Ein neues Projekt anlegen e Klicken Sie File gt New Project e
10. 2 592 OPB to PLB Bridge SEs l 39 64 Bit Busbreiten 449 898 720 ___ OPB PLB to OPB Bridge PLB 32 64 Bit Busbreiten 662 787 620 Tabelle 7 17 Beispiele von Intellectual Property f r das ML310 7 5 HW SW Codesign in der Praxis die universelle Entwicklungsplattform ML310 7 21 7 5 2 Das ML310 als Entwicklungsumgebung f r eingebettete Systeme Das besondere an FPGA Prototyping Boards wie dem ML310 ist dass wir selbst entwickelte Hardware und Software f r eingebettete Systeme live auf dem Board erproben und verbessern k nnen bis wir schlie lich mit unserem Produkt zufrieden sind Anschlie end k nnen wir die entstandene Hardware Netzliste direkt in die Fertigung geben Beim Hardware Software Codesign mit dem ML310 k nnen sehr unterschiedliche Programmiersprachen und Methoden zum Einsatz kommen n mlich VERILOG und VHDL f r die Beschreibung von Hardware auf RTL Ebene C C Java und auch UML dagegen f r die Software Entwicklung Zwar kann jede Komponente zun chst separat in der jeweils geeigneten Entwicklungsumgebung implementiert werden etwa Eclipse f r Software und ISE f r Hardware aber um Probleme fr hzeitig zu erkennen die erst beim Zusammenstecken aller Bausteine in der Integrationsphase entstehen erstellen wir so fr h wie m glich ein vollst ndiges High Level Modell des Gesamtsystems In diesem Modell ist bereits jeder Baustein als Verhaltensmodell Blackbox mit Ko
11. Chip Entw rfen unterscheidet Demzufolge werden eine Spezifikation und ein Register Transfer Modell in einer Hardware Beschreibungssprache angefertigt die die Logiksynthese in ein Gatter modell umsetzt Kapitel 5 Dabei ber cksichtigt die Technologie Bibliothek die technischen M glichkeiten der konkreten FPGA Architektur Neben dem RTL Modell gibt es die M glichkeit die Schaltung durch boolesche Gleichungen zu spezifizieren oder als Zustandsdiagramm einzugeben Ein Platzierer versucht anschlie end die gegebenen Logikbl cke g nstig auf dem FPGA zu verteilen Typischerweise wird versucht die voraussichtliche Gesamtl nge der Verbindungen bei der Platzierung zu minimieren Der letzte Schritt besteht schlie lich in der Verdrahtung die geeignete Verbindungsabschnitte aussucht und durch Schalter verbindet Auch hierbei ist die Verz gerung unter Umst nden ein kritischer Faktor da die programmierbaren Verbindungsschalter relativ viel Verz gerung bedeuten Die theoretischen Informatiker k nnen beweisen dass das Platzieren und Verdrahten ein sehr schwieriges Problem ist n mlich NP hart d h praktisch nicht exakt l sbar Stattdessen werden gut brauchbare heuristische N herungsl sungen eingesetzt Das Ergebnis des Platzierens und Verdrahtens besteht schlie lich in einem Bitstrom f r eine Programmiereinheit die das fertige FPGA konfiguriert Dies dauert zwischen einigen Millisekunden und einer Sekunde 6 2 Programmiertechniken
12. Hardware SoftwareSysteme Teil 1 Vorlesung Ulrich Golze Technische Universitat Braunschweig Abteilung Entwurf integrierter Schaltungen E I S Oktober 2008 Vorwort Willkommen bei den Hardware Software Systemen Diplom Studenten nehmen freiwillig an dieser Veranstaltung teil so sollte es sein Bachelor Studenten m ssen daran teilnehmen aber ich hoffe dass Sie hinterher sagen Das h tte ich auch freiwillig gemacht Und vielleicht nehmen Sie hinterher ja sogar freiwillig an der Fortsetzung zum Chip und System Entwurf teil wie vor Ihnen etwa 1 500 Studierende in den letzten 20 Jahren Worum geht es bei den Hardware Software Systemen Diese Frage kann das Vorwort nat rlich nicht beantworten dazu gibt es dieses Skript dazu treffen wir uns ein Semester lang in der Vorlesung und vor allem den praktischen bungen an modernen Entwicklungsplattformen mit spannenden CAD Werkzeugen Aber doch so viel Sie entwerfen Ihre eigene Hardware ohne zu l ten oder Transistoren zu verstehen Stattdessen formulieren Sie Ihre Absichten in einer speziellen komfortablen Programmiersprache einer Hardware Beschreibungssprache Und Sie m ssen auch nicht wochenlang warten bis Ihre Hardware ma gefertigt aus einer Fabrik geliefert wird Nein nach Sekunden l uft Ihre Schaltung auf einer Entwicklungsplattform Und wenn Sie n her hinschauen enth lt diese Plattform auch gleich noch einen Standardprozessor f r Ihre normale Softwa
13. IN1 IN2 werden die ersten drei Anweisungen immer direkt hintereinander ausgef hrt d h es wird mit Sicherheit keine Anweisung eines weiteren always oder initial Blockes oder eines sonstigen parallelen Prozesses eingeschoben So wie man zu Recht erwartet dass die Summe aus IN1 und IN2 und die Zuweisung an RESULT ununter brochen und als Ganzes bearbeitet werden werden auch Nebenrechnungen aus mehreren Anweisungen ohne Zeitkontrolle als Einheit zu einem Simulationszeitpunkt bearbeitet Dagegen unterbricht die Zeitkontrolle 1 die Ausf hrung des Blockes zum aktuellen Zeitpunkt ty und es wird ein Ereignis f r t2 t1 1 erzeugt dass n mlich dann die Anweisungen hinter der Zeitkontrolle ausgef hrt werden Andere parallele und f r t geplante Ereignisse k nnen jetzt bearbeitet werden auch z B RESULT 0 Danach werden t4 erh ht und die dann vorgesehenen Ereignisse bearbeitet Die Ereignis Kontrolle ausgesprochen t wartet auf eine nderung des Ausdrucks hinter dem Bei vorangestelltem posedge wird auf eine positive Flanke von 0 x oder z auf 1 gewartet Entsprechend wartet negedge auf eine negative Flanke von 1 x oder z auf 0 Soll auf mehrere Anderungen gewartet werden so k nnen diese mit or oder Komma verkn pft werden nicht zu verwechseln mit den Logikoperationen und V23 V24 Im Beispiel 3 9 wartet der erste always Block auf eine positive Flanke von CLOCK der zweite auf eine negative un
14. Specific C Debug MicroBlaze Only ae Instance C PowerPC Ony A Analog 2 Ihterrupt 5 B In I ppc405_0 Either Processor Bi ppc405_1 Clocking Logic jtagppe_cntlr 00 gt itagppc_o ie CA C OPB Communications 6 Memory proc_sys_reset 00 reset_block C FSL C PLB cpu Serial isbram_if_cntlr 00 3 J iocm_cntlr SE meee Custom IP Timers isocm_bram C 0CM dsbram_if_cntlr 00 docm_entir dsocm_bram ie plb2opb_bridge 01 plbzopb chipscope_icon J co_oPr onaL chipscope_la chipscope_opb_iba util_reduced_logic 00 ORGate_1 chipscope_plb_iba dem_0 chipscope_vio clock_module_ref inverter_configurable 00 inverter_configurable_0 dem_module chipscope_icon 00 chipscope_icon_D der inte chipscope_ila_O bre inverter_configurable isbram_if_cntlr itagppc_cntir Imb_bram_if_cntlr Delete gt gt m mch_opb_sdram microblaze mii_to_rmii opb2der_bridge opb2plb_bridge opb_arbiter opb_atme opb_bram_if_entl opb_central_dma opb_deltasigma_dac opb_eme i v opb ethernet OK Abbrech Obemehme Hilf echen Bemehmen e y Bild D 8 Eine Instanz des Addierer IP Core zum Projekt hinzuf gen BEGIN aplusb_hw PARAMETER INSTANCI PARAMETER HW_VER END Beispiel D 9 Instanzierung des Addierer Cores in der Datei system mhs D 8 D Lab 3 Hardware Software Codesign auf dem ML310 Das Top Level Modul aplusb_hw v des Addierers stellt ber die beiden Ausg nge D
15. display maximum 1 0 d maximum display maximum 0 1 d maximum end endmodule maximum 0 0 maximum 1 0 maximum 0 1 Beispiel 3 14 Funktion mit Simulationsausgabe 3 14 3 Die wichtigsten Befehle von VERILOG Vii if else Ist die Bedingung hinter if wahr die Oder Verkniipfung aller Bits ist 1 wird die folgende m glicherweise leere Anweisung ausgef hrt andernfalls der else Teil Im zweiten bis f nften Fall von Beispiel 3 15 ist die Veroderung aller Bits 1 module if_test reg 7 0 DATA Variable mit 8 Bit always DATA begin Swrite Zeit 2 0f DATA b time DATA if DATA Sdisplay if Zweig else Sdisplay else Zweig end initial begin DATA 0 10 DATA 1 10 DATA 100 10 DATA 8 b0000_001x 10 DATA 8 bl111_111z 10 DATA 8 bxxxx_xxxx 10 DATA 8 bzzzz_zzzz 10 end endmodule 00000000 00000001 01100100 0000001x 1111111z XXXXXXXX ZIZZZZZZ h FH FH Fh Beispiel 3 15 Alternative if else Mit der Alternative kann man in Zuweisungen ein if else ersetzen Im Beispiel 3 16 bernimmt RESULT den Wert von SOURCE falls ENABLE wahr ist sonst 8 bx 3 3 Klassische Programmsteuerung 3 15 module selection reg ENABLE RESULT always ENABLE begin RESULT ENABLE 0 1 display Zeit 2 0f RESULT b time RESULT end initial begin ENABLE Aende
16. el L C3 7 VE i Switch Matrix Jeder Knoten der Switch Matrix besteht aus 6 Schaltern Schalter Verbindungsabschnitt Bild 6 10 Verbindungsabschnitte im XC4000 L nge 1 Abschnitte der L nge 1 nicht gezeigt Horizontale Long Lines 6 Schalter Abschnitte der L nge 2 Vertikale Long Lines BER Bild 6 11 Verbindungsabschnitte im XC4000 L nge 2 und sehr lang 6 12 6 Programmierbare Logikbausteine Der normale FPGA Designer wendet diese Phasen mehr oder weniger per Knopfdruck an Sind die Ergebnisse unbefriedigend k nnen mit Spezialkenntnissen ber den FPGA Aufbau oft wesentliche Verbesserungen erzielt werden 6 4 Multiprozessor FPGA Plattformen Unter einer FPGA Plattform verstehen wir hier eine Familie von Modellen die neben einem reinen FPGA wie in den vorigen Abschnitten also einem regul ren Feld aus programmierbaren Logikbl cken mit programmierbaren Verbindungen zus tzliche Komponenten enthalten vor allem einen oder mehrere klassische Prozessoren Multiprozessor aber auch Speicherbl cke Multiplizier Felder und feste Kommunikations Architekturen Die Modelle der Plattform Familie sind im Wesentlichen gleich aufgebaut und unterscheiden sich vor allem in der Anzahl der Komponenten Ohne den Entwurf wesentlich ndern zu m ssen kann man also w hlen zwischen mehr oder weniger Logikbl cken mehr oder weniger Speicher und Ande
17. initial und always Bl cke V4 V5 2 3 st ndige Zuweisungen Continuous Assignments V28 4 nichtblockende Zuweisungen V27 und 5 Mischformen aus 1 bis 4 Wir betrachten die hierbei verwendete ereignisgesteuerte Simulation zun chst etwas abstrakter Eine globale Variable bestimmt den Simulationszeitpunkt Zu jedem 4 2 4 Modellierungskonzepte in VERILOG Zeitpunkt k nnen ein oder mehrere Ereignisse zur parallelen Ausf hrung vorgesehen sein Ein Ereignis Scheduler eines VERILOG Simulators bernimmt die Stelle des Programmz hlers Bild 4 1 zeigt die Simulationszeitachse mit mehreren zu verschie denen Zeitpunkten vorgesehenen Ereignissen 4 t ts Zeit Ereignis 1 Ereignis 5 Ereignis 2 Ereignis 6 Ereignis 3 Bild 4 1 Zeit und Parallelit t Der Simulator f hrt alle Ereignisse aus die zum gegenw rtigen Simulations zeitpunkt t vorgesehen sind und entfernt sie aus der momentanen Ereignisliste Ereignisse 1 2 und 3 Dies geschieht nicht durch echte parallele Bearbeitung sondern durch sequenzielle Bearbeitung in zuf llig ausgew hlter Reihenfolge Wenn keine weiteren Ereignisse zum gegenw rtigen Simulationszeitpunkt t4 existieren wird die Simulationszeit weitergeschaltet bis zum Zeitpunkt t2 eines n chsten vorgesehenen Ereignisses Durch die Ausf hrung von Ereignissen werden oft neue Ereignisse f r die Zukunft oder sogar f r den jetzigen Zeitpunkt erzeugt Beispielsweise k nnte die Ausf
18. Auf diese Weise k nnen bei einem gr eren Projekt alle define Anweisungen in einer einzigen Datei zusammengefasst werden Das Beispiel 3 36 ruft sechsmal Hallo Innerhalb von module_2 werden TIMES und TEXT nicht durch ein zus tzliches define definiert 3 32 3 Die wichtigsten Befehle von VERILOG module module_1 define TEXT Hallo define TIMES 3 reg 2 0 COUNTER initial for COUNTER C TE display endmodule module module_2 reg 2 0 COUNTER initial for COUNTER display endmodule 1 COUNTI ES COUNTE TEXT Beispiel 3 36 define V31 Sdisplay Swrite Sdisplay gibt seine Argumente auf dem Bildschirm aus und beginnt eine neue Zeile Die Argumente bestehen entweder aus einem in Anf hrungszeichen ein geschlossenen Text mit optionalen Formatierungsanweisungen oder aus Ausdr cken welche gem den Formatierungsanweisungen ausgegeben werden Tabelle 3 37 n neue Zeile t Tabulator A das Zeichen a Anf hrungszeichen gt das Zeichen h H Hexadezimalzahl d D Dezimalzahl 0 0 Oktalzahl b B Bin rzahl f F reelle Zahl SC einzelnes Zeichen ES Zeichenkette SE Zeit Sm aktueller Modulname Tabelle 3 37 Formatierungsanweisungen Bei der Ausgabe von Hexadezimal Oktal oder Bin rzahlen werden soviele Stellen ausgegeben wie der Gr e des Ausdrucks entspricht Daher werden f hrende Nullen falls vorhan
19. B 1 7 Simulation starten Klicken Sie im Konsolenfenster einmal mit der linken Maustaste rechts neben VSIM 2 gt Dort blinkt nun der Cursor und Sie k nnen die Simulation mit run starten Beispiel B 9 Das Modul hello_world gibt nun Hello World aus dem wie allen Simulationsausgaben noch ein vorangestellt ist B 6 B Lab 1 VERILOG und seine Tools Tr Modelsim XE III Starter 6 0a Custom Xilinx Yersion Do x Eile Edit Yiew Format Compile Simulate Add Tools Window Help RKeET R B QQQm gt SHAH lsusiimeanzia 4 ojala ae Workspace H A X Objects H A X Name n x Ee ab HINITIALH38 D ASSIGNH40 D ASSIGNHAT ASSIGNH4Z HINITIALHAS HINITIALHS2 Cursor 1 Er je Ops to 1 ns Now Ops Delta 0 al wave gt Model Technology ModelSim XE III vlog 6 0a Compiler 2004 11 Nov 10 2004 Compiling module glbl Top level modules glbl vsim L zilinxcorelib_ver L unisims_ver t 1ps hello_world glbl Loading work hello_world Loading work glbl Warning vsim 3010 TSCALE Module glbl has a timescale directive in effect but previous modules do not Region glbl main_pane mdi interior cs vm paneset cli_O wt clip cs Error vish 4014 No objects found matching Error in macro hello_world Ido line 10 vish 4014 No objects found matching while executi
20. Beispiel 2 1 begrenzt von module und endmodule gibt die Zahlen 1 bis 3 auf dem Bildschirm aus In Zeile 1 wird die Z hlvariable I definiert Die zusammen gesetzte Anweisung nach initial wird genau einmal ausgef hrt Die Anweisungen Sdisplay geben jeweils eine Zeichenkette aus I wird mit d ganzzahlig aus gegeben startet einen Kommentar bis zum Zeilenende begin ist wie alle reservierten W rter klein geschrieben und verschieden von Begin und BEGIN Die Anweisungen innerhalb des initial Blockes von begin bis end werden sequenziell also der Reihe nach ausgef hrt module count dies ist ein Kommentar integer I initial begin display Beginn der Simulation for I 1 I lt 3 I I 1 display Durchlauf d I Sdisplay Ende der Simulation end endmodule Beispiel 2 1 Ein einfaches Modul Der Simulator ModelSim liefert Beispiel 2 2 als Ergebnis Zu sehen ist auch der zugeh rige Dialog den wir bei k nftigen Ergebnissen ebenso weglassen werden wie das zu Beginn jeder Ausgabenzeile 2 4 2 berblick zur Hardware Beschreibungssprache VERILOG ModelSim gt vsim beispiel_2_01_count vsim beispiel_2_01_count oading beispiel_2_01_count VSIM 9 gt run Beginn der Simulation Durchlauf 1 Durchlauf 2 Durchlauf 3 Ende der Simulation VSIM 10 gt quit sim Beispiel 2 2 Ausgabe zu Beispiel 2 1 Das Modul maximum in Beispiel 2 3 berechnet das Maximum zweier Zahlen A und
21. CH 30 DataPort 30 CH 31 DataPort 31 CH 32 DataPort 32 AU 22 Nsta antaa INFO Cable Parallel IV Port LPT1 Speed 5 MHz INFO Found 0 Core Units in the JTAG device Chain COMMAND configure 1 C xilinx projects local2_edk_software implementation system bit 0 INFO Found 1 Core Unit in the JTAG device Chain l Reading file C wilimeprojects local2_edk_software implementation system bit Bild E 4 Triggern in Chipscope TeraTerm e Wahlen Sie beim Start von TeraTerm als Schnittstelle Serial und als Port COM1 E 8 E Zusammenfassung der bungen e Im Men Setup Serial Port k nnen Sie diese Einstellungen kontrollieren Bild E 5 Tera Term Serial port setup x Port COMI v Baud rate 19600 Data abit gt Cancel Parity Inne Stop bt xl Help Flow control Inne 7 Transmit delay fo msec char fo msec line Bild E 5 TeraTerm Serial port setup XMD Konsole ffnen starten e W hlen Sie im Men Tools den Eintrag XMD e Als Prozessorinstanz wird ppc405_0 ausgew hlt e Beim ersten Starten werden Sie aufgefordert die XMD Optionen einzustellen Orientieren Sie sich hierzu an Bild E 6 XMD Software auf das Board laden ausf hren und stoppen e Um das Board in einen definierten Zustand zu bringen f hren Sie als erstes mit dem Befehl rst einen Reset durch e Wechseln Sie mit cd Projektname in das Unterverzeichnis der compilierten Softw
22. Dennoch basieren fast alle eingebetteten Systeme auf der gleichen typischen Basisarchitektur aus Bild 7 5 Abh ngig von den Anforderungen an das Produkt werden die Standardbausteine CPU bzw Mikrocontroller Speicher und oft FPGA sinnvoll ausgew hlt und dimensioniert so dass als Ergebnis ein integriertes Gesamtsystem entsteht das entweder als System on Chip oder aus diskreten Bausteinen auf einer Platine aufgebaut genau f r die zu bew ltigenden Aufgaben ma geschneidert ist Um etwas Gef hl f r den typischen Aufbau eingebetteter Systeme zu bekommen wollen wir uns nun zwei sehr unterschiedliche Beispiele etwas genauer ansehen eine Steuereinheit f r die Home Automation zum Fernsteuern von Lampen und Jalousien 7 4 Beispiele f r eingebettete Systeme 7 11 auf Basis eines kosteng nstigen 8 Bit Mikrocontrollers und eine digitale Fotokamera die mit der FPGA Plattform Virtex II Pro aus Abschnitt 6 4 realisiert wird 7 4 1 Eine Steuereinheit f r die Home Automation In der Home Automation werden Fenster Jalousien Lampen HiFi TV und Haushaltsger te sowie die Warmwasser und Heizungsanlage mit kleinen Steuer ger ten ausgestattet die eine Fernsteuerung aller wichtigen Funktionen erm glichen Durch die Einbindung dieser Steuerger te in einen Netzwerkverbund In Home Network k nnen Beleuchtung Klima und Unterhaltungselektronik von jedem beliebigen Punkt im Haus berwacht und kontrolliert werden beispielsweise durch Bedien
23. Durch minimale Reaktionszeiten auf Hardware Interrupts und programmierbare Timer mit hoher Zeitaufl sung ist der Prozessor gut f r Echtzeit Anwendungen geeignet Neben dem Standard Befehlssatz des PowerPC werden zus tzlich spezielle Instruktionen zur digitalen Signalverarbeitung unterst tzt 6 4 Multiprozessor FPGA Plattformen 6 17 Wie bei PowerPC Prozessoren blich ist der Zugriff auf den Arbeitsspeicher mit einem Dual Port Speicher realisiert es kann also beispielsweise gleichzeitig ein Befehl geholt und das Ergebnis eines fr heren Befehls zur ckgeschrieben werden Die zwei unabh ngigen Ports arbeiten jeweils mit einem eigenem Cache W hrend klassische Von Neumann Rechner nur mit einem Speicher Port auskommen m ssen liegt hier eine Harvard Architektur vor Bild 6 16 zeigt zwei On Chip Memory Controller OCM die einen PowerPC direkt an den Blockspeicher des FPGA anschlie en Der Datenport bertr gt auf diese Weise 32 Bit pro Taktzyklus der Instruktionsport sogar 64 Bit Control t On Chip PowerPC Memory Controller Bild 6 16 Interface Logik Eingebetteter PowerPC Programme f r den PowerPC 405 werden ganz normal in den Sprachen C C oder auch Java entwickelt und k nnen mit einem Instruction Set Simulator ISS getestet werden Dabei k nnen wir den ISS sogar mit unserem VERILOG Simulator koppeln und so das gesamte Hardware Software System im PC simulier
24. GLOBAL_CLOCK 1 10 GLOBAL_CLOCK 0 10 45 GLOBAL_CLOCK 1 10 GLOBAL_CLOCK 0 10 46 GLOBAL_CLOCK 1 10 GLOBAL_CLOCK 0 10 47 end 48 endmodule mainmodule 49 Beispiel 4 12 Producer Consumer Kommunikation Die Schnittstelle jeder Instanz besteht aus einem Eingang CLOCK und einem bidirektionalen Port DATA Zeile 2 Die beiden Takteing nge werden durch eine externe GLOBAL_CLOCK stimuliert wobei listigerweise M2 durch den invertierten gegenphasigen Takt gesteuert wird Die beiden Datenanschl sse sind durch den externen Wire GLOBAL_DATA verbunden Zeilen 38 39 Innerhalb einer Instanz wird die Datenleitung in beiden Richtungen benutzt das hei t es kann von innen nach au en geschrieben und von au en nach innen gelesen werden Dazu ist zun chst in Zeile 5 eine st ndige Verbindung Continuous Assignment geschaffen vom Register BUFFER zur Leitung DATA demzufolge werden alle Werte von BUFFER und deren nderungen auf den Bus M1 DATA bzw M2 DATA und ber die st ndigen Verbindungen der Instanzenports auch auf die externe Leitung GLOBAL_DATA und damit auf M2 DATA bzw M1 DATA weiter gegeben Die Gesamtleitung M1 DATA GLOBAL_DATA M2 DATA wird durch die beiden Quellen M1 BUFFER und M2 BUFFER getrieben Sollten diese unterschiedliche O 1 Werte haben entsteht auf dem Datenbus der unbestimmte Zustand x Stattdessen wird in Zeile 19 daf r gesorgt dass w hrend der jeweils zweiten lokalen Taktphase de
25. Geben Sie den Namen Ihres Top Level Moduls Ihres einzubindenden Codes an und aktivieren sie den Haken bei Use Version Klicken Sie dann auf Weiter Step 2 Wahlen Sie den Punkt HDL Source Files vhd v und klicken Sie auf Weiter Step 3 Stellen Sie VERILOG als Sprache ein und w hlen den Punkt Browse to your existing HDL source and dependent library files vhd v in next step Klicken Sie auf Weiter Step 4 Fiigen sie die Verilog Dateien hinzu von denen ein IP Core erstellt werden soll und klicken Sie auf Weiter Step 5 Klicken Sie auf Weiter Step 6 Wahlen sie den Punkt No Interrupt und klicken Sie auf Weiter Step 7 Klicken Sie auf Weiter Klicken Sie auf Fertig stellen Die IP Cores sind nun im Unterverzeichnis pcores des Projektverzeichnisses gespeichert E 12 E Zusammenfassung der bungen XPS IP Core erstellen mit DCR Lese oder Lese Schreibzugriff Klicken Sie auf Tools Create Import Peripheral Klicken Sie auf Weiter W hlen Sie Import existing peripheral und klicken Sie zwei mal auf Weiter Step 1 Geben Sie den Namen Ihres Top Level Moduls Ihres einzubindenden Codes an und aktivieren sie den Haken bei Use Version Klicken Sie dann auf Weiter Step 2 Wahlen Sie den Punkt HDL Source Files vhd v und klicken Sie auf Weiter Step 3 Stellen Sie VERILOG als Sprache ein und w hlen den Punkt Browse to your existing HDL source and dependent library files vhd v in next step Klicken Sie auf
26. Masken und Prototypenfertigung N w f 500k 1B ai 200k 4 J Trend 500M 100k J Faktor 2 pro J J Generation 50k 200M J 100M4 Trend 24 20k Standard Cell J 10K 4 u Se 5K 20M4 m 2K Gate Array e e i bipol 10M ee ee ee ee ee us t 1 t T T T T T T T E 1 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 10u Su 3u 2p 1 54 1 04 7u Sy 354 254 184 134 1u 70n Bild 1 11 Kosten einer Chip Fabrik Bild 1 12 Kosten eines Chip Musters U PIPPI IY 500 Re ows 30 5 0 5 0 06 0 008 Bild 1 13 1973 1981 1987 1990 1995 2001 2009 MBit DRAM brigens ist Bild 1 13 Bark02 entnommen w hrend sich die brigen Bilder und Daten bis 2001 in Baue02 finden und dann durch eigene Recherchen fortgeschrieben wurden Im Folgenden betrachten wir zun chst den klassischen Hardware Entwurf Abschnitt 1 3 und dann im Hardware Software Codesign die Koppelung mit normaler Software auf Standardrechnern sowie die moderne M glichkeit alles wiederum auf einem einzigen System on Chip unterzubringen Abschnitt 1 4 Die Eigenheimkosten w ren heutzutage wesentlich h her und der Preisverfall damit noch krasser 1 3 Der Hardware Entwurf 1 9 1 3 Der Hardware Entwurf Wir wenden uns jetzt dem Entwurf oder Design von derart m chtigen Schaltungen zu W hrend kein vern nftiger Mensch Puzzles mit mehr als 1 000 Teilen l sen wird steht der heutige Designer vor de
27. Nutzen einer konkreten Partitionierung m glichst exakt vorhersagen oder zumindest relativ richtige Vorhersagen treffen und bei denen der Sch tzaufwand wesentlich kleiner ist als das Finden der fertigen L sung Qualit tskriterien bei der Sch tzung sind die Effizienz Takt Latenz Ausf hrungszeit Datenrate sowie f r die beteiligte 7 3 Eingebettete Systeme 7 7 Hardware Sch tzungen zur Fl che zu den Kosten zur Leistung und zur Testbarkeit Auch die Kommunikationskosten m ssen ber cksichtigt werden Ebenfalls gro e Bedeutung hat neben dem Hardware und Software Entwurf das Kommunikations Design besonders wenn das komplette System auf einem einzigen System on Chip integriert werden soll Man unterscheidet zwischen Protokollen auf relativ abstrakter Ebene und Interfaces auf niedriger Ebene zwischen den Hardware und Software Bausteinen 7 3 Eingebettete Systeme Embedded Systems sind im Gegensatz zu klassischen Universalrechnern in einem technischen System oder Produkt verborgen Eingebettete Systeme k nnen nur aus Software auf einem Standardprozessor bestehen nur aus anwendungsspezifischer Hardware oft aber als Hardware Software Codesign aus beidem Anwendungsbeispiele finden sich in Vermittlungssystemen und Endger ten der Telekommunikation vor allem auch der Mobilkommunikation in der Unter haltungselektronik in den Bereichen Messen Pr fen und Regeln im Kraftfahrzeug in der Automatisierung oder bei verteilten Systeme
28. VERIO G OperatOne its ae een 5 3 3 Umsetzung einiger VERILOG Konstrukte eee Ar REDE an RER Programmierbare Logikbausteine sk W bErBHcK 4 rear eher 6 1 1 Evolution und Begriffe u nee 6 1 2 Grundaufbau eines FPGA 00020ssseeeesnnnnnnssenneennnnnnnnnnennnnnnn 6 1 3 Entw rfsablauf en seen 6 2 Progtammiertechniken us Rei 6 2 1 Programmierung durch SRAMS sensennnssnnsnnennnnen 6 2 2 Weitere Prosrammierelemente unseren 6 3 FPGAs von Xilinx die Wurzeln cccessnsseseneeneseeeennnneseennnneeennnn en 6 4 Multiprozessor FPGA Plattformen 220022400022ssnssnsessnneessnneennnn 6 4 1 Architektur des Virtex I Pro ussseneneenennnnnennn en 6 4 2 Eogikbl ckE esse aneignen Blockspeicher und Multiplizierer ccccceesseceeeteceesteceeeteeeeesees Die eingebetteten Prozessoren PowerPC 405 uueneeen Kommunikation im Chip seien ee 6 4 5 1 Network On C Bip sau nee en 6 4 5 2 IInlerconneel nennen 6 4 6 Kommunikation mit dem Chip esenssennnnnennn nn 6 4 7 Rekonfiguration nenne 6 5 Technische Daten und Ausblick uuuu 2220senneseeeennnneeeennnneeeennnnnee NAO Ee e UPU Hardware Software Codesign 7 1 Hardware Software Bausteine cecessssssssessseeesnnnnsnensennennnnnnnnnnnnnnnnnne ADU SOUL Ce a a E ies e A TCO sa Goma hes He 2 Hardware ane ee COT CRE NEO RE ROR Oe
29. ber den DCR Ausgang weitergeleitet Auf diese Weise sind alle an den DCR Bus angeschlossenen Module wie auf einer Perlenkette aufgereiht Der Zugriff auf den Bus ist ausschlie lich dem PowerPC erlaubt alle IP Cores d rfen nur passiv auf Schreib oder Leseanfragen des PowerPC antworten Entpacken Sie d 2_addierer_mit_software_steuerung zip Im Verzeichnis verilog ist die Datei adder v identisch zu der Version aus Abschnitt D 1 Neu sind dcr_write_if v und aplusb_writeonly v Die Datei dcr_write_if v beinhaltet VERILOG Code zur Anbindung des Addierers an den DCR Bus aplusb_writeonly v instanziert als Top Level Modul das DCR Interface sowie den Addierer und beinhaltet notwendige Verdrahtungen D 2 2 IP Core erzeugen und einbinden Im Verzeichnis xps befindet sich ein vorbereitetes XPS Projekt in das Sie im Folgenden einen mit DCR Anschluss ausger steten Addierer Core eingef gen sollen ffnen Sie das XPS Projekt Erstellen Sie nun einen IP Core diesmal jedoch aus den drei Dateien adder v dcr_write_if v und aplusb_writeonly v Geben Sie als Namen f r den Core aplusb_writeonly an Da es sich diesmal um einen IP Core mit DCR Lesezugriff handelt m ssen Sie in Schritt 5 das Feld DCR Slave D 2 Software steuert Hardware D 15 markieren Bild D 19 In den neuen Schritten 6 7 9 und 10 k nnen Sie einfach Weiter klicken und in Schritt 8 w hlen Sie No Interrupt Da wir die Ports der DCR Schnittstelle in dcr_write_if v genau so benannt hab
30. bernimmt der System ACE automatisch die Konfiguration mit Daten aus einem nicht fl chtigen Speicher Bild 7 14 Dazu ist er mit einem CompactFlash Slot verbunden in dem sich eine Speicherkarte mit dem vorgesehenen FPGA Bitstrom befindet Der gesamte Konfigurationsvorgang dauert weniger als eine Sekunde so dass das ML310 kurz nach dem Einschalten betriebsbereit ist Der Bitstrom kann dabei neben der reinen Hardware Konfiguration auch Software in den Blockspeicher des FPGA laden IDE Interface FPGA Virtex Il Pro Bitstrom CompactFlash Konfigurationsvorgang wird beim Einschalten der Stromversorgung aktiviert Bild 7 14 FPGA Konfiguration mit System ACE Das ML310 bietet noch eine ganze Reihe weiterer Bausteine die wir gemeinsam mit den bereits beschriebenen Komponenten in Tabelle 7 15 zusammengefasst haben 7 18 7 Hardware Software Codesign Gruppe Komponente Beschreibung Audio Audio Audio Ein und Ausgabe Mic In CD Audio In Line In Video Line Out Phones Out Stereo 44 1 KHz hierzu ist ein AC97 Controller im Southbridge Chip integriert LC Display 2x16 Zeichen LC Display nicht abgebildet Speicher CF Steckplatz f r CompactFlash Karten zum nicht fl chtigen Einprogrammieren einer FPGA Konfiguration DDR Speicher Steckplatz f r DDR Speichermodule Flash Flash Speicherbaustein 512 KB zur freien Verwen dung z B nicht fl chtiges Sichern von Anwendungs einstellungen Kommuni
31. das sind Speicher die ihre Information kontinuierlich dynamisch auffrischen miissen 1 6 1 Einleitung W hrend Speicher und Mikroprozessoren in h chsten St ckzahlen vermarktet werden interessieren wir uns auch f r den Entwurf ma geschneiderter oder kunden spezifischer Schaltungen Application Specific Integrated Circuits ASICs Bild 1 4 zeigt dass solche ASICs fr her auf lteren Technologien gefertigt wurden w hrend sie heute auch in jeweils modernster Technologie zur Verf gung stehen 1000 gt 2k q y 7 Chip Flache uP Mamea Pin Anzahl 2 2 1000 5004 mm von Mikroprozessoren PD LGA775 400 Alpha 21364 0 254 0 J 300 Pentium 0 84 BM Power 5 5001 md pany Pl uPGA 4 0 18 J entium Pro P4 uPGA 2004 486 prop Trend 12 sf Clie ae a 11 0 354 Pentium D J tium PGA Pentium 0 6u 2004 ane P 110 254 m 100 4 a o PINE 0 184 486 PGA J Pentium 0 354 386 PGA J 1004 50 4 J 40 504 304 z Trend 12 1 204 4004 4004 DIL VO 10r raar EEE a rr rT 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Bild 1 6 Chip Fl che Bild 1 7 Anschl sse Ein weiterer wichtiger Faktor war die Vergr erung der Chip Fl chen bei Mikroprozessoren Bild 1 6 die trotz der h heren Dichte pro Fl che von 10 auf heute etwa 600 mm angestiegen ist ein Meisterwerk fehlerfreier Fertigungstechnologie Der j hrliche Ans
32. dass alle Wortbreiten von Signalen und Variablen explizit spezifiziert werden Andernfalls k nnen bei der Synthese unn tig gro e Gattermodelle entstehen Operator Typ Operator Symbol Operation arithmetisch multiplizieren is dividieren durch 2 addieren subtrahieren Modulus Vorzeichen Vorzeichen logisch logische Negierung amp amp logisches and logisches or Relation gt gr er lt kleiner gt gr er gleich lt kleiner gleich Gleichheit Gleichheit l Ungleichheit bit weise bit weise Negierung amp bit weises and bit weises or bit weises xor oder bit weises xnor Reduktion amp Reduktion mit and amp Reduktion mit nand Reduktion mit or Reduktion mit nor A Reduktion mit xor oder Reduktion mit xnor Shift gt gt Rechts Shift lt lt Links Shift Konkatenation 3 Konkatenation bedingt bedingt Tabelle 5 3 VERILOG Operatoren der Logiksynthese 5 3 2 VERILOG Operatoren Fast alle Operatoren in VERILOG sind in der Logiksynthese erlaubt die in Tabelle 5 3 zusammengefasst sind eingef hrt wurden diese Operatoren ja bereits 5 6 5 Einf hrung in die Logiksynthese andernorts Nur die Operationen und des w rtlichen Vergleichs die sich auf x und z beziehen machen wenig Sinn und sind daher entweder unzul ssig oder werden wie und behandelt 5 3 3 Umsetzung einiger VERILOG Konstrukte Anhand von ein paar Beispielen wo
33. ende Modul Chip und System Entwurf dort k nnen Sie sich n mlich in mehreren Praktikumsvarianten oder gar in einer anschlie enden Bachelor Master Studien oder Diplomarbeit beliebig verwirklichen Wir bem hen uns um guten Service weil wir m chten dass etliche von Ihnen bei uns weitermachen Zu gutem Service geh rt brigens auch dass wir offen sind f r Ihr Feedback positives vor allem aber auch kritisches Feedback Lab 1 VERILOG und seine Tools Das erste der drei Labs f hrt in die praktische Arbeit mit der Hardware Beschreibungssprache VERILOG ein Sie lernen erst mal die Oberfl chen unserer CAD Tools ISE und ModelSim kennen und dann Schritt f r Schritt neue Features wie automatische Testrahmen Generierung und grafische Simulationsausgabe Vor allem werden nat rlich auch die Konzepte aus der Vorlesung vertieft und praktisch angewandt L ngere Quelltexte m ssen Sie nicht abtippen sondern k nnen sie von unserer bungs Webseite _ http www eis cs tu bs de schroeder hw sw uebungen herunter laden B 1 Hello World Dass aller Anfang gar nicht so schwer ist werden Sie jetzt feststellen Sie legen ein Projekt an geben ein winziges VERILOG Programm ein und simulieren es B 1 1 Projekt Navigator starten Starten Sie den Projekt Navigator in Bild B 1 und Sie sehen seine grafische Ober fl che in Bild B 2 Kr Bild B 1 Project Navigator Projekt Navigator B 2 B Lab 1 VERILOG und seine Tools P xili
34. hrt Wie kann man den always Block unterbrechen und so die Kontrolle an einen anderen Block abgeben Frage 3 Was ist der signifikante Unterschied zwischen der blockenden und der nicht blockenden Zuweisung Frage 4 Wie k nnen zwei Variablen ihre Werte in einer Programmiersprache wie C oder Java tauschen Wie kann man dies viel einfacher in Verilog realisieren Frage 5 Was ist serielle was ist parallele Daten bertragung Herzlichen Gl ckwunsch Sie haben den regul ren Teil von Lab 1 erfolgreich absolviert und die Grundlagen von Verilog erarbeitet Die nun folgenden Aufgaben sind freiwillig und anspruchsvoller Je nach dem wie weit Sie im Zeitplan sind k nnen Sie diese Aufgaben zus tzlich bearbeiten Allerdings sollen Sie mit B 8 und B 9 beginnen Falls Sie sich dann immer noch nicht ausgelastet f hlen k nnen Sie frei B 8 Debouncer des Spiels Trigger Happy B 19 aus den brigen Aufgaben w hlen Sprechen Sie deswegen Ihr weiteres Vorgehen mit Ihrem Hiwi ab B 8 Debouncer des Spiels Trigger Happy Sie sollen als Vorbereitung f r das Spiel Trigger Happy aus Lab3 ein Modul debouncer entwerfen Es erh lt ein Eingangssignal welches im sp teren Spiel von einem mechanischen Taster stammt und daher st rende Schwingungen enth lt d h ein einziger Tastendruck f hrt typischerweise zu mehreren aufeinander folgenden 1 0 berg ngen Der Modul debouncer filtert diese heraus damit ein Tastendruck nicht als mehrere Tastendr
35. integrierte PowerPC405 Prozessoren und schnelle IO Ports f r eingebettete Anwendungen Werden ausschlie lich Logikbl cke ben tigt bieten sich auch die speziell auf den Low Cost Markt ausgerichteten Spartan 3 FPGAs von Xilinx oder Cyclone II von Altera an die ebenfalls beide in 90 nm gefertigt schon ab 2 pro 100 000 Gatter quivalente zu bekommen sind Eine interessante Alternative zu den immer gr eren und damit auch leistungs hungrigeren FPGAs ist das Konzept der software konfigurierbaren Prozessoren Bei der Stretch CPU wird dazu ein programmierbares Logik Array um einen Standard Prozessorkern herumgelegt so dass ein vollst ndig software konfigurierbarer Datenpfad entsteht F r h ufig wiederkehrende Berechnungen wie bei der DES Verschl sselung oder beim Skalieren von Bildern k nnen dem Prozessor Spezial Instruktionen einprogrammiert werden mit denen Hot Spots aus einigen 10 bis 100 Instruktionen in nur einem Takt ausgef hrt werden k nnen Das hier verwendete Prinzip ist aber keinesfalls neu denn auch digitalen Signalprozessoren DSP werden applikationsspezifische Instruktionen einprogrammiert um die Geschwindigkeit komplexer mathematischer Operationen zu optimieren Anstatt auf eine Auswahl festgelegter DSP Befehle beschr nkt zu sein k nnen auf der Stretch CPU jedoch beliebige Logikschaltungen feingranular konfiguriert werden Die Erweiterungs Instruktionen werden dazu mit Hilfe eines speziellen C C Compilers erzeugt
36. lt 3 R3 Gf 25 end 26 27 Logik zwischen R1 und R2 28 function 7 0 f1 input 7 0 IN 2 29 fl 2 IN 30 endfunction 31 7132 Logik zwischen R2 und R3 233 function 7 0 f2 input 7 0 IN 34 2 IN 5 2433 endfunction 36 LLIT Logik zwischen R3 und R4 38 function 7 0 f3 input 7 0 IN 71 33 3 IN IN 40 endfunction 41 42 Ein Phasen Takt 43 always begin 44 Low CP lt 1 Takt low 45 High CP lt 0 Takt high 46 end 47 48 Ueberwachung von CP sowie aller Register 49 always 7230 Sdisplay 4 0f Sb sa sda sa 51 Stime CP Rl R2 R3 R4 452 1432 Ausgabe Testmuster 54 initial begin 4133 display Zeit CP R1 R2 R3 RA n a 57 negedge CP R1 lt 1 R1 eingeben 58 negedge CP R1 lt 2 R1 eingeben 14 33 negedge CP R1 lt 3 R1 eingeben 60 negedge CP R1 lt 4 R1 eingeben oe 62 for I 1 I lt 5 I I 1 Pipeline leeren fi 68 posedge CP 64 finish 7 68 end 66 4 8 4 Modellierungskonzepte in VERILOG endmodule pipeline 68 W w W ws Goodena KKA Ee HOCOGKKXXKMXXKXMMX MM N 00 OF mt HH aise ee eee rr xx HH ao wow Beispiel 4 8 Pipeline mit nichtblockenden Zuweisungen lt Die Pipeline Ausgabe von Beispiel 4 8 ist in Bild 4 9 noch etwas professioneller grafisch dargestellt Hierf r bietet der Simulato
37. sung des Simulators an Beide Werte haben f r uns hier keine weitere Bedeutung und werden nur aus technischen Gr nden aufgef hrt B 3 Konkurrierende Ereignisse Betrachten Sie nun Beispiel B 12 Das Modul hat zwei Dateneing nge und zwei always Bl cke Um das Modul zu testen d h Daten einzugeben und seine Reaktion zu beobachten ben tigen wir einen Testrahmen Beispiel B 13 Im Testrahmen werden ben tigte Register deklariert der zu testende Modul instanziert sowie Stimuli erzeugt B 3 Konkurrierende Ereignisse B 9 timescale ins 1ps module activation input wire IVARI Modulschnittstelle input wire IVAR2 i always IVAR1 display Block 1 ausgeloest bei Zeit d time always IVAR1 IVAR2 display Block 2 ausgeloest bei Zeit d time endmodule Beispiel B 12 Aktivierungslisten timescale ins 1ps module test_activation reg IVAR1 IVAR2 Instanzierung des Moduls activation die Instanz hei t Activation activation Activation IVAR1 IVAR2 Stimuli initial begin 1 eine Simulationszeiteinheit warten IVAR1 0 IVAR1 auf O initialisieren 1 eine Simulationszeiteinheit warten IVAR2 L3 IVAR2 auf 1 initialisieren end endmodule Beispiel B 13 Testrahmen f r das Modul activation Sie sollen nun das Modul activation mit dem Testrahmen test_activation simulieren Erzeugen Sie dazu ein neues ISE Projekt und nehmen Sie das Modul activation wie gewohnt ins
38. 1 ist Der Vergleich zweier Unbestimmter x ist logisch unbestimmt w rtlich dagegen gleich Ergebnis x bzw 1 Zu beachten ist beim letzten Vergleich dass das Ergebnis 1 Bit breit ist obwohl die verglichenen Ausdr cke jeweils zwei Bit umfassen 3 24 3 Die wichtigsten Befehle von VERILOG linke rechte Vergleich mit Seite Seite er i 1 1 1 0 1 0 0 1 0 1 0 1 x i x x 0 1 2 lt x x 0 1 5 x x x 0 1 z 1 x x 0 1 Z Zz x x 1 0 Tabelle 3 26 Vergleichen V23 Logik amp amp Die logischen Operatoren Negation Und amp amp und Oder verkn pfen mehrere Operanden Beispielsweise kann eine if Bedingung die Erf llung mehrerer Bedingungen fordern Da jeder Operand aber neben den numerischen Werten auch x und z enthalten kann muss f r die logischen Operatoren auch die Verkn pfung dieser Werte definiert werden Das Ergebnis einer Operation ist x wenn in irgendeiner Bit Position eines Operanden ein x oder z vorkommt Eine Ausnahme gilt wenn das Ergebnis durch einen der beiden Operanden bereits eindeutig festgelegt ist So ist der Wert von 1 bx amp amp 1 b0 0 da eine Und Verkn pfung mit 0 stets 0 ergibt Tabelle 3 27 definiert die Und Verkn pfung N Xe Olle o o o ol o x x xX OK x X mM OJN Tabelle 3 27 Und Verkn pfung mit x und z Beispiel 3 28 verdeutlicht Verkn pfungen auf der logischen Ebene 3 5 Operationen 3 25 module logical_operators initial begi
39. 23 wir nur ein V2P30 ein mit etwa 30 000 Logikzellen 2 4 MBit Blockspeicher und 136 Multiplizier Bl cken Der Virtex II Pro wird als 130 nm Prozess gefertigt d h die effektive Transistor Gate L nge ist 1 3 10 m Die maximal 430 Millionen Transistoren des V2P100 werden auf 10 Kupferlagen verdrahtet Die Laufzeit eines kombinatorischen Logikblocks liegt bei weniger als 0 28 ns Die Herstellung entspricht einem normalen Standardprozess f r SRAM Speicher Die Chips werden auf 300 mm gro en Silizium Scheiben Wafers gefertigt Ein Konfigurations Bitstrom beispielsweise f r das V2P30 ist 1 4 MB gro eine Rekonfiguration dauert hier 29 ms Die seit 2005 verf gbaren Virtex 4 Bausteine verwenden eine im Vergleich zu Virtex II Pro kaum ver nderte Technologie erreichen aber durch den neueren und teureren 90 nm Prozess sogar 200 448 Logikzellen bei einer maximalen Taktfrequenz von 450 MHz Der aktuelle Trend FPGAs zunehmend auch in Endprodukten einzusetzen f hrt dazu dass die Hersteller ihre Modellpalette st rker diversifizieren So kann f r jede Anwendung ein passendes und gleichzeitig wirtschaftliches FPGA gefunden werden Xilinx basiert seine Virtex 4 FPGAs hierzu auf der so genannten ASMBL Architektur Advanced Silicon Modular BLock mit der die FPGAs bausatzartig aus einer Bibliothek von Logik DSP und Prozessorbl cken zusammengesetzt werden Verschiedene Serien bieten entweder mehr Logikbl cke mehr DSP Bl cke oder
40. 5 3 8 3 15 2 5 3 8 3 9 always 2 5 3 5 always Block 3 5 5 8 Arithmetik 3 25 assign 3 19 3 33 5 6 at 2 5 3 9 bidirektionale Verbindung 4 9 bidirektionaler Bus 3 4 bit weise Logik amp 3 27 blockende Zuweisung 3 29 Case 2 6 3 16 5 7 casez 3 16 Continuous Assignment 3 19 3 33 define 2 6 3 34 defparam 3 5 Design Constraints 5 1 Design Reuse 5 3 display 2 3 3 34 else 3 15 endfunction 3 14 endmodule 3 2 endtask 3 13 Index Testrahmen 2 7 Test Stimuli 2 7 Time to Market 6 2 Transceiver 6 21 7 17 Transistor 1 16 Transistorebene 1 11 Verdrahtung 6 5 Verhalten 2 8 Verhaltensbeschreibung 1 12 Verhaltensebene 1 11 VERILOG 2 3 Very Large Scale Integration 1 1 1 5 Virtex II Pro 7 15 vollkundenspezifischer Entwurf 1 15 Waveform 7 24 Wearable Computing 1 1 Xilinx Platform Studio 7 21 Zerlegungshierarchie 1 10 1 18 Zwei Phasen Takt 1 13 Ereignis Kontrolle 3 8 Ereignis Kontrolle 3 9 Ereignissteuerung des Simulators 4 1 Extraktion 5 6 Fallunterscheidung 3 16 Feld von Variablen 3 21 finish 3 36 for 3 18 5 8 Formatierungsanweisungen 3 34 function 3 14 5 8 Funktion 3 14 hochohmig z 3 22 if 3 15 if else 5 7 initial 2 3 3 7 initial Block 3 7 inout 3 3 input 3 3 integer 3 18 Konflikt 3 23 Konkatenation 3 28 Konstante 3 18 3 22 Logik amp amp 3 26 Logiksynthese 5 1 Index logische Gleichheit 3 25 logischer Operator 3 26 Modul 2
41. 7 5 2 1 Software Entwicklung mit dem ML310 W hrend die Hardware Synthese einen VERILOG Quelltext auf eine bestimmte Zieltechnologie abbildet etwa ein Virtex II Pro FPGA erzeugen Software Compiler normalerweise Code der f r dieselbe Hardware Plattform bestimmt ist auf der auch der Quelltext entwickelt wurde Beim bersetzen von Software f r eingebettete Systeme ist dies nicht der Fall Hier kommen eingebettete Prozessoren wie der PowerPC aus Kapitel 6 4 4 und Mikrocontroller wie der ST7 aus Abschnitt 7 4 1 oder Spezial CPUs mit angepasstem Befehlssatz ASIP Abschnitt 7 1 1 zum Einsatz so dass wir beim Hardware Software Codesign einen speziellen Cross Compiler ben tigen Bild 7 19 Software Entwicklung y C C Quelltext Dateien Ausf hrbarer Maschinencode f r PowerPC Prozessor AA Cross Bild 7 19 Cross Compiler erzeugt Maschinencode fiir die Zieltechnologie Der durch Cross Compiler erzeugte Maschinencode kann auf dem Entwicklungs rechner selbst nicht ausgef hrt werden Ein direkter Test wie wir dies bei der Software Programmierung gewohnt sind ist dadurch unm glich was die Entwicklung fehlerfreier Software nicht gerade erleichtert Nahe liegend ist nat rlich die Verlagerung des Tests vom Entwicklungsrechner auf das Zielsystem denn daf r haben wir die Software schlie lich auch entwickelt Aber im Gegensatz zu unserem Entwicklungs PC ist die Zielplattform normalerweise nicht mit Tastatur Maus u
42. Addition festgelegt bevor sie in Zeile 18 auf die unteren a bzw oberen b 16 Bit des Wertes writeData abgebildet werden In Zeile 24 sollen die Strings linel und line2 zur Kontrolle des Wertes writeData auf dem LCD Display des ML310 ausgegeben werden Dies kann mit Hilfe des Befehls Icd_write aus der Datei Icd_functions h geschehen Sehen Sie sich die Syntax dieses Befehls an und f gen Sie eine entsprechende Anweisung in Zeile 24 ein Die Anweisung in Zeile 27 gibt a und b ber die serielle Schnittstelle aus Nach zwei Sekunden Pause in Zeile 30 soll in Zeile 33 der Wert writeData an Ihren Hardware Addierer bermittelt werden analog zum vorigen Abschnitt D 2 F gen Sie den hierzu notwendigen DCR Schreibbefehl ein Da der neu erzeugte Addierer IP Core den DCR Bus nicht nur lesen sondern auch schreiben kann l sst sich eine Daten bertragung von Hardware nach Software nun ebenso einfach realisieren wie umgekehrt Hierzu k nnen Sie das folgende Kommando verwenden readData mfdcr der_address Verwenden Sie den Befehl mfdcr um das Ergebnis der Addition von Ihrem Addierer IP Core ber den DCR Bus auszulesen Fiigen Sie den gelesenen Wert readData in Zeile 40 ein um die Summe in den String lLine2 umzuwandeln In Zeile 41 soll Code eingef gt werden der linel und line2 auf dem LCD Display ausgibt so wie in Zeile 24 Anschlie end soll die Summe in Zeile 44 auch noch ber die serielle Schnittstelle ausgegeben werden Kopieren Si
43. Ansicht Die Technologie Ansicht zeigt eine Abbildung Ihres Designs auf die FPGA Technologie Das Netz aus Logikgattern wurde optimiert und in Lookup Tabellen und Multiplexer f r die Programmierung des FPGA umgewandelt Au erdem wurden an den Ein und Ausg ngen Puffer eingef gt Da die Technologie Ansicht nicht auf eine Bildschirmseite passt ist sie auf mehrere Karten aufgeteilt die Sie ber die Reiter am linken oberen Rand erreichen k nnen Normalerweise kommen Sie mit der Technologie Ansicht nicht in Ber hrung denn die enthaltenen Details sind nur in Spezialf llen interessant bei denen man eine Schaltung von Hand im Gattermodell optimieren m chte C 1 4 Maximale Taktrate Zum Abschluss unseres Synthese Lab wollen wir bestimmen wie hoch die maximale Taktrate ist mit der wir den Addierer voraussichtlich betreiben d rfen wenn wir ihn in einem FPGA als Hardware realisieren was wir im n chsten Lab auch tats chlich tun werden ffnen Sie hierzu in der Prozessansicht View Synthesis Report Dieser Bericht fasst verschiedene Informationen ber Ihre Schaltung zusammen die w hrend der Logiksynthese notiert wurden Scrollen Sie im Textfenster ganz nach unten um die Timing Analyse zu betrachten Der Synthese Compiler listet hier die l ngsten Datenpfade Ihrer Schaltung auf und gibt die n tige Rechenzeit f r diese kritischen Pfade an Bei unserem Addierer C 2 Logiksynthese Quiz C 7 erhalten wir einen Wert von 5 8 ns Dies gibt
44. Bild 1 22 Vout 5y Vin Vout Bild 1 22 Analoge Simulation eines Inverters Layout Ebene Ein Chip enth lt bereinander mehrere elektrisch leitende und im Wesentlichen voneinander isolierte Schichten Auf jeder Schicht k nnen im Layout Leitungen gewisser Breite entworfen werden die elektrische Signale leiten In Bild 1 23 sind in Blau Leitungsst cke einer Metallebene dargestellt in Wirklichkeit gibt es zahlreiche Metallebenen bereinander Neben Metall gibt es rote Leitungen der Schicht Poly silizium und in Hellgr n bzw Gr n n bzw p leitende Strukturen der Schicht Diffusion Weiter gibt es durch schwarze Quadrate angedeutete Kontakte die beispielsweise einen blauen Metallleiter mit einem gr nen Diffusionsleiter verbinden Die gr te Bedeutung haben jedoch rote Leiter die einen gr nen Leiter kreuzen An dieser Kreuzungsstelle entsteht ein n bzw p Transistor Wie ein Transistor funktioniert und wieso die sehr schlichte Darstellung einer rot gr nen Kreuzung f r einen Transistor sinnvoll ist brauchen wir hier nicht zu verstehen Ein Layout ist nichts anderes als eine ma stabsgetreue Vergr erung der schichtenweisen Strukturen im fertigen Chip Bis auf Fertigungstoleranzen und einen wohldefinierten Verkleinerungsma stab wird aus einem blauen Rechteck der Gr e 3x12 eine rechteckige Metallstruktur beispielsweise der Gr e 90 nm x 360 nm Solche Layouts sind das Ergebnis von Platzierungs und Verdrahtungs werkzeug
45. Bild 6 9 Verbindungsabschnitte im XC4000 Die Interconnect Architektur besteht aus horizontalen und vertikalen Kan len die wie in Bild 6 9 jeweils kurze Leitungsabschnitte f r benachbarte CLBs enthalten L nge 1 doppelt so lange aber immer noch kurze Abschnitte bis zum bern chsten CLB L nge 2 und sehr lange Abschnitte ber die gesamte Chip Fl che Gezeigt sind in Bild 6 9 nur die horizontalen Abschnitte jedoch nicht die vertikalen die CLB Anschl sse und die Verdrahtungsschalter Programmierelemente einer Switch Matrix wie in Bild 6 10 verbinden CLB Inputs und Outputs mit den Leitungsabschnitten und diese untereinander L ngere Verbindungen sind wie in Bild 6 11 vorgesehen Die Laufzeit einer Verbindung h ngt entscheidend n mlich quadratisch von der Gesamtanzahl der durchlaufenen Schalter ab Deshalb h ngt eine implementierte Schaltkreisgeschwindigkeit wesentlich davon ab wie CAD Werkzeuge die Leitungs abschnitte an einzelne Signale vergeben Erst nach der Platzierung und Verdrahtung durch spezielle Werkzeuge k nnen exakte Verz gerungszeiten errechnet werden Zahl der durchlaufenen Schalter Leitungsl ngen und der Entwurf kann erneut durch Simulation verifiziert werden 6 3 FPGAs von Xilinx die Wurzeln 6 11 Aus den platzierten und verdrahteten Logikbl cken l sst sich schlie lich der Bitstrom f r die Konfiguration des FPGAs ableiten FEL i switch 5 Matrix I SL Lt tI i E F4 C4 G4 Q2 G1 amp
46. Bild B 18 Karl Klammer hat zugeschlagen B 14 B Lab 1 VERILOG und seine Tools timescale ins 1ps module y input wire output reg 7 0 i always posedge A if B begin C lt 1 D lt 1 end else begin D lt C C lt C D end end endmodule Beispiel B 19 Unverst ndliches Codest ck 1 timescale ins Ips module x reg wire 7 0 always begin A 10 A 10 end y Y A B C initial begin display F Ws display ar Smonitor 3 A 4d 4d time A B C B 1 stop end endmodule Beispiel B 20 Unverst ndliches Codest ck 2 Haben Sie das Berechnungsergebnis erkannt Prima ndern Sie nun die nicht blockenden Zuweisungen lt im else Zweig des always Blocks in blockende Zuweisungen und simulieren Sie erneut Welche Auswirkungen haben die nderungen auf das Berechnungsergebnis Versuchen Sie die Ursache zu erkl ren B 6 Parametrisiertes Schieberegister B 15 B 6 Parametrisiertes Schieberegister Legen Sie ein neues ISE Projekt an und f gen Sie den Code aus Beispiel B 21 ein downloadbar von der Ubungs Webseite timescale ins Ips module shiftreg parameter SIZE Default Laenge output reg SIZE 1 0 DATA Ausgang input wire DIN Eingaenge CLOCK always posedge CLOCK begin DATA lt DIN DATA SIZE 1 1 end endmodule Beispiel B 21 Parametrisiertes Schieberegister Dabei handelt es si
47. Bild D 32 Desktop Icon TeraTerm 2 3 zum TeraTerm TeraTerm fragt beim Starten ber welche Schnittstelle Sie eine Verbindung aufbauen m chten W hlen Sie als Schnittstelle Serial und als Port COM1 Kontrollieren Sie im Men Setup Serial Port ob die Einstellungen mit denen in Bild D 33 bereinstimmen Tera Term Serial port setup x a Baud rate s00 gt Data abit Cancel Parity none 7 Stop bt Help Elow control none 7 Transmit delay Bild D 33 fo msecjchar fo msecjline TeraTerm Serial port setup Laden Sie nun die Software Ihrer Applikation wie in Abschnitt D 2 4 ber XMD hoch und starten Sie das Programm Beobachten Sie dabei die Kontrollausgaben ber das LCD und TeraTerm Abgabe 4 Pr sentieren Sie die LCD und TeraTerm Ausgaben Ihrem Hiwi D 28 D Lab 3 Hardware Software Codesign auf dem ML310 Herzlichen Gl ckwunsch Sie sind nun in der Lage Hardware Software Projekte komplett selbst zu entwerfen und Daten zwischen Software und Hardware auszu tauschen D 4 Wettlauf zwischen Hardware und Software Die Addition aus den vorherigen Abschnitten ist nat rlich keine Rechtfertigung f r den Einsatz eines FPGAs dieses Beispiel haben wir nur der Einfachheit halber gew hlt Additionen lassen sich in Software so effizient erledigen dass eine Auslagerung in Hardware keinen gro en Sinn macht Aber sobald eine Berechnung komplexer wird kann sich das Auslagern in Hardware b
48. CLOCK_MAIN_2 initial begin 100 100 Zeiteinheiten warten finish und die Simulation beenden end endmodule main Q2eeogeegeeaeeegaaaa Beispiel 3 21 Wires 3 20 3 Die wichtigsten Befehle von VERILOG Variablen des Typs reg k nnen pro Bit die Werte 0 1 x unbestimmt und z hochohmig annehmen Dabei kann die Breite der Variablen in Bit angegeben werden indem sie der Liste mit den Variablennamen vorangestellt wird Die Breite ist bei allen Variablen der Liste gleich Eine Registervariable kurz Register stellt ein Speicherelement dar und beh lt einen zugewiesenen Wert bis zur n chsten Zuweisung Im Beispiel 3 22 gibt ein Z hler die Zahlen von 1 bis 10 aus module counter reg 3 0 R initial for R 1 R lt 10 R R 1 Sdisplay R d R endmodule Beispiel 3 22 Register V19 Felder von Variablen Variablen k nnen aus einem oder mehreren Bits bestehen Zus tzlich gibt es Felder von Variablen Beispielsweise wird ein eindimensionales Feld A mit 1000 Variablen der Breite 1 Bit vom Typ reg definiert durch reg A 1 1000 oder reg A 1000 1 Auf die 500 Variable dieses Feldes greift RESULT A 500 zu Die Syntax entspricht der Auswahl des 500 Bits einer normalen Variablen Ein Feld mit 1000 Registern der Breite 16 Bit definiert reg 16 1 A 1 1000 Auf das 8 Bit der 500 Variablen greift man so zu RESULT A 500 8 Mehrdimensionale Felder sind ebenfalls m gl
49. DATA DATA IN IN CLOCK CLOCK B 5 VERILOG Quiz B 13 RESET RESET Takterzeugung always begin CLOCK 1 10 CLOCK 0 10 end initial begin Monitoring monitor Zeit d CLOCK b IN b RESET b DATA b time CLOCK IN RESET DATA Initialize Inputs IN 0 CLOCK 0 geloescht wegen Takterzeugung RESET 0 Wait 100 ns for global reset to finish 100 Add stimulus here Stimuli IN 1 RESET 1 10 IN 0 RESET 0 10 IN 1 RESET 0 10 Ende der Simulation stop end endmodule Beispiel B 17_ Komplettierter Testrahmen F hren Sie nun eine Simulation durch indem Sie im Quellenfenster test_flipflop einmal anklicken und den zugeh rigen Prozess Simulate Behavioral Model starten Tipp Die Simulationsausgaben werden im Konsolenfenster in einer proportiona len Schrift dargestellt ber den Men punkt Tools Edit Preferences Main Window k nnen Sie eine besser lesbare fixe Schrift z B Courier New ausw hlen B 5 VERILOG Quiz In Beispiel B 19 und Beispiel B 20 hat Karl Klammer unerwartet alle Variablen und Modulnamen durch unverst ndliche Bezeichner ausgetauscht Versuchen Sie per Simulation herauszufinden welche Berechnung hier durchgef hrt wird Sie k nnen sich den Quelltext von unserer bungs Webseite herunterladen
50. DataPort 10 0 DataPort 11 0 DataPort 12 0 DataPort 13 of o DataPort 14 of o DataPort 15 oj o DataPort 16 oj o DataPort 17 oj o U I D D o bl 4 I pla ple ol gt x 0 ale o 0 aJe a x 0 0 ar aj COMMAND configure 1 Z Dokumente Bachelor Adder aktuelliourlab hg_lab 1 loesung 1_edk_chipscope_fertig implementation system bit 0 mal INFO Found 1 Core Unit in the JTAG device Chain COMMAND configure 1 Z Dokumente Bachelor Adder aktuell ourlab hg_lab1 Joesung 1_edk_chipscope_fertig implementation system bit 0 INFO Found 1 Core Unit in the JTAG device Chain Reading file Z Dokumente Bachelor Adderlaktuell ourlab hg_lab1 loesung 1 _edk_chipscope_fertiglimplementation system bit Bild D 17 Oberfl che des Chipscope Analyzer nach dem Download Das Ergebnis bitweise zu betrachten ist jedoch sehr umst ndlich Fassen Sie daher DataPort 0 31 zu einem Bus zusammen Hierzu klicken Sie auf DataPort 0 halten die Shift Taste gedr ckt scrollen etwas herunter und klicken auf DataPort 31 Die Bits des Signals APLUSB_DBG_OUT wurden dadurch ausgew hlt Klicken Sie auf den ausgew hlten Bereich mit der rechten Maustaste und w hlen Sie Add to Bus New Bus Benennen Sie den neuen Bus BUS_O um in APLUSB_DBG_OUT rechte Maustaste Rename Gehen Sie analog f r die Bits 63 32 von APLUSB_DBG_IN vor Die Werte f r APLUSB_DBG_IN und APLUSB_DBG_OUT lassen sich nun bequem hexadezimal ablesen Der Addierer Inp
51. Den Vorteilen geringer Prototypenkosten und kurzer Produktionszeiten stehen als Nachteile eine um den Faktor 2 bis 50 kleinere Operationsgeschwindigkeit und eine um den Faktor 8 bis 12 geringere Komplexit t gegen ber sowie h here St ckkosten bei der Serienfertigung Obwohl wertm ig der FPGA Markt noch immer klein ist ist er methodisch u erst wichtig da etwa die H lfte aller Projekte mit FPGAs begonnen werden Rapid Prototyping um den korrekten Prototypen sp ter gegebenenfalls zu fertigen Auch macht die sofortige und wiederholbare Programmierbarkeit FPGAs zum geradezu idealen Trainingsobjekt in der Lehre Erfreulicherweise wird dabei nicht nur der spezielle FPGA Entwurf sondern der Chip Entwurf schlechthin ge bt Neben dem Rapid Prototyping sind FPGAs auch immer h ufiger als Endprodukt in einem eingebetteten System zu finden Beispielhaft genannt seien Controller aller Art f r Speicher FIFOs Schnittstellen Grafik Peripherie viele Anwendungen in der Kommunikation uvam Dann ist es von Vorteil dass sich die FPGA Schaltungen wie normale Software updaten lassen etwa wenn der Standard sich ge ndert hat oder auch nur im nie endenden Marathon von Versionen Fehlerbeseitigung und neuen Fehlern Dies f hrt im n chsten Kapitel zum besonders faszinierenden Gebiet des Hardware Software Codesigns wo rekonfigurierbare FPGAs zus tzlich auf ihrem Chip einen oder gar mehrere Standardprozessoren enthalten W hrend der normale Rechner Ro
52. IDE zwei IDE Konnektoren zum Anschluss von Festplatten kation und CD DVD Laufwerk und ur Peripherie IIC Bus einfacher Kommunikationsbus f r den Datenaustausch zwischen verschiedenen ICs auf einer Platine sowohl das FPGA als auch die Southbridge verf gen ber einen IIC Anschluss nicht abgebildet Mehrzweck IO 122 frei verwendbare IO Leitungen die direkt vom FPGA an Erweiterungsstecker auf der Platine angeschlossen sind u a LC Display IO 12 weitere Mehrzweck IO Anschl sse zum Steuern von Status LEDs auf der Platine die ber den PCI Bus angesprochen werden k nnen Ethernet Network Interface Controller f r 10 100 Mbit Ethernet Parallel Port Standard Parallelport zum Anschluss von Drucker etc PCI Erweiterungs Slots f r den PCI Bus zwei Slots mit direkter Verbindung zum FPGA 3 3V und zwei Slots ber PCI Chip 5V PS 2 PS 2 Ports zum Anschluss von Tastatur und Maus RJ45 Standard Steckverbinder f r 10 100 Mbit Ethernet RS232 serieller Anschluss zur Daten bertragung zwischen FPGA und Au enwelt wird vor allem als Textkonsole in Verbindung mit einem Terminal Programm verwendet Grafikkarte Monitor Ersatz es sind ein RS232 Konnektor direkt mit dem FPGA und zwei mit der Southbridge verbunden Southbridge PCI Chip der verschiedene IO Anschl sse und Peripherie Controller in einem IC vereint Transceiver acht schnelle serielle Transceiver 3 125 Gbit s zur Realisierung von High
53. Kopf berlegen Wenn jeder Ihrer bungspartner fertig ist sprechen Sie Ihren HiWi an und er wird Ihnen Ihre Antworten abnehmen Frage 1 Was ist Logiksynthese C 3 Abschlussquiz C 9 Frage 2 Wovon ist die Logiksynthese abh ngig Frage 3 Was kann nicht synthetisiert werden Nennen Sie Beispiele Frage 4 Wie berechnet man die maximale Taktfrequenz einer Schaltung bei einem kritischen Pfad der Signall nge x C 10 C Lab 2 Logiksynthese mit VERILOG Lab 3 Hardware Software Codesign auf dem ML310 In diesem etwas gr eren Lab verschaffen Sie sich einen Einblick in den praktischen Entwurf von komplexen eingebetteten Systemen Das aus der Vorlesung bekannte Entwicklungs Board Xilinx ML310 das Sie jetzt praktisch ausprobieren ist so vielseitig dass Sie selbst mit der Entwicklung eines DVB T Empfangers nicht alle M glichkeiten aussch pfen w rden Stattdessen begn gen wir uns mit einem sehr einfachen Beispiel um wichtige Konzepte eines modernen Hardware Software Codesign exemplarisch kennenzulernen In Abschnitt D 1 betten Sie eigene in VERILOG geschriebene Hardware Module in ein Gesamtsystem ein und verifizieren ihre Funktion auf dem ML310 im laufenden Betrieb Hier machen Sie sich Schritt f r Schritt mit der Entwicklungsumgebung XPS Xilinx Platform Studio und dem zugeh rigen Logikanalysator Chipscope vertraut In Abschnitt D 2 geht es um die wichtige Schnittstelle von Software nach Hardware Die Argumente
54. Modul und Verhaltenstest Starten Sie den Projekt Navigator wie gewohnt und legen Sie ein neues Projekt an Beachten Sie dabei dass in der Maske Select the Device and Design Flow for the Project Bild C 1 als Synthese Tool XST VHDL Verilog ausgew hlt ist C 2 C Lab 2 Logiksynthese mit VERILOG I x r Select the Device and Design Flow for the Project N Property Name Val Device Family Device xc2vp30 Package ff896 Speed Grade 6 Top Level Module Type HDL Synthesis Tool XST VHDL Verilog Simulator 0 Modelsim Generated Simulation Language Verilog lt Zur ck Abbrechen Hite Bild C 1 Anlegen eines ISE Projekts Wahl des Synthesewerkzeugs Synplify Pro timescale ins 1ps getakteter Addierer f r 4 positive Zahlen je 8 Bit module adder input wire CLK input wire 7 0 A B C D output reg 9 0 OUT i always posedge CLK OUT lt A endmodule Beispiel C 2 Getakteter Addierer f r vier Zahlen Erzeugen Sie sich eine VERILOG Datei adder v mit dem Quelltext aus Beispiel C 2 sowie einen zugeh rigen Testrahmen als Datei test_adder v mit dem Quelltext aus Beispiel C 3 Download auf der bungs Webseite Das Modul adder summiert A B C und D und weist das Ergebnis zu jeder steigenden Taktflanke dem Ausgangsregister OUT zu C 1 Synthese eines Addierers timescale ins 1ps define CLK_HALF 5 define CLK_FULL 10 Tes
55. Ohne auf die elektrischen Grundlagen n her einzugehen wollen wir einige technolo gische M glichkeiten andeuten Verbindungsschalter in programmierbaren Logik bausteinen zu realisieren Solche Schalter werden auch Programmierelemente genannt die als statische RAM Zellen Antifuses EPROM oder EEPROM Transistoren 6 6 6 Programmierbare Logikbausteine realisiert sind Trotz sehr unterschiedlicher Technik ist ihnen gemeinsam dass sie als Schalter leitend oder nichtleitend sind Diese Programmierelemente realisieren die programmierbaren Verbindungen zwischen den Logikbl cken eines FPGAs als statische RAMs dienen sie auch dazu Logikbl cke selbst zu konfigurieren Ein FPGA kann viele Millionen Programmier elemente enthalten Diese sollten daher m glichst wenig Chip Fl che verbrauchen je nach Zustand einen kleinen oder sehr gro en Widerstand besitzen und eine niedrige Kapazit t enthalten Sie sollten zuverl ssig in gro en St ckzahlen zu fertigen sein Interessant ist es ob ein Programmierelement reprogrammierbar d h mehrfach einzu stellen ist und ob es fl chtig ist d h beim Einschalten des Ger tes neu programmiert werden muss Schlie lich interessiert ob es im Rahmen eines Standard CMOS Prozesses realisiert werden kann 6 2 1 Programmierung durch SRAMs Wie in Bild 6 3 lassen sich Verbindungen durch statische RAM Zellen oder SRAMSs aufbauen die einen Pass Transistor oder einen Multiplexer ansteuern SRAMs sind fl chtig
56. Projekt auf F r den Test rahmen erzeugen Sie mit File New ISE Text Editor File eine neue Datei in die Sie den Quellcode aus Beispiel B 13 eintragen Speichern Sie die Datei als test_activation v und f gen Sie sie per Rechtsklick im Quellenfenster Add Source Verilog Test Fixture File ins Projekt ein Nun erscheint test_activation im Quellenfenster Klicken Sie einmal darauf und starten Sie die Verhaltenssimulation ber Simulate Behavioral Model im Prozessfenster Simulieren Sie das Modell f r eine Zeit von 10 ns Die always Bl cke werden immer dann ausgef hrt wenn ein bestimmtes Ereignis vorliegt always Die Ausl ser der Ereignisse haben in diesem Fall ihren B 10 B Lab 1 VERILOG und seine Tools Ursprung in dem initial Block des Testrahmens Der erste always Block reagiert auf nderungen von IVAR1 Der zweite always Block wird ausgef hrt sobald sich IVAR1 oder IVAR2 ndern Aufgrund der Initialisierung aller Variablen eines VERILOG Modells auf den unbestimmten Wert x zum Simulationszeitpunkt 0 stellen die Zuweisungen IVAR1 0 sowie IVAR2 0 eine solche nderung dar Simulieren Sie nun verschiedene Variationen bei denen Sie die Reihenfolge der always Bl cke vertauschen sowie die Zeitpunkte und die Abfolge der Zuweisungen im Testrahmen ver ndern Betrachten Sie dabei auch F lle bei denen keine Warte zeiten vor oder zwischen den einzelnen Zuweisungen vorhanden sind also Ereignisse konkurrieren Versuchen Sie jeweils vor
57. RESULT Das Schl sselwort inout wird haupts chlich f r die Modellierung bidirektio naler Datenbusse ben tigt und kann nur auf Wires angewendet werden V17 In lteren VERILOG Programmen findet man brigens auch eine ausf hrliche Darstellung der Modulparameter wie in Beispiel 3 4 module maximum A B RESULT input output RESULT wire 7 0 A B reg 7 0 RESULT always A B if A gt B RESULT A else RESULT B endmodule Beispiel 3 4 Ausf hrliche Modulparameter V3 parameter defparam W hrend durch input output und inout hardware nahe Schaltungseing nge und Ausg nge eines Moduls definiert werden wird mit parameter eine abstrakte Konstante an einen Modul bergeben Sie kann vom Modul selbst nicht ge ndert jedoch bei einer Modul Instanzierung durch defparam Max 5 wie bei Counterl in Beispiel 3 5 oder direkt Max 10 wie bei Counter2 erneut festgelegt werden sodass mehrere Instanzen eines Moduls sich in den Parametern unterscheiden k nnen Im Beispiel 3 5 werden zwei Module counter instanziert Counter1 z hlt bis 5 Counter2 bis 10 Zun chst wird ein allgemeines Modul counter deklariert welcher bis zum Parameter Max z hlt default m ig 0 Dieser wird bei der Instanzierung festgelegt 3 1 Modulstruktur 3 5 module counter parameter Max 0 integer R initial for R 1 R lt Max R R 1 Sdisplay R d R endmodule counter module main de
58. Seite die Shift Distanz Ist sie negativ wird entgegengesetzt geschoben Beispiel 3 31 schiebt zuerst um 4 Bit nach links dann 4 Bit nach rechts und schlie lich um 4 Bit nach links folglich nach rechts module shift initial begin Sdisplay b 8 b0000_1111 lt lt A Sdisplay b 8 b0000_1111 gt gt 4 Sdisplay b 8 b0000_1111 lt lt 4 end endmodule 1 11110000 00000000 00000000 Beispiel 3 31 Shiften 3 6 Zuweisungen V27 Blockende Zuweisung Durch die blockende Zuweisung wird einer Variablen oder einem Teil davon auf der linken Seite einmalig die rechte Seite zugewiesen Die linke Seite muss vom Typ reg oder integer sein Folgt beispielsweise in A 2 B hinter dem eine Zeitkontrolle Abschnitt 3 2 so werden der momentane Wert der rechten Seite in einen tempor ren transparenten Speicher kopiert und zun chst die angegebene Zeit bzw das angegebene Ereignis abgewartet Danach findet die eigentliche Zuweisung statt Der Name blockend r hrt daher dass die Zuweisung zuerst vollst ndig ausgef hrt wird bevor die n chste Anweisung bearbeitet wird selbst wenn die Zuweisung einen zeitkonsumierenden Anteil enth lt Die Ausf hrung der n chsten Anweisung wird also blockiert Viele weitere Erl uterungen finden sich bei der nichtblockenden Zuweisung in V28 3 28 3 Die wichtigsten Befehle von VERILOG V28 Nichtblockende Zuweisung lt Mit der blockenden Zuweisung aus V27
59. Sie annehmen wir wollen Ihnen falsche Ergebnisse vorgaukeln Downloaden Sie den Bitstrom auf das ML310 laden Sie mit D 5 Abschlussquiz D 29 XMD die Software testApp_amultb hoch ffnen Sie TeraTerm und starten Sie dann die Software Betrachten Sie die gemessenen Zeiten im Konsolenfenster von TeraTerm Aufgabe 5 Wie lange braucht die Hardware f r 10 000 Multiplikationen Wie lange braucht die Software Um welchen Faktor ist die Hardware schneller als die Software D 5 Abschlussquiz Frage 1 Was ist ein integrierter Logikanalysator ILA und wodurch zeichnet er sich aus Frage 2 Was bedeutet die Abk rzung DCR Welche essenziellen Funktionen erf llt der DCR Bus Frage 3 Was ist ein IP Core Wof r steht die Abk rzung IP Frage 4 Weswegen ist eine Hardware Auslagerung sinnvoll F r welche Zwecke kann man sie benutzen D 6 Trigger Happy Bisher haben Sie gelernt wie man einfache Berechnungen in Hardware auslagern kann Zugegeben das war manchmal langweilig aber dabei haben Sie wesentliche Fertigkeiten erworben um nun richtig loszulegen Zeigen Sie mit Trigger Happy dass Sie ein echter Hardware Software Codesigner sind brigens ist diese spannende bung freiwillig D 30 D Lab 3 Hardware Software Codesign auf dem ML310 D 6 1 Das Spiel In Trigger Happy geht es um Reaktion Geschwindigkeit und Ablenkung Achten Sie auf das Zeichen Es kommt pl tzlich und unerwartet Ziehen Sie schneller als der Gegne
60. Software handeln wird Bereits vorhandene Bausteine in UML C Java VERILOG VHDL oder als Netzliste k nnen direkt in das SystemC Projekt integriert werden dabei werden abstrakte und hardware nahe Beschreibungen beliebig gemischt Aus dem SystemC Modell wird anschlie end ein Simulationsmodell erstellt mit dem das gesamte Hardware Software System ausgiebig getestet werden kann Bisher ist es noch nicht m glich solche SystemC Modelle direkt in Hardware und Software f r die Zielarchitektur zu bersetzen Aber Teill sungen existieren bereits z B erm glicht unsere FPGA Middleware TRAIN die automatische Generierung der Hardware Software Schnittstelle aus High Level Beschreibungen in SystemC so dass wir das Ergebnis sofort auf dem ML310 testen k nnen Andere Forschungsprojekte besch ftigen sich mit der Generierung von Software f r eingebettete Systeme aus SystemC wobei Berechnungen in Echtzeit eine wichtige Rolle spielen Erste Werkzeuge zur Hardware Synthese sind ebenfalls verf gbar Ein weniger bekanntes Beispiel f r Hardware Software Codesign sind die adaptiven Rechner Bei adaptiven Rechnern werden FPGAs verwendet um h ufig wiederkehrende Programmsequenzen in Hardware auszulagern Bei rechenintensiven Aufgaben etwa in der Biotechnologie DNA Analyse kann die Gesamtlaufzeit so 7 32 7 Hardware Software Codesign von Tagen auf Stunden zu reduziert werden Im Gegensatz zum eingebetteten System wird beim adaptiven Rechner die FGPA
61. Terminals an der Wand einen PC mit Wireless LAN oder ein Bluetooth Handy Wichtig f r ein programmierbares eingebettetes Steuerger t das in einem Smart Home in jede Lampe Jalousie etc integriert wird sind daher vor allem die folgenden Faktoren e Low Cost wenige Euro e Low Power wenige Milliwatt e verschiedene Ein und Ausg nge f r Sensoren und Aktoren e Netzwerkanbindung Bild 7 8 Steuereinheit JControl f r die Home Automation Die Steuereinheit JControl aus Bild 7 8 erf llt diese Anforderungen durch Einsatz des sehr kosteng nstigen 8 Bit Mikrocontrollers ST7 Der Mikrocontroller kombiniert einen Prozessorkern mit verschiedenen IO Schnittstellen so dass au er einem Speicherchip f r die Software keine weiteren Bauteile ben tigt werden 7 12 7 Hardware Software Codesign Mikrocontroller Controller FLASH Netzwerk Speicher Ankopplung Speicher Serielles Port RAM Interface Speicher oder CAN Bus Bild 7 9 Blockschaltbild der JControl Steuereinheit Das Blockschaltbild dieses eingebetteten Systems zeigt Bild 7 9 F r die Kommunikation zwischen Mikrocontroller und Speicher kann eine sehr einfache Punkt zu Punkt Schnittstelle verwendet werden da der Mikrocontroller als einzige Systemkomponente auf den Speicherbaustein zugreift Auch die Verbindung mit der Au enwelt erfolgt ber simple Ein oder Zweidrahtleitungen Da die Aufgaben des Systems nicht echtze
62. Trend zum System on Chip SoC wo ein einzelnes Chip sowohl mehrere klassische Software Prozessoren wie PowerPCs enthalten kann als auch frei programmierbare Schaltungslogik im Sinne von FPGAs als auch Busse mit hocheffizienten Kommunikationsprotokollen Solche SoCs zeichnen sich nat rlich durch geringes Gewicht geringe Leistungs aufnahme und hohe Zuverl ssigkeit aus und sind damit pr destiniert f r Mobilsysteme und viele Consumer Ger te Als komplexes SoC Beispiel zeigt Bild 1 25 einen Chip von IBM das auf 1cm einen kompletten digitalen DVB Fernsehempf nger inklusive Video on Demand Funktion und interaktivem Programmf hrer enth lt External Interrupts OPB Bus TEG Eee Smart Fr Cardo l Tea rn CE seria Ce Seva CE Seriaiz er Pio as Te Serial eee za i El Bild 1 25 Display System On Chip IBM STBx25 Entworfen werden solche komplexen Systems on Chip auf m chtigen Entwicklungsplattformen die viel Entwicklungskomfort bieten Anschlie end werden nur die tats chlich ben tigten Teile des Prototypen realisiert und in die Anwendung eingebettet Da dabei das Systemdenken immer wichtiger wird reichen Hardware Beschreibungssprachen nicht mehr aus und es lohnen sich komplexe objektorientierte System Beschreibungssprachen wie SystemC Unterst tzt wird dabei der Einsatz von 1 22 1 Einleitung Intellectual Property oder IP wohi
63. das Logiksynthese Werkzeug mehrere Iterationen durch um ein optimales Gattermodell zu errechnen Als Eingabe f r die Logiksynthese haben sich Register Transfer Beschreibungen im Rahmen von Hardware Beschreibungssprachen bew hrt VERILOG HDL wurde hierbei zu einer der zwei popul rsten Sprachen 5 2 Auswirkungen der Logiksynthese Der kommerzielle digitale Schaltungsentwurf ist durch die Logiksynthese ent scheidend produktiver geworden Folgende Merkmale Eigenschaften und Aus wirkungen sind erw hnenswert e Die manuelle Anfertigung gro er Gattermodelle war sehr fehleranf llig jetzt dagegen geht es im Wesentlichen nur noch um High Level Fehler die wesentlich besser zu berschauen sind 5 3 Synthese mit der HDL VERILOG 5 3 e Uber Zeit Fl che und Leistung wusste man fr her erst Bescheid wenn der gesamte Gatterentwurf fertig und getestet war Heute brauchen die Bedingungen nur noch vorgegeben zu werden Sollten sie nicht automatisch erf llt werden k nnen sind lediglich nderungen auf der h heren Ebene der Register Transfer Beschreibung n tig e W hrend fr her ein wesentlicher Teil der Entwurfszeit oft viele Monate mit dem Gatterentwurf vergingen ist die Logiksynthese relativ schnell und kann in Stunden oder Tagen durchgef hrt werden What if Fragen waren fr her schwer zu beantworten Beispielsweise mag es zu einem Gattermodell mit einem Zyklus von 2 ns interessant sein wie gro der Entwurf f r einen Taktzykl
64. den Button Open Cable Search JTAG Chain Best tigen Sie das folgende Fenster mit OK e Klicken Sie mit der rechten Maustaste links oben auf DEV 1 MyDevice1 XC2VP30 und w hlen Sie Configure e W hlen Sie mit Select New File ihren Bitstrom system bit der sich in dem Unterordner implementation Ihres Projekts befindet und best tigen Sie mit OK e Warten Sie den Download Fortschritt ab der ganz rechts unten angezeigt wird Chipscope mehrere Bits zu einem Bus zusammenfassen e Selektieren Sie die Bits die Sie zusammenfassen wollen e Rechtsklicken Sie auf ihre Auswahl und w hlen Sie Add to Bus New Bus Benennen Sie diesen Bus sinnvoll mit rechte Maustaste Rename Chipscope sauberes Beenden e Um die Verbindung zum ML310 wieder sauber zu trennen w hlen Sie im Men JTAG Chain den Befehl Close Cable E 3 Zusammenfassung von Lab 3 E 7 Chipscope Signalverl ufe des FPGAs aufzeichnen e Bet tigten Sie den Button Trigger Now in der Button Zeile der mit T beschriftet ist e Nun wird f r jedes Bit ein Signalverlauf im Waveform Fenster angezeigt Chipscope Trigger Signal festlegen e Wenn in der der system mhs ein Signal als so genanntes Trigger Signal bereits festgelegt worden ist m ssen Sie im Trigger Setup von Chipscope lediglich Value von X auf 1 setzen und den Button Apply Settings and Arm Trigger Bild E 4 bet tigen SA ChipScope Pro Analyzer new project File View JTAG Chain Device Tr
65. der Simulation Aussagen ber das Verhalten zu machen Sie werden dabei feststellen dass der Simulator konkurrierende Ereignisse nicht unbedingt intuitiv vorhersagbar abarbeitet Der Simulator optimiert die Menge der Ereignisse und die Bearbeitungsreihenfolge um die Rechenzeit f r die Simulation zu minimieren Innerhalb eines Simulationszeitpunktes kann der Simulator Ereignisse f r einen Block zusammenfassen und die Reihenfolge der Bearbeitung von Bl cken variieren Besonders problematisch ist dies zur Zeit 0 wenn initial und always Bl cke zum ersten Mal gestartet werden Wird ein always Block aufgrund der beliebigen Bearbeitungsreihenfolge erst f r ein Ereignis empfangsbereit nachdem ein anderer Block bereits ein Ereignis f r ihn generiert hat so kann er dieses Ereignis nicht wahrnehmen Die Ausnutzung einer auf diese Weise erreichten Bearbeitungsreihenfolge von konkurrierenden Ereignissen und Bl cken in einem Simulationszeitpunkt ist ein Modellierungsfehler Er ist eine h ufige Ursache f r fehlerhaftes Verhalten eines VERILOG Modells nach einem Wechsel oder Update des Simulators nach kleinen nderungen im Modell selbst aber auch nach der Integration in ein gr eres Modell B 4 Flip Flop Machen Sie sich nun mit dem VERILOG Modell in Beispiel B 14 vertraut und f gen Sie es in ein neues ISE Projekt ein Es handelt sich hierbei um ein taktflanken gesteuertes Register mit Reset welches Daten bei steigenden positiven Taktflan
66. der South Bridge und verschiedenen Peripheriebausteinen F r die Kommunikation auf der Platine wird der PCI Bus verwendet der ber vier PCI Steckpl tze herausgef hrt ist Der South Bridge Chipsatz bietet zwei serielle RS232 Schnittstellen PS 2 Anschl sse einen Parallel port zwei USB Ports zwei IDE Adapter f r Festplatten Audio Eingabe und Ausgabe sowie weitere IO Schnittstellen Ebenfalls ber PCI angebunden ist ein 7 5 HW SW Codesign in der Praxis die universelle Entwicklungsplattform ML310 7 17 Ethernet NIC Network Interface Controller mit dem 10 100 Mbit Netzwerke angesteuert werden k nnen Mit Hilfe der PCI Steckpl tze k nnen leicht handels bliche Erweiterungskarten in einen Systementwurf integriert werden etwa eine Grafikkarte F r weitere Hardware Erweiterungen bietet das ML310 acht serielle Hochgeschwindigkeits bertrager Transceiver Sie erlauben Datenraten bis 3 125 Gbit s und k nnen f r noch h here Geschwindigkeiten geb ndelt werden womit auch Spezialanwendungen wie Switches f r optische Netzwerke realisiert werden k nnen Ein interessanter Baustein ist der System ACE Chip Advanced Configuration Environment Da die Konfiguration des Virtex II Pro auf fl chtigen SRAM Zellen basiert liegt direkt nach dem Einschalten keine Konfiguration vor das FPGA ist also funktionslos Erst durch einen Bitstrom von au en etwa ber ein USB Kabel wird das System mit Leben erf llt Beim Einschalten des Systems
67. displ displ initial begin SELECT ECT ECT ECT end endmodule 2 b00 2 bx 2 b0z 2 b nd_casez ECT begin 2 0 T ay ay ay ay ay 3 Die wichtigsten Befehle von VERILOG SEL Beispiel 3 17 Fallunterscheidung mit case und casez Zu den Zeitpunkten 0 und 10 stimmen die Ergebnisse berein Zum Zeitpunkt 20 vergleicht die casez Anweisung zuerst SELECT mit dem Wert 2 b0z mit 2 b00 Das Ergebnis ist positiv Zum Zeitpunkt 30 passt bei case kein Wert daher wird die de fault Anweisung ausgef hrt bei casez passt bereits der erste Fall Eine while Schleife wird wie blich bearbeitet Beispiel 3 18 gibt die Zahlen 0 bis 10 aus 3 4 Variablen und Konstanten 3 17 module while_loop reg 3 0 COUNTER initial begin COUNTER 0 while COUNTER lt 10 begin Sdisplay d COUNTER COUNTER COUNTER 1 end end endmodule Beispiel 3 18 Schleife mit while Auch eine for Schleife wird wie blich bearbeitet Beispiel 3 19 gibt die Zahlen von 0 bis 10 aus module for_loop reg 3 0 COUNTER initial for COUNTER 0 COUNTER lt 10 COUNTER COUNTER 1 Sdisplay d COUNTER endmodule Beispiel 3 19 Schleife mit for 3 4 Variablen und Konstanten V16 integer integer definiert eine oder mehrere ganzzahlige Variablen Die Breite ist in Abh ngigkeit vom Simulator mind
68. end eine Hardware Synthese durchf hren und das Ergebnis eine auf dem FPGA 7 5 HW SW Codesign in der Praxis die universelle Entwicklungsplattform ML310 7 25 platzierte und verdrahtete Schaltung auf bereinstimmung mit dem VERILOG Modell berpr fen E Xilinx ISE K mydev vorlesung hw sw systeme ourlab 0_sim_model ise aplusb_dcr aplusb_dcr ise Simulation ee Edit View Project Source Process TestBench Simulation Window Help DAHRI SRF ABARARCAIAD ER Bh OO MH SBOR ACA APL RR Gi GD 12 00 ws we Now 1000 ns 144 ns 194 amp XS _derDBust 2 32h00000000 32h00008813 U Si_derAck A nRESET Sl cpu_cik Ql DcR_READ anh BX DCR_SI_DB pg E ee ed DE Et 3200000000 3 0 1 ANDCR_WRITE 0 0 0 3 h h 2 E Design Summary V test_apusb I Simulation Bild 7 21 Simulation eines VERILOG Modells Problematisch bei dieser Entwurfsmethode ist die Simulationsdauer F r einzelne Systembausteine mit einigen Tausend Gattern noch im Minutenbereich steigt sie f r das vollst ndig zusammengesetzte System on Chip mit mehreren Millionen Gattern schnell auf mehrere Stunden Kommt noch die Verifikation der eingebetteten Software mit Hilfe eines Prozessor Simulators Instruction Set Simulator ISS hinzu kann die Simulation sogar einige Tage dauern Eine einfachere und kosteng nstigere L sung ist die Co Verifikation des Hardware Software Gesamtsystems direkt auf d
69. f r eine Berechnung werden vom Software Prozessor ber einen DCR Bus an einen Hardware Addierer auf dem FPGA bergeben das Ergebnis wird dann vom Logikanalysator angezeigt In Abschnitt D 3 wird zus tzlich die entgegengesetzte Schnittstelle von Hardware nach Software eingef hrt Ein von Ihnen entwickeltes Programm liest das Berechnungsergebnis der Hardware ber den DCR Bus zur ck und gibt es auf einem LCD sowie ber die serielle Schnittstelle aus In Abschnitt D 4 werden Sie mit Zeitmessungen untersuchen ob und wie stark Software Programme durch Auslagerung rechenintensiver Funktionen in Hardware tats chlich beschleunigt werden k nnen In Abschnitt D 5 schlie lich werden Sie das nervenaufreibende Spiel Trigger Happy auf dem ML310 realisieren i Genauer ChipscopePro Analyzer D 2 D Lab 3 Hardware Software Codesign auf dem ML310 D 1 Hardware bauen und testen In diesem ersten Teil machen Sie sich vorrangig mit der Entwicklungsumgebung f r das ML310 vertraut Auf dem Entwicklungsrechner in Bild D 1 entwickeln Sie die Software und Hardware f r die Zielplattform ML310 ohne letztere tats chlich zu benutzen In den Abschnitten D 1 1 bis D 1 4 benutzen Sie zun chst das VERILOG Modell eines Addierers stellvertretend f r eine beliebige Schaltung die auf dem ML310 FPGA als Hardware Schaltung realisiert werden soll en Addierer als IP Core entwerf an ILA anschlie en Logiksynthese Platzieren un
70. hen Phasen einer Schaltkreisentwicklung ist die Reprogrammier barkeit sehr n tzlich Obwohl prinzipiell jede Logikfunktion als ROM Schaltung realisiert werden kann liegt die Hauptanwendung von ROMs in der Verwendung als Speicher Dagegen ist das Programmable Logic Device oder PLD eine programmierbare Schaltung speziell zur Realisierung logischer Schaltungen Ein einfaches PLD enth lt typischer weise ein Feld von AND Gattern verbunden mit einem Feld von OR Gattern und nutzt aus dass sich jede logische Funktion in einer zweistufigen Summen Produkt Form darstellen l sst beispielsweise f1 ab c a c f2 In der ersten AND Ebene werden dann zun chst alle Produktterme wie a b c gebildet die dann in der zweiten OR Ebene verodert werden Programmierbarer Logikbaustein PLD FPGA Programmable Field Programmable Logic Device Gate Array CPLD SPLD Complex PLD Simple PLD Bild 6 1 Programmierbare Logikbausteine Diese einfachen PLDs aus genau einer AND und einer OR Ebene Simple PLD SPLD erlauben mit ihrer einfachen zweistufigen Struktur zwar sehr schnelle Schaltkreisrealisierungen jedoch k nnen nur kleine Logikfunktionen mit einer m igen Anzahl von Produkttermen dargestellt werden weil sonst die Verbindungs struktur unverh ltnism ig stark wachsen w rde Diesen Nachteil berwinden Complex PLDs oder CPLDs die aus einem ganzen Feld von SPLDs bestehen 6 4 6 Programmierbare Logikbausteine Universeller und bedeute
71. herum gibt es jede Menge Anschl sse und Adapter USB PCI Ethernet DDR Audio Video Kartenleser schnelle optische Anschl sse etc In Kapitel 7 geht es aber auch generell um Hardware Software Codesign auf die bungen bungen klingt trocken deswegen nennen wir sie Labs Diese sind eng auf die Vorlesung abgestimmt Die KapitelB und C enthalten Aufgaben und Werkzeug Leitf den f r die praktische Arbeit am Rechner zur Sprache VERILOG und zur Logiksynthese einschlie lich der Profi Entwicklungsumgebung ModelSim ISE Multimediale Lernprogramme und weiteres bungsmaterial werden separat eingesetzt und verteilt werden W hrend die VERILOG und Synthese Labs eher konventionell und brav sind werden Sie staunen wie einfach Sie eigene Hardware bauen und mit Ihrer eigenen Software kommunizieren lassen k nnen Dies Wunder passiert im ML310 Lab in 1 5 Ausblick 1 23 Kapitel D Dort werden auch noch ein Remote Debugger Fehlersuche aus der Ferne und ein Oszilloskop auf dem zu untersuchenden Chip gleich mit integriert auf kommende Semester Sollten Sie zum Semesterende wider Erwarten meinen nun sei es genug bleibt f r Sie nur noch die Teilnahme an der E I S Party Andernfalls belegen Sie als Bachelor Studi das Modul HWSWE Hardware Software Entwurf F r IST und Master Studenten gibt es die etwas anpsruchsvollere Version CuSE I Chip und System Entwurf In beiden Varianten k nnen Sie in der Vorlesung im So
72. hrung von Ereignis 3 ein Ereignis 7 f r tg erzeugen Ereignis 5 ein Ereignis 8 sogar zum gleichen Zeitpunkt t3 usw Die Reihenfolge der Bearbeitung der Ereignisse eines Simulationszeitpunktes ist im allgemeinen Fall unbestimmt Man darf sich daher nicht auf eine bestimmte Reihenfolge verlassen Auch kann sie von Simulator zu Simulator verschieden sein VERILOG XL beispielsweise ordnet anders als VeriWell ohne dass einer von beiden gegen die Spielregeln verst t module event_control reg 4 0 N initial begin display AAA display BBB end initial for N 0 N lt 3 N N 1 display N endmodule Beispiel 4 2 Parallelit t und Reihenfolge 4 1 Parallelit t und Ereignissteuerung des Simulators 4 3 Es ist jedoch sichergestellt dass aufeinander folgender Code ohne Zeitkontroll Anweisungen als einziges Ereignis ohne Unterbrechung bearbeitet wird Beispiel 4 2 illustriert diesen Punkt Au erdem ist sichergestellt dass die Reihenfolge der Bearbeitung zwischen zwei gleichen Simulationsl ufen gleich ist Die Ausf hrung des Moduls event_cont rol produziert die Ergebnisse in Bild 4 3 AAA BBB WNRO Bild 4 3 Simulationsergebnis zum Beispiel 4 2 Beide initial Bl cke sind zum selben Simulationszeitpunkt 0 zur Bearbeitung vorgesehen Ein anderer Simulator k nnte daher 0 1 2 3 AAA BBB ausgeben Dagegen mag das Ergebnis AAA in der Praxis zwar eine sinnvolle M glichkeit darstellen es
73. hundert Byte Speicher etwa in Armbanduhren bis zu High End Systemen mit 128 Bit Datenbus 7 3 Eingebettete Systeme 7 9 und mehreren 100MB die als Rechenboliden beispielsweise in einer Spiele Konsole arbeiten Verklemmungs Messwert Sensor A D Wandlung Auto Fenster Analog Signal Motor Ansteuerung D A Wandlung Eingebettetes System zur Fenstersteuerung Debug Interface Steuerbefehl Benutzerschnittstelle Bild 7 6 Einfaches eingebettetes System Fensterheber Jede Anwendung hat ihre charakteristischen Besonderheiten ein universelles eingebettetes System gibt es nicht Beispielsweise werden an eine Waschmaschinen steuerung andere Anforderungen gestellt als an ein Handy System Neben der Aufgabenstellung selbst sind daher eine ganze Reihe von Anforderungen Constraints mit unterschiedlicher Gewichtung zu ber cksichtigen Bild 7 7 Bei Anwendungen mit hohen Fertigungsst ckzahlen stehen generell die Bauteil und Fertigungskosten an erster Stelle in der Weltraum oder Medizintechnik z B Herzschrittmacher dagegen die Zuverl ssigkeit Zu den Constraints k nnen aber auch scheinbar nebens chliche Dinge geh ren etwa dass eine Platine exakt in ein vorgegebenes Geh use passen muss W hrend bei eingebetteten Systemen oft die Anforderungsparameter Kosten Stromverbrauch Baugr e und Zuverl ssigkeit dominieren kann auch hier zus t
74. ist hier aber unm glich da beide initial Bl cke keine Zeitkontrollen enthalten Noch einmal die Reihenfolge der Bearbeitung der Ereignisse eines Simulations zeitpunktes ist im allgemeinen Fall unbestimmt Leider verzweigt sich der Baum der m glichen Simulationszust nde des Gesamtsystems in jedem Knoten mit dem Grade n zu jedem Zeitpunkt zu dem n Ereignisse zur Bearbeitung anstehen Der Simulationsbaum eines Systems kann daher im ung nstigen Fall extrem m chtig werden Leider kann ein Simulator in diesem Baum nur einen einzigen Pfad ausw hlen Hierin liegt die gro e Crux des parallelen Modellierens Denn ein richtiges Simulationsergebnis hat oft noch keine hohe Aussagekraft Die Simulation des ganzen Baumes ist dagegen aus Komplexit tsgr nden schlicht unm glich Da der Mensch parallele Ereignisse schlecht berschaut kann hier nur zu gr ter Sorgfalt und Vorsicht geraten werden Immer dann wenn parallele Ereignisse nicht v llig unabh ngig arbeiten sondern mit Signalen oder gemeinsamen Daten kommunizieren sollte im Zweifel lieber eine 4 4 4 Modellierungskonzepte in VERILOG konservative Strategie angewendet werden Dies kann synchron geschehen indem Ereignisse f r verschiedene Takt Zeitpunkte vorgesehen werden Oder es kann asynchron mit einem Handshake Mechanismus mit Events oder Synchronisations registern die Reihenfolge erzwungen werden 4 2 Pipelines und Register Transfer Logik Die folgenden Beispiele erscheinen ei
75. man geradezu als eierlegende Wollmilchsau ansehen kann Denn in einen FPGA kann ein Anwender praktisch jede digitale Schaltung von au en hineinprogrammieren indem ein passender Bitstrom geladen wird Au erdem kann die momentane Schaltung im FPGA jederzeit durch eine v llig andere ersetzt werden FPGAs sind technologisch gesehen zwar reine Standardbausteine die vom Anwender nur noch individuell programmiert werden Obwohl sie sich daher technologisch von individuell gefertigten Chips v llig unterscheiden haben sie mit letzteren entwurfsmethodisch sehr gro e Gemeinsamkeiten indem der Entwurf von den obersten Entwurfsebenen bis hinunter zur Logik und Gatterebene fast identisch ist Um diese FPGAs und andere programmierbare Logikbausteine geht es im vor liegenden Kapitel 6 2 6 Programmierbare Logikbausteine 6 1 berblick Zwei wesentliche Faktoren beim kommerziellen Erfolg einer neuen Schaltung sind zum einen die Time to Market als die Zeit von der ersten Idee bis zur Marktreife und zum anderen die finanzielle Anfangsinvestition In dieser Hinsicht sind FPGAs fast ideal da die Entwicklungszeit nicht die Fertigungszeit von einigen Wochen bis Monaten enth lt und da die Anfangsinvestition nur aus den Entwurfskosten besteht w hrend die Materialkosten je Prototyp zwischen einhundert und einigen tausend Euro liegen im Gegensatz zu 10 000 bis einer Million Euro f r die erste Fertigung von Bausteinen vergleichbarer Komplexit t
76. sich die Schnittstelle zwischen Entwurf und technischer Realisierung also dem Chip Designer und dem Halbleiterhersteller der die Schaltung des Designers ohne Kenntnis ihrer Logik in Silizium umsetzt immer mehr nach oben verschob und immer einfacher wurde Zu Beginn der Entwicklung lag der Chip Entwurf in der Hand sehr erfahrener Ingenieure die vor allem die grundlegende Halbleitertechnologie mit einer F lle von Regeln beherrschen mussten Auch heute noch werden diese Fachleute bei der Entwicklung immer leistungsf higerer Technologien oder beim Entwurf analoger Schaltungen ben tigt Gleichwohl ist es seit l ngerem problemlos m glich leistungsf hige digitale Chips zu entwerfen ohne die Transistoreigenschaften berhaupt zu kennen Statt dessen wird eine L sung ziemlich abstrakt und verst ndlich in einer Hardware Beschreibungssprache formuliert Den Rest erledigen m chtige 1 10 1 Einleitung CAD Werkzeuge Extrem gro e Zahlen von Bauelementen mehr oder weniger abstrakt dargestellt und ihre dynamischen Abh ngigkeiten k nnen nur durch den massiven Einsatz von CAD Werkzeugen CAD Tools menschenw rdig verarbeitet werden Wir unterscheiden statische CAD Software zur Beschreibung und Verwaltung der Schaltungen und dynamische CAD Software zur Simulation ihres zeitlichen Verhaltens Die F lle heute blicher CAD Werkzeuge kann hier kaum angedeutet werden Es beginnt mit graphischen oder textuellen Editoren die die Eingabe Ver
77. so dass die Pr und Post Synthese in Simulationen gegeneinander verifiziert werden m ssen Eine weitere Verifikation allerdings immer mit dem gleichen Testrahmen bedingt die Layout Synthese wenn n mlich das Gattermodell in ein reales Layout platziert und verdrahtet wird Alle diese interessanten und wichtigen Fragen und vieles andere mehr werden im sp teren Modul Chip und System Entwurf erheblich vertieft Programmierbare Logikbausteine Bisher haben wir gelernt in einer Hardware Beschreibungssprache Probleme zu spezifizieren und bevorzugt auf der Register Transfer Ebene RTL zu modellieren In Simulationen k nnen wir uns von der Richtigkeit eines RTL Modells berzeugen und erste Absch tzungen zum Zeitverhalten einer k nftigen Hardware machen Die Logiksynthese des vorigen Kapitels transformiert ein RTL Modell in ein Gattermodell das bereits nach unsern W nschen optimiert ist hinsichtlich Schaltzeit oder Fl che oder auch Leistungsaufnahme Auch wenn diese Parameter jetzt schon ziemlich genau bekannt sind haben wir doch noch keinen realen Chip in den H nden Wenn wir berzeugt sind dass unsere Schaltung vollst ndig korrekt ist und sich in hohen St ckzahlen verkaufen l sst k nnen wir f r sehr viel Geld einen Prototypen fertigen lassen Dies ist direkt nach der Logiksynthese jedoch u erst selten der Fall Stattdessen gibt es programmierbare Logikbausteine insbesondere feld programmierbare Gate Arrays kurz FPGAs die
78. und Blockspeicher Zellen angeschlossen und k nnen entweder mit programmierbaren Taktgeneratoren Digital Clock Manager DCM oder ber spezielle Clock Pins des FPGA angesteuert werden 6 4 Multiprozessor FPGA Plattformen 6 21 Verbindungsart Architektur Long Lines l l 24 horizontal 24 vertikal ia gt gt lt tr Hex Lines L 120 horizontal 120 vertikal Double Lines 40 horizontal 40 vertikal 16 Nachbar Verbindungen at iai T gt ne 8 CLB interne Wg Verbindungen lt lt lt _ _ __ lt lt lt _ _ gt Bild 6 19 Hierarchisches Interconnect Angesichts dieser komplexen Verdrahtungshierarchie wird deutlich welche Anforderungen an die Synthesewerkzeuge gestellt werden hier eine gute Platzierung und Verdrahtung f r eine Schaltung mit Millionen von Gattern zu berechnen vgl Abschnitt 6 1 3 6 4 6 Kommunikation mit dem Chip Fir die Verbindung des FPGAs mit seiner Umgebung etwa mit der Entwicklungs umgebung ML310 gibt es diverse IO Ports Input Output Interessant sind beispielsweise serielle und sehr schnelle Transceiver mit 3 125 Gbit s oder IO Register f r den Anschluss externer DDR Speicher Double Data Rate Daten bertragung zur positiven und negativen Taktflanke auf die w
79. und Wires berf hrt Das Modul in Beispiel 3 2 gibt in einem initial Block der einmal am Anfang ausgef hrt wird die Zahlen 1 bis 10 aus module counter integer R initial for R 1 R lt 10 R 1 display R d R endmodule Beispiel 3 2 Ein Modul mit initial Block Beim Instanzieren von Modulen k nnen die Ein und Ausg nge brigens nicht nur wie in Beispiel 2 11 in der richtigen Reihenfolge direkt bergeben werden sondern auch by name in beliebiger Reihenfolge one_bit_adder BitO SUM SUM 0 B B 0 CARRY_IN 1 b0 A A 0O CARRY_OUT CARRY O V2 input output inout Durch input wird eine Variable als Eingang eines Moduls deklariert Eine input Variable kann gelesen aber nicht ge ndert werden Eine output Variable kann nur module maximum input wire 7 0 A B output reg 7 0 RESULT A always A B if A gt B RESULT A else RESULT B endmodule Beispiel 3 3 Modulparameter mit Richtung 3 4 3 Die wichtigsten Befehle von VERILOG vom Modul beschrieben werden dessen Ausgang sie darstellt Andere Module k nnen sie nur lesen inout Variablen sind les und schreibbar input kann auch bei Tasks und Funktionen benutzt werden V9 V 10 F r Ein und Ausg nge wird anschlie end der Typ deklariert F r einen Wire der Breite 1 kann diese Angabe entfallen Beispiel 3 3 berechnet das Maxmimum zweier Eingangsvariablen und bergibt das Ergebnis im Register
80. und k nnen ihn nun theoretisch an Interessenten in aller Welt verteilen F gen Sie als n chstes eine Instanz Ihres IP Cores zu Ihrem Projekt hinzu damit Sie den Hardware Addierer in einem Hardware Software Gesamtsystem nutzen k nnen Klicken Sie im Projektfenster mit der rechten Maustaste auf den obersten Eintrag System BSP und w hlen Add Edit Cores W hlen Sie im sich ffnenden Dialog fenster Bild D 8 den IP Core aplusb_hw aus klicken auf den Button lt lt Add und best tigen mit OK Abgabe 1 Zeigen Sie Ihrem Hiwi den in Ihr XPS Projekt eingebundenen IP Core aplusb_hw D 1 Hardware bauen und testen D 7 D 1 3 Verdrahtung des Addierers Der Addierer ist nun im FPGA Modell vorhanden jedoch noch nicht mit der Au enwelt verbunden Die Au enwelt besteht in diesem Fall aus einer weiteren Teilschaltung dem oben erl uterten integrierten Logikanalysator mit dem Sie die Arbeit des Addierers im laufenden Betrieb berwachen k nnen Klicken Sie im Projektfenster doppelt auf den Eintrag MHS File system mhs Wenn Sie nun im Quelltext Editor ganz nach unten scrollen sehen Sie die Instanzierung des Addierers wie in Beispiel D 9 Add Edit Hardware Platform Specifications Peripherals Bus Connections Addresses Ports Parameters FT Cells with white backgrounds can be edited To delete m Component Filter BALL peripherals choose one or more rows and click Delete m Pr
81. 0 amp MO TriggerPort L L ul UNIT O MylLAD ILA Trigger Setup S waveform DEV 1 MyDevice1 XC2VP30 UNIT 0 MyILAO ILA oo fd Waveform FAIRE 40 80 120 160 200 240 280 30 360 400 440 480 Listing Bus Signal x 0 Bye fist APLUSB_DBG_IN 000 000 0006000A OT APLUSB_DBG_OUT 000 000 00000010 Signals DEV 1 UNIT 0 Bild 7 23 Verifikation eines Hardware Addieres mit integriertem Logik Analysator ILA 7 5 HW SW Codesign in der Praxis die universelle Entwicklungsplattform ML310 7 27 Die vom ILA aufgezeichneten Signalverl ufe werden ber die JTAG Schnittstelle des ML310 ausgegeben und k nnen auf dem Entwicklungs PC grafisch dargestellt werden Bild 7 23 zeigt die Logikanalyse des Hardware Addierers den wir in Bild 7 21 simuliert hatten Hier arbeitet der Addierer nun auf dem Virtex II Pro FPGA unserer ML310 Entwicklungsplattform Es ist erkennbar dass die Eingabewerte 0006 und 000A korrekt zum Ergebnis 00000010 summiert werden Das Einf gen eines ILA in unser Design k nnen wir leicht in VERILOG vornehmen Dazu gen gt es das in Bild 7 24 gezeigte VERILOG Modul zu instanzie ren und mit den zu analysierenden Signalen zu verbinden module ila_example input wire Taktsignal input wire 31 0 Eing nge f r zu berwachende Signale hier 32 input wire 7 0 ER Trigger Eing nge hier 8 output wire 35 0 CONTROL Steuerleitung zum Speichern und Weiterleiten der auf
82. 1 berechnet der Simulator die rechten Seiten der nicht blockenden Zuweisungen n mlich 1 von B und 0 von A und weist sie am Ende des momentanen Zeitschritts den linken Seiten zu sodass dann A den Wert 1 und B den Wert 0 hat In Beispiel 3 34 hemmt eine nichtblockende Zuweisung nicht die Ausf hrung nachfolgender Anweisungen In den Zeilen 06 08 weist der Simulator dem Register A den Wert 1 zur Zeit 10 zu und 0 dem Register B zur Zeit 12 sowie 1 an C zur Zeit 16 In den Zeilen 13 15 dagegen weist der Simulator den Wert 1 an Register D wiederum zur Zeit 10 zu aber den Wert O an Register E nicht zur Simulationszeit 10 2 sondern zur Zeit 2 und schlie lich 1 an F zur Zeit 4 Damit hat die nichtblockende Zuweisung auch eine parallele Natur In der Register Transfer Logik und der Logiksynthese ist ihr Einsatz besonders empfehlens wert Kapitel 4 V29 assign St ndige Zuweisung Continuous Assignment Mit assign wird einem Wire oder einem Teil davon st ndig ein Ausdruck auf der rechten Seite zugewiesen Continuous Assignment Sie wird stets neu berechnet wenn sich die rechte Seite ndert Die st ndige Zuweisung kann au er durch assign auch implizit bei der Definition eines Wire wie im Beispiel 3 35 erfolgen REGISTER wird implizit WIRE1 und explizit WIRE2 zugewiesen Die beiden always Bl cke berwachen WIRE1 und WIRE2 und geben bei einer nderung die Simulationszeit und den aktuellen Wert aus Die nderungen werden von dem initial Block
83. 12 Das Simulationsergebnis in Bild 4 13 zeigt dass der Datenbus st ndig Werte verschieden von x und z enth lt Au erdem erkennt man dass beide Untermodule beide Z hlerwerte abwechselnd ausgeben Dieses Beispiel ist eine m gliche L sung des Producer Consumer Problems 4 12 4 Modellierungskonzepte in VERILOG Einf hrung in die Logiksynthese Die Hardware Beschreibungssprachen verdanken ihren Erfolg beim Entwurf digitaler Schaltungen vor allem auch den Fortschritten in der Logiksynthese Mit Logiksynthese wird die Entwurfszeit betr chtlich reduziert Ein Designer kann auf einer hohen Abstraktionsebene entwerfen und so seine Entwurfszeit reduzieren In diesem Kapitel f hren wir die Logiksynthese mit der HDL VERILOG nur oberfl chlich ein Sie wird im Modul Chip und System Entwurf erheblich vertieft werden Die kleinen Beispiele sind typisch f r Synthesesysteme wie Synopsys Synplicity oder Xilinx XST Sie stimmen daher nat rlich nicht immer mit den Ergebnissen jedes einzelnen Werkzeugs genau berein 5 1 Logiksynthese im Entwurfsprozess Die Logiksynthese bersetzt eine Register Transfer Beschreibung eines Schaltungs entwurfs in eine optimierte Gatter Darstellung wobei eine Standard Zellbibliothek sowie gewisse Entwurfsbedingungen Design Constraints gegeben sind Die Ein ordnung in den gesamten Entwurfsablauf zeigt Bild 5 1 Eine Standard Zellbibliothek kann aus einfachen Zellen bestehen wie grund legenden Logikgattern AN
84. 16 USB 7 14 7 16 PLB 6 19 7 13 Virtex 4 6 12 PLD 6 3 Virtex II Pro 6 12 PROM 6 3 VLSI 1 1 1 5 ROM 6 3 XPS 7 21 RS232 7 16 RTL 1 11 5 3
85. 29 m Bild D 29 i Desktop Icon eo von XPS XPS fragt Sie an welchem Projekt Sie arbeiten m chten OK startet den Base System Builder Wizard Im n chsten Dialog w hlen Sie ein Verzeichnis f r Ihr Projekt Klicken Sie auf Browse erzeugen Sie sich in Ihrem Home Verzeichnis D 3 Hardware antwortet Software D 23 einen Ordner d 3_self wechseln dort hinein und klicken dort ffnen Best tigen Sie mit OK Nun ffnet sich der Base System Builder W hlen Sie im Welcome Dialog would like to create a new design Im Dialog Select Board w hlen Sie als Board Vendor Xilinx als Board Name Virtex II Pro ML310 Evaluation Platform und als Board Revision D aus Im Dialog Select Processor w hlen Sie PowerPC Im n chsten Dialog werden die Prozessor Parameter eingestellt Nehmen Sie keine nderungen an den Default Einstellungen zu Frequenz und Debug Interface vor aber stellen Sie unter On Chip Memory OCM f r Data und Instruction je 32 KB ein Im BRAM Speicher innerhalb des Virtex I Pro wird sp ter die Software abgelegt In den n chsten beiden Dialogen werden die IO Interfaces festgelegt Lassen Sie im ersten Dialog lediglich das H kchen vor RS232_Uart stehen und entfernen Sie die brigen H kchen Im zweiten Dialog soll nur LCD OPTIONAL ausgew hlt bleiben Klicken Sie im Dialog Add Internal Peripherals auf den Remove Button um den f r dieses Beispiel unn tigen BRAM zu entfernen Stattdessen verwenden wir den zuvor hinzugef gten BRA
86. 3 3 2 module 3 2 negative Flanke 3 10 negedge 3 10 nichtblockende Zuweisung lt 3 30 Output 3 3 parallel 2 5 Parallelit t 4 1 parameter 3 5 Parameterliste 2 4 Pipeline 4 6 posedge 3 10 positive Flanke 3 10 Producer Consumer 4 9 Programmsteuerung 3 13 Yreadmemb 3 36 readmemh 3 36 reg 3 21 Register 2 4 3 21 Register Transfer Ebene 5 3 RTL Logik 5 9 Schnittstelle 2 4 3 2 Sensitivit tsliste 3 5 3 7 Shift lt lt gt gt 3 29 Simulationszeitachse 4 2 Simulator 4 2 Standard Zellbibliothek 5 1 st ndige Zuweisung 3 19 3 33 Namen und Abk rzungen ASIC 1 6 7 2 FPGA 1 19 6 1 BRAM 6 16 7 14 HDL 2 1 CLB 6 9 6 13 ILA 7 25 CPLD 6 3 IP 7 5 7 20 DDR 7 16 ISS 6 17 DMA 7 29 luK 1 1 DSP 7 2 JControl 7 11 E l S 1 3 JTAG 7 19 7 24 EEPROM 6 3 6 8 EPROM 6 3 6 8 LUT 6 4 6 9 6 15 ML310 7 14 Synopsys 5 1 Synplicity 5 1 task 3 13 Task 3 14 Technologie Bibliothek 5 1 Unbestimmt x 3 22 Untermodul 2 9 3 2 Variable 3 18 Vergleich I lt gt lt gt 3 25 VERILOG HDL 2 1 VERILOG 5 2 VERILOG Befehle 3 1 VeriWell 4 2 wait 2 5 3 8 3 12 Warten 3 8 while 3 17 Wire 2 4 wire 3 19 Wire 3 19 w rtliche Gleichheit 3 25 write 3 34 x unbestimmt 3 22 Xilinx XST 5 1 Z hochohmig 3 22 Zeitkontrolle 2 5 3 29 Zeitverz gerung 3 8 Zeitverz gerung 3 8 Zuweisung lt 3 30 Zuweisung 3 29 MPSoC 6 12 SoC 1 21 7 4 OCM 6 17 SPLD 6 3 OPB 6 19 7 13 SRAM 6 6 PCI 7
87. 34c 0x20801350 section bss_heap 0x20801350 0x20802350 Downloaded Program executable elf Setting PC with program start addr Oxfffffffc PC reset to Oxfffffffc Clearing MSR Register XMD Beispiel D 25 Laden der Software in das FPGA berpr fen Sie mit dem Befehl srrd ob sich der Programmz hler n mlich das Register pc an der richtigen Stelle fffffffc befindet wie in Beispiel D 26 Andernfalls m ssen Sie einen erneuten Reset machen und die Software nochmals hochladen D 20 D Lab 3 Hardware Software Codesign auf dem ML310 XMD srrd pe f f ffffie 00000000 00000000 fffffffFt Gtr f fff rf e0000077 200108a0 f ffffffFf sprgl ffffffff fEffLfffe eflefdff 0700 srrl 00000000 Acf1608e 0000005e 55000000 esr 00000000 00000000 ter 00000000 00000000 dbsr 08100300 81000000 Ff0000 dc000000 fF Iffic 00000000 ffffec DETEFTTE 000000 00000000 Ffffff 00000000 fffffe 7fbf0fb6 000000 54f7afef feff5b 00000000 zpr 00000000 00000000 ccr0 00700000 00000000 iac3 fffffffc 9efff0 sprg5 bfffffff 7a8fe2af usprg0 ffffffff XMDS 0 dacl fffefe7e EECELELE 0 0 0 0 Beispiel D 26 Special Register Check Vor dem Start des geladenen Programms stellen wir den Logikanalysator darauf ein beim Starten der Daten bertragung von Software nach Hardware eine kurze Zeit lang einmal pro Takt die Summanden und die Summe der Addition auf
88. 405_0 isocm ppc405_1 mder ppc405_1 dplb ppc405_1 iplb ppc405_1 dsocm netten iocm_cntlr isocm iocm_entlr der_wr iocm_cntlr instrn_ docm_cntlr porta docm_cntlr dsocm plb2opb sder plb2opb splb plb2opb mopb ppc405_0 jtagppc ppc405_1 jtagppe Other Transparent bus point to point connections Destination jtagppc_O jtagppcdO _ jtagppc_0_0 jtagppc_O jtagppei gt jtagppe_0_1 LCD_OPTIONAL sopb aplusb_writeonly_O sder Abbrechen Obemehmen Hilfe Bild D 20 Anschluss des Addierer Cores an den DCR Bus Um bei der Synthese eine Warnung zu vermeiden korrigieren Sie bitte noch die Bitl nge der High Adresse ersetzen Sie PARAMETER C_DCR_HIGHADDR Ob000000000011 durch 060000000011 PARAMETER C_DCR_HIGHADDR Speichern Sie dann mit Strg s und klicken Sie auf den Button zur Bitstrom Erzeugung Achten Sie auch hier wieder darauf ob zum Schluss 0 errors angezeigt werden D 2 3 Software vervollst ndigen Die Hardware ist fertig jetzt m ssen Sie nur noch die Software fertig stellen Klicken Sie im XPS Projektfenster auf den Tab Applications Unter Sources verbergen sich zwei Verweise auf C Dateien Sie brauchen sich hier nur um das Hauptprogramm in der Datei testApp_adder c zu k mmern ffnen Sie die Datei durch einen D 2 Software steuert Hardware D 17 Doppelklick und betrachten Sie die main Methode die das auszuf hre
89. 6 24 6 Programmierbare Logikbausteine Hardware Software Codesign Der Begriff des Hardware Software Codesign wird h ufig verwendet aber worin besteht das Neue Schon seit jeher wurden Computer entworfen die offensichtlich aus Hardware und Software bestehen Auch der Begriff Design ist nur eine chice Fassung f r Entwurf den wir schon immer betrachtet haben n mlich den kreativen Teil einer Entwicklung auf den die weitgehend automatische Implementierung folgt Das Neue am Hardware Software Codesign besteht in dem Zusatz Co der gleich mehrere Interpretationen erlaubt Concurrent Neben der Interpretation parallel arbeitender Hard und Software ist vor allem der gleichzeitige Entwurf von Hard und Software gemeint im Gegensatz zum klassischen hardware first bei dem zun chst ein Hardware Baustein entwickelt wird und dann eine passende Software Communicating Die richtige Kommunikation zwischen Hardware und Software spielt eine wesentliche Rolle Coordinated Es geht um den koordinierten systematischen Entwurf von Hardware und Software Complex Systeme aus Hardware und Software sind gew hnlich besonders komplex vor allem wenn sie eng aufeinander abgestimmt sind Correct Selbstverst ndlich soll ein korrekt zusammenspielendes System entstehen auch wenn das in der Praxis oft nur aufw ndig und unvollst ndig gelingt Cooperation Hardware und Software arbeiten auf vielf ltige Weise zusammen Es geht also um meist
90. B ff 28 default Sdisplay Unimplemented Opcode d OPCODE ff 29 endcase ff 30 endfunction fe 31 Jf 32 7 33 always OPCODE A B 34 RESULT calculate OPCODE A B ff 35 77 36 endmodule ff 37 Beispiel 2 6 Eine einfache ALU Wie jedes St ck Software oder Hardware muss die ALU getestet werden Dies geschieht oft durch einen Testrahmen wie in Bild 2 7 der geeignete Test Inputs Test Stimuli oder Testmuster anlegt und die Testantworten oder Test Outputs beobachtet und pr ft RESULT Bild 2 7 Testrahmen f r die ALU Zun chst k nnte man auch den Testrahmen in das Programm von Beispiel 2 6 packen Es empfiehlt sich jedoch sehr die entwickelte Hard oder Software und den Test sauber zu trennen Deshalb gibt es in Beispiel 2 8 ein eigenes Testmodul in dem die ALU als Untermodul instanziert wird von der Vorlage alu aus Beispiel 2 6 wird eine Kopie oder Instanz namens Alu platziert Allerdings m ssen wir jetzt die 2 8 2 berblick zur Hardware Beschreibungssprache VERILOG Variablen A B usw der Alu Schnittstelle auch im Testrahmen noch einmal deklarieren Dagegen hat das Modul test eine nach au en abgeschlossene leere Schnittstelle Die Testmuster in den Zeilen 19 und 20 sind durch je eine Verz gerung 1 abgeschlossen Sonst w rde der initial Block ohne Unterbrechung bearbeitet Insbesondere w rde das erste Testmuster gleich durch das zweite berschrieben ohne dass die parallel laufende ALU Ins
91. B und bergibt das Ergebnis in MAX Die Parameterliste hinter dem Modulnamen enth lt die Variablen die das Modul importiert A und B bzw an andere Module exportiert MAX Zus tzlich muss f r jede Variable ihre Richtung input oder output deklariert werden bei inout ist beides der Fall Au erdem wird der Variablentyp deklariert integer wire reg time und andere Bestimmung des Maximums module maximum input wire 31 0 A B output reg 31 0 MAX i always A B begin if A gt B MAX A else MAX B display new maximum is d MAX end endmodule Beispiel 2 3 Schnittstelle Variable always und Wir gehen hier nur auf den Unterschied zwischen wire und reg ein die brigen werden sp ter erl utert Ein Wire vom Typ wire stellt eine Verbindung zwischen mehreren Punkten einer Schaltung dar und entspricht in erster N herung einer Leitung Ein Register des Typs reg entspricht einer Speicherzelle zum Schreiben und Lesen von Bin rwerten Dies ist bei einem Wire nicht m glich der nur bidirektional zwischen Enden verbindet wire und reg sind hardware nahe Typen beide vertreten Worte aus mehreren Bits wobei jedes Bit nicht nur die Werte 0 und 1 sondern auch z und x annehmen kann z bedeutet den hochohmigen Zustand und x steht f r unbestimmt treiben mehrere Quellen einen Wire unterschiedlich so ist das Ergebnis x F r beide Typen 2 berblick zur Hardware Beschreibungssprache VERILOG 2 5 kann i
92. BG_IN und DBG_OUT die Summanden bzw die Summe der Addition zur Verf gung F gen Sie wie in Beispiel D 10 zwei Zeilen Code ein und speichern Sie mit Strg s EGIN aplusb_hw ETER INSTANCE aplusb_hw_0 ETER HW_VER 1 00 a T DBG_IN APLUSB_DBG_IN l DBG_OUT APLUSB_DBG_OUT Beispiel D 10 Verdrahteter Addierer Core Der Anschluss DBG_IN des Addierers steht nun fiir die anderen Instanzen unter anderem den Logikanalysator in der Datei system mhs unter dem Namen APLUSB_DBG_IN zur Verf gung der Anschluss DBG_OUT entsprechend unter APLUSB_DBG_OUT D 1 4 Bitstrom f r die Hardware Programmierung Erzeugen Sie einen Bitstrom mit dem in Bild D 4 hervorgehobenen Button untere der drei Symbolleisten in XPS Ihr Design wird nun vollautomatisch synthetisiert auf die Zielplattform ML310 abgebildet platziert verdrahtet und in einen Bitstrom zur FPGA Konfiguration verpackt W hrend des etwa 5 bis 10 miniitigen Vorgangs sehen Sie im Konsolenfenster die Kontrollausgaben der jeweils aktuellen Bearbei tungsphase Die Bearbeitung endet mit der Ausgabe in Beispiel D 11 DRC detected 0 errors and 6 warnings Saving bit stream in system bit Creating bit mask Saving mask bit stream in system msk Bitstream generation is complete Done Beispiel D 11 XPS Konsole erfolgreiche Bitstrom Erzeugung Der erzeugte Bitstrom system bit befindet sich im Unterverzeichnis implementation Ihres Pr
93. Ben 200k 4 100k 4 ASIC 16 50k 20k J 10k 4 Trend quadratisch 1u Z SK n A 1 12 osy DRAM 13 2k J 1k 4 0 24 500 200 Pa 100 50n 50 30n x 20 I u u u rrr u a r rrr errr yp ere ferry rrr 10 T T T T T T T T 1 T T 1 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 10u 5u 3u 2p1 5u1 0p 7p 5p 35p 25p 18u 13u 1u 70n 50n 35n Bild 1 4 Transistorgr e Bild 1 5 Gatterdichte Erm glicht wurde das exponenzielle Wachstum der Chip Komplexit t in erster Linie durch st ndige atemberaubende Verbesserungen der Herstellungsprozesse die insbesondere eine Verkleinerung der Transistorl ngen L um j hrlich 13 erm glicht haben in weniger als f nf Jahren lie en sich die minimalen Transistorl ngen jeweils halbieren Bild 1 4 Da auch die brigen Abmessungen wie die der Metall verbindungen zwischen den Transistoren in erster N herung gleich schnell geschrumpft sind wurden die Strukturen in der Fl che j hrlich kleiner um 0 87 0 75 d h es passten j hrlich 1 0 75 1 33 oder 33 mehr Bauelemente auf eine Einheitsfl che Zu einem sehr hnlichen theoretisch gleichen Ergebnis kommt indirekt die Integrationsdichte in Bild 1 5 in Abh ngigkeit von der Strukturgr e n mlich einem j hrlichen Trend von 35 Verwendet werden heute Strukturen weit im Sub u Bereich deep submicron die in der Gr enordnung von 60 Nanometern sind 1 nm 10 9 m DRAM steht f r Dynamic Random Access Memory
94. D OR NOR usw oder Makrozellen wie Addierern Multiplexern und speziellen Flipflops Eine Standard Zellbibliothek wird auch als Technologie Bibliothek bezeichnet Eine Logiksynthese wurde fr her vom Designer selbst durchgef hrt Zun chst dachte er sich eine Schaltungsarchitektur aus zu der er auf dem Papier oder in einer Hardware Beschreibungssprache ein High Level Modell angefertigt hat Irgendwann hat er auch Bedingungen zum Timing zur Fl che zur Testbarkeit und zur Leistung beachtet 5 2 5 Einf hrung in die Logiksynthese RTL Modell Constraints erf llt Design Constraints Technologie Bibliothek Platzieren und Verdrahten Bild 5 1 Grundlegende Schritte der Logiksynthese Die eigentliche Logiksynthese bestand dann darin das High Level Modell mithilfe der Zellen einer Standardbibliothek manuell zu einer Gatternetzliste zusammenzusetzen Dieser letzte Schritt war ein sehr komplexer und zeitaufw ndiger Teil des Entwurfs zumal wenn mehrere Varianten des Gattermodells angefertigt werden mussten um einen m glichst effizienten Entwurf zu erhalten Mit immer leistungsf higeren Werkzeugen konnte die Synthese von Gatter modellen automatisiert werden Dadurch kann sich der Designer jetzt auf die Wechselwirkungen auf der Architekturebene konzentrieren auf die Einhaltung der Design Constraints und auf die Optimierung einzelner Zellen einer Standard Zellbibliothek Mit dieser Standardbibliothek f hrt
95. Dieser Teil zeigt alle Module Modulinstanzen initial und always Bl cke sowie Continuous Assignments an Bild E 3 e Waveform Fenster rechts oben Im rechten Fenster werden die simulierten Waveforms angezeigt Mittels I und O kann herein und herausgezoomt werden Ein Klick mitten ins Waveform setzt die gelbe Linie an den gew nschten Punkt und zeigt die genaue Simulationszeit an e Objects Fenster mittig oben Aus diesem Fenster k nnen weitere Signale in das Waveform Fenster per Drag amp Drop eingef gt werden wenn man zuvor im Workspace Fenster eine andere Modulinstanz anklickt Die Simulation muss allerdings neu gestartet werden bevor das neue Signal aufgezeichnet wird E 2 Zusammenfassung von Lab 2 E 5 Erneutes Starten der Simulation Stellen Sie mittig in der Zeile unter der Men leiste in dem daf r vorgesehen Feld eine angebrachte Simulationszeit mit Zeit einheit ein z B 200 ns Klicken Sie dann direkt links daneben auf das Icon mit dem aufw rts zeigenden Pfeil und best tigen Sie den folgenden Dialog mit Restart Klicken Sie danach direkt rechts neben dem Simulationszeitfeld auf das Icon mit dem abw rts zeigenden Pfeil Alternativ k nnen Sie in der Konsole auch den Befehl restart eingeben den Dialog mit Restart best tigen und dann run eintippen ndern des Zahlenformats von Signalen Rechtsklicken Sie auf das gew nschte Signal und w hlen Sie dann unter Radix die gew nschte Basis aus Recompilier
96. Einschalten einer Leucht diode des Kamera Bedienfelds beispielsweise kann durch das Memory Mapping mit dem einfachen Quelltext aus Bild 7 26 erfolgen void setLED bool on volatile unsigned int led 0x600E1000 led on Bild 7 26 Einfacher Hardware Zugriff durch Memory Mapping Hier wird lediglich ein Pointer auf den Speicherbereich der Bedienfeld Hardware angelegt auf den wie auf eine normale Variable geschrieben werden kann Der Schreibzugriff f hrt dazu dass tats chlich Daten vom Prozessor an das Bedienfeld Hardware Modul gesendet werden Wichtig ist hierbei dass der Wert der Variablen led nicht im Hauptspeicher abgelegt wird Das Vorgehen beim Memory Mapping ist nun deutlich geworden Wer initiiert aber den Datentransfer Bei obigem Beispiel ist dies eindeutig der Prozessor Da sich das angesprochene Hardware Modul hier wie ein normaler Speicher verh lt sprechen wir vom Memory Mapped Zugriff Ein Nachteil kann bei gr eren Datenmengen sein dass der Prozessor die gesamte Zeit mit der Daten bertragung besch ftigt ist Um dies zu vermeiden k nnen wir stattdessen der Hardware signalisieren dass f r sie ein gr eres Datenpaket im Hauptspeicher bereit steht etwa Bilddaten f r die Kompression in das JPEG Format Das JPEG Hardware Modul kann nun selbst ndig den entsprechenden Speicher bereich auslesen die JPEG Komprimierung vornehmen und das Ergebnis wieder in den Speicher zur ck schreiben Der gesamte Vorg
97. I Pro Ox3FFFFFFF Power 0x40000000 Ox405FFFFF PowerPC 0x40600000 Ox406BFFFF 0x60000000 Fotosensor JPEG Codec Display Controller 0x600E0FFF 0x600E 1000 0x606E10CF Bild 7 25 Memory Mapping Hr Bedienfeld W hrend einfache Prozessoren wie der ST7 Mikrocontroller aus Abschnitt 7 4 1 lediglich ber ein simples Speicher Interface verf gen besitzen leistungsf higere Bausteine mehrere Kommunikationsschnittstellen Der PowerPC des Virtex II Pro zum Beispiel verf gt sowohl ber ein Bus Interface f r den Processor Local Bus 7 5 HW SW Codesign in der Praxis die universelle Entwicklungsplattform ML310 7 29 PLB als auch ber eine schnelle BRAM Schnittstelle Eine Adresstabelle mit der der Prozessor beim Booten konfiguriert wird bestimmt welches Interface f r welchen Adressbereich verwendet werden soll Anschlie end werden Speicherzugriffe anhand ihrer Zieladresse ausgewertet und ber die richtige Schnittstelle abgewickelt Bild 7 25 zeigt das Memory Mapping f r ein typisches System on Chip es handelt sich in diesem Fall um die Digitalkamera aus Abschnitt 7 4 2 Beide Prozesso ren des Virtex II Pro sind im Einsatz W hrend die Software auf dem ersten Prozessor Bilder vom Fotosensor entgegen nimmt und mit Hilfe des JPEG Codecs komprimiert im Hauptspeicher ablegt steuert die Software auf dem zweiten Prozessor den Display Controller und das Bedienfeld der Digitalkamera an Das
98. Konfiguration h ufig ge ndert sp testens beim Ausf hren eines neuen Programms Hierzu werden spezielle Compiler entwickelt z B COMRADE an der Abteilung E I S in Zusammenarbeit mit der TU Darmstadt die rechenintensive Programmsequenzen automatisch identifizieren und in VERILOG Code umwandeln Wie wir gesehen haben ist das ML310 ein u erst vielseitiges Board das beim Entwurf moderner eingebetteter Multimedia Systeme und in der Forschung zu adaptiven Rechnern eingesetzt wird In den Praktika der folgenden Semester sehen wir uns diese Entwicklungsplattform genauer an und nutzen die hier vorgestellten Entwurfswerkzeuge um selbst ein Hardware Software Codesign von der Idee bis zum fertigen System on Chip durchzuf hren Dabei werden Sie sicher auch mit dem einen oder anderen Bug zu k mpfen haben der mit Hilfe der komfortablen Debug M glichkeiten aber meist schnell behoben werden kann Angesichts der rasant steigenden Komplexit t eingebetteter Systeme man denke nur an Visionen wie selbststeuernde Automobile oder Brillen mit eingeblendeten Umgebungsinformationen werden zuk nftige Prototyping Boards aber vermutlich noch wesentlich ausgereiftere Analyse M glichkeiten mitbringen der Fortschritt kennt schlie lich kein Ende Hardware SoftwareSysteme Teil 2 Ubungen Ulrich Golze Technische Universitat Braunschweig Abteilung Entwurf integrierter Schaltungen E I S Oktober 2008 Die drei Labs zu d
99. LL Aktiviere unkritische Interrupts XExc_mEnableExceptions XEXC_CRITICAI Implementierung des Interrupt Handlers void irqHandler void not_in_use Hardware anweisen das Interrupt Signal zu loeschen mtdcr HW_DCR_ADDR 0 printf He die Hardware hat gerad inen Interrupt ausgeloest hier steht sinnvoller Quelltext Beispiel D 34 Eine Software Methode als Interrupt Handler deklarieren In der Methode irqHandler ist die erste Amtshandlung besonders wichtig durch einen DCR Schreibzugriff wird der Hardware mitgeteilt dass der Interrupt in der Software angekommen ist Die Hardware sollte nun das Interrupt Signal l schen d h auf O zur cksetzen Ansonsten w rde n mlich nach Verlassen des Interrupt Handlers dieser gleich wieder aufgerufen Aufgabe 6 Entpacken Sie das Archiv d 6_trigger happy zip und ffnen Sie das XPS Projekt Es enth lt eine Basisumgebung mit der Sie die Spielentwicklung starten k nnen Wichtig Bei dieser komplexen Aufgabe ist es wichtig jede Teilaufgabe separat zu l sen und diese dem HiWi zu pr sentieren Nur so lassen sich Folgefehler vermeiden die Sie in eine Sackgasse f hren k nnten 6 1 Schauen Sie sich zun chst die Hardware Plattform an Welche IP Cores sind enthalten und wie sind sie untereinander verbunden Fertigen Sie eine Skizze Blockschaltbild der Hardware Plattform an und zeigen Sie sie Ihrem HiWi Der f r das Spiel int
100. M am OCM Interface des PowerPC Im Dialog Software Setup entfernen Sie bitte die H kchen vor Memory Test und Peripheral Self Test Dies sind Testprogramme die wir f r die vorliegende Aufgabe nicht ben tigen Nun sind Sie nur noch 3 Klicks vom Ziel entfernt Generate Fertig stellen OK und schon ist das Basisprojekt gebaut D 3 2 Neuer Core aplusb Entpacken Sie d 3_hardware_software_schnittstelle zip in Ihr Home Verzeichnis Der IP Core den Sie im vorigen Abschnitt erzeugt haben kann zwar Daten vom DCR Bus lesen aber keine Daten schreiben Erstellen Sie sich daher nun einen IP Core der auch auf den DCR Bus schreiben kann Daf r brauchen Sie die drei Dateien adder v dcr_if v und aplusb v aus dem Verzeichnis verilog Geben Sie als Namen f r den Core aplusb an F gen Sie den neuen IP Core Ihrem Projekt hinzu Im Tab Bus Connections k nnen Sie Ihren Core noch nicht als DCR Slave markieren da noch kein DCR Bus hinzugef gt wurde W hlen Sie oben rechts im Tab unter Choose one or more buses den Eintrag dcr_v29_v1_00_a aus und klicken Sie den Button lt lt Add Jetzt k nnen Sie Ihren IP Core wie gewohnt als Slave mit dem DCR verbinden Zus tzlich m ssen Sie aber auch noch die CPU als Master w hlen indem Sie in das DCR Feld der Instanz ppc405_0 mdcr Bild D 30 oben links klicken D 24 D Lab 3 Hardware Software Codesign auf dem ML310 Add Edit Hardware Platform Specifications x Peripherals Bus Connections A
101. NAL1 oder SIGNAI negative Flanke SIGNAL1 oder SIGNAI Beispiel 3 9 Warten mit module test_events reg EVENT initial begin Start bei Zeitpunkt 0 Sdisplay Start bei d time EVENT display EVENT bei d time end initial begin Start bei Zeitpunkt 0 1 EVENT 0 end endmodule Beispiel 3 10 Zeitkontrollen und Event Beide initial Bl cke beginnen zum Zeitpunkt 0 von denen der Simulator einen Block als ersten ausw hlt Man darf sich nicht darauf verlassen dass dies der 3 2 Zeitkontrollen 3 11 erste Block ist Wird jedoch beispielsweise der erste initial Block zuerst gestartet so gibt dieser den Text und den Simulationszeitpunkt 0 aus Dann unterbricht EVENT die Bearbeitung und es wird der zweite initial Block gestartet welcher zun chst durch 1 die weitere Ausf hrung auf den Zeitpunkt 1 verschiebt jedoch vor den EVENT Test im ersten initial Block Es wird EVENT ausgel st Im ersten Block wird daher bei t 1 erfolgreich EVENT berpr ft und die zweite Sdisplay Anweisung wird ausgef hrt Die Simulationsausgabe in Bild 3 11 ist eindeutig Start bei 0 VENT bei 1 Bild 3 11 Simulationsausgabe zum Beispiel 3 10 Die Verz gerung 1 im zweiten Block ist bedeutsam Ohne sie kommt es zu einem unerw nschten Nichtdeterminismus indem die Simulationsausgabe davon abh ngt welchen initial Block der Programmierer
102. PE ARR Eve SA 7 1 3 Hardware Software Systeme eessccecsseceeessececeseeeceeneeeeenaeceaes 1 2 Der Enbwaurlsprozess use einine Ta Eingebelltele Systeme 2 sen enact aie ea eae aetna 7 4 Beispiele f r eingebettete Systeme nun 7 4 1 Eine Steuereinheit f r die Home Automation ueesseeee 7 4 2 Eingebettetes System f r eine Digitalkamera 75 HW SW Codesign in der Praxis die universelle Entwicklungsplattform ML310 sennee 7 5 1 Intellectual Property Design mit Fertigbausteinen 7 5 2 Das ML310 als Entwicklungsumgebung f r eingebettete SYS ee ee 7 5 2 1 Software Entwicklung mit dem ML310 7 5 2 2 Hardware Entwicklung mit dem ML310 7 5 3 Schnittstelle zwischen Hardware und Software 7 3 3 1 Memory Mappine een 1 3 32 Interpret ee TAS BUSBIcK een Teil 2 bungen A B Die drei Labs zu den HW SW Systemen Lab 1 VERILOG und seine Tools BL Hello World au ee B 1 B 1 1 Projekt Navigator starten 0 ccccceessceeessecceeseeeeceeeeeceeneeeeeaaeeeenes B 1 Bled Fin neues Projekt adicia dns sta cease nes B 2 B 1 3 Bemitzeroberfl che von ISB wise un a B 4 B 1 4 Quelltext erzeugen und ins Projekt einf gen ee B 4 B 1 5 Simulator AML PUL ONS aneignen B 5 B 1 6 Benutzeroberfl che von ModelSim ussenesneennenn B 5 B 1 7 Simulation starten zu erg B 6 B 2
103. Simu lerte Zen sn a aa B 7 B 3 Konkurrierende Breieises er EHE B 9 BA Flip Flops ee ees eh B 11 B 3 VERIL OG O7 A sear hate toes career ewe mene B 15 B 6 P rametrisiertes Schieberegister sau RER B 16 B7 Abschlussaliz nach era B 19 B 8 Debouncer des Spiels Trigger Happy usseenennnnnnnn B 21 B 9 Universal Asynchronous Receiver 2er Re B 22 B 10 RAM mit asynchronem Lese Schreibzugriff een B 24 Bl Feilbarkeit d r 3 een B 25 B 12 K ntrollfl ssgraph ee B 26 Lab 2 Logiksynthese mit VERILOG CH Synthese eines AddiererS ee nee C 1 C 1 1 ISE Projekt VERILOG Modul und Verhaltenstest C 1 CT 2 Eosiksynthese anne een C 3 C 1 3 Syntheseergebnis untersuchen uuusssssessensnsnnsennnenennn nn C 5 C 1 4 Maximale Valk tate unse C 6 C2 Eoeiksynthese Qu dessen era C 7 CoS Abschlussgqu ee C 8 D Lab 3 Hardware Software Codesign auf dem ML310 D 1 Hardware bauen und testen aa ensllanin D 2 D 1 1 VERILOG Modell eines Addierers nee D 3 D 1 2 In XPS einen IP Core erzeugen und einbinden D 3 D 1 3 Verdrahtung des Addierers a dee D 7 D 1 4 Bitstrom f r die Hardware Programmierung D 8 D 1 5 Download auf das ME310 ea D 9 D 1 6 On Chip Test des Addierers cceescceceseceeseececeeeeeeceeaeeceeaeeeenes D 11 D 2 Software steuert Hardware ans nee sense D 13 D 2 1 DCR Bus von
104. Speed Anwendungen vor allem aus dem Bereich der digitalen Nachrichten bertragung DSL Provider etc durch Kopplung der Transceiver k nnen bis zu 80 Gbit s erreicht werden USB Universal Serial Bus zum Anschluss verschiedener Ein und Ausgabeger te wie Maus Tastatur externe Festplatte etc 7 5 HW SW Codesign in der Praxis die universelle Entwicklungsplattform ML310 7 19 Debug JTAG Port Debugschnittstelle f r Remote Debugger und Logik Konfigu Analysator ber den JTAG Port kann auch das FPGA ration von au en programmiert werden Reset zwei Reset Schalter f r PowerPC Prozessoren und Gesamtsystem System ACE Konfigurationsbaustein erlaubt die FPGA Programmierung direkt nach dem Einschalten ber eine CompactFlash Karte Virtex Il Pro rekonfigurierbares FPGA mit integrierten PowerPC Prozessoren als Herz des ML310 Tabelle 7 15 Komponenten des ML310 Bei Prototyping Boards wie dem ML310 unterscheidet man typischerweise die folgenden zwei Bauformen l Steckkarten etwa f r den PCI Bus eines Entwicklungs PCs haben den Vorteil dass sie vom PC mit Strom versorgt werden und sich Ressourcen mit dem Host Rechner teilen k nnen etwa den Hauptspeicher Die feste Kopplung an den PC ist oft aber auch ein erheblicher Nachteil f r eingebettete Anwendungen da sie nicht so leicht mit weiteren Systemen vernetzt oder auch in ein Produktgeh use eingebaut werden k nnen etwa einen Mobilt
105. UT Il 10 Im Allgemeinen werden mehrfache if else if Anweisungen allerdings nicht in gro e Multiplexer bersetzt sondern m glichst in effizientere Konstruktionen Die Fallunterscheidung case Schlie lich kann der Multiplexer aus Bild 5 7 durch die Fallunterscheidung case S 1 bO OUT I0 L prs OUT 11 endcase erzeugt werden Gro e case Anweisungen erzeugen gro e Multiplexer oder verwandte Strukturen 5 8 5 Einf hrung in die Logiksynthese Schleifen mit for Eine for Schleife kann zur Konstruktion kaskadierter kombinatorischer Logik verwendet werden So entsteht durch die Schleife in Beispiel 5 8 ein 8 Bit Voll addierer C 8 Bit Ripple Addierer Beispiel 5 8 Kaskadierte kombinatorische Logik Die Variable C wird w hrend des Schleifendurchlaufs dynamisch ver ndert indem links von das neue rechts das alte Carry steht Die Anweisung function Funktionen werden in kombinatorische Bl cke mit einem Ausgang synthetisiert der aus mehreren Bits bestehen kann Beispiel 5 9 implementiert einen 4 Bit Volladdierer wobei das h chstwertige Bit der Funktion f r das Carry benutzt wird 0 fulladd input 3 0 A B function 4 input C_IN begin fulladd A B C_IN fulladd 3 0 Summe end fulladd 4 Carry endfunction Beispiel 5 9 Funktion f r einen kombinatorischen Volladdierer Der always Block Mit dem fundamental wichtig
106. Variablen Fallunterscheidungen if case Schleifen for while und Prozeduren function task sowie Mischformen davon Abschnitt 3 1 2 berblick zur Hardware Beschreibungssprache VERILOG 2 3 Der Rest dieses Kapitels soll anhand mehrerer kleiner Beispiele ein erstes Gef hl f r die Hardware Beschreibungssprache VERILOG verschaffen Im n chsten Kapitel werden die wichtigsten Befehle dann genauer behandelt In Kapitel 4 werden typische Modellierungskonzepte angeboten wie Parallelit t Zeit Pipelining und Register Transfer Logik und dabei durch Beispiele mittlerer Gr e unterst tzt Wir verwenden mit dem Simulator ModelSim getestete Beispiele Wir beabsich tigen keine vollst ndige Zusammenfassung der Sprache wie sie im Benutzerhandbuch enthalten ist sondern eine pragmatische Einf hrung die naturgem unvollst ndig und teilweise unpr zise bleiben wird Mit VERILOG bezeichnen wir die Hardware Beschreibungssprache VERILOG HDL Alle Schl sselworte beginnend mit einem bezeichnen Systemkommandos des Simulators und geh ren nicht zur Sprache selbst VERILOG unterscheidet Gro und Kleinbuchstaben wobei alle Schl sselworte klein geschrieben werden Leerzeichen Tabulatoren Zeilenvorsch be und Kommen tare k nnen zur Erh hung der Lesbarkeit verwendet werden In VERILOG sind Module die grundlegenden Einheiten f r Gatter Z hler CPUs oder ganze Rechner Sie lassen sich hierarchisch schachteln Das Modul count in
107. W hlen Sie ein Projektverzeichnis und einen Projektnamen e Nehmen Sie die Einstellungen wie in Bild E 2 vor e Die nachfolgenden drei Dialogfelder k nnen mit Weiter bzw Fertig stellen ber sprungen werden E 1 Zusammenfassung von Lab 1 E 3 New Project x m Enter a Name and Location for the Project Project Name Project Location Jhello_world iz ise projects hello_world er m Select the type of Top Level module for the Project Top Level Module Type HDL Bild E 2 Zurich Weiter gt Abbrechen Hilfe Neues Projekt Einstellungen Quelltext erzeugen und ins Projekt einf gen e Rechtsklick im Quellenfenster New Source e W hlen Sie ihre gew nschte Datei und benennen Sie diese e F r ein normales Modul w hlen Sie Verilog Module F r einen Testrahmen w hlen Sie Verilog Test Fixture e Falls Sie einen Testrahmen gew hlt haben m ssen Sie im folgenden Schritt ausw hlen zu welchem ihrer Module der Testrahmen geh rt e Die nachfolgenden Dialogfelder k nnen mit Weiter bzw Fertig stellen ber sprungen werden Simulator starten ohne expliziten Testrahmen e Selektieren Sie das gew nschte Modul im Quellenfenster e ffnen Sie im Prozessfenster den Punkt Design Utilities e Doppelklicken Sie den Prozess Launch ModelSim Simulator e Stellen Sie sicher dass f r die simulierte Zeit ein gen gend gro er Wert eingestellt ist E 4 E Zusammenfassung der bungen Simul
108. Weiter Step 4 F gen sie die Verilog Dateien hinzu von denen ein IP Core erstellt werden soll und klicken Sie auf Weiter Step 5 Markieren Sie das Feld DCR Slave und klicken Sie auf Weiter Step 6 Klicken Sie auf Weiter Step 7 Klicken Sie auf Weiter Step 8 W hlen sie den Punkt No Interrupt und klicken Sie auf Weiter Step 9 Klicken Sie auf Weiter Step 10 Klicken Sie auf Weiter Klicken Sie auf Fertig stellen XPS Instanz vom IP Core ohne DCR Anschluss hinzuf gen Klicken Sie im Projektfenster mit der rechten Maustaste auf den obersten Eintrag System BSP und w hlen Sie Add Edit Cores W hlen Sie ihren IP Core aus und klicken Sie auf lt lt Add Best tigen Sie mit OK XPS Instanz vom IP Core mit DCR Lesezugriff hinzuf gen Klicken Sie im Projektfenster mit der rechten Maustaste auf den obersten Eintrag System BSP und w hlen Sie Add Edit Cores E 3 Zusammenfassung von Lab 3 E 13 W hlen Sie ihren IP Core aus und klicken Sie auf lt lt Add Wechseln Sie vom Tab Peripherals in den Tab Bus Connections Klicken Sie in der Spalte dcr_v29_0 in die Zeile name_des_IP_cores sdcr um dort ein S einzutragen Wechseln Sie in den Tab Addresses Tragen Sie in der Zeile name_des_IP_cores f r Base Address 0b0000000000 ein Stellen Sie unter Size den Wert 4 ein Best tigen Sie mit OK XPS Instanz vom IP Core mit DCR Lese und Schreibzugriff hinzuf gen Klicken Sie im Projektfenster mit der recht
109. Y_3 divide_by_3 uut CLK CLK RESET RESET DIVABLE_BY_3 DIVABLE_BY_3 initial begin CLK 0 B 24 B Lab 1 VERILOG und seine Tools RESET 2 RE 2 RE w hlen Sie 20 LE 22 25 display DIVABLE_BY_3 b DIVABLE_BY_3 stop end 0 ET 1 0 nw Il F i eine dieser Wartezeiten aus always 1 CLK CLK endmodule Beispiel B 30 Testrahmen des Moduls divide_by_3 B 12 Kontrollflussgraph In dieser Aufgabe sollen Sie den Kontrollflussgraphen aus Bild B 31 realisieren N N ISTART 4 Y s2 1 lt 8 Y SUM SUM S3 ABS A I B l l4 1 Y S4 SAD_OUT SUM Bild B 31 Kontrollflussgraph Im Kernzustand S3 summiert der Graph die Summe absoluter Differenzen SAD aus zwei Arrays A und B jeweils 8 elementig jeweils 8 Bit pro Element auf Hierbei sollen die beiden Arrays jeweils aus einem Text File eingelesen werden B 12 Kontrollflussgraph B 25 MemA txt 00 FF Al 04 B3 58 07 CA MemB txt 00 FE Al 02 B3 12 07 CA Vorgehensweise e Berechnen Sie das Ergebnis zuerst manuell e Die Funktion ABS in S3 soll als Verilog Funktion ausgelagert werden e Ein Reset soll alle relevanten Variablen wieder auf Null zur cksetzen und den Startzustand ansteuern e Schreiben Sie einen Testrahmen mit der Taktperiode 20 ns e Lassen Sie sich abschlie en
110. ahe selbstverst ndlich gelten Herzschrittmacher deren Chips das Leben verl ngern Eine elektronische Netzhaut f r Blinde wird zwar erforscht ist aber noch nicht Realit t In die Kleidung integrierte biegsame Chips Wearable Computing berwachen K rperfunktionen des fortschrittsbewussten Tr gers ersetzen beim Einsteigen in seinen Pkw den Z ndschl ssel oder beim Betreten eines Ladens die Kreditkarte Ob jedoch eine Verpflanzung der gleichen Chip Funktionen unter die Haut einen Markt erwarten l sst soll nicht diskutiert werden einige Discos treten hier als Vorreiter auf 1 1 berall Chips Chips auch h chstintegrierte Schaltungen genannt oder wissenschaftlich VLSI Chips Very Large Scale Integration oder zukunftsweisend Schl ssel zum Informationszeitalter oder romantisch Herzen der Technik haben in wenigen Jahrzehnten die Welt ver ndert Im Jahr 2004 wurden am Weltmarkt Chips im Wert von 213 Milliarden US Dollar umgesetzt davon gesch tzt 9 Milliarden Euro in Deutschland Den gr ten Anteil am Chip Weltmarkt hat die Informations und Kommuni kationstechnik IuK Neben der klassischen Informationsverarbeitung vom PC der jedoch viel mehr kann als rechnen ber adaptive Rechner bis hin zum number crunchenden Supercomputer spielt die Kommunikation eine immer gr ere Rolle 1 2 1 Einleitung mit der steigenden Qualit t des Internets wachsen Telefon Email Mobilfunk Radio TV u
111. an mit einer einfachen Schaltung aus Immer h ufiger aber paaren sich die Intelligenz von Software mit der Effizienz von Hardware In diesem Hardware Software Codesign werden die Software auf einem Standardrechner und die ma geschneiderte Hardware auf einem FPGA gleichzeitig entworfen Es gilt eine schwierige Entscheidung zu f llen die Aufteilung oder Partitionierung der Aufgaben zwischen Soft und Hardware und schlie lich muss eine geeignete Kommunikation ber passende Schnittstellen zwischen beiden entwickelt werden Die Entscheidungen werden durch eine Vielzahl von Aspekten beeinflusst neben der Aufgabe selbst spielt die n tige Effizienz eine Rolle Energieverbrauch Speicherbedarf Geschwindigkeit Realzeit Anforderungen Baugr e Entwicklungs und Fertigungskosten es geht um Zuverl ssigkeit Ausfallsicherheit Wartbarkeit Unsch dlichkeit und Datensicherheit und schlie lich ist die Kommunikation mit der Umgebung Benutzer Sensoren Aktoren zu ber cksichtigen Anwendungsbeispiele finden sich in Vermittlungssystemen und Endger ten der Telekommunikation vor allem auch der Mobilkommunikation in der Unterhaltungs elektronik in den Bereichen Messen Pr fen und Regeln im Kraftfahrzeug in der Automatisierung oder bei verteilten Systemen 1 4 Hardware Software Codesign eingebettete Systeme und Systems on Chip 1 21 W hrend man fr her Standardrechner und Spezial Hardware einzeln auf einem Board zusammengefasst hat geht der
112. ang geschieht ohne weiteres Zutun des Prozessors der nebenbei andere Dinge erledigen kann Da die Hardware hier als Initiator oder Master der Kommunikation auftritt nennen wir diese Kommunikations variante Master Mode Schlie lich wollen wir noch eine gebr uchliche Variante des Master Mode zumindest erw hnen den so genannten Direct Memory Access oder DMA Ein spezielles Hardware Modul der DMA Controller steuert hier die Kommunikation 7 30 7 Hardware Software Codesign zwischen Hardware Komponente z B JPEG Encoder und Hauptspeicher Dieses Verfahren bietet sich f r Architekturen an bei denen keine On Chip Busse wie CoreConnect verwendet werden sondern lediglich einfache Speicherschnittstellen Bei System on Chips wird es eher selten eingesetzt 7 5 3 2 Interrupts W hrend wir im vorigen Abschnitt untersucht haben wie Daten zwischen Hardware und Software bertragen werden k nnen haben wir noch nicht gekl rt wie wir die Software auf interessante Ereignisse aufmerksam machen k nnen etwa die Bet tigung des Ausl sers an unserer Digitalkamera Hardware Module auf dem FPGA k nnen dazu einen Interrupt ausl sen Dieser wird an einem speziellen Interrupt Eingang des Prozessors signalisiert und sorgt f r eine sofortige Unterbrechung der laufenden Programmbearbeitung Der Prozessor speichert den aktuellen Zustand seiner Pipeline f r die sp tere Fortsetzung der Programmbearbeitung in so genannten Schattenregistern und f hrt ansch
113. are e Laden Sie mit dow executable elf die Software auf das Board e berpr fen Sie mit dem Befehl srra ob sich der Programmzihler Register pc an der richtigen Stelle ff f f f f fc befindet Ist dies nicht der Fall m ssen Sie den Reset Befehl erneut durchf hren und die Software wieder hochladen e Mit dem Befehl con Oxfffffffc starten sie die das Programm E 3 Zusammenfassung von Lab 3 E 9 Abschlie end wird die CPU mit dem Befehl stop angehalten und mit exit die Konsole verlassen XMD Debug Options ppc405_0 i oO f stub virtual platform PowerPG Hardware MicroBlaze Stub AMID Memory map for PPG40S features I Serial ITAG Unlsed Memory Adarr Serial Port IGache Addr Baud Rates 11397 NS PowerPG Simulator DGache Addr Configuration Filey TLE Addr I5OGM Addr d eee No Device Name 1Dcode IR Length acid ap Bw Bild E 6 XMD Optionen XPS Die Benutzeroberfl che Projektfenster Hier haben sie Zugriff auf die Hardware Komponenten ihres Systems k nnen Module miteinander verdrahten und Projektoptionen einstellen Bild E 7 Quelltext Editor Hier k nnen sie projektspezifische Dateien betrachten und verwalten Ausgabe Konsole Die Konsole gibt Statusmeldungen Fehler und Warnungen z B bei der Synthese aus E 10 E Zusammenfassung der bungen e Zwei wichtige Funktionen sind in der Grafik extra hervorgehoben Mit dem oberen Button kann der Bi
114. ator starten mit explizitem Testrahmen e Selektieren Sie den Testrahmen im Quellenfenster e Doppelklicken Sie im Prozessfenster Simulate Behavioral Model Benutzeroberfl che von ModelSim eModelsim XE III Starter 6 0a Custom Xilinx ersion o ol x Eile Edit view Format Compile Simulate Add Tools Window Help RMT Raak e 4 a 10ps3 ELEY EL MTP Workspace HA Objects A x Instance Name ig Ba wave default ER gbl I INITIALH38 HD ASSIGNH4O HD ASSIGNHAT HD ASSIGNH42 HD HINITIALH44 LC INITIAL 52 Cursor 1 T o ps to 1 ns Now Ops Delta 0 ee Model Technology ModelSim XE III vlog 6 0a Compiler 2004 11 Nov 10 2004 Compiling module glbl Top level modules glbl vsim L xilinxcorelib_ver L unisims_ver t 1ps hello_world glbl Loading work hello_world Loading work glbl Waring vsim 3010 TSCALE Module glbl has a timescale directive in effect but previous modules do not Region glbl main_pane mdi interior cs vm paneset cli_O wf clip cs Error vish 4014 No objects found matching Error in macro hello_world Ido line 10 vish 4014 No objects found matching while executing add wave SIM 2 gt Now 0 ps Delta 0 u sim hello_world l Bild E 3 Benutzeroberfl che des Simulators ModelSim e Workspace Fenster links oben
115. bertragungskanal DATA verbunden Der Sender ber mittelt Zeichen zu je 8 Bit seriell an den Empf nger also jedes Bit einzeln Au erdem werden direkt vor einem Zeichen noch ein Start Bit DATA 0 und direkt nach einem Zeichen ein Stop Bit DATA 1 bertragen Die Zeit zwischen dem Ende einer bertragung und dem Beginn einer neuen bertragung also zwischen Stop Bit des einen Zeichens und Start Bit des n chsten Zeichens ist variabel weswegen wir von einer asynchronen bertragung sprechen In dieser Zeit h lt der Sender die bertragungsleitung DATA konstant auf 1 Sender und Empf nger arbeiten mit unterschiedlichen Taktraten Der Sender legt zu Beginn jeder positiven Flanke von Tx_CLK ein Bit Start Daten oder Stop Bit an DATA an Der Takt Rx_CLK des Empf ngers l uft in unserm Fall acht mal so schnell wie Tx_CLK weswegen jedes gesendete Bit acht mal empfangen wird 1 Takt 8 Takte 1 Takt Tx_CLK ip 5 l O l 2 DATA Start Bit Stop Bit D 8 Takte 64 Takte 8 Takte 5 Rx CLK MMN PERSEN m 2 x l T DATA Start Bits Stop Bits Bild B 28 Signalverlauf der Daten bertragung Bild B 28 zeigt eine korrekte Daten bertragung Der Sender bertr gt zun chst das Start Bit also eine 0 Danach werden die 8 Daten Bits bertragen und schlie lich folgt noch eine 1 als Stop Bit B 22 B Lab 1 VERILOG und seine Tools Der Empf nger erke
116. brary E Mi std Library IM simprims unavailable Library Library E Library E gt Bild B 11 aE Aktualisierung der Module in der Simulationsbibliothek Durch einen Rechtsklick auf fortime und die Aktion Recompile werden die nderungen die Sie in ISE vorgenommen haben von ModelSim bernommen F hren Sie nun noch einen Simulations Restart durch indem Sie in der Konsole den Befehl restart eingeben und den sich ffnenden Dialog mit Restart best tigen Starten Sie nun die Simulation mit run Sie werden bei dieser Variante allerdings feststellen dass Sie als Simulations ausgabe nur eine leere Zeile erhalten Der Grund liegt in der zu kurz eingestellten zu simulierenden Zeit Links oben unter der ModelSim Men leiste sehen sie ein Textfeld in dem 100 ps steht so dass die Simulation nur f r den Zeitraum t 0 bis t 100 ps Picosekunden durchgef hrt wird ndern Sie diesen Wert auf 100 ns Nano sekunden f hren Sie wieder einen restart durch und starten Sie erneut mit run Nun sehen Sie dass die simulierte Zeit bei jeder Ausgabe um INDEX erh ht wird Beachten Sie dass der Simulator eine Umrechnung von logischer Zeit 1 in reale Zeit 1 ns vornimmt Der Schl ssel hierzu ist die Anweisung timescale ins 1ps die ISE beim Erzeugen Ihrer VERILOG Moduldatei automatisch eingef gt hat Der erste Wert bezieht sich auf die Zeiteinheit d h 1 entspricht 1 ns Der zweite Wert gibt die interne Aufl
117. bzw der Simulator zuerst zur Ausf hrung bringt Wird ohne 1 der zweite Block zuerst bearbeitet ist die Ausgabe Start bei 0 andernfalls Start bei 0 EVENT bei 0 Ein wait wartet bis der nachfolgende Ausdruck wahr ist Ist dieser beim Erreichen des wait bereits erf llt wird ohne Unterbrechung fortgesetzt Im Beispiel 3 12 gibt der erste always Block den aktuellen Simulations zeitpunkt aus falls ENABLE den Wert 1 hat Dabei ist 1 unbedingt notwendig da die Schleife sonst endlos w rde das erste always w rde die Kontrolle nicht mehr an die anderen initial und always Bl cke abgeben Der zweite always Block gibt jedes Mal ENABLE bei dessen nderung aus Der initial Block erzeugt das Freigabesignal module wait_test reg ENABLE always begin wait ENABLE S Sdisplay Zeit 2 0 Stime 1 wv 3 12 3 Die wichtigsten Befehle von VERILOG always ENABLE display ENABLE d ENABLE initial begin ENABLE 1 5 ENABLE 0 5 ENABLE 1 5 finish end endmodule ee Beispiel 3 12 Warten mit wait 3 3 Klassische Programmsteuerung V9 task endtask module task_example reg 7 0 RESULT task add input reg 7 0 A endtask task display_result Sdisplay Die Summe ist d RESULT endtask initial begin add 1 2 display_result end endmodule Beispi
118. cer Consumer module m 700 parameter Start 0 77 03 Di 02 input wire CLOCK lokaler Takt 03 inout wire 7 0 DATA bidirektionaler Daten Port 04 05 06 reg 7 0 BUFFER Ausgangstreiber 7407 reg 7 0 COUNTER Zaehler 08 assign DATA BUFFER staendige Zuweisung er 10 initial 2431 COUNTER Start von aussen initialisierter Zaehler vie 13 always posedge CLOCK begin 14 BUFFER COUNTER PRODUCER schreiben 415 COUNTER COUNTER 1 16 end RR 18 always negedge CLOCK ff19 BUFFER 8 bz PRODUCER Treiber hochohmig ee 21 always CLOCK DATA 7422 if Start 0 23 display 3 0f Sd Sd time CLOCK DATA ped else P29 display 3 0f Sd sa 2726 4 10 4 Modellierungskonzepte in VERILOG Stime CLOCK DATA CONSUMER lesen und display JJI endmodule m 28 2423 30 4 31 module mainmodule 2432 wire 7 0 GLOBAL_DATA Datenleitung zwischen Instanzen SABE reg GLOBAL_CLOCK globaler Takt fae 29 defparam M1 Start 0 Instanzen Zaehler individuell 2438 defparam M2 Start 100 Z initialisieren oe 38 m M1 GLOBAL_CLOCK GLOBAL_DATA Instanz M1 39 m M2 GLOBAL_CLOCK GLOBAL_DATA Instanz M2 mit invertiertem Takt cay 41 initial begin globaler Takt 42 display Zeit M1 CLOCK M2 CLOCK M1 DATA M2 DATA n Leo 10 44
119. ch gew nscht ist vermeidet unn tige Verschmutzung der Busse Foto Sensor PLB Holen des aktuellen Bildinhalts ber den PLB JPEG Codec PLB Hardware beschleunigte Kompression und Dekompression von JPEG Bildern arbeitet auf BRAM und Hauptspeicher Bedienfeld OPB Abfrage von Benutzereingaben und Steuerung von Anzeigen Leuchtdioden Einblendungen in Sucher CompactFlash OPB Lesen und Schreiben von Daten auf eine CompactFlash Karte Controller USB Adapter OPB Steuert die Daten bertragung ber einen USB Port Live Streaming zu einem angeschlossenen PC sowie Auslesen der Fotos von der CompactFlash Karte Display Controller OPB Bietet einen per OPB beschreibbaren Speicherbereich dessen Inhalt auf einem LC Display dargestellt wird Tabelle 7 11 Komponenten des Digitalkamera Systems 7 5 HW SW Codesign in der Praxis die universelle Entwicklungsplattform ML310 In der Theorie macht das Hardware Software Codesign einen schl ssigen Eindruck aber wie sieht es in der Praxis aus Die Vorstellungen von zeit und geldsorgenfreien Akademikern und stressgeplagten Systemingenieuren driften hier schnell auseinander Ist der Zeitdruck Time to Market zu hoch werden kritische Entwurfs entscheidungen dann doch eher aus dem Bauch nach der jeweiligen Erfahrung des Entwurfs Teams entschieden und nicht auf Basis einer aufw ndigen Entwurfsraum Analyse aus dem Lehrbuch Das Ergebnis is
120. ch um ein Schieberegister von parametrisierter L nge mit einem seriellen Eingang und einem parallelen Ausgang Schieberegister sind Grundbausteine die z B in den Bereichen Fehlerkorrektur und Netzwerkanbindung eine wichtige Rolle spielen F gen Sie den Testrahmen aus Beispiel B 22 hinzu und simulieren Sie Was passiert wenn Sie im Testrahmen bei der Instanzierung auf die bergabe des Parameters TSIZE verzichten timescale ins 1ps module test_shiftreg parameter TSIZE 8 Testlaenge Inputs reg DIN reg CLOCK Outputs wire 7 0 DATA Instantiate the Unit Under Test UUT shiftreg TSIZE uut DATA DATA DIN DIN CLOCK CLOCK always begin CLOCK 0 10 CLOCK 1 10 gt 1 Takt 20 end initial begin display TIME CLOCK DIN DATA B 16 B Lab 1 VERILOG und seine Tools display monitor 4d 5b 3b 8b time CLOCK DIN DATA Initialize Inputs DIN 0 Wait 100 ns for global reset to finish 100 Add stimulus here DIN 0 20 1 Takt warten DIN 1 20 DIN 1 20 DIN 0 20 DIN 1 20 DIN 1 20 DIN 1 20 DIN 0 20 stop end endmodule Beispiel B 22 Testrahmen f r das Schieberegister Neben der textuellen Ausgabe zeigt ModelSim ausgew hlte Signale auch grafisch als Waveform an Bild B 23 MI wave default EWE 4 test_shiftreg DIN 0 4 Aest shi
121. chematic OO View Technology Schematic Check Syntax aD Generate Post Synthesis Simulation Model Implement Design Generate Programming File Su Analyze Design Using Chipscope Bild C 4 Synthese relevante Be Process View ISE Prozesse Um die Logiksynthese durchzufiihren klicken Sie lediglich den Prozess Synthesize XST doppelt an Nach kurzer Wartezeit sollten drei gr ne H kchen im Prozessfenster erscheinen die die Fertigstellung der Synthese und ihres Berichts signalisieren Bild C 5 Falls Fehler auftreten rote H kchen k nnen die Fehler meldungen im ISE Konsolenfenster betrachtet und n tigenfalls der HiWi hinzu gezogen werden Processes for Source gg Add Existing Source Create New Source View Design Summary R Design Utilities User Constraints Synthesize XST View Synthesis Report OO View RTL Schematic OO View Technology Schematic Qa Check Syntax Hl Generate Post Synthesis Simulation Model J Implement Design G Generate Programming File Zu Analyze Design Using Chipscope EEE OVS mM OO Bild C 5 Die Synthese war erfolgreich Al E Process View C 1 Synthese eines Addierers C 5 C 1 3 Syntheseergebnis untersuchen Wirklich spannend wird die Logiksynthese nat rlich erst wenn wir auch das Ergebnis betrachten Auch hierzu gibt es einen entsprechenden Punkt in der Prozessliste n mlich View RTL Schematic Nach Doppelklick auf diesen Prozess erscheint ein Ansichtsfenster in dem Sie
122. chrieben Bild 1 16 im Hardware Software Codesign auch ganze Einheiten wie ein JPEG Encoder Kartenschreiber und hnliches Bild 1 17 Die meisten Details bleiben auf der Systemebene verborgen bzw sind ja zu Beginn des Entwurfs noch gar nicht bekannt Ausgew hlte Eigenschaften werden recht grob modelliert Struktur Kommunikation Zeit Daten oder Algorithmen F r System modelle gibt es besonders geeignete System Beschreibungssprachen wie die objekt orientierte C Erweiterung SystemC die wir in sp teren Vorlesungen einsetzen werden 1 3 Der Hardware Entwurf 1 13 Mikro Controller Speicher Datenpfad Systembus Speicherbus a b Re gister feld rechter Bild 1 16 Port Systemebene a Grobstruktur eines Systems b Grobstruktur des Datenpfades aus a ae e i JPEG ME N Encoder Bildsensor CompactFlash Kartenschreiber Bild 1 17 Einfaches System Modell einer Digitalkamera Register Transfer Ebene RTL Ebene Auf dieser Ebene findet der klassische Hardware Entwurf statt Wie der Name bereits andeutet und Bild 1 18 skizziert werden Register Ry betrachtet zwischen denen eine Datenverarbeitung durch kombinatorische Netze f erfolgt Die Register werden durch einen Takt CLOCK synchron ausgelesen so dass die Information wie in einer Pipeline schrittweise und parallel weiterverarbeitet wird Bekanntlich arbeiten 1 14 1 Einleitung Pipelines parallel ind
123. cke interpretiert wird In Lab 3 werden von dem Modul zwei Instanzen erzeugt die sich dann getrennt um die Verarbeitung der Signale von Spieler 1 und Spieler 2 k mmern Sehen Sie sich das Framework debouncer v in Beispiel B 26 an Es gibt die Struktur des Moduls bereits vor Gehen Sie beim Vervollst ndigen des Frameworks wie folgt vor Schnittstellen e Als Input bekommt das Modul die Rohdaten der Taster PLAYER_IN_RAW e Das Taktsignal ist nat rlich ebenfalls ein Input Ebenso ist das low aktive Reset Signal ein Input e Als Output soll das Modul das entprellte Signal PLAYER_IN liefern Modulinterne Variablen e Eine boolesche Variable soll Auskunft dar ber geben ob der Spieler schon im vorigen Takt den Taster bet tigt hat PLAYER_IN_REG o Ein 32 Bit Register soll z hlen wie viele Zyklen seit dem letzten korrekten Klick vergangen sind LAST_CLICK Always Block e Beginnen Sie mit dem Reset Fall Welche Register m ssen zur ckgesetzt werden Unser lokales Reset Signal wird in der sp teren Aufgabe an ein globales Reset angeschlossen das low aktiv ist Deswegen sehen wir hier f r unser lokales Reset ebenfalls Low Aktivit t vor d h ein Reset erfolgt bei einem Wechsel von 1 auf 0 B 20 B Lab 1 VERILOG und seine Tools e Die if Abfrage f r den Player Hier soll das Input Signal entprellt und so ein korrektes Output Signal zur ckgegeben werden berlegen Sie sich dazu die korrekten Bedingungen Welchen R
124. ctel genannt Wie in Bild 6 5 besteht sie aus drei Layern unten n Diffusion dazwischen ein Isolator und oben Polysilizium Programmiert wird die Antifuse durch eine recht hohe Spannung von 18 Volt wodurch 6 8 6 Programmierbare Logikbausteine im Isolator bei einem Strom von etwa 5 mA genug Hitze entsteht um ihn schmelzen zu lassen Dadurch entsteht eine leitende Verbindung zwischen Poly und Diffusion von etwa 300 bis 500 Q Bild 6 6 Spezielle Hochvolt Transistoren stellen die gro en Spannungen und Str me zur Verf gung Bild 6 6 Leitende Antifuse Die Chip Fl che einer Antifuse ist klein im Vergleich zu anderen Programmier techniken jedoch wird viel Fl che f r die Hochvolt Transistoren ben tigt Zwar sind Antifuses nicht fl chtig aber leider eben auch nicht reprogrammierbar was manchmal wiederum einen Vorteil darstellt Nur am Rande erw hnen wir hier die jetzt nicht mehr so h ufig eingesetzte Programmierung durch die bekannten EPROM Speicher Sie k nnen durch gr ere Str me programmiert und durch ultraviolettes Licht wieder gel scht werden Sie k nnen daher nicht durch die Schaltung selbst reprogrammiert werden Dies ist dagegen bei EEPROMs begrenzt m glich die allerdings etwa die doppelte Chip Fl che ben tigen sowie verschiedene Spannungsquellen Tabelle 6 7 fasst Eigenschaften der verschiedenen Technologien zusammen repro in Schaltung Technik grammierbar reprogramm fl chtig Fl che SRAM gro Antif
125. d der dritte auf SIGNAL1 oder SIGNAL2 Bereits zum Zeitpunkt 0 liegt eine negative Flanke f r CLOCK vor die sich von x auf O ndert Zur Zeit 20 ndert sich SIGNAL2 die Bedingung SIGNALI1 SIGNAL2 ist daher erf llt Liegt ein Block der Form Sdisplay Start des Blockes RESULT IN1 IN2 EVENT Sdisplay Ende des Blockes vor so wird beim Erreichen der Ereignis Kontrolle EVENT die Ausf hrung gestoppt Es wird ein Test von EVENT am Ende des aktuellen Simulationszeitpunktes t vorgemerkt Danach werden andere parallele Ereignisse bei t4 bearbeitet Bei der berpr fung von EVENT am Ende von t4 gibt es zwei M glich keiten entweder ist EVENT jetzt schon eingetreten dann wird noch bei t hinter 3 10 3 Die wichtigsten Befehle von VERILOG EVENT weitergemacht oder es wird f r das n chste t2 gt t4 eine erneute berpr fung von EVENT vorgesehen Dieses Verhalten wird durch Beispiel 3 10 verdeutlicht module aett reg CLOCK SIGNALI SIGNAL2 always posedge CLOCK Sdisplay Zeit 2 0f positive Flanke time always negedge CLOCK Sdisplay Zeit 2 0f negative Flanke time always SIGNAL1 SIGNAL2 oder SIGNAL1 or SIGNAL2 Sdisplay Zeit 2 0f SIGNAL1 oder SIGNAL2 time initial begin CLOCK 0 10 CLOCK 1 10 SIGNAL2 0 10 CLOCK 10 SIGNAL1 10 finish end endmodule negative Flanke positive Flanke SIG
126. d im Waveform Fenster die Integer Variable SUM anzeigen Erweiterung um ein einfaches ROM e Erweitern Sie nun Ihr Modul um einen einfachen lesbaren Speicher F gen Sie also ein drittes Modul SADMem hinzu das als Input die Adresse an der zu lesen ist bekommt und als Output das Datum das an dieser Stelle im Speicher Array liegt B 26 B Lab 1 VERILOG und seine Tools Lab 2 Logiksynthese mit VERILOG In diesem zweiten Lab vollziehen Sie den bergang vom VERILOG Modell zum Gattermodell Dabei wird das VERILOG Modell durch einen Synthese Compiler automatisch in eine Liste aus Logikgattern AND OR usw und Registern FlipFlop Latch bersetzt die miteinander so verdrahtet sind dass sie die in VERILOG beschriebenen Berechnungen durchf hren Dies ist bekanntlich die Logiksynthese Kapitel 5 Ein erstes Teilergebnis ist eine so genannte Zwischendarstellung die Sie grafisch betrachten und im n chsten Lab auf eine Zieltechnologie abbilden k nnen etwa ein FPGA Virtex II Pro auf dem ML310 Kapitel 6 7 Bereits an der Zwischen darstellung k nnen Sie absch tzen mit welcher Taktfrequenz die sp tere Hardware voraussichtlich betrieben werden kann C 1 Synthese eines Addierers Zun chst legen Sie wie zuvor ein ISE Projekt an und f gen ein VERILOG Modul hinzu Anschlie end begn gen Sie sich nun aber nicht mit der Simulation allein sondern f hren eine Logiksynthese durch und untersuchen das Ergebnis C 1 1 ISE Projekt VERILOG
127. d veahan aad Bitstrom f r HW Program Bild D 1 Hardware Entwicklung unter XPS Au erdem setzen Sie einen Logikanalysator ein der hnlich wie ein Videorekorder Signalverl ufe zu Testzwecken eine Zeit lang aufzeichnen kann Dabei fasziniert dass ein solcher Logikanalysator nicht als separates Messger t in einem eigenen Geh use an irgendwelche Testausg nge der Zielplattform angeschlossen wird sondern dass Sie diesen integrierten Logikanalysator ILA als bereits fertige Bibliotheksschaltung mit Ihrer eigenen Schaltung zu einer Gesamtschaltung verbinden die sp ter dann als Ganzes in das FPGA hineingeladen wird Im Einzelnen finden Sie auf der bungs Webseite die VERILOG Quellen eines Addierers und ein vorbereitetes Xilinx Platform Studio Projekt Sie f gen den Addierer und den Logikanalysator in das XPS Projekt ein und nehmen die n tigen Verdrahtungen vor Vollautomatisch wird Ihr Modell synthetisiert platziert und verdrahtet sowie in einen Bitstrom f r die Programmierung bzw Konfiguration des FPGAs umgewandelt Erst in Abschnitt D 1 5 wird dieser Bitstrom dann tats chlich in die Zielplattform geladen und in D 1 6 dort getestet D 1 Hardware bauen und testen D 3 D 1 1 VERILOG Modell eines Addierers Wir wollen zun chst den Quellcode des Addierers betrachten Entpacken Sie das Archiv d 1_bitstrom_und_on_chip verification zip und ffnen Sie die Datei verilog adder v Beispiel D 2 in einem Texteditor module ad
128. dagegen in Richtung einer sp teren Hardware Realisierung bewegen werden wir statt einer Black Box ein Strukturmodell formulieren bei dem das Ganze in Teile zerlegt ist die miteinander verdrahtet sind F r die Teile werden wiederum nur Verhaltensbeschreibungen angegeben bis auch sie m glicherweise durch noch feinere Unterstrukturen ersetzt werden F r die Teile eines Strukturmodells eignen sich in VERILOG Untermodule besonders gut der Verdrahtung der Teile entspricht die Angabe von Wires oder Registern die gemeinsam in den Parameter Schnittstellen mehrerer Untermodule vorkommen F r das Beispiel eines 4 Bit Addierers der in kleine 1 Bit Addierer zerlegt wird zeigt Bild 2 10 zun chst das Verdrahtungsprinzip w hrend Beispiel 2 11 die tats ch liche VERILOG Modellierung durchf hrt SUM CARRY_OUT a SUMIA A sum Bit3 h SUMIB BB a CARRY_IN aa cee ae a 4 Bit Addierer Bild 2 10 Struktur eines 4 Bit Addierers Beispiel 2 11 instanziert die Untermodule BitO bis Bit3 Es entsteht eine hierarchische Struktur von Modulen Es gibt zwei Modultypen one_bit_adder und four_bit_adder Die Signale CARRY_OUT und SUM werden mit und zu einer neuen 2 Bit breiten Variablen zusammengeklammert Dieser Konkatenation wird in einem always Block die Summe von A B und CARRY_IN zugewiesen sobald sich eine der drei Variablen ndert Der four_bit_adder implementiert die Addition zweier 4 Bit breiter Variablen durch vierfach
129. daher m ssen die zugeh rigen FPGAs bei jedem Einschalten neu konfiguriert werden und einen geeigneten dauerhaften Speicher etwa einen Flash Speicher besitzen RAM Zelle Ze oe a Pass Transistor b Multiplexer Verbindungsabschnitt des Interconnect Bild 6 3 Einsatz von statischen RAMs Im Vergleich zu anderen Programmiertechniken ist der Fl chenbedarf von SRAMs relativ gro Der Hauptvorteil liegt in der h ufigen Reprogrammierbarkeit im eingebauten Zustand Bild 6 4 zeigt als Beispiel eine Verbindung zweier Gatter in verschiedenen Logikbl cken i SRAM steht f r Static RAM Ein st ndig flie ender Strom erh lt beim SRAM die gespeicherten Informationen so dass man auf einen Refresh verzichten kann und SRAM daher wesentlich schneller ist als DRAM Der Nachteil ist eine gr ere Stromaufnahme und damit st rkere Erw rmung Dagegen ist der DRAM Dynamic Random Access Memory der am h ufigsten verwendete Arbeitsspeicher Er kann Daten nur f r eine kurze Zeit halten und muss sie regelm ig auffrischen 6 2 Programmiertechniken 6 7 Bild 6 4 SRAM basierte Verbindungen 6 2 2 Weitere Programmierelemente Eine Antifuse hat zun chst einen hohen Widerstand und wird durch eine hohe Spannung unwiderruflich in den leitenden Zustand versetzt Oxid Poly 5 Isolator N Antifuse n Diffusion Substrat uw tan Bild 6 5 PLICE als Beispiel einer Antifuse Als Beispiel sei die Antifuse PLICE von A
130. daptiver Staubsauger Staub Weg Laser Haust rklingel Radiowecker Pantoffelkino Toaster N hmaschine Kaffeemaschine Sp lmaschine K hlschrank Waschmaschine Alarmanlage Jalousien Heizungssteuerung Biometri sches T rschloss Garagentor Backofen mit Kochbuch Schl ssel Transponder Solar kollektor Gew chshaussteuerung Aquarium Medizin Blutbahn U Boot K nstliches Ohr K nstliches Auge Bionischer Arm Neuroprothese Herzschrittmacher Chip Implantat Atemassistent Lab on a Chip DNA Chip Biochip ID Chip Gensequenzer OP Roboter Teleoperation Kernspintomograph EKG EEG Auto Keyless Go Abstandsradar Sekun denschlaf Detektor Vibrationslenkrad Wegfahrsperre Tempomat Airbag ABS ESP ABC Chip Tuning Radarfalle Sprach Navi Automatische T rverriegelung Verkehrs leitsystem Musik Unterhaltung Disco Eintrittschip Mixer Keyboard E Piano E Gitarre Effektger t Heimkino Displays E Zeitung Leuchtteppich Head Up Display Reisen E Flugticket Fahrkartenautomat RFID Gep ckbanderole Reisepass Zoll Durchleuchter Live Fahrplan Eintrittskarten Autopilot Justiz berwachung Fu fessel L gendetektor GPS Wanze Telefon berwachung Uberwachungskamera Gesichts Identifikation Toll Collect Nummernschildverfolgung Email Uberwachung WM Tickets Milit r Marschflugk rper Nachtsichtger t Einkauf Diebstahlschutz Etikett Pfandr ck gabeautomat Paketausgabe Unfall Katastrophenschutz Br cken Stah
131. darin bestehen die Flexibilit t erfordernden Anteile in Software zu realisieren die rechenintensiven dagegen in spezifischer Hardware 7 4 7 Hardware Software Codesign 7 1 3 Hardware Software Systeme Die oben diskutierten Software und Hardware Anteile k nnen entweder auf einem Board zusammengefasst werden oder sogar auf einem einzigen Chip Hardware Software Codesign kann dar ber hinaus auch verteilte Systeme aus vernetzten Einzelsystemen umfassen Bei Board Systemen werden die Software und Hardware Bausteine auf einer Platine montiert was bei kleinen St ckzahlen preiswerter und schneller zu realisieren ist Auch sind solche Systeme leichter nderbar und skalierbar durch die Erweiterung um zus tzliche Aufsatzplatinen Allerdings ist die Kommunikation auf dem Board komplex und ineffizient Entwurfs effizienz JPEG Encoder IP Bl cke Control Memory ur Gatter Transistoren 1970 1980 1990 2000 2010 Bild 7 2 Entwurfsgrundlagen Ein System on Chip SoC hat gro e Vorteile die sich allerdings erst in der Massenproduktion rentieren geringes Gewicht geringe Leistungsaufnahme die besonders bei Mobilsystemen wichtig ist hohe Verl sslichkeit und die Integrierbarkeit analoger und peripherer Bausteine z B Leistungstreiber Sensoren SoC L sungen haben einen noch viel gr eren Entwurfsraum als klassische Rechner Um diese gewaltige Vielfalt besser beherrschen zu k nnen
132. das gemeinsam genutzte Medium Ein streng einzuhaltendes Bus Zugriffsprotokoll regelt den Kommunikationsablauf und ein ebenfalls an den Bus angeschlossener Arbiter gew hrleistet den kollisionsfreien Zugriff Je nach Bus k nnen hierbei verschiedene Dienste wie priorit ten basiertes Scheduling und Burst Transfers f r die unterbrechungsfreie bertragung gro er Datenmengen realisiert werden 6 20 6 Programmierbare Logikbausteine Ein gro er Vorteil von On Chip Bussen ist der geringe Verbrauch an FPGA Ressourcen durch gemeinsam genutzte Leitungen Dem gegen ber steht jedoch die zus tzliche Logik die bei jedem Bus Teilnehmer f r die Zugriffssteuerung ben tigt wird so dass bei nur zwei oder drei Kommunikationspartnern Punkt zu Punkt Verbindungen sinnvoller sind Neben CoreConnect gibt es noch weitere On Chip Busse wie AMBA von ARM oder WishBone von der Initiative opencores org Allen gemeinsam ist eine jeweils standardisierte Kommunikations Schnittstelle So k nnen wir jedes mit CoreConnect kompatible Hardware Modul sofort in unser Virtex II Pro Design integrieren ohne Kommunikationsprobleme bef rchten zu m ssen Ein weiterer Vorteil ist dass das zeitliche bertragungsverhalten von Bussen mit Systembeschreibungs Sprachen wie SystemC schon im High Level Modell exakt simuliert werden kann So k nnen wir den f r unser MPSoC Design am besten geeigneten Bus ausw hlen bevor wir mit der Entwicklung der Hardware Module und ihrer Kommunika
133. ddresses Ports Parameters Click on squares to make master slave or master slave M S MS connections Choose one or more buses use Shift or Ctrl Click Add Right click on any bus instance column header for a context menu ppe405_0 mder CI D fan ppc405_0 iplb ppc405_0 dsocm ppc405_0 isocm nem I ppc405_1 dplb ppc405_1 iplb ppc405_1 dsocm roots roon iocm_cntlr isocm docm_cntlr dsocm plb2opb sder oe plb2opb mopb ppc405_0 jtagppc RS232_Uart sopb ppc405_1 jtagppc LCD_OPTIONAL sopb mE mn ee I IT Choose the BRAM port to connect to the controller port Give a name to the connection BRAM Port Connector isocm_bram PORTA _ isocm_porta isocm_bram PORTB xl isocm_portb dsocm_bram PORTA xl dsocm_porta iocm_entlr der_wr iocm_entlr instrn_ docm_cntlr porta Other Transparent bus point to point connections Destination Connector jtagppc_O jtagppcO 9 _ jtagppc_0_0 jtagppe_O jtagppel 17 jtagppe_O_1 Abbrechen Ubemehmen Hilfe Bild D 30 DCR Bus hinzuf gen und Instanzen anschlie en Nachdem Sie die beiden Komponenten nun mit dem DCR Bus verbunden haben m ssen Sie noch Adressen vergeben Wechseln Sie in den Tab Addresses und geben Sie als Base Address f r aplusb_0 die Adresse 060000000000 ein Setzen Sie den zugeh rigen Parameter Size auf 4 und verlassen Sie den Dialog m
134. den ebenfalls ausgegeben Sollen diese unterdr ckt werden so enth lt die Formatierung zus tzlich eine 0 z B 0b statt Sb Die Swrite 3 7 Sonstige Befehle 3 33 Anweisung besitzt die gleiche Funktionalit t mit der Ausnahme dass anschlie end keine neue Zeile begonnen wird Das Beispiel 3 38 demonstriert einige Ausgaben Bei der Zuweisung STRING Testtext wird Testtext in 8 Bit gro e Zeichen zerlegt die der Reihe nach zugewiesen werden module display_write reg 71 0 STRING reg 7 0 VARIABLE initial begin STRING Testtext display Dies ist ein s STRING VARIABLE 100 write 100 als Dezimalzahl d als Hexadezimalzahl H n VARIABLE VARIABLE Sdisplay als Oktalzahl 0 als Binaerzahl b VARIABLE VA display als Binaerzahl ohne fuehrende Nullen 0b VARIABLE end endmodule Dies ist ein Testtext 100 als Dezimalzahl 100 als Hexadezimalzahl 64 als Oktalzahl 144 als Binaerzahl 01100100 als Binaerzahl ohne fuehrende Nullen 1100100 Beispiel 3 38 Ausgabe mit Sdisplay und write Die Swrite Anweisung ist quivalent zu einer display Anweisung wenn durch n am Ende der Zeichenkette eine neue Zeile begonnen wird V32 Sfinish finish beendet eine VERILOG Simulation Es kann an jeder Stelle im Programm stehen Es werden sofort alle noch aktiven Module sowie initial und always Bl cke abgebrochen Eine always Schleif
135. den ignoriert Datenfluss assign Schleifen for Tabelle 5 2 Wesentliche VERILOG Konstrukte der Logiksynthese Eine der wichtigsten Einschr nkungen der Logiksynthese besteht darin dass alle Zeitverz gerungen mit ignoriert werden Dies ist nicht etwa eine Schw che der Synthese denn wie sollte in Hardware ein 3 realisiert werden Dabei ist ja sicher nicht an einen expliziten Verz gerungsbaustein gedacht Andererseits ist diese Zeitverz gerung nicht ein berfl ssiges Element von VERILOG denn bei der Simulation von VERILOG Modellen ist die Verz gerung ja gerade ein wichtiger Ersatz f r die tats chliche Laufzeit von Hardware Vielmehr hat das synthetisierte Modell seine eigenen Zeitverz gerungen die letztlich aus der eingesetzten Technologie Bibliothek resultieren Eine wesentliche Konsequenz davon ist dass Pr und Post Synthese Simulationsergebnisse nicht bereinzustimmen brauchen Der Designer selbst muss hier f r eine geeignete Verifikation der beiden Simulationsmodelle sorgen und sollte m glichst einen 5 3 Synthese mit der HDL VERILOG 5 5 Entwurfsstil w hlen der solche Unterschiede reduziert Dies gelingt im Allgemeinen durch vern nftig getaktete Register Transfer Beschreibungen recht gut Dar ber hinaus wird der initial Block in der Logiksynthese nicht unterst tzt oder ignoriert Stattdessen muss ein geeigneter Reset Mechanismus zur Initialisierung der Signale im Schaltkreis benutzt werden Es wird empfohlen
136. der input wire 31 0 IN Summanden A Bits 15 0 B Bits 31 16 output wire 31 0 OUT Summe Aufschluesselung der Summanden in A wire A IN 15 0 B und B r wire IN 31 16 assign OUT 15 b0 A B A und B kombinatorisch addieren nichtbenoetigte Bits mit Nullen fuellen endmodule Beispiel D 2 VERILOG Code des Addierers Die beiden Summanden A und B werden dem Addierer durch das Signal IN bergeben OUT wird per st ndiger Zuweisung die 17 Bit Summe zugeordnet wobei die oberen nicht ben tigten 15 Bits zu 0 gesetzt werden Bild D 3 zeigt die Waveform einer Verhaltenssimulation des Addierers Die beiden hexadezimalen Summanden 0x6 und 0xA werden korrekt zu 0x10 summiert Fadder IN 00030006 DOOO000 Eu Vadder A 0006 t adder B 000a DO adde OUT 00000010 2 MMMA Bild D 3 Verhaltenssimulation des Addierers Die zweite VERILOG Datei aplusb_hw v bildet einen Wrapper um den Addierer der die in der ersten Version noch fest verdrahteten Summanden 0x6 und OxA liefert D 1 2 In XPS einen IP Core erzeugen und einbinden ffnen Sie das vorbereitete XPS Projekt durch Doppelklicken der Datei xps system xmp Sie sehen nun die XPS Oberfl che wie in Bild D 4 D 4 D Lab 3 Hardware Software Codesign auf dem ML310 af Xilinx Platform Studio Z Dokumente Bachelor Adder aktuell ourlab lab1 xps 1_edk_chipscope system xmp C EDK doc usenglish help platform_studio htmi ps2 lel
137. der Entwurfsebene sinnvoll gr ere Strukturen hierarchisch zu organisieren indem sie schrittweise in Unterstrukturen zerlegt werden Auf der funktionalen Ebene hnelt diese Zerlegung sehr der hierarchischen Gliederung eines Programms durch beispielsweise Klassen oder abstrakte Datentypen Auf der funktionalen Ebene interessiert jedoch nur das Verhalten also die Antworten einer Komponente am Ausgang auf nderungen am Eingang Hierarchische Unterstrukturen sind nur praktische Hilfsmittel und brauchen dabei nicht den tats chlichen Hardware Strukturen zu entsprechen Auf der Systemebene l sst sich der Flurplan in Bild 1 16a verfeinern indem beispielsweise der Datenpfad in Teilbild b in die Komponenten Register ALU und Shifter sowie Ports zerlegt wird Register Transfer Modelle lassen sich durch Untermodule hierarchisch gliedern mit der Absicht diese Gliederung in einer sp teren physikalischen Realisierung zu bernehmen Netzlisten aus Gattern oder Transistoren k nnen Millionen von Struktur elementen enthalten Hier ist es zwangsl ufig notwendig durch eine hierarchische Gliederung die Komplexit t in den Griff zu bekommen Dasselbe gilt f r die Layout Ebene wo gr ere Zellen in Unterzellen zerlegt werden Ein interessanter Spezialfall dieser Zerlegung in Teilzellen ist die regul re Vervielf ltigung Allgemein bekannt ist die geometrische Regularit t von Speicher strukturen wo in erster N herung nur eine Speicherzelle wirklich ent
138. der Software zum Addierer ee D 14 D 2 2 IP Core erzeugen und einbinden uusseeeesnnennen D 14 D 2 3 Software vervollst ndigen ass seek ae en D 16 D 2 4 Testaufdem MSIE RL ia raise a AES D 18 D 3 Hardware antwortet SOHware near Hr re D 22 DA XPS Basisprojekt tete ren D 22 D 3 2 Neier Core ap usb en een D 23 D 3 3 Berlisstellen der Sofbware nun ne D 24 D 3 4 Test auf dem ML3 10 ea a eE E Ea D 27 D 4 Wettlauf zwischen Hardware und Software sssesennnenen D 28 D 4 1 Ein Multiplizierer ack san RN NE ne D 28 D42 CSE a een ee D 28 D 5 ADS CIS SGU za seen cerntes Aenseestanvenagleraostssceiamndens D 29 DG Trigger Happy sr es D 29 DON Das Spiel ee EAA E E EL EA D 30 D 6 2 Realisierung als Hardware Software Codesign D 30 E Zusammenfassung der drei Labs E 1 Zusammenfassung von Lab La seen E 2 E 2 Zusammenfassung von Lab 2 pseliennreagkle E 5 E 3 Zusammenfassung von Lab3 esh nn Rn E 6 Lehrb cher Index leitung Ein Personal Computer enth lt Chips das wei jeder Dass ein Pkw der Oberklasse durch etwa einhundert Computer Chips gesteuert wird ist schon weniger bekannt Ein Besucher an der Haust rklingel erwartet wohl nicht dass chip basierte Home Automation ein Bild des Besuchers speichert innen das Licht anschaltet ein Fern gespr ch zwischen dem abwesenden Besitzer und der T rsprechanlage herstellt und so dessen Anwesenheit vort uscht Als bein
139. dialer Belange System ACE DDR RS232 Speicher Virtex II Pro JTAG Mehrzweck lO Flash RS232 2 South PS 2 Bridge 2 Parallel Port RJ4 Ethernet H BS _ BO w PCI Slots Bild 7 12 Blockdiagramm des ML310 7 16 7 Hardware Software Codesign J21 JTAG Port SystemACE Status und Fehler LEDs JTAG Port J9 Sw3 SystemACE Konfigurations Auswahl PCI to PCI Bridge U32 Reset Schalter LCD Interface Sw1 Sw2 South Bridge U15 Front Panel lO J23 IDE Laufwerke J15 J16 wert Mehrzweck lO Ny w i ea f J5 System ACE Controller U38 Compact Flash AXN 7 y N a PCI Slots mit Karte J22 i d mu E Pe 5 JTAG Konfiguration ls Eye omg BAS Ethernet Controller System ACE Aktivierung zu a Bene ee nee J14 sg ue 100 MHz Clock CD Audio In J6 pak xng hat Takteingang J17 Wat E Erweiterungs Slot PM1 Spannungen O Transceiver Taktauswahl J20 J21 FPGA Virtex Il Pro U37 P1 Erweiterungs Slot PM2 Spannungen IO ATX Netzteil P2 J18 Stromversorgung LEDs und Testpunkte RS232 J4 L fter J7 J8 P1 Parallel Port g Line Out J2 Phones Out J1 Mic In J1 P1 RS232 Ports J3 USB Ports Line In J2 Bild 7 13 Das Prototyping Board ML310 Bild 7 12 zeigt ein Blockdiagramm mit den wichtigsten Baugruppen Bild 7 13 gibt einen berblick zum Aufbau der Platine Das FPGA ist ber seine IO Pins verbunden mit dem DDR Speichersockel
140. durch die Logiksynthese ganz wesentlich erleichtert wenn nicht gar erst erm glicht 5 3 Synthese mit der HDL VERILOG HDL Beschreibungen f r eine Logiksynthese werden gegenw rtig auf der Register Transfer Ebene RTL formuliert In diesem Abschnitt diskutieren wir RTL basierte Logiksynthese mit der Hardware Beschreibungssprache VERILOG Daneben gibt es im Rahmen der noch abstrakteren High Level Synthese Werkzeuge wie den Behavior 5 4 5 Einf hrung in die Logiksynthese Compiler die eine Verhaltensbeschreibung oberhalb der RTL Ebene synthetisieren Obwohl seit Jahren Gegenstand intensiver Forschung wird eine solche High Level Synthese bisher nur in Spezialf llen industriell eingesetzt 5 3 1 Synthetisierbare VERILOG Konstrukte Nicht alle VERILOG Konstrukte sind f r eine Logiksynthese geeignet Au erdem gibt es leichte Unterschiede bei den verschiedenen Synthesesystemen Wesentliche erlaubte Befehle zeigt Tabelle 5 2 Typ Keyword oder Beschreibung Anmerkungen Ports input inout output Parameter parameter Modul Definition module Signale und Variablen Instanzierung wire reg Modul oder Vektoren erlaubt z B mymux M1 Gatter Instanzen OUT IO I1 S nand OUT A B Funktionen und Tasks function task Timing Konstrukte werden ignoriert prozedural always if else case casez initial nicht m glich oder ignoriert prozedurale Bl cke begin end benannte Bl cke Zeitkonstrukte wer
141. e Instanzierung des one_bit_adder Dabei werden ein 5 Bit breites Ergebnis erzeugt und ein Flag 2 10 2 berblick zur Hardware Beschreibungssprache VERILOG gesetzt falls das Ergebnis 0 ist In den Zeilen 28 und 29 wird ein weiterer in VERILOG bereits vordefiniertes Modul nor instanziert CARRY reicht bertr ge weiter module one_bit_adder input A 1 Bit Wires per Default B CARRY_IN output reg SUM CARRY_OUT I Verhalten des one_bit_adder always A B CARRY_IN CARRY_OUT SUM A B CARRY_IN endmodule one_bit_adder module four_bit_adder input wire 3 0 A B output wire 4 0 SUM output wire NULL_FLAG i wire 2 0 CARRY Struktur des four_bit_adder one_bit_adder BitO A 0 B 0 f 1 b0 CARRY R one_bit_adder L 4 1 CARRY O CARRY 2 CARRY 1 CARRY 3 CARRY 2 SUM 4 one_bit_adder one_bit_adder B B B nor Zeroflag NULL_FLAG SUM O SUM 1 SUM 2 SUM 3 SUM 4 endmodule four_bit_adder Beispiel 2 11 4 Bit Addierer mit instanzierten Untermodulen Die wichtigsten Befehle von VERILOG Dieser Abschnitt ist sowohl zum Nachschlagen als auch zum Lernen der Befehle gedacht Neben der Einteilung in Befehle zur Modulstruktur z B module Zeitkontrolle wie wait Programmsteuerung case Variablen wire Opera tionen Zuweisungen assign und sonstige Befehle ist jeder Befehl bzw eine kleine Gruppe eng verwandter Befehle nach fol
142. e dazu den Code aus Zeile 27 und ndern Sie ihn entsprechend ab Compilieren Sie das Programm im Projektfenster mit der rechten Maustaste auf Project testApp_adder Build Project klicken und beseitigen Sie eventuelle Fehler die dabei in der Ausgabe Konsole angezeigt werden Nach erfolgreicher Compilierung fehlen nur noch zwei kurze Schritte zur Fertigstellung der Software Als erstes m ssen Sie ein Linker Skript erzeugen damit das Programm auf dem ML310 im korrekten Speicherbereich des FPGA abgelegt wird Wechseln Sie im Projektfenster wieder in das Tab Applications klicken mit der rechten Maustaste auf Ihr Software Projekt und w hlen Sie Generate Linker Script XPS hat die korrekten Speicherbereiche Ihres Programms automatisch erkannt Sie k nnen also einfach mit Generate best tigen Compilieren Sie die Software nun erneut Das generierte Linker Skript wird dabei automatisch verwendet D 3 Hardware antwortet Software D 27 u Das war s Hardware und Software p sind nun bereit auf dem ML310 r getestet zu werden D 3 4 Test auf dem ML310 Laden Sie den Bitstrom system bit Ihres Projektes mit Chipscope hoch Wundern Sie sich dabei nicht dass diesmal keine Dataports angezeigt werden in Ihr jetziges Design ist schlie lich kein Logikanalysator eingebaut Starten Sie auf Ihrem Arbeitsplatzrechner das Programm TeraTerm Bild D 32 Es stellt die Ausgaben dar die Ihr Programm ber die serielle Schnittstelle des ML310 sendet
143. e elf Beispiel E 9 Erfolgreiche Software Compilierung Muss f r Ihr Projekt ein Linker Skript erzeugt werden f hren Sie folgende Schritte zus tzlich aus Klicken mit der rechten Maustaste auf Ihr Software Projekt und w hlen Sie Generate Linker Script e Best tigen Sie mit Generate e Compilieren Sie die Software erneut Lehrb cher Einige der folgenden Lehrb cher haben wesentlich zum vorliegenden Skript beigetragen Sie enthalten auch Hinweise auf die sehr umfangreiche Fachliteratur Baue02 Bark02 Berg0l Bhat01 Buch99 Cava07 HaSa0l HePa94 Marw07 Plat01 Suthe01 ThMo02 Bauer L Perspektiven des modernen ASIC Designs Dissertation TU Berlin 2002 Barke E Eine kleine Einf hrung in die Mikroelektronik IMS Universit t Hannover 2002 Berger A S Embedded Systems Design McGraw Hill 2001 Bhatnagar H Advanced ASIC Chip Synthesis Kluwer 2001 Buchenrieder K J Hrsg Hardware Software Codesign ITpress 1999 Cavanagh J Verilog HDL Digital Design and Modeling CRC Press 2007 Hassoun S Sasao T Logic Synthesis and Verification Kluwer 2001 Hennessy J L Patterson D A Rechnerarchitektur Vieweg 1994 Marwedel P Eingebettete Systeme Springer 2007 Platzner M Hardware Software Codesign Vorlesungsskript Institut f r Technische Informatik und Kommunikationsnetze ETH Z rich 2001 Sutherland S Verilog 2001 Kluwer 2001 Thomas D E M
144. e ohne Ende kann wie im Beispiel 3 39 durch ein finish in einem separaten initial Block gestoppt werden 3 34 3 Die wichtigsten Befehle von VERILOG module finish define SIMULATIONTIME always begin display arbeite 1 initial begin SIMULATIONTIME finish end endmodule arbeite arbeite arbeite arbeite Beispiel 3 39 Simulationsende mit Sfinish Ohne die Zeitkontrolle 1 w rde zur Zeit 0 der always Block nie die Kontrolle abgeben V33 Sreadmemh Sreadmemb Sreadmemb sowie readmemh lesen eine Datei in eine Variable ein die ein Feld sein muss Damit kann ein gro es Feld bequem mit Werten einer Datei gef llt werden Die Datei darf lediglich Leerzeichen Neue Zeile Zeichen Tabulatoren Kommentare sowie Bin rzahlen im Falle von readmemb bzw Hexadezimalzahlen im Falle von readmemh enthalten Beispiel 3 40 realisiert einen Speicher module memory input wire 3 0 ADDRESS Adresse output wire 7 0 DATA Ausgabedaten i reg 7 0 MEMORY 15 0 16 Worte je 8 Bit assign DATA MEMORY ADDRI staendige Zuweisung initial Sreadmemb z Speicherdaten txt MEMORY MEMORY initialisieren endmodule Beispiel 3 40 Einlesen eines Feldes Wird eine Adresse an ADDRESS gelegt so kann das Daten Byte von DATA ausgelesen werden Dabei wird zum Simulationsstart das Feld MEMORY mit dem Inhalt 3 7 Sonstige Befehle 3 35 der Datei Speicherdaten geladen Diese
145. e werden im Entwurfsprozess auf drei Arten weiterverarbeitet Im halbkundenspezifischen oder Semi Custom Entwurf wird entweder das Gattermodell an den Halbleiterhersteller bergeben der die Gatter durch meist geheim gehaltene Transistorschaltungen seiner Technologie Bibliothek ersetzt also ein Transistormodell der nachfolgenden Schaltkreisebene anfertigt und dieses dann platziert und verdrahtet Oder wir platzieren und verdrahten selbst um das Layout f r eine programmierbare Schaltung zu erhalten Abschnitt 1 3 3 auch das wird noch dem Semi Custom Entwurf zugerechnet Nur bei Standardprodukten mit hohen St ckzahlen lohnt es dagegen f r den Designer im vollkundenspezifischen oder Full Custom Entwurf bis hinunter zur Layout Ebene alles selbst zu optimieren und erst dann den Halbleiter hersteller zu rufen Schaltkreisebene Hier finden sich die seit jeher bekannten Schaltpl ne aus Transistoren Widerst nden und Kondensatoren wobei die Transistoren mit Abstand die h ufigsten Bausteine sind Ob man nun den Transistor und seine partiellen Differentialgleichungen liebt oder 1 16 1 Einleitung lieber einen Bogen darum macht wir kommen hier berhaupt nicht mit den Transistoren in Ber hrung schon weil der Lieferant einer Technologie Bibliothek die Transistor Realisierungen seiner Bausteine in aller Regel geheim h lt Auf der Schaltkreisebene versagen auch VERILOG Simulatoren statt dessen produzieren Analog Simulatoren Ergebnisse wie in
146. eReg XPAR_I2C_BASEADDR GPO_REG_OFFSET GPO_RESETS_OFF deassert rest 239 recu_cnt 6 rint r nXUP U2Pro Video Decoder Expansion Board Video Pass Through Test X12c_mllriteReg XPAR_I2C_BASEADDR GPO REG OFFSET GPO_RESET_IIC 243 X12c_mriteReg XPAR_I2C_BASEADDR Samaa 244 recu_cnt X12c_RSRecu XPAR_I2C_BAR 245 recv data vr 246 if recu_cnt t 1 Addresees 247 print No device detected r n Address 0x58 Target is BIG endian 248 else 6 4 8 c ASCII 249 configDecoder decoder conp g FFFF53C8 0x00000000 Oxf FFFS780 0x 60020027 0xd8005004 W orint Decoder detected Confia OxfFFFS3d8 0x000e8 000 0x52180058 Oxed 9077cC5 0x007c9300 R X w OxfFff53e8 0x7d0000d40 6x48 8045 20 Ox O6e 43e 00 Ox Ge 000008 H gt OxfFFFFS3FS 0x 04001500 0x 00174100 0x2758003a 6x16065004 A X OxFFFf5408 0x 00088 666 6x5 02 60052 0x180058ed 0x 0077c508 4 Bild 7 20 Remote Debugger zur Fehlersuche und Fernsteuerung des PowerPC405 7 5 2 2 Hardware Entwicklung mit dem ML310 Die Erprobung und Fehlersuche bei Hardware Bl cken erfolgt blicherweise mit einem Simulator in den wir zun chst unseren VERILOG Quelltext auf Register Transfer Ebene eingeben Die Waveform Darstellung einer VERILOG Simulation zeigt Bild 7 21 in diesem Fall handelt es sich um eine Addierer Schaltung aus den praktischen bungen Erscheint uns das Design fehlerfrei k nnen wir anschlie
147. edlichen Werten zu Konflikten Mit REG2 8 bx werden dann alle Bits undefiniert was sich auf den Ausgang bertr gt Wichtig ist der Unterschied zwischen den beiden F llen bei denen alle Bits von REG2 auf z und auf x gesetzt sind Im ersten Fall beeinflusst dieses Bit weitere angeschlossene Leitungen nicht im zweiten Fall treibt die Variable die angeschlossenen Leitungen mit einem undefinierten Wert 3 5 Operationen 3 23 3 5 Operationen V21 Arithmetik und haben die bliche Bedeutung Der Operator liefert den Rest einer Division und k nnen auch das Vorzeichen angeben Beim Vergleich von Ausdr cken bedeuten lt gt lt sowie gt gleich ungleich kleiner usw und ber cksichtigen auch die Werte x und z W hrend erstere Operatoren auf einer logischen Ebene vergleichen tun und seine Negation dies w rtlich Die Unterschiede erl utern Beispiel 3 25 und Tabelle 3 26 module compare initial begin Sdisplay Sdisplay Sdisplay Sdisplay Sdisplay display Sdisplay end I Ac I NN I Ac te NN endmodule Beispiel 3 25 Vergleichsoperatoren Logische Gleichheit bedeutet dass beide Seiten mit O oder 1 definiert und gleich sind Der erste logische Vergleich zwischen 1 bx und 1 b1 liefert x da der erste Ausdruck undefiniert ist Der zweite und w rtliche Vergleich liefert 0 falsch da ein x ein anderer Wert als
148. egistern m ssen noch neue Werte zugewiesen werden Testrahmen e Schreiben Sie f r das Modul einen Testrahmen f r zwei F lle schnell hinter einander gesendete Signale und Signale mit einer gr eren Zwischenpause module debouncer Eingang des Tasters Rohdaten Takteingang ML310 100 MHz Reset Eingang low aktiv Entprellte Daten Ausgang zum gamecontroller i Wurde bereits geklickt Takte nach einem regul rem Klick always Q posedge CLK begin if nRESET begin end else begin ML310 Takt hat Frequenz von 100MHz Nur einmal alle 0 25 Sek soll ein Input Signal g ltig sein if LAST_CLICK gt 100000000 gt gt 2 begin end z hle weiter die Takte und vermeide einen Puffer berlauf else if LAST_CLICK lt 100000000 begin end brige Register end end endmodule Beispiel B 26 Vorgabe f r den Debouncer B 9 Universal Asynchronous Receiver In dieser Aufgabe k nnen Sie einen universellen asynchronen Empf nger implemen tieren B 9 Universal Asynchronous Receiver B 21 serieller serieller Sender TX Empf nger RX Framing Error paralel Ag seriell UAR gt Data Available DATA parallel 8 Bit t f Bild B 27 Tx_CLK Rx_CLK Schema eines UAR Bild B 27 zeigt schematisch die Arbeitsweise eines asynchronen seriellen Interfaces wie es h ufig in Computern vorkommt Ein Sender TX ist mit einem Empf nger RX ber einen
149. egrieren Schon 1965 prophezeite der Intel Mitbegr nder Gordon Moore das wichtigste Wachstumsgesetz der Mikroelektronik nach dem Moore schen Gesetz sollte sich die Komplexit t integrierter Schaltungen jedes Jahr verdoppeln 1 4 1 Einleitung 2 Milliarden Transistoren 26 je Chip 1 Milliarde 600 Millionen 200 Millionen 64K 256K 1M Bild 1 2 Exponenzielles 1970 1975 1980 1985 1990 1995 2000 2005 2010 Wachstum Dieses Wachstum veranschaulicht Bild 1 2 anhand der Entwicklung der Speicher kapazit ten Betreiben wir zun chst etwas Schulmathematik Ganz harmlos klingt ein Wachstum von plus 53 Statt dem harmlosen plus handelt es sich jedoch um eine Multiplikation mit dem Faktor 1 53 Noch dramatischer wird es wenn die Zunahme um plus 53 jedes Jahr stattfindet bereits nach zwei Jahren hat sich der Anfangswert weit mehr als verdoppelt 1 53 2 3 nach drei Jahren fast vervierfacht und schon nach f nf bis sechs Jahren verzehnfacht Bei 1 53 handelt sich offen sichtlich um ein exponenzielles Wachstum 10G Komplexit t von DRAMs 10G Komplexit t von Mikroprozessoren Bits 46 Transistoren Intel Monte ito 1G a 26 1G IBM Power 5 af s A Alpha 214 e 100M 100M Alpha 21364 BM Power 4 Alpha 21264 Pentium 4 F entium 10M 10M DRAM 53 Alpha 21164 ee Pentium Il 7 Pentium Pro 1M 1M ium 100k 100k 0 10k 10k HP 43 Trend 1000 K hi 1000 24004 53 pro Jahr 100 100 erstes komme
150. eigen spielen wird Nebenbei gefragt wie viel Geld haben Sie bereits f r Handies MP3 Player und Digitalkameras ausgegeben Und nat rlich finden Sie mit solch praxisnahen Erfahrungen anschlie end Ihren Traumjob Soweit die optimistische Motivation Aber ganz ehrlich die Labs haben auch Ihre Schattenseiten Gerade weil wir mit dem ML310 eine gro e Industrie Plattform einsetzen sind die zugeh rigen Design Tools auch sehr m chtig und komplex M chten Sie lieber mit 1 000 Seiten Handb chern allein gelassen werden Nat rlich nicht Deswegen haben wir liebevoll jeden einzelnen Schritt f r Sie aufgeschrieben mit der Folge dass Sie das Gef hl haben k nnten am Hundehalsband gef hrt zu werden Eine erstmalige Einf hrung in Word oder Photoshop w re brigens hnlich nervig Wir hoffen dass Sie bei allen Detail Anweisungen nicht den roten Faden aus den Augen verlieren Und ebenso paradox ist wenn Sie im dritten Lab den ganzen Aufwand nur betreiben um zwei Zahlen zu addieren Zum Gl ck ist Ihnen aber klar dass ein solches Mini Beispiel n tig ist weil man in einer einst ndigen bung nicht mehr erreichen kann Und zum Gl ck haben Sie genug Phantasie zu verstehen dass die HW Realisierung und die HW SW Kommunikation des l cherlichen kleinen Addierers viel mit gro en realen Entw rfen gemeinsam haben k nnten Falls Sie aber noch etwas Zeit haben und die Fr chte Ihrer Arbeit wirklich genie en wollen empfehlen wir Ihnen das anschlie
151. eisungen innerhalb eines always Blockes werden sequenziell ohne Unterbrechung bearbeitet bis eine Zeitkontrolle erreicht wird Abschnitt 3 2 Im Beispiel 3 6 geben die ersten beiden always Bl cke Meldungen aus wenn COUNTER sich ndert Der dritte ndert COUNTER Dazu wird mit if abgefragt ob COUNTER noch nicht initialisiert wurde dies ist beim ersten Durchlauf der Fall Ansonsten wird COUNTER erh ht bis bei 5 die Simulation beendet wird Alle drei always Bl cke arbeiten parallel in dem Sinne dass zum gleichen Simulationszeitpunkt die Reihenfolge ihrer Ausf hrung nicht festgelegt ist Die Anweisungen innerhalb eines always Blockes werden wie oben erw hnt sequenziell ohne Unterbrechung bearbeitet bis zu einer Zeitkontrolle Daher ist ein Simulations ergebnis der Art Zeit 10 COUNTER Aenderung COUNTER 1 nicht m glich weil in diesem Fall der zweite always Block durch den ersten unterbrochen w rde im zweiten Block jedoch zwischen den beiden Sdisplay Anweisungen keine Zeitkontrolle ist W rde am Ende des dritten always Blockes die Zeitkontrolle 10 fehlen so w rde der dritte Block f nf mal direkt hintereinander ablaufen ohne die Kontrolle an einen der anderen Bl cke abzugeben Einzelheiten finden sich in den Abschnitten 4 1 und 4 2 Ein initial Block f hrt die auf initial folgende Anweisung genau einmal aus Er wird gleichzeitig zu allen anderen initial und always Bl cken V4 aus gef hrt Daher arbeiten al
152. eiteren stehen ein IRO Signal und 20 LED Leitungen zur Verf gung die wir im XPS Projekt bereits mit den richtigen Anschl ssen des FPGAs verbunden haben Haben Sie erkannt welche Funktion der gamecontroller im momentanen Zustand bereits ausf hrt Erzeugen Sie einen FPGA Bitstrom und laden Sie ihn mit Chipscope auf das ML310 Stimmt Ihre Annahme Wechseln Sie nun in die Ansicht Applications Im XPS Projekt ist bereits ein minimales Software Grundger st enthalten Die Hauptdatei ist game_control c Sehen Sie sich den Quelltext an Welche Methoden sind enthalten und welche Aufgaben erf llen sie 6 3 6 4 6 5 Entwickeln Sie ein Konzept f r die Implementierung des Spiels auf Basis der vorgegebenen Hardware und Software Quellen Planen Sie den genauen Ablauf des Spiels Welche Funktionen werden ben tigt und durch welche Funktionen in Hardware und Software werden sie ausgef hrt Sprechen Sie Ihre Ergebnisse mit Ihrem HiWi durch Implementieren Sie das Spiel Trigger Happy als Hardware Software Codesign f r das ML310 Testen Sie Ihr Spiel ausf hrlich auf dem ML310 Spielen Sie gegen Ihre Team Mitglieder Ihre HiWis und gegen andere Teams Werden Sie Trigger Happy Champion 2009 D 34 D Lab 3 Hardware Software Codesign auf dem ML310 Zusammenfassung der drei Labs In diesem Kapitel finden Sie Informationen zu den folgenden Stichworten Chipscope E 6 E 7 Beenden E 6 Bitstrom herunterladen E 6 Bus erstellen E 6 Signal
153. ekturen Very Long Instruction Word Schlie lich seien noch die ASIPs genannt Application Specific Instruction Processor Diese Familie weist oft sehr unterschiedliche Architekturen auf und enth lt Hardware f r stark spezialisierte Aufgaben ASIPs arbeiten oft effizienter als 7 1 Hardware Software Bausteine 7 3 Universalrechner oder Mikrocontroller und m glicherweise auch digitale Signal prozessoren Sie ben tigen in der Regel weniger Pins weniger Leistung und sind so billiger erfordern aber einen speziellen Compiler Oft besteht eine Instruktion aus einer Kette von Operatoren 7 1 2 Hardware Neben den im vorigen Abschnitt genannten Hardware Bausteinen f r Software L sungen kommen f r den eigentlichen Hardware Teil des Hardware Software Codesigns Bausteine zum Tragen wie kundenspezifische Hardware Co Prozessoren digitale Chips analoge Chips Speicher und FPGAs 2 flexibler mehr Strom Universalprozessor RISC CISC Mikrokontroller Digitaler Signalprozessor Application Specific Instruction Set Processor ASIP FPGA Programmierbarer Logikbaustein Anwendungsspezifische integrierte Schaltung Bild 7 1 Hardware Software Bausteine Bild 7 1 vergleicht die verschiedenen Implementierungsarten Offensichtlich besteht ein Trade off zwischen der Effizienz einerseits und der Flexibilit t anderer seits und die Kunst des Hardware Software Codesign kann gerade
154. el 3 13 Zwei Tasks 3 3 Klassische Programmsteuerung 3 13 task und endtask umfassen eine Task mit der logisch zusammenh ngende Programmteile zusammengefasst werden k nnen Eine Task darf im Gegensatz zu einer Funktion V 10 Zeitkontrollen besitzen Abschnitt 3 2 Das Modul in Beispiel 3 13 besteht aus zwei Tasks sowie einem initial Block in dem zun chst die Task add mit den aktuellen Parametern 1 und 2 aufgerufen wird Diese Task besitzt also zwei Parameter Das Ergebnis der Addition wird in der globalen Variable RESULT abgelegt Der Aufruf der parameterlosen Task display_result gibt das Ergebnis auf dem Bildschirm aus V10 function endfunction function und endfunction begrenzen eine Funktion Auch hier wird ein logisch zusammenh ngendes Programmst ck gebildet Eine Zeitkontrolle ist im Funktions code unzul ssig Daher entspricht der Funktionscode einer kombinatorischen Logik welche aus den Argumenten ein Ergebnis verz gerungsfrei berechnet Eine Funktion gibt genau einen Wert ber ihren Namen zur ck und muss mindestens einen Parameter besitzen Die Funktion maximum im Beispiel 3 14 berechnet das Maximum zweier Werte die beim Aufruf bergeben werden Der initial Block ruft die Funktion mehrfach mit Testwerten auf und gibt die Ergebnisse aus module function_example function maximum input reg A B if A gt B maximum A else maximum B endfunction initial begin Sdisplay maximum 0 0 d maximum
155. ele CLBs verbraucht dass nur noch wenig Platz f r die eigentliche Schaltung blieb Das Platzieren und Verdrahten solcher Soft Cores konnte mehrere Stunden dauern und Taktfrequenzen ber 50 MHz waren so kaum zu erreichen 6 4 Multiprozessor FPGA Plattformen 6 13 Im Virtex II Pro integriert Xilinx stattdessen zwei ausgereifte 32 Bit RISC Prozessoren vom Typ IBM PowerPC 405 als echte Hardware so dass s mtliche konfigurierbaren Logikzellen f r Anwenderschaltungen zur Verf gung stehen Virtex II Pro Blockspeicher Multiplizierer PowerPCs Logikbl cke CLBs Verbindungs jO 200 8 000 Kb 10 500 je 18x18 b 2 3 000 100 000 architektur Bild 6 12 Komponenten des Virtex I Pro Im Zentrum der Grobarchitektur in Bild 6 12 stehen diese beiden PowerPC und nat rlich die frei konfigurierbaren Logikbl cke oder CLBs Wie in Bild 6 13 a angedeutet sind diese CLBs in Spalten angeordnet neben denen es weitere Spalten von effizientem Blockspeicher und von Multiplizierern gibt Abschnitt 6 4 3 Die Verbindungsarchitektur umfasst sowohl ein Network on Chip mit mehreren Bussen als auch ein frei konfigurierbares Interconnect Abschnitt 6 4 5 Sehr schnelle Transceiver und andere IO Anschl sse verbinden die Plattform mit der Au enwelt Abschnitt 6 4 6 6 14 6 Programmierbare Logikbausteine Clock Manager Transceiver Prozessoren Blockspeicher und Multiplizierer V O Pins ogikbl cke a Virtex Il Pro
156. elefon Prototyp Die Alternative eines Stand Alone Boards ist daher immer h ufiger zu finden Das ML310 stellt hier zwar einen besonders universellen Vertreter dar ist aber f r viele Anwendungen gewisserma en ein Overkill Das berangebot an Peripherie und Schnittstellen ist aber gut geeignet verschiedene Implementie rungsvarianten f r einen System Entwurf durchzuspielen um sich dann f r die beste zu entscheiden Anschlie end kann der Prototyp leicht auf ein kleineres Board wie in Bild 7 16 portiert werden wobei sich das verwendete FPGA selbst nicht ndern muss a Bild 7 16 hydraXC mit Virtex 4 FPGA Ultra portables Prototypen Board 7 20 7 Hardware Software Codesign 7 5 1 Intellectual Property Design mit Fertigbausteinen Beim Hardware Entwurf mit dem ML310 kann auf eine Vielzahl fertiger Hardware Bausteine Intellectual Property IP Abschnitt 7 1 3 zur ckgegriffen werden Es handelt sich dabei um synthetisierbare VERILOG oder Gattermodelle mit denen durch wenige Mausklicks Standardaufgaben realisiert werden k nnen wie der Zugriff auf die Netzwerkschnittstellen Ethernet USB und den Hauptspeicher DDR RAM die Ansteuerung der PCI Steckpl tze oder die Datenausgabe auf einem LC Display Als Ergebnis entsteht eine vollst ndige FPGA Konfiguration mit allen notwendigen Bausteinen f r den gew nschten Funktionsumfang die um eigene VERILOG Module erweitert und dann f r das Virtex II Pro synthetisiert werden kann
157. elf ltige Wechselbeziehungen zwischen der Fl che der Komplexit t der Schaltgeschwindigkeit und der Flexibilit t der Logikbl cke und dem Interconnect Struktur und Inhalt eines Logikblocks stellen die Architektur eines FPGA dar die auf sehr unterschiedliche Weise realisiert sein kann Bei manchen FPGAs sind die Logikbl cke lediglich einfache Transistorpaare Etwas komplexer sind mit Multiplexern realisierte Logikbl cke und die allgemeinste Form der Bl cke ist durch je einen Lookup Table LUT pro Block gegeben Manche FPGAs haben sogar 6 2 Programmiertechniken 6 5 Logikbl cke mit je einer vollst ndigen AND OR hnlichen Struktur und geh ren daher auch in die Klasse der CPLDs Zur Realisierung sequenzieller Schaltungen enthalten die meisten Logikbl cke au erdem speichernde Elemente Die Verdrahtungsarchitektur eines FPGA bestimmt sein Interconnect das wie erw hnt aus Verbindungsabschnitten unterschiedlicher L nge und programmierbaren Schaltern besteht Diese Schalter k nnen auf unterschiedliche Art realisiert sein zum Beispiel als SRAM kontrollierte Pass Transistoren als Antifuses sowie als EPROM oder EEPROM Transistoren Abschnitt 6 2 Einige FPGAs bieten eine gro e Anzahl einfacher Verbindungen zwischen Bl cken andere bieten weniger aber komplexere Verbindungen 6 1 3 Entwurfsablauf Ein besonders interessantes Merkmal des FPGA Entwurfs besteht darin dass er sich bis hinab zur Gatterebene praktisch kaum von echten
158. em ML310 Komfortable Debug Werkzeuge f r die Software Verifikation haben wir bereits kennen gelernt Bild 7 19 aber wie k nnen wir unsere Hardware effizient auf Fehlverhalten berpr fen Wir m chten beispielsweise berpr fen ob bestimmte Signalverl ufe innerhalb des Chips unseren Vorstellungen entsprechen etwa ob sich eine State Machine im gew nschten Zustand befindet oder ob beim Zugriff auf den On Chip Bus das Kommunikations protokoll korrekt eingehalten wird Vor allem aber m chten wir Fehler erkennen die durch das komplexe Zusammenspiel der vielen vernetzten System on Chip Komponenten entstehen und die wir in den Einzelsimulationen der Systembausteine durch unsere Testmuster nicht abdecken k nnen F r diese Aufgabe k nnen wir auf FPGAs einen integrierten Logik Analysator einsetzen ILA Bild 7 22 Der ILA bietet eine konfigurierbare Anzahl Ports und wird als zus tzliches Hardware Modul in unser System on Chip Design eingebaut Bei Xilinx FPGAs kann jeder ILA Port mit 256 Signalen verbunden werden so dass bei maximal 16 Ports bis zu 4 096 Signale berwacht werden k nnen Der ILA verwendet BRAM Bl cke auf dem FPGA um die Signalverl ufe an seinen Ports aufzuzeichnen 7 26 7 Hardware Software Codesign Die Gr e des verwendeten Speicherbereichs bestimmt die maximale Aufzeichnungs dauer FPGA Virtex ll Pro Steuerdaten ere gt oor A nalyse __ daten USB Kabel PC mit Ch
159. em hier alle kombinatorischen Netze gleichzeitig aktiv sind was den Durchsatz erheblich erh ht Auch hier ist eine Hardware Beschreibung wie in Bild 1 19 praktisch brigens lassen sich RTL Strukturen wie in Bild 1 18 durch R ckkopplungen erweitern zu beliebigen Automatennetzen Bild 1 18 Register Transfer Logik always posedge CLOCK mit jeder steigenden Taktflanke begin R2 lt f1 R1 Register Transfer von Ri durch fi nach Ri tl R3 lt 2 R2 R4 lt 3 R3 end Bild 1 19 Register Transfer in der Hardware Beschreibungssprache VERILOG PStrobe l PReady Syastro yei jo a E Bild 1 20 RTL Simulation 1 3 Der Hardware Entwurf 1 15 Bild 1 20 zeigt eine M glichkeit Simulationsergebnisse zu einem RTL Modell grafisch darzustellen Das derart getestete Modell wird anschlie end meist mit einer Logiksynthese umgesetzt auf die Logik oder Gatterebene Auf dieser Ebene werden Schaltungen durch Netze wie in Bild 1 21 aus den bekannten Gattern AND OR Inverter usw beschrieben Auch solche Gattermodelle k nnen mit einer Hardware Beschreibungssprache wie VERILOG simuliert und verifiziert werden Gattermodelle fassen wir meist jedoch nur mit spitzen Fingern an denn normalerweise werden sie automatisch aus unserem RTL Modell durch einen Logiksynthese Compiler erzeugt Bild 1 21 Gattermodell Gattermodell
160. en Die Simulation weniger Sekunden FPGA Betriebszeit dauert dann je nach Komplexit t des Designs allerdings mehrere Stunden Effizienter ist es die Software mit einem Cross Compiler f r den PowerPC 405 zu bersetzen und in das FPGA zu laden Kapitel 7 Ein Remote Debugger der ber ein USB Kabel mit dem Virtex II Pro in Verbindung steht erm glicht dann die volle Kontrolle des Programmflusses und Prozessor Register Programm Variablen sowie der Speicherinhalt k nnen im laufenden Betrieb beobachtet werden Diese leicht zu bedienende Technik werden wir auch in den praktischen bungen einsetzen Beide Methoden sind bei gr eren Projekte jedoch unbefriedigend Das Simulieren mit ISS ist wegen der langen Wartezeiten oft unpraktisch das Testen direkt auf dem FPGA ist aber oft auch nicht m glich da sich die Hardware Module des 6 18 6 Programmierbare Logikbausteine Gesamtsystems ebenfalls erst in der Entwicklung befinden Bei neuen Ans tzen werden in der Forschung deshalb High Level Modelle des System on Chip f r die Software Entwicklung und Verifikation verwendet zum Beispiel mit der System Beschreibungssprache SystemC Die Simulationsgeschwindigkeit ist dann nur etwa 10 bis 100 mal langsamer als die simulierte Hardware selbst 6 4 5 Kommunikation im Chip Typische System on Chip Designs umfassen oft Dutzende von Hardware Cores die untereinander Daten austauschen und mit den Prozessoren um den Zugriff auf gemeinsam genutzte Speiche
161. en HW SW Systemen Herzlich willkommen zu unseren drei Labs zur Veranstaltung Hardware Software Systeme In diesen drei Labs ben Sie live am Rechner die Hardware Beschreibungs sprache VERILOG Kapitel B und staunen wie einfach Sie VERILOG Modelle mit einer automatischen Logiksynthese in Gattermodelle bersetzen und damit fast schon eigene Chips bauen k nnen Kapitel C Das dritte Lab verdient seinen Namen wirklich denn jetzt tauchen Sie ein in eine industrielle Profi Umgebung und bauen dort reale Hardware die mit Ihrer eigenen Software kommuniziert Kapitel D Mit KapitelE steht Ihnen zus tzlich ein Nachschlagewerk zur Verf gung wo die wichtigsten Schritte kurz zusammengefasst sind Im Einzelnen beginnen Sie mit leichten Aufw rm bungen wie dem Anlegen von VERILOG Projekten und der Durchf hrung einfacher Hardware Simulationen Dabei machen Sie sich spielend mit den Grundlagen der Hardware Programmierung bekannt und verwenden aktuelle CAD Tools wie Xilinx ISE und ModelSim um aus Ihrem VERILOG Quelltext echte Hardware zu synthetisieren Beide Programme sind im kommerziellen Chip und System Entwurf weit verbreitet Anschlie end trainieren Sie weitere Fertigkeiten wie den Umgang mit Test rahmen und grafischen Waveforms und gewinnen ganz nebenbei Vertrauen zu den wichtigsten VERILOG Begriffen in Form praktischer Beispiele Am Ende des zweiten Labs also nach etwa vier Wochen synthetisieren Sie bereits eigene Logikschalt
162. en die nach den Vorgaben eines Gatter oder Schaltkreismodells arbeiten 1 3 Der Hardware Entwurf 1 17 dabei Transistoren und Leitungen durch passende geometrische Abmessungen elektrisch sinnvoll dimensionieren zahlreiche elektrische und geometrische Regeln einhalten und vor allem f r eine Chip Fl che und kurze Verbindungsleitungen sorgen TE I Mh Ill sss MT EEE JK INN S SS el N IR S x gg IR Bt eS N N x y N IN SF lent N N NTT m NSS G N N rt N N N N N N SS SSS N N eu D m ze N jand a N N SO cl _ _ _ _ 1 4 WS 8 a oe al WEG wm il je uf lc Be SSS Mn NN IIIS N DRANK Nh DAN IN SSNS ilk m Sa Wh Im INN ip SH A SER iti Sane gt Ni i SSIS SS SSS SN 3 Bild 1 23 Layout eines Schieberegisters Das geometrische Layout wird aus der graphischen Beschreibungsform in eine textuelle Form bersetzt Daraus wird das so genannte Maskenband erstellt das die Herstellung von Masken steuert die mit Foto Negativen vergleichbar sind Diese Masken steuern dann die eigentliche Chip Fertigung durch photolithographische und andere Methoden Diese Fertigung geh rt zu den pr zisesten Produktionsprozessen berhaupt 1 18 1 Einleitung Anschlie end werden die Chips in ein Geh use verpackt und mit Au en anschl ssen verdrahtet Zerlegungshierarchie Wie bereits angedeutet ist es auf je
163. en Instruktionen Daten PowerPC PowerPC DCR Bus Bild 6 18 Busarchitektur CoreConnect Der Processor Local Bus PLB ist mit 100 MHz getaktet und verwendet 2x64 Leitungen f r die Daten bertragung und 32 zur Adressierung Er ist f r die schnelle Anbindung der PowerPC Prozessoren an den Hauptspeicher und andere Systemkerne vorgesehen und bietet mehrere Funktionen speziell f r die optimierte Daten bertragung von und zu den Caches der Prozessoren wobei durch getrennte 64 Bit breite Schreib und Leseleitungen der eine Prozessor Daten in den Speicher schreiben kann w hrend der andere gleichzeitig Daten aus einem anderen Speicherbereich einliest An den On Chip Peripheral Bus OPB werden alle anderen Hardware Module des System on Chip angeschlossen Das Zugriffsprotokoll ist einfacher als beim PLB so dass f r den Anschluss eines Moduls an den OPB weniger Logik ben tigt wird F r die Daten bertragung und die Adressierung stehen je 32 Leitungen zur Verf gung so dass pro Taktzyklus 32 Bit Daten gelesen oder geschrieben werden k nnen Durch die Verteilung der Kommunikation auf zwei Busse st ren die h ufigen Hauptspeicherzugriffe der beiden PowerPCs nicht die Daten bertragungen zwischen anderen Systemkomponenten Ist eine Verbindung zwischen einer PLB und einer OPB Komponente gew nscht k nnen die beiden Busse ber eine Bridge verbunden werden Bei allen On Chip Bussen konkurrieren die angeschlossenen Module um den Zugriff auf
164. en Maustaste auf den obersten Eintrag System BSP und w hlen Sie Add Edit Cores W hlen Sie ihren IP Core aus und klicken Sie auf lt lt Add Wechseln Sie vom Tab Peripherals in den Tab Bus Connections W hlen Sie unter Choose one or more buses den Eintrag der_v29_v1_00_a und klicken Sie auf lt lt Add Klicken Sie in der Spalte der_v29_v1_00_a in die Zeile name_des_IP_cores sdcr um dort ein S einzutragen Klicken Sie in derselben Spalte in die Zeile ppc405_0 mdcr um dort ein M einzutragen Wechseln Sie in den Tab Addresses Tragen Sie in der Zeile name_des_IP_cores f r Base Address 0600000000000 ein Stellen Sie unter Size den Wert 4 ein Best tigen Sie mit OK XPS IP Core ohne DCR Anschluss verdrahten Zur Verdrahtung klicken Sie im Projektfenster doppelt auf den Eintrag MHS File system mhs Instanzen neu hinzugef gter IP Cores befinden sich ganz unten im Quelltext Sie m ssen anderen Instanzen aber noch die Ein und Ausg nge Ihres E 14 E Zusammenfassung der bungen IP Cores zur Verf gung stellen Das geschieht f r jedes Signal mit folgender Code Zeile PORT DBG_INOUT NAME e INOUT ersetzen Sie durch IN oder OUT F r NAME w hlen Sie eine Bezeichnung mit der das Signal anderen Instanzen zur Verf gung steht XPS IP Core mit DCR Lesezugriff verdrahten e ffnen Sie die Datei system mhs indem Sie im Projektfenster doppelt auf den Eintrag MHS File system mhs klicken e F gen Sie
165. en always Block k nnen sowohl kombinatorische Logik als auch sequenzielle Register Transfer Logik erzeugt werden F r letztere muss der always Block durch den Wechsel eines Taktsignals kontrolliert sein etwa posedge CLK Fur always posedge CLK Q lt D 5 3 Synthese mit der HDL VERILOG 5 9 wird ein positiv flankengesteuertes D Flipflop wie in Bild 5 10a synthetisiert mit D als Eingang Q als Ausgang und CLK als Taktsignal Wir verwenden hierbei stets die nichtblockende Zuweisung lt Bild 5 10 Register flankengesteuertes D Flipflop a und pegelgesteuertes Latch b hnlich erzeugt die VERILOG Beschreibung in Beispiel 5 11 das pegel gesteuerte Latch aus Bild 5 10b also ein Register das alle Wert nderungen w hrend der gesamten positiven Taktphase weitergibt always CLK if CLK Q D Beispiel 5 11 Pegelgesteuertes Latch Dagegen erzeugt Beispiel 5 12 kombinatorische Logik ohne Register hier erneut einen 1 Bit Volladdierer wie in Bild 5 6 always A B C_IN C_OUT SUM A B C_I Beispiel 5 12 Volladdierer als kombinatorischer always Block Bei gr eren kombinatorischen Logiken ist die Modellierung mit always Bl cken oder als Funktion besser strukturierbar und lesbar als mit assign Wir wiederholen an dieser Stelle das Bild 5 13 einer RTL Logik aus dem vorigen Kapitel das in der Form von Beispiel 5 14 voll synthetisierbar ist Bild 5 13 RTL Netz aus Flipflops und ko
166. en von Modulen Wechseln Sie im Workspace Fenster in den Tab Library und ffnen Sie den Punkt work Rechtsklicken Sie auf die Dateien welche Sie mit dem Befehl Recompile recompilieren m chten Schriftart ndern Klicken Sie in der Men leiste auf Tools Edit Preferences Main Window und w hlen Sie am besten Courier New E 2 Zusammenfassung von Lab 2 Alle Vorg nge sind aus dem Xilinx Project Navigator heraus auszuf hren Logiksynthese e Selektieren Sie das gew nschte Modul im Quellenfenster e Doppelklicken Sie im Prozessfenster den Punkt Synthesize XST Schematische RTL Darstellung e Selektieren Sie das gew nschte Modul im Quellenfenster e ffnen Sie im Prozessfenster den Punkt Synthesize XST e Doppelklicken Sie View RTL Schematic Technology Mapping e Selektieren Sie das gewiinschte Modul im Quellenfenster e Offnen Sie im Prozessfenster den Punkt Synthesize XST e Doppelklicken Sie View Technology Schematic E 6 E Zusammenfassung der bungen Synthese Bericht e Selektieren Sie das gew nschte Modul im Quellenfenster e ffnen Sie im Prozessfenster den Punkt Synthesize XST e Doppelklicken Sie View Synthesis Report e Hier finden Sie unter anderem auch Angaben ber die kritischen Pfade der Schaltung also ber die maximale Taktrate mit der sie betrieben werden kann E 3 Zusammenfassung von Lab 3 Chipscope Bitstrom herunterladen e Schalten Sie das ML310 ein e Bet tigen Sie
167. en wie Xilinx dies in seinen eigenen IP Cores zu tun pflegt werden unsere DCR Leitungen von XPS automatisch als solche identifiziert Import Peripheral Step 5 J x yo Bus Interfaces EN Identify the bus interfaces supported by your peripheral 4 bus interface is a group of related interface ports distinguished by a bus standard PLB OFB DCR LMB or FSL Select the bus interfaces supported by your peripheral or leave it open if no bus interface applies er Bus Interface On chip Peripheral Bus Interface OPB Master and Slave MSOPB Master mterface is optional I OPE Slave SOPB m Local Memory Bus Interface LME Slave SLMB r Processor Local Bus Interface P PLB Master and Slave MSPLB FSL Bus Interface J Master interface is optional I FSL Master MFSL I PLB Slave SPLB J FSL Slave SFSL Bild D 19 Anschluss des IP Cores an den DCR Bus More Info lt Zur ck Fertig stellen Abbrechen F gen Sie mit Add Edit Cores eine aplusb_writeonly Instanz zu Ihrem Projekt hinzu Vor dem OK muss der Core noch an den bereits vorhandenen DCR Controller angeschlossen werden Wechseln Sie dazu vom Tab Peripherals in den Tab Bus Connections und klicken in das dcr_v29_0 Feld der aplusb_writeonly Instanz Bild D 20 Wechseln Sie anschlie end in den Tab Addresses und tragen Sie in der Zeile aplusb_writeonly_0 die Base Address Ob0000000000 ein Stellen Sie unte
168. enauer Takt jedoch ohne Leitungsverz gerungen Layout Ebene ma stabsgetreues Abbild des sp teren Chips auf allen Ebenen genauer Takt mit Leitungsverz gerungen Bild 1 14 Entwurfsebenen der Abstraktionshierarchie Auf jeder Entwurfsebene kann es dann eine Zerlegungshierarchie im Sinne der schrittweisen Verfeinerung geben wo ein Problem hnlich wie bei der modularen Programmierung zun chst in Teilprobleme zerlegt wird die wieder verfeinert werden usw siehe unten Um in dieser Einleitung ein erstes Gef hl f r den Entwurfsprozess zu bekommen wollen wir uns die in Bild 1 14 erw hnten Abstraktionsebenen oder Sichten der Entwurfshierarchie etwas genauer ansehen Verhaltensebene Wie im Software Engineering geht es zun chst einmal darum die Anforderungen oder die Spezifikation oder das Verhalten eines Systems oder einer Schaltung oder eines Teils davon nach au en zu beschreiben Dabei interessiert nur das Was und kaum das Wie Bild 1 15 zeigt die funktionale Beschreibung eines einfachen dynamischen 1 12 1 Einleitung Schieberegisters in einer Hardware Beschreibungssprache Es besteht eine offensicht liche hnlichkeit zu h heren Programmiersprachen Der wesentliche Unterschied besteht darin dass paralleles Arbeiten sehr intensiv unterst tzt wird und dass hardware nahe Strukturen wie Wires oder Register besonders ber cksichtigt sind Ohne das Verhalten in Bild 1 15 im einzelnen analysieren zu wolle
169. enn nichts schiefgegangen ist wurde Ihr Addierer im vorigen Abschnitt synthetisiert platziert verdrahtet als Bitstrom verpackt und befindet sich nun tats chlich in Hardware auf dem FPGA des ML310 Daher liegt nichts n her als diese Hardware nun auch tats chlich laufen zu lassen und zu berpr fen Da trifft es sich gut dass die Entwicklungs Software Chipscope nicht nur Bitstr me downloaden kann sondern auch den in die FPGA Hardware integrierten Logikanalysator ILA steuern und seine Hardware Messergebnisse bequem am Entwicklungsrechner anzeigen kann Bild D 16 Virtex II Pro Software Hardware PowerPC Logikbl cke Chipscop 6 10 16 Bild D 16 Ergebnis Anzeige mit Chipscope Im Waveform Fenster in Bild D 17 listet Chipscope nach dem Download die 64 Datenbits DataPort 0 63 auf Die Definition dieser Leitungen befindet sich in der Datei system mhs Ihres XPS Projektes unter der Sektion BEGIN chipscope_ila Sie finden dort die Zeile PORT DATA APLUSB_DBG_IN amp APLUSB_DBG_OUT Die an DATA angeschlossenen Signale werden vom IP Core chipscope_ila des Logikanalysators aufgezeichnet der ebenfalls Teil Ihres XPS Projekts ist Das Zeichen amp bedeutet hier eine Konkatenation Demnach wird die Summe APLUSB_DBG_OUT der Addition den Bits 31 0 des DATA Signals zugeordnet w hrend die Summanden APLUSB_DBG_IN der Addition auf die Bits 63 32 abgebildet werden Bet tigen Sie in Chipscope nun den Kn
170. enspeicher gehalten bis der alte Wert von MIDDLE nach dem gleichen Schema gerettet wurde Auf die zweite Zeitverz gerung k nnte sogar verzichtet werden die zweite Pipeline Stufe w re dann aber nicht mehr erweiterbar 4 2 Pipelines und Register Transfer Logik 4 5 module flipflop_chain reg CPF reg 7 0 INPUT MIDDLE OUTPUT always posedge CP MIDDLE 1 INPUT always posedge CF OUTPUT 1 MIDDLE always INPUT MIDDLE OUTPUT display Zeit 2 0f INPUT OUTPUT amp h time INPUT MIDDLE OUTPUT always begin CP 0 10 CP 1 10 end initial begin INPUT 0 INPUT 255 INPUT 8 haa finish end endmodule Hee eee Beispiel 4 5 Flipflop Kette mit und 1 Den gleichen Effekt wie mit 1 k nnen wir in Beispiel 4 6 erreichen indem wir in Beispiel 4 5 das 1 durch die nichtblockende Zuweisung lt ersetzen V28 Denn auch darin steckt ein Warten zwischen der Aufnahme des Wertes der rechten Seite und der Zuweisung an die linke Seite zum Ende des Simulationsschrittes module flipflop_chain reg CP reg 7 0 INPUT MIDDLE OUTPUT always posedge CP MIDDLE lt INPUT always posedge CP OUTPUT lt MIDDLE al always INPUT MIDDLE OUTPUT Sdisplay Zeit 2 0f INPUT h MIDDLE Sh OUTPUT amp h time INPUT MIDDLE OUTPUT
171. enten Haus potenziell alle Ger te vernetzt und automatisch oder interaktiv gesteuert Mit der System Beschreibungssprache SystemC erforscht E I S im Hardware Software Codesign die komfortable Modellierung ganzer eingebetteter Systeme aus einem Guss bevor sie in komplexe Subsysteme zerlegt werden aus Standard Software die mit angepassten Spezial Chips kommuniziert F r die Entwicklung komplexer Autoradios hat E I S in Kooperation mit der Fa Blaupunkt eine statechart basierte Entwurfsmethodik entwickelt und getestet Chips berall daraus ergibt sich die wirtschaftliche Bedeutung fast von selbst Ist schon der deutsche Chip Markt mit den erw hnten 9 Milliarden Euro Umsatz im Jahr 2004 beeindruckend so ist er doch noch viel bedeutender als Basis oder Schl sseltechnologie f r einen fast hundert mal so gro en Markt an Produkten allein in den Branchen B ro und Datentechnik Elektrotechnik Maschinenbau Fahrzeugbau sowie Feinmechanik und Optik sorgen die Chips der Informatiker und Ingenieure f r 500 Milliarden Euro Umsatz und Jobs f r etwa 3 Millionen Menschen Bark02 1 2 Das exponenzielle Wachstum der Mikroelektronik Wie konnte es so weit kommen 1960 gelang es Jack Kilby erstmals zwei Transistoren und ihre Verbindungsleitungen auf einer einzigen Halbleiterscheibe unterzubringen die erste integrierte Schaltung Heute dagegen lassen sich mehrere Milliarden Transistoren als aktive Schaltelemente auf einem einzigen Chip int
172. er Wizard gestartet haben w hlen Sie ein Verzeichnis f r Ihr Projekt und best tigen Sie mit OK Der Base System Builder wird gestartet e W hlen Sie im Welcome Dialog would like to create a new design e Im Dialog Select Board w hlen Sie als Board Vendor Xilinx als Board Name Virtex II Pro ML310 Evaluation Platform und als Board Revision D aus Klicken Sie auf Weiter e Im Dialog Select Processor w hlen Sie PowerPC Klicken Sie auf Weiter E 3 Zusammenfassung von Lab 3 E 11 Nehmen Sie keine nderungen an den Default Einstellungen zu Frequenz und Debug Interface im n chsten Dialog vor aber stellen Sie unter On Chip Memory OCM f r Data und Instruction je 32 KB ein Klicken Sie auf Weiter Lassen Sie im folgenden Dialog lediglich das H kchen vor RS232_Uart stehen und entfernen Sie die brigen H kchen Klicken Sie auf Weiter Im anschlie enden Dialog soll nur LCD OPTIONAL ausgew hlt bleiben Klicken Sie auf Weiter Klicken Sie im Dialog Add Internal Peripherals auf den Remove Button um den BRAM zu entfernen Klicken Sie auf Weiter Im Dialog Software Setup entfernen Sie die H kchen vor Memory Test und Peripheral Self Test Klicken Sie auf Weiter Klicken Sie abschlie end auf Generate Fertig stellen OK XPS IP Core erstellen ohne DCR Anschluss Klicken Sie auf Tools Create Import Peripheral Klicken Sie auf Weiter W hlen Sie Import existing peripheral und klicken Sie zwei mal auf Weiter Step 1
173. ereits lohnen Dies wollen wir jetzt an einem Beispiel untersuchen D 4 1 Ein Multiplizierer Der Addierer aus Abschnitt D 3 wird gegen einen Multiplizierer ausgetauscht Dieser kann zwei vorzeichenlose 64 Bit Zahlen multiplizieren Das Ergebnis ist eine 128 Bit Zahl Der Multiplizierer arbeitet als Pipeline d h zu jeder steigenden Taktflanke k nnen neue Faktoren angelegt werden Die zugeh rigen Ergebnisse kommen am Ausgang mit einer Verz gerung von f nf Takten an Die Software testApp_amultb f hrt 10 000 Multiplikationen aus Dies tut sie zun chst unter Verwendung des Hardware Multiplizierers Pro Multiplikation werden die Faktoren an die Hardware bertragen die Berechnung des Ergebnisses wird abgewartet und anschlie end wird das 128 Bit Produkt zur ckgelesen Die Software misst die Zeit die insgesamt f r die 10 000 Multiplikationen einschlie lich Daten transfer ben tigt wird und gibt das Ergebnis ber die serielle Schnittstelle aus Anschlie end misst das Programm die Zeit die f r 10 000 entsprechende Software Multiplikationen gebraucht wird und gibt auch hier das Ergebnis aus D 4 2 Test Sie sollen nun das Programm auf dem ML3I10 testen Entpacken Sie d 4_wettlauf_zwischen_hardware_und_software zip in Ihr Home Verzeichnis und ffnen Sie das XPS Projekt Die Hardware ist bereits synthetisiert die Software compiliert Sie k nnen diese aber gerne auch selbst noch einmal mit XPS synthetisieren und compilieren falls
174. eressante Teil des XPS Projekts befindet sich in dem IP Core gamecontroller_0 Um Ihnen etwas Arbeit zu sparen haben wir schon mal ein paar Zeilen VERILOG geschrieben Sehen Sie sich die Quelltexte an Das Haupt modul ist gamecontroller in gamecontroller v Darin werden drei Submodule instanziert e dcr_if Dies ist die Schnittstelle zum DCR Bus ber die Anschl sse CPU2SLAVE und SLAVE2CPU stellt es zwei 32 Bit Register zur Verf gung D 6 Trigger Happy D 33 6 2 deren Inhalt von der Software gelesen SLAVE2CPU bzw durch die Software geschrieben werden kann CPU2SLAVE debouncer An dieses Modul werden die beiden Taster angeschlossen Die Wires PLAYER1 und PLAYER2 teilen mit ob Taster 1 oder Taster 2 gedr ckt wurde Intern sorgt debouncer daf r dass die Taster entprellt werden Bei mechanischen Tastern typische Schwingungen werden herausgefiltert um einen Tastendruck nicht versehentlich als mehrere Tastendr cke zu interpretieren Benutzen Sie als debouncer ihr eigenes Modul aus Aufgabe B 7 Sollten Sie diese Aufgabe nicht bearbeitet haben oder entspricht ihr Modul nicht den genauen Vorgaben so finden Sie im Archiv auch einen vorgefertigten Modul den Sie statt einer eigenen L sung benutzen k nnen gamelogic In diesem noch leeren Modul soll die fehlende Hardware implementiert werden Wir haben es bereits mit den Anschl ssen von dcr_if und debouncer verbunden so dass sie auf die Taster und den DCR Bus zugreifen k nnen Des W
175. erzeugt Zu beachten ist dass sich zur Zeit 20 REGISTER zweimal ndert dies aber nicht zu einer nderung von WIRE1 bzw WIRE2 f hrt da diese beiden nderungen innerhalb des initial Blocks ununterbrochen ausgef hrt werden sodass die parallel ablaufenden st ndigen Zuweisungen dies nicht bemerken 3 7 Sonstige Befehle 3 31 module assign_test reg REGISTER wire WIRE1 REGISTER implizites Continuous Assignment wire WIRE2 assign WIRE2 REGISTER explizites Continuous Assignment always WIRE1 display Zeit 2 0f WIRI sd time WIREL always WIRE2 display Zeit 2 0f WIRI d time WIRI initial begin EGISTER 10 EGISTER 10 EGISTER 0 REGISTER 1 10 finish end endmodule Te TS Ed DORNER Beispiel 3 35 St ndige Zuweisung Continuous Assignment 3 7 Sonstige Befehle V30 define Dies ist keine Anweisung im eigentlichen Sinne sondern eine Vorgabe an einen Pr prozessor berall im folgenden Programm Text zu ersetzen Den zu ersetzenden Zeichenketten ist ein voranzustellen Dadurch lassen sich besser lesbare Programme schreiben Unbedingt zu beachten ist dass es keine lokalen de fine Anweisungen gibt die nur innerhalb eines Moduls g ltig sind Ein define gilt vielmehr immer bis zum Programmende Werden mehrere Dateien hintereinander eingebunden so gilt es bis zur letzten Datei
176. ese und Schreibzugriff Ihre Aufgabe ist es diesen zu vervollst ndigen und zu testen Erg nzen Sie dazu die fehlenden internen Variablen und schreiben Sie die beiden always Bl cke die den RAM beschreiben und auslesen sowie den Tri State Buffer der den inout Port DATA beschreibt DATA dient als Schnittstelle die Daten zum Schreiben in den Speicher liefert bzw beim Lesen aus dem Speicher erh lt Geschrieben und gelesen wird im Speicher B 11 Teilbarkeit durch 3 B 23 an der Stelle ADDRESS allerdings nur bei bestimmten Belegungen der Input Wires berlegen Sie sich welche Belegungen diese sind timescale ins 1ps module ram_sp_ar_aw inout wire 7 0 DATA input wire 7 0 ADDR input wire WRITE_E input wire OUTP i Interne Variablen Tri State Pufferkontrolle Speicher schreiben Speicher lesen endmodule Beispiel B 29 Vorgabe f r den RAM B 11 Teilbarkeit durch 3 Entwerfen Sie ein Modul divide_by_3 das pr ft ob die Anzahl der Takte die in Ihrer Simulation vergehen durch 3 teilbar ist Der Testrahmen ist bereits vorgegeben Ein Reset ist ebenfalls vorgesehen Es sollen alle vollst ndigen Takte nach dem Reset gez hlt werden Vorgehensweise e Inputs wire CLK RESET Output wire DIVABLE_BY_3 e Z hlen Sie zur Kontrolle in einem weiteren Register COMPLETE_CLOCK komplette Takte mit module divide_by_3_test reg RESET CLK wire DIVABLE_B
177. estens 32 Bit Variablen des Typs wire k nnen pro Bit die Werte 0 1 x unbestimmt und z hochohmig annehmen Die Breite kann in Bit angegeben werden indem sie der Liste 3 18 3 Die wichtigsten Befehle von VERILOG mit den Variablennamen vorangestellt wird Sie ist dann f r die ganze Liste gleich Ein Wire stellt ein Verbindungsnetz zwischen mehreren Punkten dar Ein Wire kann nicht speichern und daher keinen direkten Wert zugewiesen bekommen Wohl aber kann er einen Wert durch eine st ndige Zuweisung Continuous Assignment V29 assign erhalten Durch die Instanzierung eines Untermoduls in einem Modul werden die Leitungen in der Parameterliste des Untermoduls mit denen des Moduls verbunden dies entspricht ebenfalls einer st ndigen Zuweisung Wurde dem Wire ein Register durch eine der oben angef hrten Zuweisungsalternativen zugewiesen so kann der Wert des Wire durch eine Zuweisung an das zugeh rige Register gesteuert werden Das Hauptmodul main im Beispiel 3 21 instanziert ein Modul A vom Typ a und entsprechend B Die Instanz A generiert Rechteckimpulse der Periode 20 f r die anderen Module Da sie die Variable CLOCK_A beschreibt muss diese einen zugewiesenen Wert speichern k nnen und daher ein Register sein V18 Durch die Instanzierung a A CLOCK_MAIN wird das Register CLOCK_A von A mit dem Wire CLOCK_MAIN des Hauptmoduls verbunden Bild 3 20 CLOCK_MAIN darf nicht vom Typ reg sein da bereits CLOCK_A eine Registervar
178. fparam Counterl Max 5 Parameter explizit definiert counter Counterl counter 10 Counter2 Parameter bei Instanzierung endmodule main Beispiel 3 5 Parameter Ein always Block f hrt die auf always folgende Anweisung immer wieder aus Er wird gleichzeitig zu allen anderen always und initial Bl cken V5 ausgef hrt Daher arbeiten alle diese Anweisungen parallel Abschnitt 4 1 Der algorithmische Teil eines Moduls wie in Bild 3 1 besteht aus always und initial Bl cken W hrend always Bl cke oft Schaltungsteile darstellen werden initial Bl cke haupts chlich in Testmodulen verwendet Ein always Block wird h ufig durch eine Eintrittsbedingung oder Sensitivit ts liste gestartet always COUNTER V7 Sollen alle Lesevariablen des Blockes zur Sensitivit tsliste geh ren kann man kurz always schreiben module always_test reg 3 0 COUNTER always COUNTER Sdisplay COUNTER Aenderung always COUNTER begin Sdisplay Zeit 2 0f time display COUNTER d COUNTER end always begin if COUNTER erster Durchlauf Initialisierung COUNTER else COUNTER if COUNTER finish Simulationsende nach 5 Laeufen 10 10 Zeiteinheiten warten end endmodule 3 6 3 Die wichtigsten Befehle von VERILOG Beispiel 3 6 Parallele always Bl cke Die Anw
179. ftreg CLOCK 1 E test_shiftreg DATA 01110110 01110110 lf Now 260000 ps Cursor 1 Ops a 2 Ki RI I Eel wave l l Bild B 23 Waveform Ansicht in ModelSim Klicken Sie in das Waveform Fenster und bet tigen dann solange Zoom Out Bild B 24 bis Sie die Variation im CLOCK Signal deutlich sehen k nnen Bild B 25 B 6 Parametrisiertes Schieberegister B 17 Bild B 24 Zoom Out Button Mw wave default 4 test_shiftreg DIN 4 test_shiftreg CLOCK 1 E test_shiftreg DATA 0110 11011000 _ 11101100 YOTI 260000 ps Bild B 25 Waveform nach Zoom Out Scrollen Sie dann nach links bis zum Zeitpunkt 0 der Simulation Sie sehen wie sich das Register DATA zu jeder steigenden Taktflanke mit einem weiteren Datenbit f llt Sobald keins der Bits mehr den unbestimmten Wert x enth lt wird der Signal verlauf in gr n dargestellt W hlen Sie ein oder zwei Stellen in den Stimuli des Testrahmens aus und versuchen Sie diese Stellen im grafischen Signalverlauf wiederzufinden In anderen Simulationen kann es sinnvoll sein sich die Waveforms statt bin r in einem anderen Zahlenformat anzusehen Probieren Sie eine hexadezimale Darstellung des Signals DATA aus durch Rechtsklick auf DATA Radix Hexadecimal ndern Sie die Darstellung danach wieder auf bin r Sie k nnen weitere Signale als Waveform betrachten indem Sie im Workspace Fenster eine Modulinstanz anklicken und dann rechts im Objects Fenster a
180. gedr ckt wurde Die Hardware muss ein Register zur Verf gung stellen aus dem die Software auslesen kann welcher Taster zuerst gedr ckt wurde Beim Addierer haben wir diese Kommunikationsform eingesetzt um das Ergebnis der Addition auszulesen e Hardware benachrichtigt Software Diese Kommunikationsform ben tigen wir wenn eine Taste gedr ckt wurde Die Hardware l st einen Interrupt aus und weist damit den PowerPC an einen daf r bestimmten Software Prozess den Interrupt Handler zu starten Wir haben es also mit drei typischen Verfahren der Hardware Software Kommunikation zu tun Die ersten beiden sind Ihnen schon bekannt wir K nnen sie auf dem ML310 leicht ber den DCR Bus realisieren Ein Interrupt als drittes Verfahren ist Neuland Der PowerPC bietet hierzu einen Interrupt Eingang als speziellen Pin Mit der Methode initInterrupt in Beispiel D 34 wird eine Software Methode als Behandlung von Interrupts deklariert Interrupt Handler Der PowerPC ruft anschlie end automatisch die Methode irgHandler auf wenn das Signal an seinem Interrupt Pin von 0 auf 1 wechselt D 32 D Lab 3 Hardware Software Codesign auf dem ML310 Die Interrupt Handler Methode void irqHandler void not_in_use Initialisieren des PowerPC Interrupt void initInterrupt Initialisieren des Exception Handling XExc_Init Register Interrupt Handler XExc_RegisterHandler XEXC_ID_CRITICAI XExceptionHandler irqHandler NU
181. gendem Schema dargestellt 1 Name oder Bedeutung der Befehlsgruppe nummeriert mit V1 V2 2 verbale Beschreibung 3 kurzes Beispiel Es gibt folgende Gruppen Modulstruktur V1 module endmodule V2 input output inout V3 parameter defparam V4 always V5 initial Zeitkontrollen V6 Warten V7 at V8 wait klassische Programmsteuerung V9 task endtask V10 function endfunction V11 aif else V12 V13 case casez V14 while V15 for Variablen und Konstanten V16 integer V17 wire V18 reg V19 Felder von Variablen V20 Konstante Operationen V21 Arithmetik V22 Vergleich Is ee lt gt V23 Logik amp amp V24 Bit weise Logik amp V25 Konkatenation V26 Shift lt lt gt gt Zuweisungen V27 Blockende Zuweisung V28 Nichtblockende Zuweisung lt V29 assign St ndige Zuweisung Continuous Assignment sonstige Befehle V30 define V31 Sdisplay Swrite V32 Sfinish V33 Sreadmemh readmemb 3 2 3 Die wichtigsten Befehle von VERILOG 3 1 Modulstruktur Vi module endmodule Die Module stellen die grundlegenden Bausteine von VERILOG dar Sie repr sen tieren kleine oder gro e Hardware Komponenten wie AND Gatter Z hler CPU oder ein ganzes Rechnernetz A B iS ar a 38 oe n o Wire W2 3 J o oO B 09T sE gt 3 NEES Untermodul P Untermodul ocsi Q Z580 always posedge CLOCK initial always g x 3 begi
182. gezeichneten Daten an den PC ILA Core instanzieren und verbinden ila Ila CONTROL CLK DATA TRIGGER 0 endmodule Bild 7 24 Einf gen eines integrierten Logik Analysators mit VERILOG 7 5 3 Schnittstelle zwischen Hardware und Software Die Schnittstelle zwischen Hardware und Software spielt beim HW SW Codesign eine zentrale Rolle Bild 7 3 Im Vergleich zu Standard PCs sind eingebettete Systeme typischerweise mit vielf ltigeren und oft exotischen Peripherie Schnittstellen ausgestattet da sie als Steuerger te und Sensorsysteme in ganz anderen Umgebungen als der PC unter dem Schreibtisch eingesetzt werden Bussysteme wie CAN LIN und FlexRay f r die Kommunikation von Steuerger ten im Automobil sind nur ein Beispiel Weitere Beispiele sind die Ankopplung von Sensoren Aktoren und Bedien Panels ber Spezialschnittstellen etwa in der Medizintechnik oder der Roboter steuerung oder die Anbindung eines bildgebenden CCD Chips in Digitalkameras FPGAs wie der Virtex II Pro sind sehr gut geeignet solche Spezialschnittstellen mit weniger Kosten Aufwand anzusteuern als ein Spezialbaustein Die notwendigen Controller entwickeln wir dazu in VERILOG und SystemC Die Hardware Anbindung ist damit realisiert aber wie k nnen die verschiedenen Netzwerke Sensoren und Aktoren nun mit unserer Software verwendet werden Der Hardware Software Schnittstellen Entwurf besch ftigt sich mit dieser Frage Die Schwierigkeit liegt vor allem dar
183. heterogene Systeme aus diversen Hardware und Software Bausteinen die oft als eingebettete Systeme ihre Anwendung finden Ein typisches Anwendungsbeispiel ist das Kraftfahrzeug das in der Oberklasse etwa 100 Mikro prozessoren und Spezialchips enth lt Weitere Anwendungsfelder finden sich in Abschnitt 7 3 7 2 7 Hardware Software Codesign 7 1 Hardware Software Bausteine Eine Systeml sung durch einen universellen Rechner wird gew hnlich als reine Software L sung bezeichnet obwohl nat rlich die Rechner Hardware dazu geh rt Umgekehrt wird ein FPGA gew hnlich als Hardware L sung bezeichnet obwohl auch sie die software m ige Programmierung der realisierten Schaltung enth lt In diesem Sinne besteht ein Hardware Software System aus Software auf einem Standard Baustein und ma geschneiderter Hardware die programmierbar sein kann 7 1 1 Software Der Software Anteil eines Hardware Software Codesigns kann auf Universalrechnern realisiert sein auf Mikrocontrollern durch digitale Signalprozessoren oder auch durch ASIPs Application Specific Instruction Processor Die bekannten Universalrechner wie PCs oder Workstations zeichnen sich durch Vielseitigkeit aus Obwohl die zugrunde liegende Hardware auf h chste Leistung optimiert ist sind darauf realisierte Programme oft nicht sonderlich effizient Wegen der komplexen Betriebssysteme sind sie f r Echtzeit Anwendungen schlecht geeignet Universalrechner erfordern einen sehr hohen En
184. hler ausgibt z B w hrend einer Synthese Die beiden roten Markierungen heben zwei sehr wichtige Funktionen hervor die Bitstrom Generierung oberer Button und die Anzeige der Hardware Modulinstanzen und ihrer Verdrahtungen untere Ellipse Um den Addierer in das Projekt einzubauen muss zun chst ein Intellectual Property Core IP Core aus dem Addierer erstellt werden IP Cores dienen dazu benutzerspezifische Schaltungen HDL Code wie auch Netzlisten und deren Schnitt stellen in einem einheitlichen Format zu beschreiben W hlen Sie im Men Tools den Punkt Create Import Peripheral Der sich ffnende Dialog in Bild D 5 fragt Schritt f r Schritt die Einstellungen f r Ihren IP Core ab D 1 Hardware bauen und testen D 5 Create and Import Peripheral Wizard xj Welcome to the Create and Import Peripheral Wizard This wizard will help you create or import a user peripheral for use in processor systems developed using the EDK rATTENTION Refer to the following documents to get a better understanding of how user peripherals connect to the CoreConnect TM buses through the IPIF interconnection standards OFB IPIF Specification for slave only peripherals OPB IPIF Specification for master slave peripherals PLB IPIF Specification for slave only peripherals PLB IPIF Specification for master slave peripherals To continue click Next Bild D 5 More Info Feta sielen Abbrechen Dialog zum Erstellen ei
185. hre Bit Breite angegeben werden durch zwei Intervallgrenzen in eckigen Klammern vor der Variablendefinition A 31 greift auf Bit 31 von A zu Die Anweisung always f hrt den nachfolgenden Block immer wieder aus Erreicht der Simulator die Bedingung A B so wird erst dann ein neuer Durchlauf des always Blockes gestartet wenn sich mindestens eine der Variablen A oder B ge ndert hat seit dem Zeitpunkt als der Simulator die Bedingung erreichte Beispiel 2 4 zeigt das Modul parallel_blocks Im Gegensatz zu blichen Programmiersprachen mit sequenziellem Programmablauf arbeiten die Komponenten einer realen Schaltung alle parallel Hierf r stellt VERILOG etliche Konstrukte bereit zwei parallele Bloecke module parallel_blocks initial begin display display end initial begin display display end endmodule Beispiel 2 4 Zwei parallele Bl cke Die beiden initial Bl cke in parallel_blocks werden parallel aus gef hrt Dies bedeutet dass sie in beliebiger Reihenfolge dann aber nur nacheinander ausgef hrt werden Der Programmierer darf sich nicht auf eine bestimmte Reihenfolge verlassen Bei mehrfacher Ausf hrung des gleichen Programms wird jedoch stets die gleiche Reihenfolge gew hlt Weiterhin ist garantiert dass die Anweisungen innerhalb eines Blockes sequenziell bearbeitet werden ohne dass in der Zwischenzeit ein anderer Block bearbeitet wird es sei denn es wird eine Zeitkontrolle erreicht Bedingung
186. iable ist Die Instanzierung b B CLOCK_MAIN CLOCK_MAIN_2 verbindet den Wire CLOCK_B mit dem Wire CLOCK_MAIN des Hauptmoduls und damit mit dem Register CLOCK_A CLOCK_B muss ebenfalls vom Typ wire sein da er indirekt mit dem Register CLOCK_A verbunden ist Durch solche Zuweisungen k nnen sich also Ketten von Wires ber mehrere Module hinweg bilden Dabei ist jedoch nur der Anfang der Kette ein Register alle anderen Leitungen sind Wires Jeder Wire kann nat rlich seinen momentanen Wert durch eine normale vor bergehende Zuweisung an Register bergeben V27 V28 CLOCK_MAIN CLOCK_MAIN_2 wire CLOCK B 2 reg wire CLOCK_B CLOCK_A reg Modul A Modul B Bild 3 20 Wires verbinden Module 3 4 Variablen und Konstanten 3 19 module a output reg CLOCK_A t always begin CLOCK_A 0 Clock auf 0 setzen 10 10 Zeiteinheiten warten CLOCK_A 1 Clock auf 1 setzen 10 10 Zeiteinheiten warten end endmodule a module b input wire Cl Haupttakt output reg CI halb so schneller Takt i always begin CLOCK_B 2 0 Crock auf 0 CLOCK_B zwei Haupttakte warten CLOCK_B CLOCK_B_2 1 Clock auf 1 CLOCK_B zwei Haupttakte warten CLOCK_B end endmodule b module main wire CLOCK_MAIN LOCK_MAIN_2 A LOCK_MAIN Instanzen B LOCK_MAIN CLOCK_MAIN_ 2 a b always CLOCK_MAIN display CLOCK_MAIN always CLOCK_MAIN_2 display
187. ich Ein dreidimensionales Feld aus 16 Bit Registern definiert beispielsweise reg 16 1 B 1 100 1 200 1 300 Dabei kann statt 1 100 auch 100 1 verwendet werden 3 4 Variablen und Konstanten 3 21 V20 Konstante Konstanten k nnen zu unterschiedlichen Basen gebildet werden Wird keine Basis angegeben wird 10 verwendet Es sind die Basen 2 b 8 o 10 d oder gar nichts sowie 16 h m glich Mit der Angabe einer Konstantenbreite wird die Angabe einer Basis zwingend Die Breite der Konstante wird der Basis als Dezimal zahl vorangestellt Es sind lediglich die Ziffern der gew hlten Basis zul ssig bei der Basis 2 etwa nur 0 und 1 sowie die Zeichen x z und _ Den Wert hochohmig stellt z dar Als unbestimmt wird x interpretiert Das Zeichen _ dient nur der besseren Lesbar keit Die Bedeutung von z und x wird in Beispiel 3 24 n her erl utert Im Beispiel 3 23 werden dem Register DATA einige typische Konstanten zuge wiesen und ausgegeben Die Formatierung ist nicht mehr d sondern b zur Ausgabe einer Bin rzahl module constant_example reg 7 0 DATA initial begin DATA dezimal dezimal dezimal dezimal dezimal 0 display 10 display h10 display b10 display 255 display 1 bl display bxxxxzzzz display p1010_1010 display 1 bz display bz display 00000000 00001010 00010000 00000010 11111111 00000001 XXXXZZZZ 10101010 0000000z ZZZZZZZZ
188. ick Den eingebetteten Systemen geh rt die Zukunft ist die typische Antwort wenn man Marktanalysten nach dem Quo Vadis der Computerindustrie fragt Hardware Software Codesign ist sicher eine Schl sseltechnologie auf diesem Gebiet Viele Schwierigkeiten beim Entwurf eingebetteter Systeme k nnen mit Hilfe der vor gestellten Entwurfswerkzeuge bereits leichter bew ltigt werden als noch vor wenigen Jahren Aber das grunds tzliche Problem ist die entwurfsmethodisch bedingte Kluft zwischen Hardware und Software die durch verschiedene Programmiersprachen andere Vorgehensweisen und unterschiedliche Tools entsteht vor allem aber auch durch die gro e Vielfalt von realer Hardware Zwar gibt es mehr und mehr Konzepte mit denen Hardware und Software besser verschmolzen werden die j hrlichen Erfahrungsberichte der Industrie zeigen aber dass die meisten Probleme immer noch bei der Integration von Hard und Software f r ein neues Produkt entstehen Viele Entwickler sehnen sich daher nach einer M glichkeit moderne Software Techniken wie UML und objektorientierte Programmierung f r Hardware und Software gemeinsam verwenden zu k nnen Intensiv erforscht werden deshalb System Beschreibungssprachen besonders das aus C hervorgegangene SystemC mit dem das gesamte eingebettete System aus einem Guss erstellt werden kann Dabei werden zun chst alle Systemkomponenten in SystemC modelliert unabh ngig davon ob es sich sp ter um Hardware oder
189. iden PowerPCs die f r die Benutzerschnittstelle und die Funktions steuerung der Digitalkamera zust ndig sind USB On Chip Peripheral Bus OPB Interrupt Foto Controller Sensor CompactFlash Controller Display Controller OPB Arbiter PowerPC CPU 2 PLB Arbites Processor Local Bus PLB BRAM On Chip Speicher Speicher Controller Hauptspeicher DDR RAM Bild 7 10 Blockschaltbild des Digitalkamera Systems An die Stelle der einfachen Punkt zu Punkt Verbindungen des JControl Systems treten in diesem Beispiel die On Chip Busse PLB und OPB Abschnitt 6 4 5 mit denen ein geregelter und effizienter Zugriff auf die gemeinsam genutzten System ressourcen m glich wird Angepasste Busprotokolle garantieren eine schnelle Daten bertragung f r Systemfunktionen mit hoher Priorit t wie etwa die Aufnahme und JPEG Kompression eines Fotos mit anschlie endem Speichern auf der CompactFlash Karte Tabelle 7 11 vermittelt einen Uberblick zu den verschiedenen Komponenten des Digitalkamera Systems Sie lassen sich alle auf der FPGA Plattform Virtex II Pro realisieren die durch ihre CoreConnect Busarchitektur Abschnitt 6 4 5 und die beiden PowerPC Prozessoren sehr gut geeignet ist einen Prototyp des Systems zu entwickeln So k nnen umfangreiche Tests lange vor der tats chlichen Fertigung des endg ltigen Produkts durchgef hrt werden Eine einfach zu handhabende und sehr komfortable Entwick
190. ie nach fehlerfreiem Ablauf die Ausgabe aus Beispiel D 22 bss dec hex filename 8196 11154 2b92 testApp_adder executable elf Beispiel D 22 Erfolgreiche Software Compilierung D 18 D Lab 3 Hardware Software Codesign auf dem ML310 D 2 4 Test auf dem ML310 Hardware und Software sind vorbereitet Sie k nnen die Anwen dung nun auf dem PowerPC des Virtex II Pro auf dem ML310 testen Das Ergebnis k nnen Sie sich auch hier wieder vom Logikanalysator an zeigen lassen XMD Debug Options 2 x Processor Jppc405_0 7 Architecture PowerPC Connection Type Simulator Hardware Stub virtual platform On Chip Hardware debugging over JTAG cable JTAG Cable Type Parallel Cable Iv Parallel Cable III Lieferer Advanced Options Read only Memory Addr l Size MicroBlaze Stub C Serial JTAG Serial Port 7 PowerPG Hardware 5 ZMD Memory map for PPG405 features UnUsed Memory Addr IGache Addr Baud Rate Tag DCache Addr PowerPG Simulator DTag Gonfiguration File DER Addr l TLB Addr ISOCM Addr v Auto Discoyer JTAG Chain Definition _ No Device Name code IR Length J 20i Delete Bild D 23 ce Einstellen der XMD Optionen berpr fen Sie ob das ML310 eingeschaltet ist und laden Sie den Bitstrom mit Chipscope auf das FPGA Anschlie end k nnen Sie die Software in den RAM Speicher des ML310 programmieren und zwar unter Verwe
191. igger Setup Waveform Window Help ob TISS F eA z qone New Project Trigger Setup DEV 1 MyDevice1 XC2VP30 UNIT 0 MyiLAO ILA JTAG Chain x DEV 0 MyDeviced System_ACE Function Counter DEV 1 MyDevice1 XC2VP30 exa INe k UNIT O MyILAO ILA Trigger Setup Add Active Trigger Condition Name Trigger Condition Equation Output Enable Waveform l TriggerConditiond MO Disabled Listing Bus Plot Type window e windows a oep z Pomon d Signals DEV 1 UNIT 0 Waveform DEV 1 MyDevice1 XC2VP30 UNIT 0 MyILAO ILA Data Port APLUSB_DBG_IN APLUSB_DBG_OUT gt APLUSB DBG IN Tel Bus Signal xo CH 0 DataPort 0 APLUSB DBG OUT CH 1 DataPort 1 zn CH 2 DataPort 2 DCR_Write CH 3 DataPort 3 u CH 4 DataPort 4 CH 5 DataPort 5 CH 6 DataPort 6 CH 7 DataPorf CH 8 DataPort 8 CH 9 DataPort 9 CH 10 DataPort 1 0 CH 11 DataPort 11 CH 12 DataPort 12 CH 13 DataPort 13 CH 14 DataPort 14 CH 15 DataPort 15 CH 16 DataPort 16 CH 17 DataPortf17 CH 18 DataPort t 8 CH 19 DataPort 1 9 CH 20 DataPort 20 CH 21 DataPort 21 CH 22 DataPort 22 CH 23 DataPort 23 CH 24 DataPort 24 CH 25 DataPort 25 CH 26 DataPort 26 CH 27 DataPort 27 CH 28 DataPort 28 CH 29 DataPort 29
192. in die komplexen Hardware Eigenschaften hell of physics elegant in die abstrakte Welt der Software heaven of software abzubilden Hierf r kommen typischerweise zwei Verfahren in Frage Memory Mapping und Interrupts Weiter unterscheidet man zwischen direkten und Shared Memory Datentransfers sowie dem Direct Memory Access DMA Solche Fragen 7 28 7 Hardware Software Codesign wollen wir im Folgenden genauer untersuchen Generell spielen bei der Kopplung die Datenrichtung eine Rolle von der Software zur Hardware oder umgekehrt und der Initiator des Datentransfers Software oder Hardware 7 5 3 1 Memory Mapping Memory Mapping oder auch Address Mapping ist eine einfache und gebr uchliche Schnittstelle zwischen Hardware und Software Sie beruht auf der Erkenntnis dass jedes Software Programm oder zumindest das Betriebssystem auf beliebige Bereiche im Hauptspeicher zugreifen kann indem es einfach Variablen schreibt oder liest die auf den gew nschten Speicherbereich verweisen Um nun den Zugriff auf FPGA Register zu erm glichen m ssen diese Register lediglich in den Speicherbereich des Prozessors eingeblendet werden es wird quasi eine Speichererweiterung vor gegaukelt Die Software kann anschlie end auf einen erweiterten Adressbereich zugreifen wobei sie entweder tats chlich mit dem Hauptspeicher kommuniziert oder aber mit einer Hardware Komponente auf dem FPGA 0x20000000 Hauptspeicher 512 MByte Virtex I
193. in der Sektion name_des_IP_cores zwischen den beiden Zeilen BUS_INTERFACE SDCR dcr_v29_0 END folgendes ein PORT nRESET sys_rst_s PORT CPU_CLK sys_clk_s PORT DBG_IN APLUSB_DBG_IN PORT DBG_OUT APLUSB_DBG_OUT PORT DBG_DCR_WRITE DBG_DCR_WRITE e Korrigieren Sie die Zeile PARAMETER C_DCR_HIGHADDR 0b000000000011 indem Sie zwei der Nullen hinter dem b l schen XPS IP Core mit DCR Lese und Schreibzugriff verdrahten e ffnen Sie die Datei system mhs indem Sie im Projektfenster doppelt auf den Eintrag MHS File system mhs klicken e Verdrahten Sie den Reset und Clock Port durch Hinzuf gen der folgenden zwei Zeilen in der Sektion name_des_IP_cores PORT nRESET sys_rst_s PORT CPU_CLK sys_clk_s e Korrigieren Sie die Zeile PARAMETER C_DCR_HIGHADDR 0b000000000011 indem Sie zwei der Nullen hinter dem b l schen E 3 Zusammenfassung von Lab 3 E 15 XPS Bitstrom generieren e Klicken Sie in der dritten Button Zeile auf den elften Button der einen Zettel mit Einsen und Nullen darstellt oder klicken Sie auf Tools Generate Bitstream e Es ist sehr wichtig dass Sie bei dem 5 bis 10 min tigen Vorgang auf Fehler ausgaben in der Konsole achten Eine erfolgreiche Bitstromgenerierung endet mit der Meldung in Beispiel E 8 DRC detected 0 errors and 6 warnings Saving bit stream in system bit Creating bit mask Saving mask bit stream in system msk Bitstream generation is co
194. ine nicht verbundene Modulschnittstelle werden angezeigt und k nnen teilweise automatisch behoben werden 7 22 7 Hardware Software Codesign Xilinx Platform Studio K work Video_XUP video_capture_rev_1_1 system xmp System Assembly View1 ei b Eile Edit View Project Hardware Software Device Configuration Debug Simulation Window Help D3BB2 8 RR H s ag BB A BHIBER BB ANS ioe sw x Rice ei eenogay Project Information Area Project Applications IP Catalog Analog Bus der_v29 1 00 dsocm_v10 2 00 8 fsl_v20 2 00 8 isocm_v10 2 008 Imb_v10 1 003 plb_v34 1 01 plb_v34 1 022 pH Bus Bridge H Clock Control Communication High Speed H Communication Low Speed Debug J DMA FPGA Recorfiguration 9 General Purpose IO Interrupt Control Memory Block Filters Bus interface O Ports O Addresses Name Dppc405_0 Sppc405_1 ol lt opb dsocm_v10_0 gt Soplb2opb Phtagppc_0 S232 2 amp amp J PAPPP 0 0 SS SS amp dsbram_f_cntir_0 Preset_block pib_brem_ _cntir_1_bram Ddcm_0 gt dcm_1 Preset_spiit and_gate_0 Di2c_rst_or Pbrem_block_0 IP Type IP Version ppc405 dsocm_v10 plb2opb_bridge Ragppc_entir opb_uartite opo _sysace dsbram_ _cntr 3 00 a proc_sys_reset 1 002 bram_block 1 002 dem_module 1 03 dem_module 1 0 3 util_bus_split 1 00 4 util_reduced_logic 1 00 2 util_reduced_logic 1 00 a bram_block 1 00 2 3 Memory Controller Legend p PCI CO Master O Sla
195. ipScope Software ML310 JTAG Konnektor FPGA mit Design Under Test und integriertem Logic Analyzer ILA Bild 7 22 Hardware Verifikation mit integriertem Logik Analysator ILA Sich den gesamten Datenverkehr auf den tiberwachten Signalen anzusehen ist wenig sinnvoll da die wirklich interessanten Stellen dann nur schwer im Datenwust zu finden sind Typischerweise triggern wir deshalb auf eine Signalflanke wobei meist mehrere Signale auf einmal betrachtet werden um z B einen bestimmten Zustand einer State Machine zu erkennen So ware es etwa im Addierer Beispiel aus Bild 7 21 sinnvoll auf die positive Flanke des Signals DCR_WRITE zu triggern um jeden Schreibzugriff auf den Addierer und den nachfolgenden Signalverlauf wahrend der Addition zu beobachten Weniger hilfreich dagegen w re das Triggern auf das Signal CPU_CLK denn dieses ndert sich in jedem Taktzyklus unabh ngig vom Zustand des Addierers Durch Verketten von Triggerbedingungen k nnen schlie lich auch ganze Datensequenzen beschrieben werden so dass der Logik Analysator nur bei Auftreten einer ganz bestimmten Zustandsreihenfolge ausl st ChipScope Pro Analyzer chipscope 15 x File View JTAG Chain Device Trigger Setup Waveform Window Help Qati S 2A m Pr 4 Project chipscope N Trigger Setup DEV 1 MyDevice1 XC2VP30 UNIT 0 MyILAO ILA JTAG Chain DEV 0 MyDevice0 System_ACE Match Unit Function Radix Counter 9 DEV 1 MyDevice1 lt C2VP3
196. ir im n chsten Kapitel genauer eingehen werden 6 4 7 Rekonfiguration In Abschnitt 6 4 1 hatten wir die spaltenweise Anordnung der Logikbl cke Block speicher und Multiplizier Einheiten er rtert F r die Programmierung oder Rekonfi guration dieser Elemente werden alle Spalten als Boundary Scan hintereinander geschaltet und mit einem seriellen Konfigurations Bitstrom geladen Neu ist dass 6 22 6 Programmierbare Logikbausteine dabei nicht nur das gesamte FPGA auf einmal sondern auch eine Auswahl von Spalten rekonfiguriert werden kann Bei dieser partiellen Rekonfiguration l uft der Rest des Systems ungest rt weiter so dass beispielsweise bei einem Video Dekoder je nach Bedarf der passende Dekompressions Algorithmus nachgeladen werden kann W hrend Standard Bitstr me mit der ISE Entwicklungsumgebung Kapitel C aus jeder RTL Netzliste komfortabel erzeugt werden k nnen sind partielle Bitstr me allerdings noch problembehaftet und Gegenstand aktueller Forschung Zum Beispiel muss sichergestellt werden dass Signale an den R ndern des rekonfigurierten Bereichs korrekt mit der Umgebung verbunden werden was eine exakte Kontrolle des Platzierungs und Verdrahtungsprozesses erfordert Zum Schutz vor Reverse Engineering Ausspionieren des teuer entwickelten System on Chip kann der Bitstrom mit dem DES Verfahren verschl sselt werden Die Entschl sselung wird auf dem FPGA mit einem nicht fl chtig einprogrammierten DES Schl sselsatz vorgen
197. it OK Korrigieren Sie in der Datei system mhs den Parameter C_DCR_HIGHADDR des Addierer Moduls wie in Abschnitt D 2 2 auf Ob0000000011 und verdrahten Sie seinen Reset und Clock Port durch Hinzuf gen der folgenden zwei Zeilen PORT nRESET sys_rst_s PORT CPU_CLK sys_clk_s Erzeugen Sie dann den Bitstrom fiir das FPGA D 3 3 Fertigstellen der Software Auch das Software Projekt in XPS sollen Sie diesmal selbst erstellen Erzeugen Sie in Ihrem XPS Projektverzeichnis auf der Festplatte einen Ordner testApp_adder und kopieren Sie die f nf C Quelltextdateien dort hinein die Sie im Ordner c des D 3 Hardware antwortet Software D 25 entpackten Zip Archivs finden Die Dateien 1Icd_functions h und lcd_functions c enthalten Funktionen zur Ansteuerung des LCD Displays uart_functions h und uart_functions c stellen entsprechende Funktionen f r die Ausgabe ber die serielle Schnittstelle bereit Das Hauptprogramm befindet sich intestApp_adder c int main int argc char argv UART Instanz zur seriellen Kommunikation XUartLite uartLite Strings zur Ausgabe auf dem LCD char linel 17 line2 17 CPU sendet Daten an den Addierer unsigned int writeData a b CPU liest Daten vom Addierer unsigned int readData LCD UART Initialisierung lced_init uart_init amp uartLite Argumente fuer den Addierer 0x000a 0x0008 a b writeData b lt lt 16 Ausgabe der Argumente auf dem LCD strc
198. it kritisch sind und auch keine besondere Dienstg te oder Ausfallsicherheit garantiert werden muss kann der Systemaufbau mit sehr einfachen Mitteln erfolgen 7 4 2 Eingebettetes System f r eine Digitalkamera Bild 7 10 zeigt den m glichen Aufbau eines eingebetteten Systems f r eine digitale Fotokamera auf Basis der FPGA Plattform Virtex II Pro aus dem letzten Kapitel Die Kamera nimmt kontinuierlich Bilder mit dem digitalen Fotosensor auf und stellt diese auf einem LC Display dar Informationen zu Fokus Blende Ausl sezeit Aufnahme modus etc werden gleichzeitig eingeblendet und kontinuierlich aktualisiert Dr ckt der Benutzer auf den Aufnahmeknopf speichert das eingebettete System das aktuelle Bild als JPEG Datei auf einer CompactFlash Karte Dabei sollte m glichst keine Ausl severz gerung bemerkbar sein Schlie t der Benutzer die Kamera an einen Computer oder Fernseher an soll das Live Kamerabild auch auf diesem zu sehen sein Im Gegensatz zur JControl Steuereinheit aus dem vorherigen Abschnitt haben wir es hier mit Echtzeit Anforderungen und einer konkurrierenden Nutzung gemeinsamer Ressourcen durch verschiedene Systemkomponenten zu tun Gleich mehrere unabh ngige Systembausteine Display JPEG Encoder USB Schnittstelle TV Ausgang greifen gleichzeitig auf den Speicherbereich zu der das 7 4 Beispiele f r eingebettete Systeme 7 13 aktuelle Kamerabild beinhaltet Parallel dazu laufen verschiedene Software Prozesse auf den be
199. iven Rechnern kann die momentane FPGA Schaltung jederzeit durch eine v llig andere ersetzt werden So kann sich jedes Anwendungsprogramm in Sekundenbruchteilen seinen ma geschneiderten Coprozessor w nschen und bekommen Auch in finanzieller Hinsicht sind FPGAs fast ideal da die Entwicklungszeit nicht die Fertigungszeit von einigen Wochen bis Monaten enth lt und da die Anfangsinvestition nur aus den Entwurfskosten besteht w hrend die Materialkosten je Prototyp zwischen einhundert und einigen tausend Euro liegen im Gegensatz zu 10 000 bis einer Million Euro f r die erste Fertigung von Bausteinen vergleichbarer Komplexit t Schlie lich macht die sofortige und wiederholbare Programmierbarkeit FPGAs zum geradezu idealen Trainingsobjekt in der Lehre Erfreulicherweise wird dabei nicht nur der spezielle FPGA Entwurf sondern der Chip Entwurf schlechthin ge bt 1 4 Hardware Software Codesign eingebettete Systeme und Systems on Chip Wir haben bisher eine Vision erhalten dass es uns relativ einfach gelingen k nnte Chips und damit Hardware ma geschneidert zu entwickeln Sch n und gut aber brauchen wir diese Speziall sungen berhaupt Tut es nicht auch eine Software L sung auf einem effizienten Standardrechner Die Antwort ist ein klares jein F r viele Anwendungen im Bereich eingebetteter Systeme reicht in der Tat ein kleiner eingebetteter Mikrocontroller mit passender Software oder ein Signalprozessor F r andere Zwecke kommt m
200. ken bernimmt Wegen der Bearbeitungsbedingung posedge CLOCK wird der always Block nur dann bearbeitet wenn sich CLOCK auf 1 ndert also bei einer positiven Takt flanke Eine Reaktion auf negative Flanken w re durch negedge realisierbar Desweiteren ist lt neben die zweite M glichkeit einer Wertzuweisung Abschnitt 3 6 Die Unterschiede werden erst ab einer sp teren Aufgabe bedeutsam B 4 Flip Flop B 11 timescale ins 1ps module flipflop output reg 7 0 Ausgang Register input wire 7 0 Eingaenge Wires input I always posedge CLOCK begin if RESET 1 DATA lt 0 else DATA lt IN end endmodule Beispiel B 14 Flankengesteuertes 8 Bit Register Um das Modul zu testen ben tigen wir wieder einen Testrahmen ISE bietet die M glichkeit Teile des Testrahmens automatisch anzulegen was wir im Folgenden versuchen wollen Klicken Sie rechts ins Quellenfenster New Source w hlen Verilog Test Fixture und geben den Dateinamen test_flipflop ein Bild B 15 Best tigen Sie mit Weiter Fertig stellen SI j x BMM File ChipScope Definition and Connection FE Embedded Processor i f Eile Name m Implementation Constraints File X IP CoreGen amp Architecture Wizard test_fipflop m MEM File Schematic Location State Diagram C test hw sw systeme flpflop Pe Test Bench Waveform 2 User Document V Verilog Module E Verilog Te
201. lay Anweisung die Zeitkontrolle INDEX einf gen Sichern Sie die Datei mit File Save und wechseln Sie zur noch ge ffneten ModelSim Applikation Sie haben zuvor vielleicht schon festgestellt dass direkt nach dem Aufruf von ModelSim automatisch ein Simulationslauf durchgef hrt wird und zwar mit einer ausreichend langen simulierten Zeit Dies wird durch ein Skript gesteuert das ISE automatisch generiert Durch Driicken der Pfeil Hoch Taste auf der ModelSim Konsole k nnen Sie den Aufrufbefehl f r das Skript aus der Befehlshistorie hervor holen und das Skript erneut starten Dann werden alle VERILOG Module neu compiliert und die Simulation neu gestartet Aber Vorsicht dieser Trick ist nur f r kleine Designs praktikabel bei denen das Recompilieren aller Module nicht zu langwierig ist Die L nge der simulierten Zeit k nnen Sie brigens in ISE ber die Properties von ModelSim steuern Dies ist die schnellste M glichkeit die nderungen f r die Simulation zu bernehmen ohne den Simulator neu starten zu m ssen Alternativ k nnen Sie diesen Vorgang auch manuell durchf hren Klicken Sie dazu im Workspace Fenster auf den Tab Library und betrachten Sie den Inhalt der Library work Bild B 11 B 8 B Lab 1 VERILOG und seine Tools W or k space xilinxcorelib_yver Library work Library i fortime Module 7 albl Module vital2000 Library verilog Library unisims_ver Library spnopsys Library E std_developerskit Li
202. le Teststimuli synchron mit jeder fallenden CP Flanke injiziert Die for Schleife l sst am Ende lediglich die Pipeline leer laufen CP und alle Register werden in den Zeilen 49 52 berwacht bei jeder nderung werden Simulationszeit und alle Zust nde ausgegeben In Zeile 50 verwenden wir 4 2 Pipelines und Register Transfer Logik 4 7 brigens die Kurzform always die den always Block immer dann ausl st wenn eine der im Block gelesenen Variablen sich ndert Das w re hier gleich bedeutend mit always CPorRlorR2orR3orR4 oder etwas k rzer always CP Rl R2 R3 RA Die entscheidende Vereinfachung gegen ber der Mini Pipeline in Beispiel 4 5 besteht in der nichtblockenden Zuweisung lt der Zeilen 23 25 V28 Durch die Trennung der Berechnung der rechten Seiten und der Zuweisung an die linken Seiten ist ein ungetaktetes Durchrauschen der Berechnung in einem Schritt ausgeschlossen 00 BR 77 01 Pipeline mit nichtblockenden Zuweisungen 02 r 7703 04 7 05 module pipeline 06 07 parameter Low 10 Takt low 08 High 5 Takt high 2709 7 20 reg CP Takt fits RAID reg 7 0 R1 Register 1 13 R2 Register 2 14 R3 Register 3 FILS R4 ff Register 4 74 16 17 integer I Hilfsvariable 18 LLTI 20 Pipeline steuern und Funktionen berechnen 21 always posedge CP begin 2422 R2 lt f 1 R1 7723 R3 lt 2 R2 24 RA
203. le diese Anweisungen parallel Abschnitt 4 1 3 2 Zeitkontrollen 3 7 Der algorithmische Teil eines Moduls wie in Bild 3 1 besteht aus always und initial Bl cken W hrend always Bl cke oft Schaltungsteile darstellen werden initial Bl cke haupts chlich in Testmodulen verwendet Ein initial Block wird h ufig durch eine Eintrittsbedingung oder Sensitivi t tsliste gestartet initial COUNTER V7 Sollen alle Lesevariablen des Blockes zur Sensitivit tsliste geh ren kann man kurz initial schreiben Die Anweisungen innerhalb eines initial Blockes werden sequenziell ohne Unterbrechung bearbeitet bis eine Zeitkontrolle erreicht wird Abschnitt 3 2 Beispiel 3 7 zeigt zwei parallele initial Bl cke Ob der erste oder der zweite Block zuerst ausgef hrt wird ist nicht festgelegt module initial_test initial begin initial Block 1 display AAA display BBB 10 Sdisplay CCC end initial begin initial Block 2 display 1 Sdisplay 2 end endmodule Beispiel 3 7 Parallele initial Bl cke Ein m gliches Simulationsergebnis ist AAA BBB 1 2 CCE Hier wurde der erste Block zuerst ausgef hrt 10 unterbrach diese Ausf hrung und dann wurde der zweite Block bearbeitet Ein anderes m gliches Simulationsergebnis w re AAA BBB CCC 3 2 Zeitkontrollen Es existieren in VERILOG drei Zeitkontrollen e die Zeitverz gerung warten 3 8 3 Die wichtigsten Befehle von VERILOG
204. lerm dungs Sensor Erdbebensicherer Hochhaus Schwingungsd mpfer Wassertiefen Sonar Tsunami Sensor Baustelle Laserma band Theodolit Naturwissenschaft Animal Tracking GPS Halsband Tauchroboter Spiegelteleskop Digital Fernglas Sammlung 1 1 Weitere eingebettete Systeme Schlie lich sei der dramatisch wachsende Bereich von Bioinformatik und Medizintechnik erw hnt der sich so dynamisch und vielf ltig entwickelt dass wir hier 1 2 Das exponenzielle Wachstum der Mikroelektronik 1 3 gar nicht erst mit seiner Diskussion beginnen minimal invasive Chirurgie Kernspin Tomographie Bio Chip Neuroprothese uvam Eine weitere Auswahl eingebetteter Systeme zeigt Sammlung 1 1 allerdings ohne Garantie f r Bedeutung oder Markt erfolg Auf etlichen der genannten Gebiete arbeitet die Abteilung E I S der TU Braunschweig E I S steht dabei f r den Entwurf integrierter Schaltungen oder auch Entwurf integrierter Systeme So werden adaptive Rechner entwickelt die zur Laufzeit mit dynamisch angepassten Chips den klassischen Universalrechner wesent lich effizienter machen Im Grenzbereich zwischen IuK und Messen Steuern Regeln liegt die Home Automation die von der Abteilung E I S seit Jahren nicht nur erforscht sondern auch produktreif entwickelt wird So wurden zur EXPO 2000 mehrere Wohnungen in Gifhorn seniorenfreundlich ausgestattet Zur Steigerung von Komfort Sicherheit und Energieersparnis werden im intellig
205. lie end eine spezielle Interrupt Behandlungsroutine aus Diese k nnen wir mit unserer eigenen Software Routine berschreiben so dass wir beispielsweise per Memory Mapped Zugriff abfragen k nnen was denn die Unterbrechung ausgel st hat Anschlie end werden die Werte aus den Schattenregistern wieder in die Prozessor Pipeline zur ck kopiert und die normale Programmbearbeitung fortgesetzt Interrupt Controller 0x40330 addil 0x80 d7 0x40336 cmpl sp Oxde d7 INT 0x4033a bltw 0x404a8 0x4033e moveal a3 0xd2 fp 0x40342 movel a3 0xdc d0 movew 0x2700 sr subal 0x20 sp PowerPC Interrupt CPU moveml d0 d5 sp moveb 0x40000060 d0 andil 0xff d0 movel d0 0xb67ac Bild 7 27 Ein Hardware Modul l st einen Interrupt aus Bild 7 27 deutet einen Interrupt an den ein am On Chip Peripheral Bus ange schlossenes Hardware Modul unserer Digitalkamera signalisiert Der Prozessor wechselt daraufhin vom aktuellen Programmkontext in die Interrupt Behandlungs routine f hrt dort die notwendigen Aktionen aus z B Digitalfoto aufnehmen und setzt anschlie end das unterbrochene Programm fort Bei den PowerPC Prozessoren des Virtex II Pro stehen ein kritischer und ein unkritischer Interrupt Eingang zur Verf gung die mit unterschiedlichen Priorit ten 7 6 Ausblick 7 31 behandelt werden Durch einen Interrupt Controller kann die Anzahl verf gbarer Interrupts vergr ert werden 7 6 Ausbl
206. llen wir nun verstehen wie ein Synthese Werkzeug Konstrukte interpretiert und sie in Gatterlogik bersetzt Anweisung assign Die Anweisung assign ist ein grundlegendes Konstrukt um kombinatorische Logik auf der RTL Ebene zu beschreiben Beispielsweise wird die kontinuierliche Zuweisung assign OUT A amp B C typischerweise in die Gatterkombination aus Bild 5 4 tibersetzt A OUT C Bild 5 4 Gatter zu A amp B C Sind dagegen A B C und OUT 2 Bit Vektoren w rde der Schaltkreis aus Bild 5 5 entstehen Dort ist brigens der Input A 1 0 ein Bus aus dem z B A 1 extrahiert wird OUT 1 0 A 1 0 B 1 0 f C 1 0 Bild 5 5 A amp B C mit Vektoren Bei arithmetischen Operatoren h ngt es davon ab welche Hardware Bl cke f r die Synthese zur Verf gung stehen Ein 1 Bit Volladdierer assign C_OUT SUM A B C_IN 5 3 Synthese mit der HDL VERILOG 5 7 kann in der Gatterdarstellung von Bild 5 6 resultieren w hrend breitere Addierer meist nicht eine simple Vervielf ltigung davon sind sondern durch Optimierung zu anderen Gatterkombinationen f hren A ze gt o D gt c_out B Bild 5 6 1 Bit Volladdierer Die VERILOG Anweisung assign OUT S Il I0 resultiert in einem Multiplexer etwa wie in Bild 5 7 Bild 5 7 Multiplexer Verzweigungen mit if else Den gleichen Multiplexer wie in Bild 5 7 erhalten wir mit if S OUT else O
207. lungsplattform f r diese Aufgabe ist das ML310 dem wir uns im folgenden Abschnitt zuwenden und das wir auch im Praktikum einsetzen allerdings mit nicht ganz so komplizierten Systemen 7 14 7 Hardware Software Codesign Komponente Bus Beschreibung PowerPCs PLB Zwei 32 Bit Prozessorkerne mit je 400 MHz Taktrate PLB Arbiter PLB Zugriffssteuerung f r den Processor Local Bus 64 Bit 100 MHz OPB Arbiter OPB Zugriffssteuerung f r den On Chip Peripheral Bus 32 Bit 100 MHz Speicher PLB Erm glicht Lese und Schreibzugriffe auf den Hauptspeicher mit Controller Double Data Rate DDR Zugriffe erfolgen im Burst Modus d h pro Takt werden 64 Bit bertragen der Verbindungsaufbau Handshake ben tigt 17 Buszyklen BRAM PLB Schneller Blockspeicher direkt auf dem FPGA max 128 Kbyte pro BRAM Modul pro Zugriff werden 32 Bit bertragen der Verbindungs aufbau Handshake ben tigt nur 1 Buszyklus Interrupt OPB ber den Interrupt Controller kann der Interrupt Eingang des PowerPC Controller von mehreren Hardware Komponenten genutzt werden ber ein Statusregister kann durch die Software Interrupt Behandlungsroutine abgefragt werden welches Modul den Interrupt ausgel st hat PLB OPB Bridge PLB Leitet Daten aus dem OPB an den PLB weiter und umgekehrt Dabei OPB wird eine konfigurierbare Adresstabelle verwendet um nur solche Transfers in den jeweils anderen Bus weiterzuleiten f r die dies au
208. m Speicher der Gr e 2K x 1 und der Anwender kann jede Logikfunktion mit k Inputs realisieren indem er ihre Wahrheitstafel direkt in den Speicher programmiert Der CLB in Bild 6 8 enth lt zwei Lookup Tables mit je vier Eing ngen verbunden mit den CLB Inputs C1 bis C4 und einem dritten Lookup Table der mit den anderen beiden verbunden ist Damit kann ein weiter Bereich von Logikfunktionen mit bis zu 9 Inputs realisiert werden oder zwei verschiedene 4 Input Funktionen und andere Kombinationen Die realisierbaren Logiken sind ein oder zweistufig Jeder CLB enth lt auch zwei Flipflops deren Initialisierung mit 0 oder 1 durch die SRAM Zelle 6 10 6 Programmierbare Logikbausteine state vorgegeben werden kann Auch kann bestimmt werden ob die Flipflops mit der steigenden oder der fallenden Taktflanke gesteuert werden Jeder CLB hat neben diesen zwei Ausg ngen auch zwei ungepufferte kombinatorische Outputs Um komplette Systeme realisieren zu k nnen enth lt jeder CLB beispielsweise Schaltungen f r die effiziente Ausf hrung von Arithmetik insbesondere zur Realisation von schnellen Carry Operationen Auch k nnen die Lookup Tables Read Write RAM Zellen konfigurieren 16x2 oder 32x1 bit Bei manchen Versionen sind auch Dual Port RAMs einstellbar Jedes XC4000 Chip enth lt an der Peripherie breite AND Ebenen um Schaltungen wie breite Dekoder zu unterst tzen Vertikale Kan le nicht gezeigt ee ange 1 Lange 2 sehr lang
209. mbinatorischer Logik 5 10 5 Einf hrung in die Logiksynthese module input i Takt Eingang R1 output Ausgang R4 r Register R2 Register R3 integer Hilfsvariable Register Transfer Synthese always posedge CP begin R2 lt f 1 R1 R3 R3 lt 2 R2 R4 lt 3 R3 end kombinatorische Logik zwischen den function 7 0 f1 input 7 0 IN 1 2 IN endfunction function 7 0 2 input 7 0 IN 2 IN 5 endfunction function 7 0 f3 input 7 0 IN f3 IN IN endfunction endmodule rtl Beispiel 5 14 Synthetisierbares RTL Modell zu Bild 5 13 5 4 Ausblick Nur eine allererste Einf hrung in die Logiksynthese konnte dieses Kapitel geben So gilt es bei der Register Synthese zu kl ren wann aus einem VERILOG Register Datentyp reg ein getaktetes flankengesteuertes Flipflop oder ein meist uner w nschtes pegelgesteuertes Latch entsteht oder wann es sich um eine nur der bersichtlicheren Programmierung dienende Hilfsvariable handelt die von der Logiksynthese anschlie end zu Recht wegoptimiert wird berhaupt kann die Optimierung wesentlich beeinflusst werden durch unter schiedliche RTL Modelle d h der RTL Designer hat es durch geschickte RTL Modellierung in der Hand wie effizient das synthetisierte Gattermodell wird Schlie lich kann man nicht erwarten dass das Pr Synthese RTL Modell und das Post Synthese Gattermodell exakt das gleiche Verhalten haben
210. mmersemester Ihre Fertigkeiten zur Logiksynthese professionalisieren und in den bungen ben Sie treffen auf komplette System Entw rfe und Adaptive Rechner schnuppern in die objektorientierte System Beschreibungssprache SystemC hinein und informieren sich ber moderne Testmethoden Vor allem bereiten Sie sich in den bungen vor auf das was noch ein Semester sp ter beginnt und Ernst Spa und vor allem Arbeit macht ein Praktikum Ihrer Wahl ber HWSWE bzw CuSE I hinaus gibt es schlie lich noch das Modul CuSE II f r Master Studis und Diplom Anw rter das Sie jedoch auch schon als Bachelor Studi belegen k nnen Dort wird es um eine SystemC Vertiefung gehen um Einblicke in die Institutsforschung sowie Algorithmen zum Chip und System Entwurf Neben der Freude und der M he an der rasanten Entwicklung der Mikroelektronik teilzunehmen geh rt es im Bereich der Lehre und Forschung wohl zu den befriedigendsten Aspekten dass Sie nicht auf dem Trockenen lernen m ssen sondern in bungen und Praktika die M glichkeit haben ihre mit modernen CAD Werkzeugen entworfenen Systeme auch tats chlich zu realisieren und dann selbst zu testen 1 24 1 Einleitung berblick zur Hardware Beschreibungssprache VERILOG Hardware Beschreibungssprachen Hardware Description Languages HDL stehen im Zentrum des Schaltungsentwurfs Designer beschreiben ihren Entwurf zun chst auf einer funktionalen Verhaltensebene wobei die Einzelheiten der Im
211. mmunikationsschnittstelle vorhanden muss aber noch nicht in seiner endg ltigen Form vorliegen Hierf r eignet sich besonders eine System Beschreibungssprache wie SystemC wir k nnen aber auch VERILOG und C in friedlicher Co Existenz verwenden Gleichzeitig entwickeln wir einen Testrahmen Kapitel 2 mit dem die Funktionalit t des Gesamtsystems auf allen Entwurfsebenen berpr ft werden kann Anschlie end k nnen wir Hardware und Software Baustein f r Baustein zu syntheti sierbaren Modellen verfeinern und anschlie end mit dem Testrahmen verifizieren Da sich die einzelnen Systemkomponenten dabei auf unterschiedlichen Abstraktions ebenen befinden und dar ber hinaus auch in verschiedenen Programmiersprachen vorliegen k nnen ben tigen wir hierzu einen Mixed Mode Simulator Kapitel 2 wie ModelSim Eine integrierte Hardware Software Entwicklungsumgebung wie das Xilinx Platform Studio XPS aus Bild 7 18 das wir auch in den praktischen bungen einsetzen unterst tzt uns bei diesem Prozess Alle Hardware und Software Bausteine des Systems werden zusammen mit den eingesetzten On Chip Bussen und anderen Kommunikationsverbindungen in einem Projekt verwaltet Ein hierarchisch gegliederter Modulbaum bietet schnellen Zugriff auf alle Quelltexte Moduleinstellungen wie Adressbereich Interface und Kommuni kationsprotokoll k nnen in bersichtlichen Dialogen vorgenommen werden M gliche Probleme etwa eine berlappung von Adressbereichen oder e
212. mplete Done Beispiel E 8 XPS Konsole erfolgreiche Bitstrom Erzeugung e Ein fehlerhafter Bitstrom darf auf keinen Fall auf das FPGA geladen werden da es sonst besch digt werden k nnte Eine h ufige Fehlerursache sind falsche Verdrahtungen in der Datei system mhs berpr fen Sie diese im Fehlerfall und wenden Sie sich an ihren Hiwi falls Sie keinen Fehler entdecken k nnen e Ihr fertig erzeugter Bitstrom system bit befindet sich in ihrem Unter verzeichnis implementation ihres Projekts XPS Software zum Projekt hinzuf gen e Wahlen Sie im XPS Projektfenster den Tab Applications e Klicken Sie mit der rechten Maustaste auf Software Projects und w hlen Sie Add SW Application Project e Geben Sie einen Projektnamen ein und w hlen Sie als Prozessor Instanz ppc405_0 aus e Mit einem Rechtsklick auf Sources Add File k nnen Sie nun Quelltextdateien zum Projekt hinzuf gen XPS Software bearbeiten e Wahlen Sie im XPS Projektfenster den Tab Applications e Unter Sources finden Sie die C Quellcode Dateien Ihres Projektes e Mit einem Doppelklick auf die gew nschte Datei ffnen Sie diese E 16 E Zusammenfassung der bungen XPS Programm compilieren e Klicken Sie im Projektfenster mit der rechten Maustaste auf Ihr Software Projekt und w hlen Sie Build Project e Die Ausgabe Konsole sollte nach fehlerfreiem Ablauf der aus Beispiel E 9 hneln bss dec hex filename 8196 11154 2b92 projektname executabl
213. n display display display display display display display display display end endmodule Pitt E 1 b0 1 b0 u 1 bl 1 b0 1 bl a b00 2 bxx qe 7 Howe We we Wh th the the KHK OOK XO 2 b00 Beispiel 3 28 Logische Verkn pfungen Auch der Ausdruck 1 bx 1 b1 ergibt 1 da der zweite Operand das Ergebnis bereits eindeutig festlegt Die letzte Anweisung verkn pft zwei Ausdr cke mit jeweils zwei Bit das Ergebnis ist gleichwohl nur ein Bit breit V24 Bit weise Logik amp Die bit weisen Operatoren Negation Oder und Und amp erlauben die bit weise Verkn pfung von Ausdr cken Das Ergebnis hat die gleiche Breite wie der breiteste verkn pfte Ausdruck dabei werden an jeder Bit Stelle die Operanden entsprechend verkn pft Da jedes Bit einen der vier Werte 0 1 x oder z annehmen kann m ssen die bit weisen Operatoren erweitert werden Hier gilt die gleiche Regel wie bei den logischen Operatoren Besitzt nur ein verkn pftes Bit den Wert x oder z so ist das Ergebnis x es sei denn es ist bereits durch einen Operanden alleine bestimmt Dies ist beispielsweise der Fall bei der Verkn pfung l bx amp 1 bz amp 1 bl amp 1 b0 mit dem Ergebnis 0 Beispiel 3 29 wendet bit weise Operatoren an 3 26 3 Die wichtigsten Befehle von VERILOG module bitwise_operators initial begin Sdisplay 4 bz
214. n Tabelle 7 4 zeigt konkrete Beispiele weitere finden sich in der Sammlung 1 1 Eingebettete Systeme Beispiel Sensoren Aktoren Interfaces Kommunikation Temperatur A D Wandler Ethernet Laserdrucker F llstand D A Wandler Parallel Papierzufuhr Pulsformer Seriell USB A Drehzahl Z ndung uto iti i i Position Einspritzung A D Wandler CAN Bus Druck Elektromotor D A Wandler LIN Bus Haftreibung Bremsen X Z hler FlexRay Kollision Kupplung Temperatur K hlung Handy Tasten Lautsprecher A D Wandler Seriell USB Akkuzustand Display D A Wandler Infrarot Mikrofon Vibration Bluetooth Empfangsteil Funksender Videok Tasten Display FireWire USB ideokamera Mikrofon A D Wandler Fokus Blende Analog Video Akkuzustand D A Wandler Bandlaufwerk Audio CCD Sensor Tabelle 7 4 Beispiele eingebetteter Systeme Man unterscheidet reaktive und transformierende Systeme Die transfor mierenden Systeme entsprechen mehr den klassischen Rechnern w hrend reaktive Systeme potenziell ohne Ende auf Stimuli der Umwelt geeignet antworten 7 8 7 Hardware Software Codesign Schnittstelle zu anwendungsspezifischen Spezialbausteinen t 1 fi _ Sensoren eae Aktoren est oe speicher Bedien Benutzer elemente anzeigen Systembus Debugging Debugging Netzwerk Netzwerk Eingabe Ausgabe Bild 7 5 Basisarchitektur f r eingebettete Systeme Viele eingebet
215. n an die sp ter das board eigene LCD angeschlossen wird sowie die serielle Schnittstelle RS232 ber die sp ter die PowerPC Software Ergebnisse ausgeben kann Die brigen Komponenten d rfen Sie f r den Rest der bung ignorieren D 10 D Lab 3 Hardware Software Codesign auf dem ML310 Virtex II Pro Software Hardware PowerPC Logikbl cke JTAG Bild D 13 Download der eigenen Schaltung Starten Sie nun Chipscope durch Doppelklicken des Symbols in Bild D 14 auf Ihrem Desktop aS Bild D 14 Chipscope Pro Desktop Icon zum Analyzer Chipscope Analyzer Sie sehen nun die Oberfl che des Chipscope Analyzers vor sich berzeugen Sie sich davon dass das ML310 eingeschaltet ist und bet tigen Sie dann in Chipscope den Button Open Cable Search JTAG Chain Bild D 15 der sich oben links unter der Men leiste befindet Fr Bild D 15 Button Open Cable Search JTAG Chain Das daraufhin erscheinende Best tigungsfenster schlie en Sie durch OK Im oberen linken Chipscope Fenster wird Ihnen das FPGA des ML310 als DEV 1 MyDevice1 XC2VP30 angezeigt Klicken Sie mit der rechten Maustaste darauf und w hlen Sie Configure ffnen Sie mit Select New File den von XPS erzeugten Bitstrom system bit und best tigen Sie mit OK Unten rechts in Chipscope wird Ihnen der Fortschritt des Downloads angezeigt der bereits nach wenigen Sekunden abgeschlossen ist D 1 Hardware bauen und testen D 11 D 1 6 On Chip Test des Addierers W
216. n sei hier nur auf die Anweisung always hingewiesen die einen Prozess zur Beobachtung des Taktes CLOCK startet der dann parallel zu anderen Prozessen st ndig ausgef hrt wird module SHIFT_REGISTER invertiert und gibt es verzoegert aus input wire IN CLOCK Eingangssignal und Takt Draehte output reg OUT Ausgangssignal speicherndes Register i always posedge CLOCK immer wenn CLOCK von 0 auf 1 wechselt OUT lt 9 IN invertieren und 9 Zeiteinheiten verzoegern endmodule Bild 1 15 Funktionale Beschreibung eines Schieberegisters in der Hardware Beschreibungssprache VERILOG Natiirlich rechtfertigt ein Schieberegister meist keine funktionale Beschreibung Diese wird vor allem bei groBen Problemen bedeutsam deren Anforderungen und L sungen zun chst einmal nur durch normale Algorithmen beschrieben werden Obwohl im strengen Sinne einer Verhaltensbeschreibung keine internen Strukturen zugelassen sind werden bei funktionalen Algorithmen nat rlich auch Unter programme Variablen und hnliche strukturelle Hilfsmittel benutzt diese brauchen jedoch noch in keiner Weise die sp tere Hardware Struktur wiederzuspiegeln Nat rlich lassen sich solche Verhaltensbeschreibungen auch simulieren was der Ausf hrung eines normalen Programms entspricht Au erdem stellen sie eine pr zise Dokumentation dar Systemebene Auf dieser Ebene werden die gro en Komponenten eines Systems wie Steuerwerk Speicher oder Bus bes
217. n begin 5 0 9 X lt A CLOCK CLOCK AMES Y lt B amp X 10 e263 end end me SE c4s i 3 2S Bild 3 1 Wesentliche m gliche Teile eines Moduls Bild 3 1 deutet schematisch an welche wesentlichen Teile ein Modul enthalten kann nicht muss module und endmodule umschlie en das Modul Nach module und dem Modulnamen folgt als Schnittstelle oder Interface eine optionale Parameterliste die die Verbindung mit anderen Modulen herstellt Zwar k nnen andere Module auch direkt d h an der Schnittstelle vorbei auf Variable des Moduls zugreifen dies f hrt jedoch zu einer schlecht berpr fbaren Struktur und sollte daher vermieden werden Au erdem k nnen lokale Variablen definiert werden F r sie muss der Typ z B reg angegeben werden Falls die Variable Teil der Parameterliste ist wird angegeben ob sie Eingang Ausgang oder beides ist Ein Modul kann mit Untermodulen hierarchisch zerlegt werden vgl Beispiel 3 5 und V3 die durch Wires V17 st ndig verbunden sind Dies stellt in der Regel eine hardware nahe strukturelle Realisierung des Moduls dar Eine algorithmische mehr abstrakte Realiserung ergibt sich durch initial und always Bl cke die zueinander parallel ausgef hrt werden Abschnitt 4 1 deren 3 1 Modulstruktur 3 3 Inneres aber in der Regel sequenziell wie bei normalen Programmen ausgef hrt wird mit if else Alternativen Schleifen usw Sie werden erst sp ter in Strukturen aus Untermodulen Gattern
218. nalverl ufe sowie die LCD Ausgabe Ihrem Hiwi Stoppen Sie anschlieBend die CPU mit dem XMD Befehl stop und verlassen Sie die Konsole mit exit Sie haben hiermit Ihre erste Software Hardware Schnittstelle zwischen dem Steuerprogramm auf dem PowerPC und Ihrem Addierer IP Core auf dem FPGA realisiert und erprobt Als n chstes soll auch die umgekehrte Daten bertragung von Hardware nach Software eingebaut werden indem die vom Addierer berechnete Summe zur ck in die Software gemeldet wird D 22 D Lab 3 Hardware Software Codesign auf dem ML310 D 3 Hardware antwortet Software Um Hardware auf dem FPGA f r rechenintensive Aufgaben zu verwenden m ssen die berechneten Ergebnisse nat rlich wieder zur ck in die Software gelangen Wir schauen uns die Realisierung am Beispiel des Addierers an Nebenbei erstellen Sie Ihr XPS Projekt komplett selbst Au erdem sollen die Summanden und das an den PowerPC gemeldete Ergebnis auf dem LC Display des ML310 dargestellt und auch ber die serielle Schnittstelle an den Entwicklungsrechner wie in Bild D 28 bertragen werden Bitstrom J HW Bitst Tag Virtex Il Pro Tag Software Hardware PowerPC Logikbl cke int main A write 6 10 5 read 16 j B C Programm TeraTerm 6 10 16 RS232 write RS232 write LCD wo Bild D 28 Addierer mit SW HW und HW SW Schnittstelle D 3 1 XPS Basisprojekt Starten Sie XPS diesmal ber den Desktop Icon in Bild D
219. nd Monitor ausgestattet Schlimmer noch ist aber dass wir auf dem eingebetteten System in den meisten F llen auch kein Standard Betriebssystem wie Linux oder Windows einsetzen 7 24 7 Hardware Software Codesign Aus diesem Grund sind Prozessoren und Mikrocontroller f r eingebettete Systeme mit einem JTAG Interface ausgestattet Diese von der Joint Test Action Group standardisierte Debug Schnittstelle wird beim ML310 ber einen USB Anschluss herausgef hrt und erlaubt die Fernsteuerung beider PowerPCs mit Hilfe eines Remote Debuggers Bild 7 20 zeigt die Oberfl che des von uns verwendeten Remote Debuggers GDB der die gerade vom Virtex II Pro FPGA auf dem ML310 abgearbeitete Programmzeile anzeigt So k nnen wir zum Beispiel die Programmausf hrung bei Entdecken eines Fehlers anhalten den Quelltext korrigieren die berarbeitete Stelle neu bersetzen und die Ausf hrung anschlie end mit dem reparierten Code fortsetzen Die Arbeit mit dem Remote Debugger werden wir auch in den praktischen bungen trainieren Das Ausf hren von Programmcode auf einem ferngesteuerten ML310 Board ist zwar zun chst etwas gew hnungsbed rftig hat aber besonders bei der Entwicklung von hardware nahen Ger tetreibern den gro en Vorteil dass sich ein Programmabsturz nicht auch auf die Stabilit t des Entwicklungs PCs auswirkt SOUT 0 PP amp amp amp M38 Fine aaa xup_config_decoder c v v SOURCE 24 237 state 0 al 238 XI2c_mWrit
220. nd Multimedia zusammen und unterst tzen Telearbeit verteilten Unterricht Distant Learning verbesserten Service in Verwaltung und Gesundheit E Commerce Business to Business Fun und Freizeit etc Viel weniger offensichtlich finden sich Chips in eingebetteten Systemen die im industriellen Bereich messen steuern und regeln Bei eingebetteten Systemen sind die enthaltenen Chips von au en nicht direkt erkennbar In diesem Bereich gibt es kaum noch ein Ger t das ohne digitale Komponenten arbeitet Durch programmierbare Mikrokontroller und sogar programmierbare Hardware Schaltungen in Ger ten Automaten Robotern und Flie b ndern wird die Automatisierung wesentlich flexibler als fr her Dar ber hinaus lassen sich die Chips der Mikroelektronik immer h ufiger mit winzigen Aktoren und Sensoren integrieren man spricht dann von Mikrosystem technik In der Autoelektronik steuern die besagten einhundert Computer Chips nicht nur die elementaren Antriebsfunktionen Treibstoffverbrauch und Abgasreduktion sondern erh hen auch Sicherheit und Komfort durch Airbag ABS ESP ABC Abstandsradar nicht Radarwarnung Autopilot Bordcomputer Sprachsteuerung etc Sport Ski Bindung Klima Jacke Schiedsrichter im Fu ball Crosstrainer Skipass Fahr rad Navi Mobile Ger te GPS Navi Handy PDA Handy Funkkopfh rer Ipod James Bond Armbanduhr Schwiegermutter Radar Scotty Brille Haus Regensburger Cocktail mixer f hlende Kaffeetasse a
221. nde Programm enth lt Beispiel D 21 int main int argc char argv unsigned int writeData LCD Initialisierung lced_init LCD String Ausgabe lcd_write E I S ML310 A B example Argumente fuer den Addierer A 0x0006 B 000a writeData 0x000a0006 EDIT sende writeData ueber den DCR Bus an den Addierer return 0 Beispiel D 21 Methode main der Software f r den Addierer Nach der Definition von writeData wird das LC Display des ML310 initialisiert und zur Kontrolle werden zwei Strings ausgegeben brigens wird das LCD auch ber den IP Core opb_gpio in Ihrem XPS Projekt angesprochen Im Gegensatz zum Addierer dient hier der OPB Bus aus Bild 6 18 als Hardware Software Schnittstelle Im unteren Teil von main werden schlie lich mit writeData 0x000a0006 die beiden Summanden A und B f r die Addition festgelegt A erh lt den Wert 0x0006 B den Wert 0x000a Dort wo die drei Punkte stehen m ssen Sie nun den Inhalt von writeData ber den DCR Bus an die Hardware senden Dazu f gen Sie bitte das Kommando mtder der _ address der_data ein Der Parameter dcer_address bestimmt die Zieladresse des DCR Schreib zugriffs dcr_data die zu bertragenden Daten Setzen Sie die passenden Daten ein und compilieren Sie Ihr Programm Klicken Sie dazu im Projektfenster mit der rechten Maustaste auf Project testApp_adder und w hlen Sie Build Project In der Ausgabe Konsole sehen S
222. nder sind heute die FPGAs auf die wir nun eingehen Bild 6 1 zeigt die Hierarchie der gerade verwendeten Begriffe und Abk rzungen 6 1 2 Grundaufbau eines FPGA Feldprogrammierbare field programmable Gate Arrays bestehen aus einem Feld Array von allgemeinen Elementen die in allgemeiner Weise verbunden werden k nnen Seit der Einf hrung von FPGAs 1985 durch Xilinx wurden zahlreiche FPGA Familien entwickelt wobei zu den wichtigsten Herstellern neben Xilinx heute Actel und Altera geh ren O Zelle mit Pad programmierbare Verbindungen Interconnect programmierbarer Logikblock Bild 6 2 Typischer Aufbau eines FPGA Bild 6 2 skizziert das Konzept eines typischen FPGA Es besteht aus einem zweidimensionalen Feld von Logikbl cken die durch das Interconnect beliebig verbunden werden k nnen Das Interconnect besteht aus Verbindungsabschnitten deren L nge unterschiedlich ist Es enth lt programmierbare Schalter um einerseits die Logikbl cke an die Verbindungsabschnitte anzuschlie en und andererseits die Verbindungen untereinander aufzubauen Ein Schaltkreis wird in einem FPGA implementiert indem die Logik auf die einzelnen Logikbl cke aufgeteilt wird und dann diese Bl cke mithilfe der Schalter verbunden werden Um m glichst viele verschiedene Schaltkreise effizient realisieren zu k nnen ist die Vielseitigkeit eines FPGA entscheidend Dies muss durch die Logikbl cke und das Interconnect unterst tzt werden Es gibt vi
223. ndig werden Nach dem Software Hardware und Schnittstellen Entwurf wird das System integriert Auf allen Ebenen sind eine Co Simulation und Co Verifikation von Hard und Software gefragt bis hin zum Test des integrierten Systems Ein Problem von Co Simulation und Co Verifikation besteht darin dass im Allgemeinen die Software Prozessoren abstrakter modelliert werden als die Spezial Hardware Das Zeitverhalten des Prozessors wird oft nicht mehr taktgenau dargestellt sondern nur noch bez glich seiner Ein und Ausgaben Dadurch k nnen in der gleichen Simulationszeit gr ere Zeitabschnitte der Software simuliert werden als der Hardware In der Co Simulation k nnen dann aus Gr nden der Simulationsdauer neben vielen detaillierten Hardware Schritten nur kurze Software Abschnitte gleichzeitig simuliert werden Dies rechtfertigt den Einsatz einer Co Emulation in Form eines Prototypen Boards Rapid Prototyping Die automatische oder zumindest halbautomatische Partitionierung in Hardware und Software ist ein au erordentlich komplexes Problem und Gegenstand jahrelanger intensiver Forschungen Bisher gibt es nur in Einzelf llen wirklich praxisrelevante Ergebnisse Bei manchen HW SW Codesigns ist die Partitionierung jedoch schon in nat rlicher Weise vorgegeben etwa bei der Auslagerung eines vorgegebenen rechenintensiven Programms zur kryptografischen Verschl sselung Die automatische Partitionierung basiert wesentlich auf Sch tzverfahren die den
224. ndung des Xilinx Microprocessor Debuggers XMD Dieser l sst sich aus Ihrem XPS Projekt heraus starten w hlen Sie im Men Tools den Eintrag XMD und w hlen Sie die Prozessor D 2 Software steuert Hardware D 19 instanz ppc405_0 Beim ersten Starten werden Sie aufgefordert die XMD Optionen einzustellen Orientieren Sie sich hierzu an Bild D 23 Die XMD Konsole ffnet sich Hinter XMD kann die Eingabe von Befehlen erfolgen Als erstes muss sichergestellt werden dass sich der PowerPC in einem stabilen Ausgangszustand befindet Dies erreichen Sie durch einen Reset Kommando rst Beispiel D 24 XMD rst WARNING Attempted to read location Oxfffffffc Reading ISOCM memory not supported Target reset successfully XMD Beispiel D 24 Reset zur Stabilisierung der CPU Wechseln Sie nun mit cd testApp_adder in das Unterverzeichnis in dem sich die compilierte Software befindet Danach k nnen Sie mit dow executable elf die Software auf das Board laden Beispiel D 25 XMD cd testApp_adder XMD dow executable elf section text OxffffO000 OxffFff0830 section boot0O Oxffff0830 0xffff0840 section boot Oxfffffffc 0x00000000 section rodata 0x20800000 0x20800022 section fixup 0x20800024 0x20800038 section got2 0x20800038 0x20800058 section sdata2 0x20800058 0x20800058 section data 0x20800058 0x20800348 section sdata 0x20800348 0x2080034c section bss 0x2080034c 0x2080034c section bss_stack 0x20800
225. nes IP Cores Klicken Sie auf Weiter Im n chsten Dialog w hlen Sie Import existing peripheral und klicken Weiter Bet tigen Sie im dritten Dialog den Weiter Button ohne irgend welche Einstellungen zu ver ndern Im vierten Dialog Import Peripheral Step 1 Bild D 6 geben Sie den Namen des Top Level Moduls Ihres einzubindenden Codes an in diesem Fall aplusb_hw Durch Anklicken von Use Version k nnen Sie eine Versionsnummer f r diesen IP Core festlegen Name and Version x Indicate the name of your peripheral Also indicate if you are using the EDK peripheral version naming scheme Enter the name of the top VHDL entity or Verilog module of your peripheral Name Japlusb_hw v wi 1 00 4 Major Revision Minor Revision Hardware S oftware Compatibility Revision fi a foo B Logical library name aplusb_hw_v1_00_a All the files for this peripheral are compiled into the logical library named above If the peripheral refers to other logical libraries they are either assumed to be available in the current project or in the repositories accessible through the current project settings or will be imported along with the peripheral Since all F Bild D 6 Namen des Top Level Moduls sowie More Info Weiter gt Penia sielen Abbrechen Versionsnummer festlegen W hlen Sie im n chsten Dialog Step 2 den Punkt HDL Source Files vhd v In Step 3 in Bild D 7 stellen Sie bitte VERILOG als Sp
226. nfach beinhalten jedoch sehr grundlegende Effekte zur Register Transfer Logik und zu parallelen Prozessen 4 2 1 Eine Flipflop Kette Das Beispiel 4 5 Bild 4 4 demonstriert eine sinnvolle Anwendung einer Zeit verz gerung Es soll eine Mini Pipeline simuliert werden welche aus zwei aufein ander folgenden Speicherelementen besteht Daten am ersten Speichereingang INPUT werden in der Pipeline um zwei Takte verz gert Der erste Speicherausgang MIDDLE ist mit dem zweiten Speichereingang identisch Die beiden Speichereing nge bernehmen anliegende Werte mit der positiven Flanke von CP und setzen ihren Ausgang neu Dies geschieht in den ersten beiden always Bl cken Bild 4 4 Flipflop Kette Die Funktionsf higkeit des Beispiels steht und f llt mit der Zeitverz gerung 1 die unten erl utert wird Der dritte always Block gibt die beiden Eing nge und Ausg nge aus falls sich einer der Werte ndert Der vierte generiert einen Takt mit der Periode 20 Der initial Block erzeugt Testwerte indem er mit der negativen Flanke zu den Zeitpunkten 0 20 und 40 neue Werte an INPUT zuweist Nach einer positiven Flanke erreicht dieser MIDDLE und nach einer weiteren positiven Flanke OUTPUT Ohne die Zeitverz gerungen 1 k nnte bei einer positiven Flanke der Wert von INPUT an MIDDLE und zum gleichen Zeitpunkt an OUTPUT weitergegeben werden quasi durchrauschen Mit der Zeitverz gerung wird der Wert von INPUT zun chst in einem unsichtbaren Zwisch
227. ng add wave SIM 2 gt Now D Bern l i mr j 7 Bild B 8 Benutzeroberfl che des Simulators ModelSim VSIM 2 gt run Hello World VSIM 3 gt Beispiel B 9 Simulationsausgabe Herzlichen Gl ckwunsch Sie haben soeben Ihre erste VERILOG Simulation erfolgreich durchgef hrt Schlie en Sie ModelSim und kehren Sie zur ISE Oberfl che zur ck B 2 Simulierte Zeit Als n chstes wollen wir uns mit der simulierten Zeit besch ftigen Erstellen Sie ein neues ISE Projekt in das Sie ein neues Modul fortime einfiigen Beispiel B 10 B 2 Simulierte Zeit B 7 timescale ins 1ps module fortime integer INDEX Deklaration der Schleifenvariablen initial begin for INDEX 1 INDEX lt 5 INDEX INDEX 1 begin display Simulationszeit ist d time end end endmodule Beispiel B 10 Modul fortime Das Modul fortime besteht aus einem initial Block in dem sich eine Schleife befindet welche fiinf mal die interne Simulationszeit des Simulators ausgibt Als Datentyp fiir die Schleifenvariable wird integer verwendet F hren Sie wieder per Doppelklick auf Launch ModelSim Simulator eine Simulation durch und beobachten Sie die einzelnen Ausgaben der jeweiligen simu lierten Zeit Diese betr gt bei jedem Schleifendurchlauf 0 da keine simulierte Zeit vergangen ist Lassen Sie ModelSim ge ffnet und ver ndern Sie nun das Modul indem Sie direkt vor der disp
228. nnt das Start Bit an dem 1 0 Ubergang Um kurzzeitige Spannungssenkungen Glitches auf dem Datenkanal nicht f lschlicherweise als Start Bit zu interpretieren soll ein Start Bit erst dann als solches erkannt werden wenn DATA mindestens drei Takte lang auf 0 liegt Zw lf Takte nach dem 1 0 Ubergang des Start Bits wird das erste Datenbit gelesen 8 Takte Start Bit 4 weitere Takte um zeitlich in der Mitte des ersten gesendeten Daten Bits zu liegen Die weiteren Daten Bits werden jeweils 8 Takte sp ter gelesen 8 Takte nach dem letzten Daten Bit bzw 76 Takte nach dem 1 0 bergang muss DATA auf 1 liegen Stop Bit damit die Daten bertragung erfolgreich war Verilog Code aus 5 Modulen e start_detect erkennt die Startsequenz mit einem Schieberegister e control setzt den Receiver in den Running Modus nachdem die Startsequenz erkannt wurde e counter z hlt w hrend des Running Modus die Takte e ser_par_conv konvertiert das serielle Eingangs in ein paralleles Ausgansgs signal e flags setzt die Flags nach dem Stop Signal Vorgehensweise e Laden Sie sich den vorgegebenen Code von der bungswebseite herunter und setzen Sie sich mit dem Zusammenhang der Module auseinander e Zeichnen Sie ein Blockschaltbild des Modells e Vervollstandigen Sie den Code so dass der Receiver korrekt funktioniert B 10 RAM mit asynchronem Lese Schreibzugriff In Beispiel B 29 sehen Sie das Grundger st f r einen RAM mit asynchronem L
229. nter sich fertige wiederverwendbare Teill sungen verbergen etwa ein Ethernet Controller als Fertigbaustein Insgesamt ist der Hardware Software Entwurf zu einem interdisziplin ren Gebiet geworden zwischen Hardware Software und nat rlich den Anwendungen der Praxis 1 5 Ausblick auf die Vorlesung Das weitere Skript gliedert sich in einen Vorlesungsteil Kapitel 2 bis 7 und einen bungsteil Kapitel A bis D In den Kapiteln 2 bis 4 f hren wir zun chst die f r den praktischen Schaltungs entwurf zentral wichtige Hardware Beschreibungssprache VERILOG ein Eine neue Sprache zu erlernen ist nicht in jedem Moment erregend hier lernen wir aber grundlegende Konzepte praktisch kennen wie Parallelit t und Zeit synchrone Logik hardware nahe Datenstrukturen Verhalten und Struktur Pipeline Testrahmen und vieles andere mehr In Kapitel 5 werfen wir einen kurzen Blick ber die Schulter der Logiksynthese Praxisnahe und technisch spannend wird es in den n chsten und zugleich letzten beiden Vorlesungskapiteln Das Geheimnis programmierbarer Logikbausteine und von FPGAs l ften wir in Kapitel 6 auch anhand kommerzieller Bausteine bis hin zum m chtigen Virtex II Pro das Teil der universellen Entwicklungs Plattform ML310 in Kapitel 7 ist man stelle sich nur mal vor auf einem Chip gibt es zwei ausgewachsene Standardprozessoren drumherum k nnen wir mithilfe von VERILOG beliebige eigene Schaltungen synthetisieren und um dieses Superchip
230. nx Project Navigator 2 ise projects hello_world hello_world ise hello_world v File Edit View Project Source Process Simulation Window Help gt le x Dlajalal a 21212 aleli TE ahe ele Alam EIS ulel gt odule hello_world EB hello_worldise B E c2vp30 6ff896 hello_world hello_world v 3 always begin display Hello World 5 end 7 endmodule Quellenfenster F E Module View ID Library view Quel Itext E d itor O AddExisting Source fH Create New Source E _ View Design Summary B f Desian Utilities Prozessfenster B View HDL Instantiatien Template GF User Constraints ff Synthesize XST v T G Process View Design Sum hello_world ix HDL Compilation Compiling verilog file hello_world v Module lt hello_world gt compiled K le No errors in compilation onso ij Analysis of file lt hello_world prj gt succeeded Console Og Find in Files I Errors v Wamings Process Check Syntax is up to date In 7 Col 10 verilog Bild B 2 berblick zum Projekt Navigator New Project Ix Enter a Name and Location for the Project Project Name Project Location Jhello_world iz ise projects hello_world A Select the type of Top Level module for the Project Top Level Module Type HDL Re Bild B 3 lt Zur ck Weiter gt Abbrechen Hilfe Neues Projekt
231. ojektes Er kann direkt auf das FPGA programmiert werden Hinweis bitte achten Sie in der Konsolenausgabe auf Fehler Falls anstatt DRC detected 0 errors Fehler auftraten d rfen Sie den Bitstrom auf keinen Fall in das FPGA laden es k nnte besch digt werden Eine h ufige Fehlerursache sind D 1 Hardware bauen und testen D 9 falsche Verdrahtungen in der Datei system mhs berpr fen Sie diese im Fehlerfall und wenden Sie sich an Ihren Hiwi falls Sie keinen Fehler entdecken k nnen D 1 5 Download auf das ML310 Bild D 12 k nnte Ihnen bekannt vorkommen da es Bild 7 12 aus der Vorlesung sehr hnlich sieht Hier haben wir zus tzlich angedeutet dass der zentrale Chip Virtex ll Pro aus einem Software Teil besteht zwei konventionell programmierbaren PowerPC Prozessoren und einem Hardware Teil in dessen Logikbl cken durch den erw hnten Bitstrom individuelle Schaltungen programmiert oder konfiguriert werden k nnen System ACE Virtex Il Pro DDR RS232 Software Speicher PowerPC JTAG Hardware Mehrzweck IO Ethernet Plash ao South PS 2 Bridge 2 USB Parallel Port 2 PCl Slots Bild D 12 Blockschaltbild des ML310 Logik bl cke Transceiver no gt m Besonders hervorgehoben ist in Bild D 12 der JTAG Port ber den sowohl der Download des Bitstroms erfolgt Bild D 13 als auch die Ergebnisse des Logikanalysators zur ckgegeben werden Bild D 16 Au erdem sind die Mehrzweck lOs hervorgehobe
232. ommen 6 5 Als Hintergrundinformation wollen wir f r die Experten einige nicht pr fungs relevante technische Angaben zusammentragen Wesentliche Daten der FPGA Plattform und ihrer Varianten sowie der Nachfolge Plattform Virtex 4 zeigt Tabelle 6 20 Die rasante Entwicklung des FPGA Sektors wird an der letzten Tabellenzeile deutlich in der die Daten der XC4000 Familie vom Anfang des Kapitels gegen bergestellt werden Die XC4000 Serie wurde bis 1999 regelm ig erweitert Technische Daten und Ausblick Typ Logikzellen Blockspeicher PowerPC Multiplizierer IO Pins KBit CPUs 18x18 Bit Virtex ll 576 104 882 72 3 024 4 168 88 1 108 Virtex Il Pro 3 168 99 216 216 7 992 0 2 12 444 204 1 164 Virtex 4 LX 13 824 200 448 864 6 048 32 96 320 960 Virtex 4 SX 23 040 55 296 2 304 5 760 128 512 320 640 Virtex 4 FX 12 312 142 128 648 9 936 1 2 32 192 320 896 XC4000 1 368 20 102 192 448 Tabelle 6 20 Varianten der Virtex FPGA Plattformen Seit ihrer Einf hrung wurde die FPGA Plattform Virtex II Pro fortlaufend um leistungsf higere Bausteine erweitert Das derzeit gr te Familienmitglied V2P100 bietet ca 8 Mio Gatter quivalente in Form von etwa 100 000 Logikzellen zwei PowerPC Prozessoren 8MBit Blockspeicher 444 Multiplizier Bl cken 12 Taktgeneratoren und ber 1 100 frei verwendbaren IO Pins Im Praktikum setzen 6 5 Technische Daten und Ausblick 6
233. oorby P R The Verilog Hardware Description Language Springer 2002 Allgemeine Begriffe Abstraktionsebene 1 10 adaptiver Rechner 1 1 1 3 1 20 7 31 Antifuse 6 7 Application Specific Instruction Processor 7 2 Application Specific Integrated Circuit 1 6 Arbiter 7 14 Bitstrom 6 1 6 21 7 17 Black Box 2 8 Blockspeicher 6 16 CAD Werkzeug 1 10 CompactFlash 7 12 7 17 Complex PLD 6 3 Configurable Logic Block 6 9 Constraints 7 9 CoreConnect 6 18 7 13 Co Simulation 7 6 Cross Compiler 6 17 7 23 DDR Speicher 6 21 7 16 digitaler Signalprozessor 7 2 Direct Memory Access 7 29 Dokumentation 2 2 Dual Port 6 16 eingebettetes System 1 2 1 20 7 1 7 7 7 10 Electrically Erasable Pr Read Only Memory 6 3 Embedded System 7 7 Entwurfshierarchie 1 10 Ethernet 7 17 feldprogrammierbares Gate Array 6 1 Field Programmable Gate Array 1 19 First time right 1 10 Flipflop Kette 4 5 fl chtig 6 6 FPGA Plattform 6 12 Full Custom Entwurf 1 15 Gatterebene 1 11 1 15 Gattermodell 1 15 halbkundenspezifischer Entwurf 1 15 Hardware Beschreibungssprache 1 12 2 1 2 3 Hardware Entwurf 1 9 Hardware Software Codesign 1 3 1 20 6 2 7 1 hierarchische Vorgehensweise 1 10 Home Automation 1 1 1 3 Informations und Kommunikationstechnik 1 1 Instruction Set Simulator 6 17 Intellectual Property 7 5 7 20 Index intelligentes Haus 1 3 Interconnect 6 4 6 20 Interconnect Architektur 6 10 Interface 7 7 Interrupt 7 30 Interrupt Controller 7 14 IP C
234. opf Trigger Now Bild D 17 Markierung oben links Nun werden 512 aufeinanderfolgende Werte pro Datenbit des aktuellen Signalverlaufs im FPGA aufgezeichnet Im Waveform Fenster wird ein Signalverlauf f r jedes Bit angezeigt D 12 D Lab 3 Hardware Software Codesign auf dem ML310 i ChipScope Pro Analyzer new project E lolx Eile View JTAG Chain Device Trigger Setup Waveform Window Help l eM 2S 77l 2r eB j 4 New Project Trigger Setup DEV 1 MyDevice1 XC2VP30 UNIT 0 MyiL A0 ILA o A JTAG Chain X DEV 0 MyDeviced System_ACE Ei x Match Unit p ii Value L Radix Counter a DEV 1 MyDevice1 C2VP30 fa MO TriggerPorto x Bin ei AN raS 3 9 UNIT O MyILAD ILA Trigger Setup z Add Active Trigger Condition Name Trigger Condition Equation Output Enable Waveform a 1 TriggerConditiond MO Disabled Listing BUS RIDE G Type Window v Windows 1 Depth 512 Position 0 3 a ar ii a f Signals DEV 1 UNIT 0 amp We rm DEV 1 MyDevice1 XC2VP30 UNIT 0 MyiLAO ILA 5 gt gt gt 7 7 5 y 5 og K 2 Data Port Bus Sign x0 Trigger Ports J DataPort 0 of o DataPort 1 of 0 DataPort 2 ol o DataPort 3 oj o T DataPort 4 ol o DataPort 5 oj o DataPort 6 0 DataPort 7 o DataPort o DataPort 9 0
235. ore 7 20 JTAG Port 7 19 Layout Ebene 1 11 1 16 Logik Analysator 7 25 Logikblock 6 4 6 14 Logikebene 1 11 1 15 Logiksynthese 1 15 Lookup Table 6 4 6 9 6 15 Memory Mapping 7 28 Mikrocontroller 7 2 Mikrosystemtechnik 1 2 Mixed Mode Simulation 2 2 ModelSim 2 3 Moore sches Gesetz 1 3 Multi Processor System on Chip 6 12 Network on Chip 6 13 6 18 On Chip Memory Controller 6 17 On Chip Peripheral Bus 6 19 OPB Arbiter 7 14 Parallelport 7 16 partielle Rekonfiguration 6 22 Partitionierung 7 6 PCI Bus 7 16 Pipeline 1 13 4 4 4 6 Platzierer 6 5 Platzierung und Verdrahtung 1 10 PLB Arbiter 7 14 PowerPC 6 13 6 16 7 14 Processor Local Bus 6 19 Producer Consumer Problem 4 11 Productivity Gap 7 5 Programmable Logic Device 6 3 programmierbarer Logikbaustein 6 1 Programmiereinheit 6 5 Protokoll 7 7 Rapid Prototyping 1 19 6 2 Read Only Speicher 6 3 reaktives System 7 7 Register Transfer Ebene 1 11 1 13 Register Transfer Logik 4 4 regul re Vervielf ltigung 1 18 Rekonfiguration 6 21 Remote Debugger 6 17 7 24 reprogrammierbar 6 6 RTL Ebene 1 13 Schaltkreisebene 1 15 Schnittstelle 7 6 Semi Custom Entwurf 1 15 Silicon Compiler 1 10 Simple PLD 6 3 Simulation 2 2 Simulator 1 10 Slice 6 15 Spezifikation 2 1 Strukturmodell 2 9 Synthese 1 10 2 2 System ACE 7 17 SystemC 1 3 6 18 7 21 7 31 Systemebene 1 11 1 12 System on Chip 1 20 7 4 Test Inputs 2 7 Testmuster 2 7 Test Outputs 2 7 VERILOG Begriffe 2
236. ortiert andererseits werden die Messergebnisse des Logikanalysators an Chipscope exportiert D 14 D Lab 3 Hardware Software Codesign auf dem ML310 D 2 1 DCR Bus von der Software zum Addierer Der Addierer bekommt ein Bus Interface f r den Device Control Register Bus DCR des Virtex Il Pro und wird ber einen DCR Controller an den PowerPC angeschlossen Neben PLB und OPB ist der DCR der dritte On Chip Bus auf dem FPGA Virtex ll Pro Bild 6 18 Es handelt sich dabei um einen sehr einfachen Bus der vor allem f r den sporadischen Austausch von kleinen Datenpaketen mit wenigen Bits zwischen Hardware und Software gedacht ist Auf diese Weise k nnen wir die Summanden f r die Addition aus einem Software Programm auf dem PowerPC heraus an unseren Hardware Addierer bertragen Mit dem DCR k nnen pro Zugriff 32 Bit bertragen werden Ein Zugriff dauert dabei mehrere Takte der Bus geh rt daher zu den langsameren Vertretern seiner Art Jedes an den DCR angeschlossene Modul verf gt ber einen DCR Eingang und einen DCR Ausgang beide sind mit je einer 32 Bit Datenleitung und einer 10 Bit Adressleitung versehen Der DCR Ausgang des PowerPC ist DCR Eingang unseres Addierers dessen DCR Ausgang wiederum als DCR Eingang eines anderen IP Cores dient Kommt ein Datum am DCR Eingang an wird gepr ft ob die mitgeschickte Adresse im eigenen Adressbereich liegt Ist dies der Fall werden die Daten entgegen genommen Andernfalls werden sie einfach
237. p und Bild 6 15 ausf hrlich zeigen SHIFTIN DOUT PIN 4 ee o B SOPOUT G4 LUT YB RAM G1 ROM WG4 Shift Reg y Wai DY ALTDIG Q BY DIG CE CLK SR SHIFTOUT CIN Bild 6 15 Logikzelle des Virtex II Pro Das Herz einer Logikzelle ist ein Lookup Table LUT mit vier Eing ngen Dieser kann entweder eine beliebige boolesche Logikfunktion mit vier Variablen implementieren oder als 16 Bit Speicher fungieren oder auch als 16 Bit Schiebe register 6 16 6 Programmierbare Logikbausteine Weiter hat eine Logikzelle ein Register das als flankengesteuertes Flipflop oder als Latch konfiguriert werden kann und welches wahlweise die Ausgaben der LUTs oder Eingangssignale speichern kann 6 4 3 Blockspeicher und Multiplizierer Die Lookup Tables und Register der Logikbl cke lassen sich nat rlich zu gr eren Speicherbereichen zusammenschalten Zu bevorzugen ist bei gr eren Datenmengen aber der kompakte Blockspeicher BRAM der als schneller SRAM Speicher in den Spalten des FPGA enthalten ist Bild 6 13a Jede Zelle des maximal 10 Mbit gro en von Xilinx auch SelectRAM genannten Blockspeichers fasst 18 Kbit und kann ber zwei unabh ngige Dual Ports angesprochen werden Die Dual Ports k nnen auf verschiedene Bitbreiten konfiguriert und mit unterschiedlichen Taktraten verwendet werden Die berwindung von Taktgrenzen wie sie oft zwischen verschiedenen Hardwa
238. plementierung auf ein sp teres Entwurfsstadium verschoben werden Eine abstrakte algorithmische Darstellung unterst tzt den Designer bei der Erforschung von Alternativen der Schaltungsarchitektur und bei der Entdeckung von Entwurfsengp ssen bevor der Entwurf detailliert wird Es gibt mehrere Gr nde f r den Einsatz von HDLs im Gegensatz zum fr her blichen Entwurf mit Schaltpl nen Um Komplexit ten von Millionen von Gattern je Chip f r den Menschen zug nglich zu machen Abschnitt 1 2 muss die Funktionalit t auf einer hohen Sprachebene ausgedr ckt werden die die Einzelheiten der Implementierung verbirgt Aus einem hnlichen Grund haben ja auch die h heren Programmiersprachen die Assemblersprachen bei den meisten gro en Programmen verdr ngt Der Wettbewerb auf dem Gebiet der Mikroelektronik ist gro neue Firmen auf dem Markt erzeugen einen hohen Druck die Entwurfseffizienz zu erh hen die Entwurfskosten zu senken und vor allem die time to market zu verringern Ausgiebige Simulationen k nnen Entwurfsfehler vor der Chip Fertigung entdecken und so die Zahl der Entwurfsiterationen verringern Eine effiziente Hardware Beschreibungssprache hilft dabei Die Beschreibung eines Entwurfs in einer Hardware Beschreibungssprache bringt mehrere Vorteile Eine HDL kann erstens zur Spezifikation verwendet werden Der Vorteil einer formalen Sprache wie VERILOG HDL besteht darin dass die Spezifi kation vollst ndig und eindeutig ist Trot
239. py linel Writing to DCR print_hex line2 writeData gebe linel und line2 auf dem LCD aus Ausgabe der Argumente ueber die serielle Schnittstelle xil_printf A 0x x B 0x x r n a b warte 2 Sekunden usleep 2000000 Sende writeData ueber den DCR Bus an den Addierer Lese Berechnungsergebnis ueber DCR vom Addierer readData Gebe Ergebnis auf dem LDC aus sprintf linel A B Y print_hex line2 gebe linel und line2 auf dem LCD aus Gebe Ergebnis ueber serielle Schnittstelle aus return 0 Beispiel D 31 DCR Bus hinzuf gen und Instanzen anschlie en Wechseln Sie im XPS Projektfenster in den Applications Tab Klicken Sie mit der rechten Maustaste auf Software Projects und w hlen Sie Add SW Application Project Geben Sie testApp_adder als Projektnamen ein und w hlen Sie die D 26 D Lab 3 Hardware Software Codesign auf dem ML310 Prozessor Instanz ppc405_0 aus Das neue Projekt wird angelegt Mit einem Rechtsklick auf Sources Add File f gen Sie die f nf Quelltextdateien zum Projekt hinzu Die im Projektfenster erscheinenden C Dateien k nnen per Doppelklick im Quelltext Editor angezeigt werden Sehen Sie sich das Hauptprogramm in testApp_adder c an Beispiel D 31 Die Zeilen 01 bis 12 dienen lediglich zur Variablendefinition und Initialisierung In den Zeilen 15 und 16 werden a und b die beiden Summanden der
240. r Aufgabe ein Puzzle mit bis zu einer Milliarde Teilen zusammenzusetzen wobei jeder noch so kleine Fehler zu einem Schaden von einer Million Dollar f hrt Sind h rtere Spielregeln denkbar 1 3 1 Chip Entwurf leicht er gemacht Bevor jedoch auch der letzte Interessent f r unser Gebiet deprimiert aufgibt wollen wir in einer wesentlich optimistischeren Sicht plausibel machen warum der Entwurf eines normalen digitalen Chips gar nicht so schwierig und schnell erlernbar ist Wir wollen uns also Mut machen dass der Chip Entwurf trotz explodierender Komplexi t ten relativ leicht und ohne allzu viele technische Spezialkenntnisse erfolgreich durchgef hrt werden kann Entkoppelung von Entwurf und technischer Realisierung Der jahrzehntelange exponenzielle Anstieg der Integrationsdichte war keineswegs nur eine Last Denn hnlich wie bei der Entwicklung der Rechner oder Programmier sprachen entstanden unter dem Druck steigender Komplexit t zun chst in der Forschung und dann in der Praxis allgemeinere abstraktere und h here Denkweisen und Prinzipien die letztlich zu besseren und einfacheren L sungsstrategien gef hrt haben So erm glichten schnellere und gr ere Rechner und Speicher den an sich verschwenderischen aber komfortablen und fehlerarmen Einsatz h herer Programmiersprachen und ihrer Compiler deren Existenzberechtigung niemand mehr bezweifelt Beim Chip Entwurf fand eine verwandte und hnlich aufregende Entwicklung statt indem
241. r BUFFER hochohmig gesetzt ist und damit auf der Datenleitung keinen Schaden anrichtet da die beiden lokalen M1 CLOCK und M2 CLOCK gegenphasig arbeiten kann hier kein Ungl ck passieren In jedem der beiden Untermodule gibt es einen CONSUMER der ab Zeile 21 bei allen interessierenden nderungen Werte vom Bus DATA abgreift In diesem Fall ist der CONSUMER eine Sdisplay Anweisung es k nnte genauso gut eine sich anschlie ende andere Datenverarbeitung sein Bei jeder positiven lokalen Taktflanke schickt ein PRODUCER in diesem Fall der COUNTER in Zeile 14 einen Wert an den BUFFER und damit auf die Datenfernleitung Durch den Takt ist daf r gesorgt dass 4 3 Bidirektionale Kommunikation 4 11 dies immer dann geschieht wenn der BUFFER nicht hochohmig ist das Schreiben von z in den BUFFER ist eine weitere Funktion des PRODUCER Die beiden Untermodule M1 und M2 vom Modultyp m sind nun zum einen durch ihren Instanzennamen personalisiert zum anderen durch den in den Zeilen 35 36 unterschiedlich vereinbarten Startwert 0 bzw 100 des COUNTER Damit spielen die beiden Instanzen Ping Pong indem beide ihren hochgez hlten Startwert abwechselnd auf die Fernleitung schicken Diese Nachricht wird vom Partnermodul verstanden und mit Sdisplay ausgegeben Zeit M1 CLOCK M2 CLOCK M1 DATA M2 DATA 10 0 x 10 10 10 20 20 20 20 30 30 30 30 40 40 40 40 50 50 50 50 60 60 60 60 Bild 4 13 Simulationsergebnis zum Beispiel 4
242. r ISE ModelSim eigene Befehle Bild 4 9 Grafische Pipeline Ausgabe zu Beispiel 4 8 Bild 4 10 RTL Netz aus Flipflops und kombinatorischer Logik Die Pipeline kann drei Datens tze gleichzeitig bearbeiten Pro Takt gibt sie ein fertiges Gesamtergebnis aus und ist daher drei mal so schnell wie die sequenzielle Berechnung aller drei Funktionen F gen wir in die Pipeline aus Bild 4 7 noch wie in Bild 4 10 eine R ckkopplung ein wird aus der Pipeline ein allgemeines Automaten 4 3 Bidirektionale Kommunikation 4 9 netz Im Beispiel 4 8 ndert sich Zeile23 aus R2 lt f1 R1 wird R2 lt f1 R1 R3 4 3 Bidirektionale Kommunikation Mit bidirektionalen Verbindungen k nnen zwei oder mehr Module durch einen gemeinsamen Datenbus in beiden Richtungen kommunizieren Diese Konstruktion als Modell f r reale bidirektionale Tristate Busse ist nicht ganz einfach zu verstehen dieser Abschnitt ist jedoch von grundlegender Bedeutung Das Beispiel 4 12 Bild 4 11 enth lt zwei Instanzen M1 und M2 eines Unter moduls vom Typ m In den Erl uterungen unterscheiden wir die beiden Instanzen durch den vorangestellten Instanzennamen M1 DATA ist demnach der formale Parameter DATA von Instanz M1 GLOBAL_CLOCK GLOBAL_CLOCK M1 DATA GLOBAL_DATA M1 BUFFER F m a i i M1 PRODUCER M1 CONSUMER M2 CONSUMER M2 PRODUCE Wire Register gt St ndige 0200 n Normale Zuweisung Zuweisung Bild 4 11 Bidirektionale Produ
243. r Size den Wert 4 ein Damit ist der Adressbereich unter dem der Addierer auf dem DCR Bus erreichbar ist eindeutig festgelegt Best tigen Sie mit OK Um den Addierer mit den anderen Modulen Ihres Hardware Software Systems zu verbinden muss er in der Datei system mhs noch verdrahtet werden Zu Ihrem Gl ck brauchen Sie sich um den Anschluss an den DCR Bus nicht selbst zu k mmern das bernimmt XPS f r Sie Aber die Verbindung mit der Clock und Reset Leitung sowie mit dem Logikanalysator ChipScope liegt in Ihrer Hand F gen Sie also in der Sektion aplusb_writeonly zwischen den beiden Zeilen BUS_INTERFACE SDCR dcr_v29_0 END folgendes ein PORT nRESET sys_rst_s PORT CPU_CLK sys_clk_s PORT DBG_IN APLUSB_DBG_IN D 16 D Lab 3 Hardware Software Codesign auf dem ML310 PORT DBG_OUT APLUSB_DBG_OUT PORT DBG_DCR_WRITE DBG_DCR_WRITE Add Edit Hardware Platform Specifications x Peripherals Bus Connections Addresses Ports Parameters Click on squares to make master slave or master slave M S MS connections Right click on any bus instance column header for a context menu E 2 Cee A E H am ppc405_0 mder ppc405_0 dpb ppc405_0 iplb Choose the BRAM port to connect to the controller port ppc405_0 dsocm Give a name to the connection BRAM Port Connector isocm_bram PORTA _ isocm_porta isocm_bram PORTB x isocm_portb dsocm_bram PORTA xl dsocm_porta ppc
244. r und holen Sie sich den Punkt Lenken Sie Ihren Gegner ab damit er das Zeichen sp ter bemerkt als Sie Trigger Happy ist f r zwei Spieler Auf dem ML310 spielen Sie mit den beiden Tastern die an die IO Anschl sse der Frontblende angeschlossen sind Die 20 Leuchtdioden LED zeigen den Punktestand und fordern Ihre Reaktion heraus Nach einer Zufallszeit wird die mittlere LED eingeschaltet Seien Sie schneller als Ihr Gegner und dr cken Sie Ihren Taster zuerst Die mittlere LED erlischt und wer schneller am Dr cker war bekommt einen Punkt gut geschrieben Zwei leuchtende Balken die sich vom linken und rechten Rand aufbauen zeigen den aktuellen Punktestand der beiden Kontrahenten Schummeln wird bestraft Wer zu fr h dr ckt bekommt einen Punkt abgezogen Gewonnen hat wer zuerst 9 Punkte erreicht D 6 2 Realisierung als Hardware Software Codesign Die exakte Ermittlung der Reaktionszeiten der beiden Spieler erfordert eine schnelle Hardware L sung Im Eifer des Gefechts kann es auf Nanosekunden ankommen Software w re hier nicht schnell genug beziehungsweise eine reine Software L sung w re nur mit unverh ltnism ig gr erem Aufwand m glich Wir partitionieren die Entwurfsaufgabe deshalb wie folgt in Hardware und Software Hardware 1 Benutzerschnittstelle a Zustand der beiden Taster gedr ckt nicht gedr ckt b Ansteuerung der 20 LEDs ein aus 2 Reaktionszeitmessung a Erkennung welcher Taster zuerst gedr ck
245. rache ein und w hlen den Punkt Browse to your existing HDL source and dependent library files vhd v in next step D 6 D Lab 3 Hardware Software Codesign auf dem ML310 LMM gr HDL Source Files X Indicate how this tool should locate the HDL files that make up your peripheral HDL language used to implement your peripheral Verilog 7 Use data mpd collected during a previous invocation of this tool Browse r How to locate your HDL source files and dependent library files Use an ST project file prj This tool will input the HDL file set and the logical libraries they are compiled into from the appropriate lines in the project file Browse Browse Use existing Peripheral Analysis Order file pao Bild D 7 More Info Weiter gt Fertig stele Abbrechen HDL und Art der Quelldateien festlegen In Step4 f gen Sie die beiden VERILOG Dateien adder v und aplusb_hw v zum Core hinzu In Step 5 m ssen Sie keine Einstellungen machen W hlen Sie in Step 6 lediglich No Interrupt klicken in Step 7 einfach auf Weiter und im letzten Fenster endlich auf Fertig stellen Alle erstellten IP Cores werden im Unterverzeichnis pcores Ihres Projektverzeichnisses gespeichert dort befindet sich f r den Addierer nun das neue Verzeichnis aplusb_hw_v1_00_a zusammengesetzt aus IP Name und Versionsnummer Herzlichen Gl ckwunsch Sie haben Ihren ersten IP Core selbst erstellt
246. rb nke konkurrieren Eine gut durchdachte Kommuni kationsarchitektur hilft den Bedarf an Verdrahtungs Ressourcen auf dem FPGA nicht durch unkontrolliert verlegte Punkt zu Punkt Leitungen explodieren zu lassen Zur Auswahl stehen daher ein Network on Chip mit eigenen Bussen und wie fr her ein ausgekl geltes Interconnect f r die Verdrahtung der Logikbl cke Bild 6 17 Virtex ll Pro Verbindungs architektur Network on Chip CoreConnect Interconnect Processor Local On Chip Peripheral Kontrollbus Bus PLB Bus OPB DCR Long Hex Double Nachbar CLB interne Lines Lines Lines Verbindungen Verbindungen Bild 6 17 Verbindungsarchitektur im Chip 6 4 5 1 Network on Chip Die FPGAs Virtex II Pro und Virtex 4 verwenden als internes Network on Chip die von IBM entwickelte Architektur CoreConnect Bild 6 18 Der Datenaustausch erfolgt ber zwei On Chip Busse die von allen System komponenten gemeinsam f r die Daten bertragung genutzt werden k nnen Sie sind jedoch nicht fest auf dem Chip vorhanden sondern werden je nach Bedarf aus Logikzellen und mit dem Interconnect Abschnitt 6 4 5 2 rekonfigueriert 6 4 Multiprozessor FPGA Plattformen 6 19 Hauptspeicher System Peripherie Peripherie BRAM Kern Kern Kern PLB On Chip Peripheral Bus OPB pies Arbite r EN Bridge Processor Local Bus PLB CoreConnect Busarchitektur Dat
247. rd das System durch algorithmische Konstrukte beschrieben Auf der Logikebene wird das System zwar immer noch hierarchisch beschrieben wobei am unteren Ende jedoch einfache Bausteine wie Gatter stehen Auf dieser Ebene k nnen Timing Analysen durchgef hrt werden Dabei sind Mixed Mode Simulationen m glich indem Teile einer Schaltung oder eines ganzen Systems auf einer hohen Verhaltensebene andere Teile dagegen beispielsweise auf der Gatterebene simuliert werden Da die Simulationszeit auf den unteren Ebenen bei gro en Entw rfen eine wesentliche Beschr nkung darstellt k nnen jeweils ausgew hlte Module verfeinert getestet und anschlie end wieder durch ihre h here Darstellung ersetzt werden Dies unterst tzt die vertikale Verifikation Die Sprache VERILOG HDL ist einfach aufgebaut Sie stellt lesbare Konstrukte f r die Beschreibung von Hardware bereit Eine vergleichbare Beschreibung in VHDL kann doppelt so lang werden wie in VERILOG Einerseits ist diese prominente Rivalin von VERILOG sprachlich m chtiger andererseits ist sie umst ndlicher zu erlernen und einzusetzen und die Simulationszeiten sind oft deutlich l nger In VERILOG braucht ein Designer nur eine Sprache f r alle Ebenen oberhalb der Analog Ebene zu lernen VERILOG ist der Programmiersprache C hnlich und nicht schwer zu lernen VERILOG unterst tzt sowohl Strukturbeschreibungen als Netze von Gattern Komponenten und Modulen als auch algorithmische Verhaltensmodelle mit
248. re die sich dann mit Ihrer Hardware unterh lt Und fertig ist ein eingebettetes System das Sie im Navi wiederfinden in der Ski Bindung im intelligenten K hlschrank und hoffentlich nicht in Ihrer Neuroprothese F r zahlreiche Fehler dieses Skriptes bin ich allein verantwortlich und bitte um Ihre Verbesserungsvorschl ge Dagegen ist das Vorhandene nicht nur mein Verdienst vielmehr schulde ich besonderen Dank meinen Mitarbeitern Susanne Neugebauer Hagen G dke Robert G nzel Christian Schr der Marco Nordmann Gerrit Telkamp und J rgen Hannken Illjes und trotz regelm iger Beziehungskrisen auch MS Word Ein erfolgreiches Semester und Spa an Spiel und Ernst des Hardware Software Designs w nscht Ulrich Golze im Oktober 2008 Inhalt Teil 1 Vorlesung 1 Einleitung 1 1 BS aL CIS a ana ss 1 1 1 2 Das exponenzielle Wachstum der Mikroelektronik 1 3 1 3 Der Hardware Pritwurl ee ak 1 9 1 3 1 Chip Entwurf leicht er gemacht u nennen 1 9 Entkoppelung von Entwurf und technischer Realisierung 1 9 CAIDA CE ZOM OG ee ee wen 1 10 Weitere Erleichterungen ass een 1 10 1 3 2 Hierarchische Vorgehensweise euere 1 10 Verbaltensebeie annonae raoa a RAAE 1 11 Systeme DENE Au een 1 12 Register Transfer Ebene RTL Ebene ee 1 13 Losik oder G tterebene ae rer 1 15 Schalfkreisebene ip sstania Sutiiesvsuanieneioes e aerie iA ie E EEE 1 15 Layo
249. re Modulen auf einem System on Chip vorkommen wird dadurch erleichtert Clock Domain Crossing Pro Taktzyklus k nnen gleichzeitig 18 Bit geschrieben und gelesen werden Speziell f r Anwendungen aus der digitalen Signalverarbeitung wurden 18x18 Bit gro e Multiplizier Bl cke entwickelt In Kombination mit einer Blockspeicher Zelle und einem LUT basierten Akkumulator bilden sie Multiplizier Akumulator Funktionen MAC die in digitalen Signalprozessoren DSPs zur Realisierung von Filterfunktionen eingesetzt werden 6 4 4 Die eingebetteten Prozessoren PowerPC 405 Hardware und Software auf einem Chip zu integrieren ist der Schl ssel f r leistungs f hige und zugleich kleine und stromsparende eingebettete Systeme wie MP3 Player oder Marsroboter In den FPGA Plattformen Virtex I Pro und Virtex 4 stehen die beiden eingebetteten Prozessoren PowerPC 405 auf k rzestem Wege mit den rekonfigurierbaren Logikzellen in Verbindung n mlich mit bis zu 18 GBit s Solche HW SW Plattformen erleichtern erheblich ein Rapid Prototyping das hei t die schnelle Realisierung eines ersten Versuchssystems ebenso wie die Realisierung komplexer Endprodukte Der PowerPC 405 ist ein 32 Bit RISC Prozessor mit f nfstufiger Pipeline Holen eines Befehls aus dem Speicher Dekodieren Ausf hren des Befehls und Zur ck schreiben der Ergebnisse in den Speicher zwei Stufen Mit der Fixpunkt Rechen einheit k nnen die meisten Operationen in einem Takt ausgef hrt werden
250. rem Die derzeit technologisch und kommerziell f hrenden FPGA Plattformen sind Virtex II Pro und ihre Weiterentwicklung Virtex 4 Als Universalbausteine erlauben sie eine unglaubliche Vielfalt von Hardware Software Realisierungen f r unter schiedlichste eingebettete Systeme von der Digitalkamera ber digitale Fernsehger te DVB HDTV bis hin zu Steuerger ten f r die Fahrzeugelektronik Home Automation oder Raumfahrttechnik 6 4 1 Architektur des Virtex Il Pro Mit Einf hrung der Plattform Virtex II Pro steht erstmals eine FPGA Technologie zur Verf gung die das Prototyping von Multi Processor System on Chips MPSoC mit mehreren Millionen Gattern erm glicht und dabei Taktfrequenzen bis 400 MHz erreicht Die Kosten bewegen sich im Bereich einiger tausend Euro so dass neben dem wichtigen Prototyping auch kurzlebige Technologien wie Mobiltelefon Chips tze sehr viel g nstiger realisiert werden k nnen als noch vor wenigen Jahren brigens setzen wir die Plattform Virtex II Pro auch in den bungen im Praktikum und in der Forschung zum Hardware Software Codesign ein Auch fr her hat man schon Prozessorkerne in FPGAs integriert und damit auch schon MPSoC L sungen realisiert Damals wurden die Prozessoren jedoch als Soft Cores eingebaut d h als VERILOG oder Gattermodell das dann gemeinsam mit der anwendungsspezifischen Hardware auf dem FPGA konfiguriert wurde Dies hat je nach Komplexit t und Anzahl der verwendeten Prozessoren so vi
251. rgt sich unter B 1 Hello World B 5 anderem der f r uns interessante Prozess Launch ModelSim Simulator Doppelklicken Sie diesen Prozess Bild B 7 Processes for Source hello_world FE Add Existing Source Create New Source View Design Summary Design Utilities Create Schematic Symbol Launch ModelSim Simulator View Command Line Log File View HDL Instantiation Template User Constraints Synthesize ST Implement Design Generate Programming File Analyze Design Using Chipscope P OOO Bild B 7 Aufruf des Simulators u E Process View ModelSim B 1 6 Benutzeroberflache von ModelSim Der VERILOG Simulator ModelSim wird nun gestartet Das Workspace Fenster oben links in Bild B 8 zeigt alle Module Modulinstanzen initial und always Bl cke sowie Continuous Assignments Die beiden Fenster rechts davon geben Waveforms aus Die Konsole unten dient der Kommunikation mit ModelSim Im Workspace Fenster sehen wir momentan die zwei Module hello_world und glbl Letzteres ist automatisch hinzugef gt und steuert den globalen Reset und Takt verz gerungen Wir akzeptieren lediglich seine Existenz und wenden uns stattdessen unserem hello_world Modul zu Die Angabe INITIAL 3 direkt unter hello_world verr t den Beginn eines initial Blocks in der dritten Zeile Klicken Sie mit rechts auf hello_world und w hlen View Declaration Im Waveform Fenster k nnen Sie nun den Quelltext von hello_world sehen
252. ritte eines Hardware Software Codesign Nach einer Analyse der Anforderungen f hrt die Spezifikation zu einem m glichst schon ausf hrbaren Modell in einer geeigneten Hochsprache etwa UML und SystemC Statecharts oder auch Mathlab Simulink oder SDL 7 6 7 Hardware Software Codesign Es folgt ein sehr schwieriger und komplexer Schritt zur Auswahl einer Grobarchitektur mit bestimmten Hardware und Software Komponenten die zu einer Aufteilung oder Partitionierung in Software auf einem Standard Prozessor Abschnitt 7 1 1 und Spezial Hardware Abschnitt 7 1 2 f hrt Beispielsweise geh rt zur Komponenten Auswahl ob ein System on Chip oder ein Board System entwickelt werden soll Von der gew hlten Prozessorarchitektur h ngt ab welche Software Entwicklungswerkzeuge z B Compiler einer bestimmten Sprache genutzt werden k nnen Es geh rt Fingerspitzengef hl dazu dass der Prozessor am Ende weder zu klein noch zu teuer ist F r die Software muss gegebe nenfalls auch ein Betriebssystem bestimmt werden Oft schon w hrend der Komponenten Auswahl wird die Partitionierung ber ck sichtigt bei der das Gesamtsystem in einen Hardware und einen Software Teil zerlegt wird Neben der Partitionierung sind f r die Kommunikation zwischen Software und Hardware geeignete Schnittstellen Interfaces Protokolle etc zu definieren und zu entwerfen Ohne sorgf ltige Schnittstellen Spezifikation k nnen sp ter teure Redesigns von Software und Hardware notwe
253. rogrammable Gate Arrays In diese physikalisch fertigen Logikbausteine l sst sich beliebig oft und sofort eine v llig individuelle Schaltung hineinprogrammieren Zwar sind sie bei gro en St ckzahlen weniger wirtschaftlich und an Geschwindigkeit und Komplexit t gefertigten Chips unterlegen f r viele mittlere Anwendungen reichen sie aber v llig aus und sind gerade beim schnellen Ausprobieren oder Rapid Prototyping unent behrlich geworden O Zelle mit Pad programmierbare Verbindungen programmierbarer Logikblock Bild 1 24 Typischer Aufbau eines FPGA Bei FPGAs sind wie in Bild 1 24 ein Feld von beispielsweise 100 000 relativ einfachen Logikbl cken und ein Netz von Verbindungsbussen vorgegeben beide k nnen durch das Laden von 0 1 Mustern programmiert werden so dass man eine individuelle Verschaltung aus individuellen Logikbausteinen erh lt Der Einsatz solcher FPGAs beschr nkt sich bei weitem nicht auf das Rapid Prototyping Vielmehr sind FPGAs auch immer h ufiger als Endprodukt in eingebetteten Systemen zu finden Beispielhaft genannt seien Controller aller Art f r Speicher FIFOs Schnittstellen Grafik Peripherie viele Anwendungen in der Kommunikation uvam Dann ist es von Vorteil dass sich die FPGA Schaltungen wie normale Software updaten lassen etwa wenn der Standard sich ge ndert hat oder auch nur im nie endenden Marathon von Versionen Fehlerbeseitigung und neuen Fehlern 1 20 1 Einleitung In adapt
254. rung von x auf 1 ENABLE finish end endmodule Beispiel 3 16 Alternative mit V13 case casez Bei der Fallunterscheidung mit case wird der Auswahlausdruck in Klammern der Reihe nach mit jedem der F lle bit weise verglichen Ist ein Vergleich erf llt d h stimmen beide Ausdr cke an allen Bit Stellen w rtlich berein Werte 0 1 x bzw z V22 so wird die entsprechende Anweisung ausgef hrt Danach wird hinter dem case fortgefahren Trifft kein Vergleich zu wird sofern vorhanden die default Anweisung ausgef hrt Bei casez dagegen sind alle z in allen Ausdr cken don t care d h ein Vergleich mit z ist automatisch wahr Bei case w re dies nur der Fall wenn der andere Wert ebenfalls ein z ist Das Beispiel 3 17 verdeutlicht den Unterschied zwischen case und casez Die case und die casez Anweisung geben jeweils aus welchen Fall von SELECT sie erkannt haben Der initial Block erzeugt die nderungen von SELECT Ein kann synonym zu z verwendet werden 3 16 module case_a SE reg 1 0 always write Stime SE Zeit ECT SELECT write case S case EL ECT 2 b00 2 b01 2 b0x 2 b0z default Swrite endcase write casez 2 b00 2 b01 2 bOx 2 b0z default Sdispl endcase end Swrite Swrite Swrite Swrite casez S ELECT displ displ
255. rzielles IC 1 Flipflop 2 T 8 R u VO VO 1 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Bild 1 3 Chip Komplexitat i Nebenbei bemerkt scheint die Kurve in Bild 1 2 erst ab 1995 zu explodieren aber bei anderen Ma st ben der y Achse w rde die e Funktion entsprechend fr her abheben Daher ist der logarithmische Ma stab in Bild 1 3 zwar weniger eindrucksvoll aber brauchbarer 1 2 Das exponenzielle Wachstum der Mikroelektronik 1 5 Statt des Fachbegriffs Very Large Scale Integration oder VLSI f r den Stand der Technologie ist daher der Trend der Mikroelektronik noch charakteristischer den man durch ALSI bezeichnen k nnte Always Larger Scale Integration Zwar hat Gordon Moore den j hrlichen Zuwachs etwas bersch tzt aber ganz bestimmt hat er es sich nicht tr umen lassen dass sein Gesetz wie in Bild 1 3 beim Wachstum der DRAM Speicher 45 Jahre lang gelten w rde und von einem Flipflop zu einem zwei Milliarden mal so gro en 2G Speicher f hren w rde W hrend in Bild 1 3 das Speicherwachstum in Transistoren mit dem Wachsen in Bits praktisch bereinstimmt sind die Mikroprozessoren nur um j hrlich durchschnittlich 43 gewachsen Dieses Wachstum hat in letzter Zeit wieder zugenommen da der gr te Anteil eines modernen Prozessors ohnehin aus Cache Speichern besteht 504 2M Transistor a i F 204 4 Kanall nge 500k
256. s NAND2 typisch fanout 3 250 RAS cycle time ns Vcc 5V f r gt 0 54 2007 Vcc 1V fiir lt 0 54 1504 1004 504 10p T TT T TT a a rn ren TT Opp 5u 3u 2p 1 54 1 0u 7u 5u 35u 25p 18u 13u 1u 70n 50n 1980 1985 1990 1995 2000 2005 2010 Bild 1 9 Gatter Schaltzeit Bild 1 10 Speicher Zugriffszeit Aus den k rzeren Transistoren resultieren unmittelbar die schnelleren Gatter aus Bild 1 9 w hrend sich die Speicher Zugriffszeiten in Bild 1 10 im Wesentlichen nur um m de 6 j hrlich verbessert haben ein weiterer Flaschenhals zwischen Chip und Speicher wird sichtbar Schlie lich werfen wir noch einen Blick auf die wirtschaftliche Seite Die Kosten einer modernen Chip Fabrik sind nach Bild 1 11 auf astronomische 5 Milliarden Dollar gestiegen Faktor 9 alle 10 Jahre was sich auch in steigenden Chip Herstellungskosten in Bild 1 12 niederschl gt Ein Kunde wird heute abgeschreckt durch zwei Millionen Dollar die f r den ersten Prototypen in Maximalgr e f llig sind Nat rlich werden auch kleinere und ltere Technologien wesentlich kosten g nstiger angeboten Trotz steigender Gesamtpreise sind jedoch in Bild 1 13 die Speicherkosten pro gespeichertes Bit dramatisch gefallen Gl cklicherweise werden wir in den programmierbaren Schaltungen eine kosteng nstige Alternative f r die Prototypenfertigung kennenlernen 1 8 1 Einleitung a W Kosten pro Fab US gonm 65n m NRE Kosten US
257. s k nnte den Aufbau von Beispiel 3 41 besitzen Daten fuer den Speicher 0000_0000 0000_0001 O000_0010 0000_0011 0000_0100 0000_0101 0000_0110 0000_0111 0000_1000 0000_1001 0000_1010 0000_1011 0000_1100 0000_1101 0000_1110 0000_1111 Beispiel 3 41 Musterdaten Dabei wird die erste Bin rzahl dem Element des Feldes zugewiesen welches dem linken Index der Deklaration entspricht und so fort Der Speicher wird in dem Beispiel mit den Werten 0 bis 15 initialisiert 3 36 3 Die wichtigsten Befehle von VERILOG Modellierungskonzepte in VERILOG Neben den VERILOG Befehlen selbst ist dieses Kapitel besonders wesentlich und grundlegend 4 1 Parallelit t und Ereignissteuerung des Simulators In normalen Programmiersprachen wie C werden die Anweisungen der Reihe nach bearbeitet Ein Programmz hler PC zeigt auf die jeweils aktuelle Anweisung Nach Ausf hrung dieser Anweisung wird der PC um 1 erh ht oder bei Verzweigungen Schleifen und hnlichem geeignet angepasst Grunds tzlich gibt es nur einen Kontrollfluss In realen Schaltungen arbeiten alle Komponenten parallel was sich in der Schaltungssimulation irgendwie niederschlagen muss Beispielsweise kann eine Taktflanke an vielen Stellen zugleich Aktionen ausl sen oder es gibt parallel arbeitende always Bl cke Insgesamt haben wir im vorigen Kapitel folgende M glichkeiten zur Modellie rung der Parallelit t in VERILOG kennen gelernt l Instanzen von Modulen V1
258. sgabe ist nat rlich das Ergebnis Nach der Variablendeklaration werden die Operationsnamen mit einem define an eine Bit Kombination gebunden Solche Ersetzungen gelten ab der Deklaration bis zum Ende des Quelltextes also auch ber Modulgrenzen hinaus Sobald sich A B oder OPCODE ndern ruft der always Block die Funktion calculate auf Die Fallunterscheidung case w hlt dort mit dem 3 Bit breiten OPCODE die zu berechnende Funktion aus Das Ergebnis liefert die Funktion ber ihren Namen Dabei kann die Anzahl der Ergebnis Bits vor dem Funktionsnamen angegeben werden ALU Verhaltensmodell 00 module alu 4 7 01 input wire 2 0 OPCODE Ik 02 wire 31 0 A 03 B 04 output reg 31 0 RESULT 05 i 06 07 define ADD 3 000 0 nur zur Uebung 08 define MUL p001 ZZ A Konstanten auf 09 define AND 3 02 Ti 2 verschiedene Arten Sf 210 2 berblick zur Hardware Beschreibungssprache VERILOG 2 7 define LOGAND 3 h3 ff 3 ff Ad define MOD 4 ff 4 ff 22 define SHL 3 b101 V4 3 13 14 15 function 31 0 calculate 16 input 2 0 OPCODE ff L7 31 0 A 18 B f 19 f 20 IH 23 case OPCODE If 22 ADD calculate A B 23 MUL calculate A B 24 AND calculate A amp B f f 25 LOGAND calculate A amp amp B Sf 26 MOD calculate A B DR 27 SHL calculate A lt lt
259. st B 1 4 Quelltext erzeugen und ins Projekt einf gen Erzeugen Sie nun eine neue VERILOG Moduldatei indem Sie im Quellenfenster rechtsklicken und New Source w hlen W hlen Sie im Dialog in Bild B 5 Verilog B 4 B Lab 1 VERILOG und seine Tools Module an und tragen Sie unter File Name den Dateinamen hello_world ein Best tigen Sie diesen und die weiteren Dialoge mit Weiter bzw Fertig stellen SI ij x Embedded Processor Tip CoreGen amp Architecture Wizard D Schematic B State Diagram ENDE Test Bench Waveform hello_world B User Document v Verilog Module Location Verilog Test Fixture C test hello_wonld F D YHDL Library V VHDL Module F VHDL Package EA VHDL Test Bench V Add to project Bild B 5 Neue AE Abbrechen Hite VERILOG Moduldatei anlegen Das Objekt hello_world hello_world v im Quellenfenster bedeutet dass nun das Modul hello_world in Datei hello_world v Teil Ihres Projektes ist Durch einen Doppelklick k nnen Sie den entsprechenden Quelltext im Hauptfenster betrachten und ver ndern F gen Sie in das Modul den Quelltext aus Beispiel B 6 ein und speichern Sie mit Strg s module hello_world initial begin display Hello World end endmodule Beispiel B 6 Hello World B 1 5 Simulator aufrufen Klicken Sie einmal das Modul hello_world im Quellenfenster und betrachten Sie die zugeh rigen Prozesse im Prozessfenster Unter Design Utilities verbi
260. st Fixture ID VHDL Library V VHDL Module al V Add to project lt Zurich Abbrechen Hilfe Bild B 15 Testrahmen erzeugen Der automatisch generierte Testrahmen test_flipflop erscheint nun im Quellen fenster Betrachten Sie seinen Quelltext Beispiel B 16 B 12 B Lab 1 VERILOG und seine Tools timescale ins 1ps module test_flipflop Inputs reg 7 0 IN reg CLOCK reg RESET Outputs wire 7 0 DATA Instantiate the Unit Under Test flipflop uut DATA DATA IN IN CLOCK CLOCK R ESET RESET E initial begin Initialize Inputs 0 LOCK 0 ESET 0 Wait 100 ns for global reset to finish 100 Add stimulus here end endmodule Beispiel B 16 Automatisch generierter Testrahmen Nach der Deklaration von Input und Output Signalen folgt die Instanzierung des Moduls flipflop Die I O Ports werden hier durch die Port Namen zugeordnet Bevor Sie die Simulation durchf hren k nnen muss der Testrahmen noch um eine Takterzeugung Stimuli und ein Monitoring erweitert werden Komplettieren Sie den Testrahmen wie in Beispiel B 17 Achten Sie darauf die Zeile CLOCK 0 unter Initialize Inputs zu l schen timescale ins 1ps module test_flipflop Inputs reg 7 0 IN reg CLOCK reg RESET Outputs wire 7 0 DATA Instantiate the Unit Under Test UUT flipflop uut
261. t in vielen F llen ein gutes Produkt aber 7 5 HW SW Codesign in der Praxis die universelle Entwicklungsplattform ML310 7 15 mit steigendem Funktionsumfang HDTV DVB Receiver Digital Timeshift Videorekorder auch immer h ufiger ein von unerw nschten Denkpausen und Abst rzen geplagtes Ger t Vor diesem Hintergrund sind in den letzten Jahren neue Technologien wie die FPGA Plattformen aus Abschnitt 6 4 integriert worden in Hardware Software Entwicklungsumgebungen mit denen auch f r anspruchsvolle Ger te ein Hardware Software Codesign unterst tzt wird Am Beispiel der besonders universellen Entwicklungsplattform ML310 wollen wir uns nun einen berblick zum aktuellen Stand der Technik verschaffen Dabei sollten uns die vielen Komponenten und M glichkeiten nicht abschrecken es handelt sich um eine m glichst universelle Entwicklungsumgebung praktisch jede konkrete Realisierung ben tigt davon nur einen kleinen Teil Im Endprodukt wird dann nat rlich nicht die Entwicklungs Plattform eingesetzt sondern eine viel schlankere Hardware die nur die tats chlich ben tigten Zutaten enth lt Das Herz der Entwicklungsplattform ist ein FPGA Virtex II Pro vom Typ V2P30 Abschnitt 6 4 Das ML310 Board versorgt nicht nur das FPGA mit den n tigen Taktsignalen und Strom sondern bietet ber den Funktionsumfang des FPGA hinaus eine umfangreiche Ausstattung f r die Entwicklung moderner eingebetteter Systeme mit besonderer Unterst tzung multime
262. t ist wie so oft in der Informatik die hierarchische Vorgehensweise Hier unterscheiden wir die Entwurfshierarchie und die Zerlegungshierarchie Die Entwurfshierarchie besteht aus mehreren Abstraktionsebenen oder Sichten Im Software Engineering etwa haben wir Ebenen wie Spezifikation graphische Flussdiagramme h here Programmier sprachen Assembler usw Im Bereich des Chip Entwurfs bestehen die Sichten darin den Entwurf funktional durch sein Verhalten nach au en darzustellen oder sehr grob i Der Begriff Hierarchie ist nicht besonders gl cklich gew hlt da keine baumartige Struktur vorliegt 1 3 Der Hardware Entwurf 1 11 auf einer Systemebene oder auf einer Register Transfer Ebene oder mit Hilfe von Logikgattern und Registern oder durch Transistoren oder durch ein Layout als ma stabsgetreue Vorlage f r die tats chlichen Chip Strukturen Bild 1 14 Entwurfsebene Beschreibung typische Komponenten funktionale oder Was wird geleistet Verhaltensebene Nicht Wie wird es erreicht Systemebene grobe Aufteilung des Systems CPU FPGA DRAM Bus grobe Struktur Zeit Daten Kommunikation Register Transfer Ebene synchrone Datenverarbeitung Register RTL zwischen Registern kombinatorische Logik logischer Takt always posedge CLOCK R2 lt fL Rl Logik oder Gatterebene logische Netzliste aus Gattern in er Flipflops etc cl gesch tzter realer Takt Transistorebene elektrischer Schaltplan g
263. t wurde Software 3 Spielablauf Steuerung f hre folgende Punkte nacheinander aus a Hardware initialisieren Punktestand auf 0 0 zur cksetzen b zuf llige Zeitspanne warten dabei pr fen ob Taste gedr ckt wird Schummeln und in diesem Fall dem Schummler einen Punkt abziehen D 6 Trigger Happy D 31 nach der Wartezeit mittlere LED einschalten auf Tastendruck warten und Gewinner ermitteln mittlere LED ausschalten Punktestand aktualisieren hat ein Spieler 9 Punkte erreicht Gewinner anzeigen z B durch blinkende LED sonst gehe zu b mono 4 Punktestand verwalten und anzeigen a Ausgabe des aktuellen Punktestands als zwei LED Balken der Balken f r Spieler 1 baut sich von links zur Mitte auf der Balken f r Spieler 2 von rechts Hardware Software Kommunikation Welche Arten der Hardware Software Kommunikation ben tigen wir f r die Realisierung des Spiels Gehen wir die obige Anforderungsliste f r Hardware und Software durch und leiten dabei die ben tigten Kommunikationsformen ab e Software sendet Daten an Hardware Dies ist der Fall beim Ansteuern der Leuchtdioden Die Hardware muss hierzu ein geeignetes Register zur Verf gung stellen in das die Software einen Wert schreiben kann der das gew nschte Muster auf den Leuchtdioden erscheinen l sst Beim Addierer haben wir diese Kommunikationsform eingesetzt um die Operanden zu bertragen e Software liest Daten von Hardware Dies ist der Fall nachdem eine Taste
264. tanz und der Test Beobachter ab Zeile 25 Gelegenheit h tten darauf zu reagieren Das offensichtlich vern nftige Simulationsergebnis zeigt Bild 2 9 ALU Testrahmen module test reg 2 0 OPCODE reg 31 0 wire 31 0 RESULT define ADD define MUL define AND define LOGAND define MOD define SHL alu Alu OPCODE A B RESULT ALU Instanz initial begin Test Inputs display Simulation beginnt OPCODE ADD A 3 B 2 OPCODE SHL A 3 B 2 display Simulation endet finish end always RESULT Test Outputs display OPCODE RESULT d OPCODE A 5 0 endmodule Beispiel 2 8 Testrahmen f r die ALU aus Beispiel 2 6 Simulation beginnt OPCODE 0 A 3 B B OPCODE 5 A 3 Simulation endet Bild 2 9 Simulationsergebnis zum ALU Test Zu Beginn einer Hardware Entwicklung geht es zun chst mal um das Verhalten bei dem der sp tere Baustein als Black Box aufgefasst wird und nur das Wechselspiel 2 berblick zur Hardware Beschreibungssprache VERILOG 2 9 zwischen Ein und Ausgaben interessiert Ein Verhaltensmodell ist irgendwie realisiert oft durch ein gew hnliches sequenzielles Programm F r sequenzielle Programme reicht in VERILOG ein einziger initial oder always Block aus dessen Inneres wie oben erkl rt sequenziell ausgef hrt wird Wollen wir uns
265. tete Systeme basieren zwar auf einem Mikrocontroller mit CPU unterscheiden sich aber wie in Bild 7 5 von klassischen Rechnern oft fehlt ein Massenspeicher wie eine Festplatte die Bedienelemente und Benutzeranzeigen sind eingeschr nkt daf r gibt es eine Debug Schnittstelle zur Fehlersuche durch einen externen Host Rechner das System steht reaktiv ber spezielle Sensoren und Aktoren mit der Umwelt in Verbindung und ist in vielen F llen an ein Netzwerk angeschlossen Je nach Anwendung kommen noch Schnittstellen f r zus tzliche Komponenten hinzu wie etwa einen Videoprozessor oder einen Mobilfunk bertrager und immer h ufiger werden auch FPGAs f r diverse andere IO Schnittstellen und eine h here Flexibilit t eingesetzt So kann beispielsweise ein DVD Player mit FPGA leichter an einen neuen Video Codec angepasst werden Beispielsweise sind bei einem eingebetteten System f r einen PKW Fensterheber in Bild 7 6 Schnittstellen f r Schalter Steuerbusse hier den CAN Bus Ver klemmungs Sensoren sowie zur Motorsteuerung vorhanden Die notwendige Vermittlung zwischen der digitalen Mikrocontroller Welt und den meist analog arbeitenden Sensoren und Aktoren wird ber Analog Digital Wandler A D bzw D A realisiert PWM steht hier f r Pulsweiten Modulation ein einfaches Verfahren zur digitalen Signal bermittlung Das Leistungsspektrum eingebetteter Systeme ist sehr breit gef chert von einfachen Low End Systemen mit 4 Bit Architektur und wenigen
266. tieg der Dichte um 35 in Bild 1 5 ergibt zusammen mit diesem 12 igen Fl chenwachstum fast die urspr nglich genannte Komplexit ts zunahme um 53 Es sind hier noch andere nicht genannte Faktoren im Spiel z Pentium 4 EE 7 a Taktfrequenz von 16 Mikroprozessoren entium 4 500M 4 Hz 200M 100M 50M N o L 20M 10M4 5M 2M 1M 4 500k 7 200k J 4004 OOK TT PTT TTT TTT TTT TTT Bild 1 8 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Taktung 1 2 Das exponenzielle Wachstum der Mikroelektronik 1 7 Auch die Anzahl der Chip Anschl sse oder Pin Anzahl ist bisher exponenziell gewachsen bei Mikroprozessoren auf heutzutage bewundernswerte etwa 1 000 Pins Bild 1 7 bei beliebigen Schaltungen sogar noch st rker Da dieses Wachstum jedoch j hrlich nur 12 betrug w hrend der Chip Inhalt mit 53 wuchs entstand der Flaschenhals dass heute immer weniger Informationen im Chip von au en zug nglich sind Die immer kleineren Transistoren in Bild 1 4 f hren brigens nicht nur zu einer h heren Packungsdichte sondern sogar zu quadratisch k rzeren Laufzeiten des einzelnen Transistors und damit des gesamten Systems Dies f hrt in Bild 1 8 zum bekannten Wettlauf der Taktfrequenzen auch wenn Rechnerarchitekten nachweisen dass diese Frequenzen allein noch nicht zu entsprechend schnelleren Rechenleistungen f hren m ssen 10n 300 Verz gerungszeit eines Gatters Zugriffszeit von DRAM
267. tion Schnittstellen in VERILOG beginnen 6 4 5 2 Interconnect Angesichts der Gr e von Virtex Il Pro FPGAs spielen Laufzeitverz gerungen durch lange Leitungen eine wichtige Rolle Schaltet man viele kurze Leitungen durch Schalter zusammen so w chst die Laufzeit quadratisch mit der Zahl der Schalter Abschnitt 6 3 L ngere schalterfreie Leitungsst cke werten ein Interconnect daher auf Vor allem die Verteilung der Taktsignale ber den gesamten Chip ist u erst kritisch denn eine zu gro e Signalverz gerung w rde die maximale Taktfrequenz f r eine Schaltung empfindlich dezimieren Aber auch normale Signale sollten immer auf k rzestem Wege transportiert werden um den kritischen Pfad gro er kombinatorischer Bl cke zu minimieren Die FPGA Plattformen Virtex II Pro und Virtex 4 bieten dazu ein hierarchisch organisiertes Netz von Verdrahtungsressourcen Das Interconnect des Virtex II Pro zeigt Bild 6 19 Innerhalb eines CLBs gibt es schnelle interne Verbindungen der Slices siehe auch Bild 6 13 nach au en ist jedes CLB ber 16 Nachbarverbindungen angeschlossen Double Hex und Long Lines stellen in horizontaler und vertikaler Richtung Leitungsabschnitte passender L nge zur Verf gung F r die schnelle Taktverteilung ist jeder Quadrant des FPGAs au erdem mit acht Taktverteilungsnetzen ausgestattet die sich durch eine besonders geringe Signal verz gerung auszeichnen Sie sind an alle taktgesteuerten Elemente wie CLB Register
268. trahmen fuer den adder module test_adder reg CLK reg 7 0 A B C D wire 9 0 OUT Instanz des Prueflings adder Adder CLK A B C D Clock erzeugen always begin CLK 1 OT iF CLK 0 CEK iF end Ueberwachung und Stimuli initial begin display TIME CLK A OUT B C Inputs Outputs Ueberwachung D OUT display a monitor 4d 3b 4d time CLK A B CLK_HALF A lige 3B 1s ie DD A 2 B 2 23 D A 33 B 4 5 gt D stop end endmodule Beispiel C 3 Testrahmen f r den Addierer aus Beispiel C 2 4d 4d D C D OUT K_FUL 4d 3d Stimuli K_FULL K_FULL K_FULL F hren Sie zun chst wie gewohnt eine Verhaltenssimulation mit ModelSim durch und berzeugen Sie sich von der korrekten Funktionalit t des Addierers C 1 2 Logiksynthese Nachdem der Addierer zufriedenstellend funktioniert f hren Sie eine Logiksynthese durch Aktivieren Sie dazu im Quellenfenster Ihr Modul adder durch einmaliges Anklicken und betrachten Sie die im Prozessfenster unter Synthesize XST angezeigten Prozesse Bild C 4 C 4 C Lab 2 Logiksynthese mit VERILOG Processes for Source gat FE Add Existing Source UI Create New Source View Design Summary Design Utilities g User Constraints H Synthasize XST wew Synthesis Report View RTL S
269. tstrom erzeugt werden und hinter der system mhs Datei verbirgt sich die Anzeige der Hardware Modulinstanzen und ihrer Verdrahtungen m Xilinx Platform Studio 2 Dokumente Bachelor Adder aktuell ourlab lab1 xps 1_edk_chipscope system xmp C EDK doc usenglish help platform_studio html ps_ 5 p alx Ele Edit view project Tools Options Window Help gt lelx neiaa j2je gt l2 all alatabe leet eat alle Pen DIE System Applications s38203A Right Click for Options EE System BSP a ED ppc405_0 Driver cpu_ppc405_v1_00_a EB HDL OS standalone_v1_00_a B Generated Header ppc405_0 include xparameters h GB ppc405_1 H itagppc_0 GE reset_block Fe iocm EEE iocm_entir FE docm_enthr Projektfenster Quelltext Editor plb2opt EEE LCD_OPTIONAL EEE ORGate_1 HE demo E A inverter_configurable_O EEE chipscope_icon_0 chi ipscope ila_O oB Pig E MHS File E system mhs PBD File system phd E UCF File data system uct E IMPACT Command File etc download cmd B Implementation Options File ete fast_runtime opt B Bitgen Options File etc bitgen ut E Project Options Device xc2vp30f896 6 Netlist TopLevel z CAEDK doc Console Log Project Opened Ausgabe Konsole MATE TDI output Waning A Eror 7 Fertig ji Bild E 7 Benutzeroberfl che von XPS XPS Neues Projekt anlegen e Nachdem Sie XPS und den Base System Build
270. twurfsaufwand beispielsweise 300 Mannjahre und sind daher nur in hohen St ckzahlen rentabel Mikrocontroller sind mehr f r Steuerungen geeignet also kontrollflussorientierte Aufgaben mit nur geringen Datendurchs tzen Typische Anwendungen bestehen aus vielen Tasks und ben tigen vor allem Logik und Bit Operationen Oft ist passende Peripherie bereits integriert Es geht zum einen um Low Cost Bausteine f r die h ufig immer noch billige 8 Bit Mikrocontroller eingesetzt werden etwa Intel 8051 Es werden aber auch High Performance Mikrocontroller ben tigt die oft hohe Datenraten verarbeiten etwa beim elektronischen Stabilit tsprogramm und Anti Blockier System im Kraftfahrzeug Schlie lich gibt es Anwendungen mit hohen Datenraten und einer intensiven Datenmanipulation etwa in der Telekommunikation oder solche mit hohen Berechnungsanteilen etwa in der Regelungstechnik Digitale Signalprozessoren DSP zeichnen sich durch hohe Rechenleistung aus bei denen oft mit regelm igen Operationen sehr gro e Datenmengen verarbeitet werden etwa in der Bildverarbeitung Hier stehen Multiplikationen und Additionen im Vordergrund F r diese Spezialrechner werden optimierende Compiler ben tigt die die regelm ige Grundstruktur gut ausnutzen Oft ist eine geringe Verlustleistung w nschenswert Angeboten wird eine Vielzahl von Spezialarchitekturen die tief in das Gebiet der Rechnerarchitektur hineinf hren z B Multi DSP Systeme oder VLIW Archit
271. ungen f r das FPGA Xilinx Virtex II Pro Kapitel 6 Auch das n tige FPGA Wissen erwerben Sie gleichzeitig in der Vorlesung Im dritten Lab schlie lich kombinieren Sie Ihre Hardware mit passender Software und erwecken sie auf dem Prototypen Board ML310 als komplett selbst entwickeltes Hardware Software System zum Leben Das ML310 ist eine moderne Entwicklungs i Sprich L bs im deutschen Sprachraum auch Labore genannt noch konservativer praktische bungen A 2 A Die drei Labs zu den HW SW Systemen umgebung die in der Industrie beim Design typischer Hardware Software Systeme eingesetzt wird z B beim Entwurf digitaler Videokameras Es steht Ihnen f r Ihre Experimente zur Verf gung und wird in Kapitel7 der Vorlesung ausf hrlich diskutiert In der zweiten Semesterh lfte nehmen Sie sich dann Zeit fortgeschrittene Tools wie Remote Debugger und ChipScope Pro zu erforschen mit denen Sie die Zusammenarbeit von Hardware und Software beobachten und optimieren werden Schlie lich befindet sich am Ende jedes Labs ein Quiz aus mehreren Verst ndnis fragen Hiermit k nnen Sie sich selbst testen und berpr fen ob sie alles verstanden haben und wichtige Feinheiten selbst formulieren k nnen Wir hoffen Ihnen mit den folgenden bungen einen spannenden und abwechs lungsreichen Einstieg in das praktische Hardware Software Codesign zu bieten das bereits heute und in Zukunft mehr denn je eine Hauptrolle in allen m glichen Industriezw
272. uns einen ersten Hinweis auf die zu erwartende maximale Taktrate unseres Addierers auf dem FPGA n mlich 1 5 8 ns 172 4 MHz brigens gelten die ermittelten Werte f r das FPGA Xilinx Virtex II Pro V2P30 das Sie in dem nun folgenden dritten Lab einsetzen werden Wenn Sie die Logik synthese f r eine andere Zieltechnologie durchf hren m chten m ssen Sie lediglich die Projekt Optionen f r Ihr Addierer Projekt entsprechend umstellen C 2 Logiksynthese Quiz Ob Sie sich schon f r den Job eines Reverse Engineer f r Logiksynthese bewerben k nnen sollen Sie nun in unserem spannenden Logiksynthese Quiz unter Beweis stellen In Bild C 8 bis Bild C 11 sehen Sie Zwischendarstellungen f r verschiedene einfache Register Transfer Logiken Schreiben Sie f r jede dargestellte Schaltung ein VERILOG Modell dessen Logiksynthese mit ISE genau die gleiche Zwischen darstellung liefert ISE Prozess View RTL Schematic Zeigen Sie Ihre Ergebnisse dem HiWi OUT Bild C 8 Logiksynthese Quiz Aufgabe 1 C 8 C Lab 2 Logiksynthese mit VERILOG OUT 1 0 Bild C 9 Logiksynthese ial Quiz Aufgabe 2 U Bild C 10 Logiksynthese Quiz Aufgabe 3 CLK ERK De Bild C 11 Logiksynthese Quiz Aufgabe 4 C 3 Abschlussquiz Auch in diesem Quiz gilt wieder Bearbeiten Sie die Fragen bitte in Ruhe alleine Sie k nnen sich ihre Antworten in Stichworten notieren oder auch nur grob im
273. us den zugeh rigen Signalen die gew nschten per Drag amp Drop ins Waveform Fenster ziehen Um den zeitlichen Verlauf dieser neuen Signale sehen zu k nnen muss jedoch ein Restart mit anschlie endem Run durchgef hrt werden Erweitern Sie nun das Schieberegister um einen Reset auf 0 sowie um einen parallelen Lade Eingang und verifizieren Sie alle Funktionen durch Simulation mit Testrahmen B 18 B Lab 1 VERILOG und seine Tools B 7 Abschlussquiz Willkommen zum ersten Abschlussquiz Die folgenden Fragen zielen auf ein Grund verst ndnis ab auf dass Sie sich nun selber testen k nnen Wichtig Bearbeiten Sie die Fragen bitte f r sich allein denn nur so erzielen Sie und auch wir den gew nschten Lerneffekt Sie k nnen sich ihre Antworten in Stichworten notieren oder auch nur grob im Kopf berlegen Wenn jeder Ihrer bungspartner mit dem Quiz fertig ist sprechen Sie Ihren HiWi an er wird Ihnen Ihre Antworten abnehmen Doch keine Sorge wir werden keinerlei Konsequenzen ziehen Die Fragen sind nur f r Sie gemacht damit Sie Ihren eigenen Wissensstand kontrollieren k nnen Deshalb empfehlen wir Ihnen auch erst einmal nur aus dem Ged chtnis zu antworten und erst danach im Skript nachzuschauen Frage 1 Was bedeutet Parallelit t in Verilog Was f r Voraussagen kann man ber die Reihen folge der Bl cke machen Wovon h ngt es ab welcher Block zuerst ausgef hrt wird Frage 2 Wie wird der Inhalt eines always Blockes ausgef
274. us von 1 5ns w re Diese Frage erfordert ein komplettes Redesign das fr her selten tats chlich durchgef hrt wurde Heute l sst sich eine solche Alternative in Stunden erreichen e Bei gr eren manuellen Entw rfen waren fr her Teams von Designern not wendig die oft recht unterschiedliche Entwurfsstile hatten Ein gro er Entwurf war dadurch schwerer zu verstehen und zu optimieren Dagegen versuchen Werkzeuge der Logiksynthese den Entwurf als Ganzes zu optimieren allerdings unter der Einschr nkung der Rechenzeit e Zeit Fl che und Leistung von Bibliothekszellen sind herstellerspezifisch Wenn daher fr her der Halbleiterhersteller gewechselt wurde musste in aller Regel das Gattermodell neu entwickelt werden Heute dagegen werden die Eingaben der Logiksynthese auf der Register Transfer Ebene technologieunabh ngig formuliert und brauchen bei einem Herstellerwechsel daher nur zusammen mit einer anderen Technologie Bibliothek neu synthetisiert zu werden e Eine der wesentlichen Rationalisierungsbestrebungen besteht heute im Design Reuse d h immer gr ere Schaltungsteile sollen so standardisiert entwickelt werden dass sie auch f r andere sp tere Entw rfe verwendbar sind m glicher weise nach gewissen nderungen Wenn beispielsweise die Funktionalit t eines VO Blockes eines Mikroprozessors sich nicht ndert kann dieser bei einem abgeleiteten neuen Mikroprozessor unver ndert bernommen werden Ein solches Design Reuse wird
275. use klein EPROM klein EEPROM 2xEPROM Tabelle 6 7 Merkmale verschiedener Programmiertechniken 6 3 FPGAs von Xilinx die Wurzeln 6 9 6 3 FPGAs von Xilinx die Wurzeln Geschichte ist nicht jedermanns Sache aber ein Blick auf die noch heute gelegentlich anzutreffende FPGA Familie XC4000 des Marktf hrers Xilinx vermittelt in ber sichtlicher Weise wesentliche Grundideen von FPGAs die sich auch in modernen Plattform FPGAs mit Millionen von Gattern nicht ge ndert haben auf welche wir im n chsten Abschnitt eingehen werden Die allgemeine Architektur von FPGAs wurde bereits in Bild 6 2 skizziert Sie besteht aus einem zweidimensionalen Feld von Logikbl cken die bei Xilinx CLBs Configurable Logic Blocks hei en Zwischen den Bl cken gibt es horizontale und vertikale Verdrahtungskan le Sowohl die Verbindungen als auch die CLBs werden durch statische RAM Zellen kontrolliert Die Komplexit t der Familie XC4000 reicht von 2 000 bis 20 000 Gatter quivalente es gibt zwischen 64 und 900 CLBs Inputs Ci C2 C3 C4 Selector G3 Lookup G2 mE Table G1 ar F4 F3 F2 F1 Clock Bild 6 8 CLB der Serie XC4000 Der CLB der Serie XC4000 basiert auf einem Lookup Table LUT Dies ist ein Speicherfeld der Breite 1 Bit wobei die Adressleitungen die Inputs sind und die 1 Bit Outputs das Ergebnis des Lookup Table darstellen Ein LUT mit k Inputs entspricht eine
276. ut DOME aon an a EE E E E EAA NARE 1 16 Zerlesungshierarchie asus me ea 1 18 1 3 3 Programmierbare Hardware und Rapid Prototyping 1 19 1 4 Hardware Software Codesign eingebettete Systeme und Systems 00 ChP ae enter 1 20 ES AUS OBER 1 22 sau die Vorlesung ers rare 1 22 al die Vbunsen ns 1 22 lt 4 auf kommende Semester unse ie 1 23 2 berblick zur Hardware Beschreibungssprache VERILOG 3 Die wichtigsten Befehle von VERILOG 3 1 Modulstruklur a RER TEFEE 3 2 3 2 ZCI MEO MS seen een een 3 7 3 3 Klassische Programmsteuerung uu 2200sssssenssnsenssnnnensnnnnnnnnnennnnnannnn 3 12 3 4 Variablen und Konst nten sense 3 17 3 3 Operationen een 3 23 3 6 ZUWEISUNSEN gu ea ae 3 27 3T Sonstige Becher euer 3 31 4 Mbodellierungskonzepte in VERILOG 4 1 Parallelit t und Ereignissteuerung des Simulators ee 4 1 4 2 Pipelines und Register Transfer Logik uesnsennneeennnen 4 4 4 2 1 Eine Flipflop Kette na dee eek akunaeleides 4 4 4 2 2 Eine Pipeline der Register Transfer Logik eee 4 6 4 3 Bidirektionale Kommunikation ceuusnseeeennnseeeeennnsseeennnnneenenne nenn 4 9 Einf hrung in die Logiksynthese 5 1 Logiksynthese im Entwurfsprozess essssessssenssnnnnssnnennnnnnensnnennnnn 5 2 Auswirkungen der Logiksynthese cause 5 3 Synthese mit der HDL VERILOG nun ea 5 3 1 Synthetisierbare VERILOG Konstrukte ennnneen 5 3 2
277. ut lautet 0x0006000A d h A 0x000A B 0x0006 die Summe sollte 0x00000010 betragen Um die Verbindung zum ML310 wieder sauber zu trennen w hlen Sie im Men JTAG Chain den Befehl Close Cable Abgabe 2 F hren Sie die Chipscope Ausgaben Ihrem Hiwi vor D 2 Software steuert Hardware D 13 Sie haben nun Ihr erstes VERILOG Hardware Modell in ein Gesamt system eingebettet dieses syn thetisiert platziert und verdrahtet und im laufenden Betrieb auf dem FPGA Virtex ll Pro getestet D 2 Software steuert Hardware In diesem Abschnitt sollen die Summanden A und B f r die Addition nicht mehr fest in Hardware vorgegeben sein sondern von einem Software Programm bergeben werden Da Hardware h ufig eingesetzt wird um rechenintensive Aufgaben zu beschleunigen wird daf r nat rlich eine Schnittstelle f r den Datenaustausch zwischen Software und Hardware ben tigt HW Bitstrom Tag Virtex ll Pro Software Hardware PowerPC Logikbl cke C Programm int main write 6 10 Chipscope 6 10 16 Bild D 18 Addierer mit Software Hardware Schnittstelle Bild D 18 erweitert das bekannte Design um eine Software Komponente auf dem PowerPC sowie um einen DCR Bus als Software Hardware Schnittstelle Der JTAG Port wird jetzt zum vielgefragten Botschafter Einerseits werden dar ber das C Programm f r den PowerPC und die Hardware Konfiguration Addierer DCR Bus und Logikanalysator auf das ML310 imp
278. utet dass die nichtblockenden Zuweisungen die letzten Anweisungen sind die in diesem Zeitschritt ausgef hrt bzw abgeschlossen werden Es gibt jedoch Ausnahmen eine nichtblockende Zuweisung kann eine weitere blockende Zuweisung im gleichen Zeitpunkt ausl sen der Simulator verarbeitet letztere dann nach der Durchf hrung der nichtblockenden Zuweisung Auf solche f r die Praxis unerheblichen Spitzfindigkeiten wird an dieser Stelle nicht weiter eingegangen module blocking_1 reg A B initial begin monitor A b B b A B end endmodule 3 6 Zuweisungen 3 29 A 1 B 1 Beispiel 3 32 Blockende Zuweisungen werden nacheinander ausgef hrt Das Beispiel 3 32 produziert genau das Verhalten herk mmlicher Programmiersprachen module blocking_2 reg A B initial begin monitor A b B b A B module blocking_3 reg A B C D blockende Zuweisungen initial begin 10 1 2 0 4 1 end nichtblockende Zuweisungen initial begin D lt 10 1 E lt 2 0 F lt 4 1 end initial Smonitor t 2 0f Stime A B endmodule 3 30 3 Die wichtigsten Befehle von VERILOG PPPS PS YP AAA Ae t je E t E Beispiel 3 34 Nichtblockende Zuweisungen hemmen nicht die Ausf hrung nachfolgender Anweisungen Beispiel 3 33 dagegen f hrt mit nichtblockenden Zuweisungen einen Wertetausch durch In den Zeilen 10 1
279. utineaufgaben erledigt k nnen besonders rechenintensive oder echtzeit bed rftige Teile eines Programms oder bestimmte Schnittstellen in den FPGA als programmierte Spezial Hardware ausgelagert werden Besonders attraktiv ist dabei die M glichkeit FPGAs im laufenden Betrieb umzuprogrammieren Ein solches Multi Processor System on Chip MPSoC samt zugeh riger Entwicklungsumgebung wird uns im Abschnitt 6 4 im n chsten Kapitel und in den bungen besch ftigen Zun chst aber schauen wir uns FPGAs und programmierbare Logik etwas genauer an 6 1 berblick 6 3 6 1 1 Evolution und Begriffe Die ersten nennenswerten programmierbaren digitalen Schaltungen waren die Read Only Speicher w hrend ein ROM seinen Inhalt bei der Fertigung erh lt kann ein PROM einmal durch den Anwender feldprogrammiert werden Gefertigte ROMs sind wesentlich schneller da die internen Verbindungen w hrend der Herstellung fest verdrahtet werden Dagegen beinhalten feld programmierbare Verbindungen immer eine Art von programmierbarem Schalter z B eine Fuse der deutlich langsamer ist Dem Effizienznachteil stehen als Vorteile gegen ber die geringeren Kosten bei kleinen St ckzahlen und die sofortige Programmierbarkeit Beim Erasable bzw Electrically Erasable Programmable Read Only Memory EPROM bzw EEPROM kommt als wesentlicher Vorteil hinzu dass sie gel scht und h ufig neu programmiert werden k nnen In vielen Anwendungen und gerade in den fr
280. ve Master Slave Target lt Initiator Connected Unconnected Platform Studi I System Assembly E system xi2c B xup_config_deco E vat lt Bild 7 18 Ubersichtliche Darstellung eines System on Chip im Xilinx Platform Studio XPS Da die verwendeten Technologien beim Hardware Software Codesign so vielf ltig sind quasi die gesamte Bandbreite der Informatik und Elektrotechnik wird hier ber hrt m ssen wir trotzdem mit einer ganzen Reihe weiterer Entwurfs werkzeuge jonglieren Angefangen bei den verschiedenen Programmiersprachen und Compilern f r Hardware und Software ber Simulatoren Remote Debugger und Logik Analyzer bis hin zur Konfiguration von Prozessorkernen und Echtzeit Betriebssystem haben wir es mit den unterschiedlichsten Tools zu tun Die meisten davon k nnen aber direkt aus der integrierten Entwicklungsumgebung heraus aufgerufen werden und sind dann gleich passend zum aktuellen System Design konfiguriert Dar ber hinaus wurden moderne Entwicklungen aus der Software Welt wie die Programmierumgebung Eclipse ebenfalls bereits f r das Hardware Software Codesign angepasst und steigern so den Entwurfskomfort Dieser und andere Screenshots sind im schwarz wei en A5 Ausdruck weniger aussagekr ftig als in einer vergr erten Farbansicht unter Acrobat Am besten sind sie nat rlich live zu erforschen 7 5 HW SW Codesign in der Praxis die universelle Entwicklungsplattform ML310 7 23
281. verl ufe aufzeichnen E 7 Trigger Now E 7 Trigger Signal festlegen E 7 Logiksynthese E 5 ModelSim E 4 Benutzeroberfl che E 4 Erneutes Starten E 5 Radix E 5 Recompile E 5 Projekt Navigator E 2 Benutzeroberfl che E 2 Projekt anlegen E 2 Quelltext hinzuf gen E 3 Simulator starten E 3 E 4 RTL Darstellung E 5 Synthese Bericht E 6 Technology Mapping E 5 TeraTerm E 8 XMD E 8 E 9 Konsole 6ffnen E 8 Konsole schlie en exit E 10 Programm starten con E 9 Programm stoppen stop E 10 Programmz hler berpr fen srrd E 9 Reset rst E 9 Software hochladen dow E 9 XPS E 10 E 11 E 12 E 13 E 14 E 15 E 16 Anzeige der Hardware Modulinstanzen system mhs E 10 Benutzeroberfl che E 10 Bitstrom erzeugen E 10 E 15 Instanz vom IP Core hinzuf gen E 13 mit DCR Lese und Schreibzugriff E 13 mit DCR Lesezugriff E 13 ohne DCR Anschluss E 13 IP Core erstellen E 11 E 12 mit DCR Lese oder Lese Schreibzugriff E 12 ohne DCR Anschluss E 11 IP Core verdrahten E 14 E 15 mit DCR Lese und Schreibzugriff E 15 mit DCR Lesezugriff E 14 ohne DCR Anschluss E 14 Linker Skript E 16 Programm compilieren E 16 Projekt anlegen E 11 Software bearbeiten E 16 Software hinzuf gen E 15 system mhs E 14 E 15 E 2 E Zusammenfassung der bungen E 1 Zusammenfassung von Lab 1 Benutzeroberfl che des Projekt Navigators igator 2 ise projects hello_world hello_world ise
282. waltung und nderung der Schaltungsdaten erm glichen Diese Editoren sind mit anderen Werkzeugen integriert So gibt es Werkzeuge zur berpr fung von elektrischen oder logischen Entwurfsregeln Es gibt bersetzer von h heren auf tiefere Entwurfsebenen Synthese Silicon Compiler Es gibt Werkzeuge die einen Teil der Entwurfsarbeit automatisieren wie beispielsweise zur Platzierung und Verdrahtung Im Bereich der dynamischen Werkzeuge sind vor allen Dingen Simulatoren zu nennen die das zeitliche Verhalten einer Schaltung berechnen Durch diese ziemlich exakten Vorhersagen vor der Fertigung kann ein relativ teures Redesign vermieden werden First time right ist das Ziel bei dem ein Entwurf nur einmal gefertigt werden muss Im Zentrum des modernen Hardware Entwurfs aber stehen zweifellos Hardware Beschreibungssprachen als Grundlage f r Simulation und Synthese auf vielen Entwurfsebenen Sie werden in den Kapiteln 2 bis 4 eingef hrt Weitere Erleichterungen Weitere Erleichterungen beim Entwurf gro er Schaltungen und Systeme sind ein hierarchisches Vorgehen Entwurfshierarchie und Zerlegungshierarchie und das Geschenk programmierbarer Logikbausteine die unter anderem einen fr hen Versuchsaufbau Rapid Prototyping unterst tzen Diese Faktoren sind so wichtig dass sie jetzt in eigenen Abschnitten eingef hrt werden 1 3 2 Hierarchische Vorgehensweise Ein weiteres wichtiges Hilfsmittel zur Bew ltigung der enormen Chip Komplexita
283. wird der linken Seite die rechte Seite sofort zugewiesen sofern nicht zwischen dem Zeichen und der rechten Seite eine Zeitkontrolle steht Sie befindet sich typischerweise in einem sequenziellen oder prozeduralen Ablauf etwa einer Verhaltensbeschreibung Der Name blockend r hrt daher dass die Zuweisung zuerst vollst ndig ausgef hrt wird bevor die n chste Anweisung bearbeitet wird selbst wenn die Zuweisung einen zeitkonsumierenden Anteil enth lt Die Ausf hrung der n chsten Anweisung wird also blockiert Die nichtblockende Zuweisung lt dagegen erlaubt Zuweisungen die den prozeduralen Ablauf nicht unterbrechen Nichtblockende Anweisungen sind typischerweise sinnvoll wenn innerhalb eines Zeitschrittes mehrere Zuweisungen an getaktete Register durchgef hrt werden sollen unabh ngig von ihrer Reihenfolge oder ihrer gegenseitigen Abh ngigkeit Abschnitt 4 2 Die Syntax nichtblockender Zuweisungen entspricht genau der der blockenden Durch den Kontext wird dieser Operator vom Vergleichsoperator kleiner gleich unterschieden Der Simulator bearbeitet eine nichtblockende Zuweisung wie folgt l Die rechte Seite wird berechnet und f r den Zeitpunkt geplant der durch eine Zeitkontrolle vorgegeben ist fehlt diese wird die rechte Seite f r den jetzigen Zeitpunkt geplant 2 Am Ende des geplanten Zeitschritts wird die Zuweisung ausgef hrt indem die linke Seite ihren Wert erh lt Am Ende eines Zeitschritts bede
284. wird intensiv mit der Kombination fertiger Einheiten gearbeitet wie Prozessorkernen Speichern und Soft Firm und 7 2 Der Entwurfsprozess 7 5 Hard Bl cken die wie in Bild 7 2 die komplexe Fortsetzung der klassischen Bibliothekselemente darstellen In diesem Zusammenhang spricht man oft von Intellectual Property oder kurz IP und meint damit rechtlich gesch tzte Hardware Bausteine die meist als verschl sselte Gatternetzlisten lizensiert werden 7 2 Der Entwurfsprozess Das Productivity Gap die Schere zwischen technisch m glicher und entwurfs methodisch gut beherrschbarer Komplexit t klafft hier erst recht nicht nur die Hardware mit ihren hunderten von Millionen von Transistoren ist exponenziell in ihrer Komplexit t gewachsen sondern erst recht Systeme aus Hardware und Software Daher sind klassische Entwurfsmethoden zu ineffizient geworden neben einem Design Reuse gro er fertiger Bausteine vgl Intellectual Property im vorigen Abschnitt ist eine weitere Entwurfsautomatisierung gefragt etwa die High Level Synthese zur Entwicklung von Spezial Hardware oder optimierende Compiler die sich an alternative Hardware Architekturen anpassen sowie die Einbeziehung des Entwurfs geeigneter Betriebssysteme Spezifikation Komponenten Auswahl Sch tzung Partitionierung Bo Bo EJ EJ Software Hardware Entwurf Entwurf Bild 7 3 Entwurfsablauf im Hardware Software Codesign Bild 7 3 zeigt die wesentlichen Sch
285. worfen wird und dann in beiden Richtungen regul r vervielf ltigt wird Interessanterweise beschr nken sich regul re Strukturen aber nicht auf den Speicherentwurf sondern es lassen sich viele Aufgaben ganz oder teilweise regularisieren In Bild 1 23 ist das Layout einer 1 Bit Schieberegisterzelle in beiden Richtungen vervielf ltigt n mlich einmal in y Richtung und zweimal in x Richtung So entsteht ohne wesentlichen zus tzlichen Design Aufwand ein Schieberegisterfeld bei dem zwei Bit breite Worte ber mehrere Stufen hinweg getaktet verschoben werden k nnen Offensichtlich wird damit noch keine mathematisch interessante Funktion realisiert aber solche Schieberegister sind die Grundlage f r beliebige RTL Strukturen Nat rlich sollten alle CAD Werkzeuge die Hierarchie der bearbeiteten Strukturen unterst tzen und ausn tzen 1 3 Der Hardware Entwurf 1 19 1 3 3 Programmierbare Hardware und Rapid Prototyping Unter Rapid Prototyping versteht man die M glichkeit w hrend der Entwicklung komplexer Systeme fr hzeitig die Funktion des Systems praktisch testen zu k nnen W hrend Simulatoren gerade bei Schaltungen meist nur einen kleinen zeitlichen Ausschnitt des Verhaltens testen gibt es beim praktischen Test zwischen dem einen Extrem der teuren Fertigung eines Chips und dem fr her eingesetzten anderen Extrem eines Versuchsaufbaus mit diskreten Komponenten TTL Gatter etc heute einen gl cklichen Kompromiss in Form von FPGAs Field P
286. x Ele Edit View Project Tools Options Window Help gt lelx elelelail alale BY alalla bel CEECEE P zix System appicatons s0034 Right Click for Options EE System BSP 3 g ppc405_0 Driver cpu_ppe405_v1_00_a B HDL OS standalone_v1_00_a B Generated Header ppc405_D include sparameters h w ppc405_1 EE itagppc_o BE reset_block EB iocm EEE iocm_entir EEE isocm_bram EA docm FE docm_enthr tProjektfenster Quelltext Editor c HH plb2opb EEE LCD_OPTIONAL EEE ORGate_1 HE ino 4 inverter_configurable_0 EEE chipscope_icon_0 GE 3 chipscope ila_0 SB Proies E MHS File ee aman mhs H PBD File onan pbd E UCF File data system uct E IMPACT Command File etc download cmd E Implementation Options File ete fast_runtime opt B Bitgen Options File ete bitgen ut E Project Options Device xc2vp30ff896 6 Netlist TopLevel zl T CAEDK doc Leb Console Log Project Opened Ausgabe Konsole AT ATETPIN Output A Waming A Eror Fertig Bild D 4 Die XPS Benutzeroberfl che Im linken Projektfenster haben Sie u a Zugriff auf die Hardware Komponenten Ihres Systems k nnen Module miteinander verdrahten und Projektoptionen einstellen Den Quelltext Editor auf der rechten Seite k nnen Sie zum Betrachten und ndern von projektspezifischen Dateien verwenden w hrend die Ausgabe Konsole Status meldungen Warnungen und Fe
287. x10 Sb 4 bzx10 S display 4 b001x amp 4 b0x10 Sb 4 b001x amp 4 b0x10 display 2 blx 2 b00 Sb 2 blx 2 b00 end endmodule 4 bzx10 4 bOO1x amp 4 b0x10 2 blx 2 b00 Beispiel 3 29 Bit weise Verkn pfungen Die erste Sdisplay Anweisung invertiert eine 4 Bit breite Variable Die zweite zeigt eine Und Verkn pfung die dritte eine Oder Operation Zu beachten ist dass das Ergebnis mehrere Bits hat V25 Konkatenation Die Konkatenation h ngt mehrere Ausdr cke zu einem neuen Ausdruck hintereinander Zwei konkatenierte 3 Bit breite Ausdr cke sind 6 Bit breit Beispiel 3 30 konkateniert drei Variablen der Breiten 3 4 und 2 module concatenation initial Sdisplay 3 b100 4 bxxzz 2 ha b 3 b100 4 bxxzz 2 ha endmodule 3 b100 4 bxxzz 2 ha 100xxzz10 Beispiel 3 30 Konkatenation Zu beachten ist die Angabe 2 ha ftir den dritten Ausdruck Es soll ein Ausdruck mit dem Wert dezimal 10 in zwei Bits dargestellt werden obwohl 4 Bits ben tigt w rden Durch die Angabe 2 werden jedoch nur die untersten beiden Bits verwendet Konstante Wiederholungsfaktoren sind m glich Beispielsweise wird durch 4 2 600 2 b11 die Konstante 16 b0011001100110011 erzeugt 3 6 Zuweisungen 3 27 V26 Shift lt lt gt gt Die Shift Operation lt lt verschiebt die Bits in die Richtung h herwertiger Bit Positionen gt gt in die andere Richtung Dabei steht auf der rechten
288. zdem ist die Spezifikation durch eine formale Sprache hinsichtlich einer Realisierung zun chst weich im Vergleich zu einem harten Schaltplan 2 2 2 berblick zur Hardware Beschreibungssprache VERILOG Ein zweiter bedeutsamer Vorteil einer formalen Hardware Beschreibungssprache besteht in der M glichkeit eine Synthese anzuschlie en Wir werden in Kapitel 5 Synthesewerkzeuge einsetzen die eine HDL Beschreibung in eine Gatter Implementierung mit Bibliothekskomponenten bersetzen Diese Werkzeuge versuchen den Entwurf bez glich Geschwindigkeit Chip Gr e und anderen Kostenfunktionen zu optimieren Heutige Synthesewerkzeuge sind allerdings noch erheblich eingeschr nkt Beispielsweise verwenden sie nur eine Untermenge der jeweiligen HDL und der synthetisierte Schaltkreis ist oft nicht so effizient wie ein Expertenentwurf Trotzdem spart die Synthese oft viel Zeit und Geld Drittens ist eine HDL besonders gut zur Dokumentation geeignet Eine gut kommentierte HDL Beschreibung ergibt meist eine viel bessere und verst ndlichere Dokumentation als ein Schaltplan auf der Gatterebene Der vierte Vorteil ist die M glichkeit zur Simulation Eine HDL Simulation kann Fehler entdecken die sonst erst sp ter festgestellt werden im schlimmsten Fall erst nach der Fertigung Je sp ter ein Fehler entdeckt wird umso teurer sind die Entwurfskosten Eine Simulation kann auf verschiedenen Ebenen durchgef hrt werden Auf der funktionalen Ebene wi
289. zliche Spezial Hardware sinnvoll sein beispielsweise um einen sparsamen Energieverbrauch zu erreichen low Power 7 10 7 Hardware Software Codesign Unsch dlichkeit Warbarkelt 8 Datensicherheit x v Ausfallsicherheit x Zuverl ssigkeit Sensoren und Aktoren Stromverbrauch Programm und N A u D le 3 Eingebettetes Realzeit ev IZIENZ Geschwindigkeit FaN System Anforderungen a A Baugr e und N N Gewicht Entwicklungs User Interface kosten Fertigungs kosten Aufgabe und Spezialisierung Bild 7 7 Anforderungen an ein eingebettetes System Einfachere eingebettete Systeme die nur in Hardware realisiert sind kommen ohne ein Betriebssystem aus bei einer komplexeren Software L sung dagegen wird ein Betriebssystem ben tigt W hrend einfache Hardware Systeme meist auch in Echtzeit arbeiten gew hrleistet bei Software Systemen ggf ein Echtzeit Betriebs system dass jeder einzelne Software Prozess innerhalb einer fest vorgegebenen Zeit ausgef hrt und nicht von anderen Prozessen verz gert wird Man unterscheidet zwischen harten und weichen Echtzeitanforderungen f r die bei der Kompo nenten Auswahl das richtige Betriebssystem gew hlt werden muss 7 4 Beispiele f r eingebettete Systeme Wie wir gesehen haben decken eingebettete Systeme ein immens breites Spektrum von Anwendungen ab vom einfachen digitalen Fahrradtachometer bis zum High End Navigationssystem
290. zun chst nur eine fensterf llende Blackbox f r Ihren Addierer sehen Um die Zwischendarstellung der synthetisierten Schaltung zu betrachten klicken Sie doppelt auf diese Blackbox Bild C 6 2i ioi Bild C 6 RTL Ansicht des Designs Man erkennt deutlich den Addierer mit seinen vier Eing ngen und das D Flipflop das die Summe flankengetriggert speichert und an den Ausgang OUT anlegt Was Sie hier sehen entspricht der Zwischendarstellung vor dem Abbilden auf die Ziel technologie Kapitel 5 Wie die VERILOG Modelle ist auch die Zwischendarstellung hierarchisch geschachtelt Durch Doppelklick auf die dargestellten Elemente kann man h ufig noch tiefer in die verborgenen Details eintauchen und so beispielsweise den genauen Aufbau der einzelnen Addiererbausteine untersuchen Nachdem Sie sich mit der Zwischendarstellung vertraut gemacht haben m chten wir Ihnen noch einen Vorgeschmack auf die endg ltige Hardware Schaltung geben wie sie nach dem noch nicht durchgef hrten Technology Mapping f r ein FPGA aussehen k nnte FPGAs werden in Kapitel 6 behandelt Schlie en Sie dazu die RTL Ansicht und starten Sie stattdessen den Prozess View Technology Schematic Dadurch ffnet sich das Technologie Ansichtfenster wie in Bild C 7 C 6 C Lab 2 Logiksynthese mit VERILOG adder4_simple ngc gt 10 x Bild C 7 Technologie
291. zuzeichnen So kann man sich davon berzeugen dass die Daten bertragung fehlerfrei funktioniert Fassen Sie in Chipscope wie in Abschnitt D 1 6 die DataPorts 0 31 zum Bus APLUSB_DBG_OUT und die Ports 32 63 zu APLUSB_DBG_IN zusammen Benennen Sie DataPort 64 um in DCR_Write Das Signal DCR_Write wechselt genau dann von 0 auf 1 wenn die CPU Daten ber den DCR Bus schreiben m chte Konfigurieren Sie den Logikanalysator so dass er sobald DCR_Write auf 1 wechselt mit dem Aufzeichnen von Werten beginnt DCR_Write ist fiir diesen Zweck bereits in der Datei system mhs als sogenanntes Trigger Signal festgelegt worden Dazu setzen Sie im Trigger Setup den Value von X auf 1 und bet tigen den Button Apply Settings and Arm Trigger Bild D 27 Starten Sie jetzt das Programm ber die XMD Konsole mit dem Befehl con OxfffEfEfffC Wenn auf dem LCD die Meldung E I S ML310 A B example angezeigt wird ist Ihr Programm korrekt gestartet worden Verifizieren Sie die aufgezeichneten Werte in Chipscope D 2 Software steuert Hardware D 21 ChipScope Pro Analyzer new project New Project amp Trigger Setup DEV 1 MyDevice1 XC2VP30 UNIT 0 MYILAO ILA o g JTAG Chain X DEV 0 MyDevice0 System_ACE DEV 1 MyDevice1 XC2VP30 9 UNIT 0 MyILAO ILA Trigger Setup i Trigger Condition Name Trigger Condition Equation Output Enable Waveform TriggerConditiond Mo Disabled Listing Busha Windows 1 Depth 512 X Position 0

Download Pdf Manuals

image

Related Search

Related Contents

I GUíAI  User`s Manual  VACUETTE® Tube Activated Holder - Greiner Bio-One  LED Moving Head - SpaceLas Laser Light    Mad Catz Xbox 360 MC2 MicroCon  HP LaserJet P2010 Series Service Manual - ENWW  Workshop Check Point Advanced Troubleshooting  Moteurs quatre temps à injection électronique EFI 25/30  

Copyright © All rights reserved.
Failed to retrieve file