|
|
FPGA Soft Core
[Bearbeiten] EinleitungEin soft core (engl. weicher Kern) ist ein Prozessor bzw. Mikrocontroller, welcher sich in einem FPGA befindet. Im Gegensatz zum hard core (engl. harter Kern) besteht er aus reiner Anwenderlogik im FPGA und ist nicht fest auf dem Chip platziert. Vorteile:
Nachteile:
Ein soft core wird gern für etwas komplexere Aufgaben verwendet, bei denen es nicht auf allerhöchste Geschwindigkeit ankommt, z. B. eine Displayansteuerung. Die Taktfrequenzen sind stark vom FPGA-Typ und der FPGA-Auslastung (freie Logikressourcen) abhängig. Eine große Anzahl frei verfügbarer Soft-CPUs gibt es auf OpenCores.org. Die vorhandene Palette reicht von Nachbauten vorhandener Prozessoren, wie des AVR, PIC oder MIPS, bis hin zu eigenen Entwicklungen, wie dem "16 Bit Microcontroller" (c16), der speziell für FPGAs optimiert ist und mit einem eigenen RTOS kommt. Ein anderer ist z. B. der 32-bit OpenRisc 1000, für den eine Version der GNU Tools für die Software Entwicklung zur Verfügung stehen. Hier soll ein kleiner Überblick über vorhandene Softcores entstehen, für welche Softwarunterstützung existiert und welche Leistungen zu erwarten sind. Es nützt einem oft der tollste Softcore nicht, wenn er sich nicht entsprechend programmieren läßt. Für LatticeMico32, MicroBlaze und NIOS ist jeweils ein Systembuilder verfügbar. Damit lassen sich leicht und übersichtlich Prozessor und Peripherie konfigurieren. [Bearbeiten] 8 Bit Soft Cores
[Bearbeiten] PicoblazeDabei handelt es sich um einen sehr kleinen, aber dennoch sehr leistungsfähigen Microprozessor. Eigenschaften:
[Bearbeiten] AX8Der AX8-Core entspricht fast einem Atmel AT90S2313. Ihm fehlen noch Hardwareeinheiten wie EEPROM, Watchdog und die verschiedenen Powerdown-Modi.
Die ROM-Beschreibung muss angepasst werden, damit XST einen BlockRAM generieren kann (ein passendes hex2rom gibts hier: hex2rom). Der Core lässt sich leicht mit Speicher (8KByte ROM), einem EEPROM (bis zu 64KByte), zwei Ports und einem Watchdog erweitern. Damit entspricht der AX8 dann einem AT90S8535, bis auf die anderen Timer/Counter und die fehlende SPI-Schnittstelle. Für Entwicklungszwecke lässt sich der ROM-Inhalt - wie beim Picoblaze - per JTAG-Schnittstelle updaten. Somit kann neue Software getestet werden, ohne das Design neu zu synthetisieren. Dafür benötigt man die Werkzeuge hex2svf, svf2xsvf und xsvfplayer. Im FPGA füllt dann eine State-Machine am JTAG-Port einen DualPort-RAM (ROM :-)) Im Gegensatz zu neueren AVR-Controllern wie dem ATMega8, fehlen dem AX8-Core Befehle wie MOVW, MUL und FMUL. Außerdem fehlen Hardwareeinheiten, wie I2C und erweiterte Timer. Die größte Beschränkung aber ist der maximale Programmspeicherplatz von 8KByte. Mehr Speicher macht größere Änderungen am VHDL-Code des Cores erforderlich. [Bearbeiten] AVR8The AVR8 Soft Processor core is an AVR instruction set compatible processor that is optimized to run on the Butterfly Flight or Butterfly Light FPGA hardware. It is based on the ATmega103 processor and includes a full toolchain to compile and run C code developed with avr-gcc. http://gadgetfactory.net/gf/project/avr_core/ [Bearbeiten] PandaEs steht eine grafische Builder SW zur Verfügung um ein System inklusive Peripheriern zu generieren, ohne VHDL schreiben zu müssen. Einige Peripherieren (Timer, Ports, etc.) sind bereits integriert, eigene Peripherien können in die SW integriert werden. Der Prozessor ist stark konfigurierbar (z. B. Ein/Ausschalten einzelner Instruktionen). [Bearbeiten] 16 Bit Soft Cores
[Bearbeiten] TG68
[Bearbeiten] 32 Bit Soft Cores
Einen ersten Eindruck von derLeistungsfähigkeit der 32 Bit SoftCores gibt z. B. die Master-Arbeit "Evaluation of synthesizable CPU cores" aus dem Jahr 2004. Diese Vergleicht den Leon 2, MicroBlaze und OpenRISC 1200 miteinander. [Bearbeiten] Lattice Mico32 und soc-lm32Mico32 ist eine 32 Bit pipelined RISC CPU. Die steht unter einer OpenSource Lizenz und liegt komplett im Verilog Quelltext vor. Sowohl die CPU Architektur als auch der Resourcenbedarf ist vergleichbar mit dem MicroBlaze von Xilinx, ist allerdings eine eigenständige Entwicklung von Lattice.
Neben dem Original, das man von Lattice herunterladen kann, und dessen Toolchain erstmal auf Windows mit Lattice FPGAs ausgelegt ist, gibt es noch soc-lm32. soc-lm32 ist eine Portierung auf Altera und Xilinx Bausteine und benutzt einen Makefile-basierten Workflow. Eine von Lattice in Auftrag gegebene Portierung von uC-Linux ist verfügbar (http://www.theobroma-systems.com/mico32/). Nachteile: bis jetzt gibt es keine Version mit FPU (kann über Wishbone als Peripherie angeflanscht werden) oder MMU. [Bearbeiten] LeonDieser Prozessorkern ist komplett SPARC V8 kompatibel -- beliebige SPARC Compiler können verwendet werden (z. B. bcc, ). Neben dem Kern selbst steht auch eine breite Auswahl an Peripherie in Form von VHDL-Komponenten zur Vefügung. Als On-Chip Interconnect kommt AMBA (AHB + APB) zum Einsatz.
[Bearbeiten] MicroBlaze & Nachbauten |