Entwicklung eines Mikroprozessorkerns – ist noch kein VHDL-Code da- ... write...

download Entwicklung eines Mikroprozessorkerns – ist noch kein VHDL-Code da- ... write instruction, write data, read write position, write string ... Universal Asynchronous Receiver

of 12

  • date post

    01-Apr-2018
  • Category

    Documents

  • view

    215
  • download

    2

Embed Size (px)

Transcript of Entwicklung eines Mikroprozessorkerns – ist noch kein VHDL-Code da- ... write...

  • Entwicklung eines Mikroprozessorkerns

    Forschungsbericht ber die zweite Phase ab SS04

    Prof. Dr.-Ing. Rainer Bermbach

    Fachbereich Elektrotechnik

    Tel.: 0 53 31 / 93 93 111

    R.Bermbach@FH-Wolfenbuettel.de

    1 Einleitung

    Das FuE-Vorhaben Entwicklung eines Mikroprozessorkerns hatte als Ziel, einen kleinen,flexiblen und frei verfgbaren Prozessorkern in VHDL zu erstellen, der auf preiswertenFPGA-Modulen realisierbar und zusammen mit anderer Hardware implementierbar ist. Dietatschliche Realisierbarkeit in programmierbarer Hardware ist ein wesentlicher Unter-schied zu anderen frei verfgbaren Mikroprozessorkernen, deren Beschreibungen hufignicht oder hchstens teilweise implementierbar sind. Der Prozessorkern soll mit spezifi-schen Peripheriekomponenten erweitert bzw. in bergeordnete Systeme eingebundenwerden knnen. Er soll Im Rahmen potentieller weiterer FuE-Vorhaben, Projektarbeitenund Laborversuche zum Einsatz kommen sowie als Anschauungsobjekt fr entsprechendeLehrveranstaltungen dienen.

    Im ersten Teil des Vorhabens (ab SS03) konnte bereits das grundlegende Ziel erreichtwerden. Es entstand ein adaptierbarer, auf preiswerten FPGA-Modulen (mit Xilinx SpartanII) implementierbarer Kern, der mit den Mikrocontrollern der sog. PICmicro Mid-RangeFamily der Firma Microchip weitestgehend kompatibel ist. Fr eine Beschreibung vonStruktur, Eigenschaften und Handhabung des Mikroprozessorkerns sei auf [1] verwiesen.

    Der zweite Teil des Vorhabens, die Optimierung, hatte zum Ziel, die Verarbeitungsfre-quenz (maximale Taktrate) des Prozessors wenn mglich deutlich zu steigern und dabeiden Ressourcenverbrauch beizubehalten oder gar zu verringern. Daneben sollten weiterePeripheriekomponenten entstehen, Fehler beseitigt sowie PIC-Software fr die Nutzungmit vorhandenen I/O-Modulen standardisiert werden.

    Diese Ziele konnten alle erreicht werden. So arbeitet der Mikroprozessorkern jetzt mit ber80 MHz Taktfrequenz (max. 82,6 MHz gem Routing-Tool) gegenber > 25 MHz im er-sten Entwurf [3]. Lediglich noch 10 15 Signalpfade (je nach Routing-Lauf) bentigenmehr als 10 ns, damit ist das Design nahe der 100-MHz-Grenze. Vergleichbare regulrePIC-Prozessoren laufen mit maximal 20/24 MHz. Eine probeweise Implementation auf ei-nem FPGA-Board mit einem Baustein der neuen Xilinx Spartan-III-Serie ergab auf Anhiebeinen funktionsfhigen Prozessor mit maximalen Taktfrequenzen > 100 MHz. Auch derRessourcenverbrauch konnte weiter verringert werden.

  • 2

    Im folgenden geht der Bericht auf die verschiedenen durchgefhrten Arbeiten ein. Nach-dem Kapitel 2 die benutzte Entwicklungsumgebung vorstellt, beschreibt Kapitel 3 die Soft-ware fr das I/O-Modul, whrend das folgende Kapitel 4 die Implementierung eines UART-Peripheriemoduls umreit. Die Umstellung der aktiven Flanken der Block-RAM-Moduleschildert Kapitel 5. Kapitel 6 setzt sich mit dem Einsatz des Timing-Tools auseinander,eine wichtige Voraussetzung zur Beurteilung der Geschwindigkeit des Kerns. Danach ver-anschaulichen Kapitel 7 und 8 die berlegungen und die Vorgehensweise bei der Neuge-staltung der ALU bzw. der Einheit DECODE, whrend Kapitel 9 die erzielten Ergebnisseprsentiert und diskutiert

    2 Entwicklungsumgebung

    Fr die Durchfhrung des Projekts bentigt man natrlich Hardware, Entwicklungswerk-zeuge und Hilfsmittel. Fr die Schaltungsentwicklung mit VHDL kam die im Labor fr Da-tentechnik lizenzierte und gepflegte Entwicklungsumgebung Xilinx ISE 6.1i zum Einsatz.Die ISE erlaubt die Entwicklung von der VHDL-Eingabe ber Synthese, Mapping, Place &Route bis zum Download in das FPGA. Die Simulation (Pre- und Post-Layout-Simulation)ermglicht die ISE mit dem Programm ModelSim. Da dessen Komfort und vor allem Ar-beitsgeschwindigkeit stark zu wnschen brig lt, wurde das ebenfalls lizenzierte Pro-grammpaket Aldec Active HDL 6.2 eingesetzt. Active HDL erlaubt die Einbindung der Xi-linx Tools, so da aus einer einzigen Umgebung heraus gearbeitet werden kann.

    Fr die Mikroprozessor-Softwareentwicklung mit dem PIC existiert die frei erhltliche IDE(Integrated Development Environment) MPLAB 6.50 von Microchip. Mit ihrer Hilfe erzeugtman aus den Assembler-Sourcen ausfhrbaren Code im Intel-Hex-Format, den ein eige-nes Programm in VHDL-Code zur Initialisierung der fr das ROM verwendeten Block-RAMs umsetzt.

    Abb. 2.1 Blockschaltbild des FPGA-Entwicklungsboards

    Als Hardwareplattform dienen FPGA-Boards der Firma Digilent (Digilab2), die mit einemXilinx FPGA des Typs Spartan II (Speed Grade 5) mit 200.000 Gatterquivalenten be-

  • 3

    stckt sind. Sie verfgen daneben u.a. ber Programmierschnittstelle, Takt- und Strom-versorgung und an die Boardkanten herausgefhrte FPGA-Anschlsse (s. Abb. 2.1). Ab-bildung 2.2 zeigt ein Foto eines solchen Boards.

    Abb. 2.2 Foto des FPGA-Entwicklungsboards

    Mchte man die ueren Signale und Schnittstellen des implementierten Mikrocontrollersbeobachten, erlaubt dies das verwendete Board ber die Erweiterungsstecker (ExpansionA F) z.B. per Oszilloskop oder Logikanalysator. Geht es weniger um Meaufgaben, da-fr mehr um direkte Benutzerein- oder -ausgaben, kann man ein I/O-Modul (Digilent DIO2)an das FPGA-Board anstecken.

    Abb. 2.3 Blockschaltbild des I/O-Moduls

  • 4

    Das I/O-Modul verfgt ber ein zweizeiliges LCD, eine vierstellige Siebensegmentanzeigeund etliche LEDs, Schalter und Taster (s. Abb. 2.3 und 2.4). Ein auf dem Modul befindli-ches CPLD realisiert eine asynchrone Busschnittstelle fr die Ein-/Ausgabeelemente. DasLCD besitzt die bei solchen Modulen bliche 8+3-Schnittstelle.

    Abb. 2.4 Foto des FPGA-Moduls mit angestecktem I/O-Modul

    Der VGA- und der PS2-Port sind auf dem I/O-Modul nur rudimentr ausgefhrt. Sie ben-tigen zustzlich im FPGA implementierte Hardware. Derzeit ist noch kein VHDL-Code da-fr entwickelt worden.

    3 PIC-Software zum Betrieb des Digilent I/O-Moduls

    Das I/O-Modul wird, wie schon erwhnt, auf die Expansion-Anschlsse des FPGA-Boardsaufgesteckt. Hardwaremig bedeutet das einen Anschlu an Ports des implementiertenProzessorkerns. ber diese Ports kann man mit entsprechender (PIC-) Software die Res-sourcen des I/O-Moduls bedienen. Die Erstellung von gut strukturierten Funktionen zurNutzung dieser Ressourcen war ein kleines Unterthema des Projekts.

    Es entstanden verschiedene Medium- und Low-Level-Routinen (Assembler-Unterprogram-me) zur Ansteuerung der Hardware des I/O-Moduls:

    LCD init, write instruction, write data, read write position, write string 7-Segment write (digit 1 & 2 und 3 & 4) LED write (LEDs 0 7 und 8 F) Switches read status Buttons read status (mit Entprellung, Taster 0 7 und 8 - E) BCD Counter (vierstellig), BIN Counter (vierstellig) Delay-Routinen

  • 5

    In einem Testprogramm wurden alle Routinen in einem bergeordneten Rahmen einge-bunden. Durch verschiedene Ausgaben auf den Displays (Text, Counter) und LEDs (Lauf-licht), die durch Schalter und Taster beeinflubar sind, gewinnt man einen schnellen, er-sten Anhaltspunkt, ob der implementierte Prozessorkern korrekt luft oder fehlerhaft ist.

    4 Implementierung einer UART-Peripheriekomponente

    Die als Referenz dienenden PIC-Prozessoren der Mid-Range Family verfgen teilweiseber eine serielle Schnittstelle (UART Universal Asynchronous Receiver Transmitter) frdie asynchrone Datenbertragung nach RS232. Bei einigen ist auch eine synchrone Be-triebsart (USART) implementiert. Um den Kern mit einer weiteren Peripheriekomponenteauszustatten und dabei die Anbindung von neuer Peripherie an den Mikroprozessorkernzu testen, wurde eine kompatible UART-Schnittstelle implementiert. (Der selten bentigtesynchrone Part wurde ausgespart.)

    Die Schnittstelle besteht aus den Funktionsblcken Baudratengenerator, asynchronerSender und asynchroner Empfnger. Diese Struktur findet sich auch in den VHDL-Modulen wieder. Der Baudratengenerator erzeugt aus dem Prozessortakt die bentigtenFrequenzen fr Sender und Empfnger. Der Empfnger erhlt zustzlich den 16-fachenTakt, um eine gute Synchronisation auf das empfangene Startbit sowie eine berabta-stung des Empfangssignals (Mehrheitsentscheidung) zu erreichen. Bei einem Prozessor-takt von 80 MHz ist eine minimale (Norm-) Baudrate von 4.800 Bd mglich. Ist dies in ei-nem Anwendungsfall zu hoch, mu ein entsprechender Vorteiler (z.B. 6- bis 8-Bit-Zhler)vorgeschaltet werden, der im Original-PIC nicht vorhanden ist. Ansonsten entsprechen dieProgrammierung und das Verhalten des UARTs exakt dem Vorbild [2].

    UARTclk usart_rcif

    wrf

    rdf

    data(7:0)

    adrf(8:0)

    q(4:1)

    por / resetusart_txif

    usart_rx

    usart_tx

    Baudrate Generator

    AsynchronousReceiver

    AsynchronousTransmitter

    Abb. 4.1 Schnittstellen des UART-Moduls

    Die Einbindung in das bestehende Design gestaltete sich problemlos. Die blichen, ue-ren Signale des UART wie Takt, Reset, Adre- und Datenbus (s. Abb. 4.1, linke Seite desUART) muten lediglich mit den entsprechenden Prozessorsignalen verbunden werden.Ein Eintrag im UCF (User Constraints File) weist die UART-spezifischen Signale wie Em-pfangsleitung (usart_rx), Sendeleitung (usart_tx) einem Pin des FPGAs zu. Die speziellenSignale usart_rcif und usart_txif sind die Interruptsignale des UART beim vollstndigenEmpfang bzw. bei vollstndiger Aussendung eines Zeichens. Das Modul INTCON, das frdie Interruptverarbeitung zustndig ist, erhlt diese Signale und wertet sie aus. Da ent-

  • 6

    sprechende Freigabebits vorgesehen sind, ist INTCON das einzige bestehende Modul,das bei Einbindung des UART adaptiert werden mute. Um die Flexibilitt des Prozessor-kerns zu erhalten, wurde die Einbindung des UART in das Gesamtdesign ber eine Kon-stante (USE_UART) im Modul MYPICPACK schaltbar ausgefhrt [4].

    5 Umstellung der Taktflanke bei Block-RAM-Komponenten

    In den Xilinx Spartan II FPGAs stehen bis zu