SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN 1/46 FPGA Development Teil II Sven Gregori, CN8 <gregori@hs-furtwangen.de> UnFUG WS 08/09 Hochschule Furtwangen 6. November 2008
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN 2/46 Einführung / Rückblick
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Basics - ganz unten angefangen.. 3/46 Embedded System Special Purpose Computersystem (mehr oder weniger) System ist Teil des Systems :p Resourcen (wenn möglich) auf die Anwendung angepasst Beispiele Mobiltelefon, DVD Player, Getränkeautomat, HW Router, Drucker, Mikrowelle, Navi, Fernbedienung,...
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Basics - ganz unten angefangen.. 4/46 Mikrocontroller Single Chip Computer CPU und zusätzliche Komponenten auf einem Chip USB Host Controller, Ethernet MAC, Memory Controller, GPIO, ADC, DAC, RAM, ROM,... kleinste (Embedded) Systeme benötigen ausser etwas analoger Elektronik keine weiteren Komponenten (siehe Mikrocontrollerbasteleien letztes Semester)
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN FPGA 5/46 FPGA Field Programmable Gate Array frei programmierbarer / rekonfigurierbarer Logikbaustein Programmierung definiert eigentliches Verhalten ermöglicht eigene Digitalbausteine zu entwerfen
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN FPGA 6/46 Vorteile System der Anwendung anpassen echte Parallelität Rekonfigurierbarkeit Designänderungen ohne Hardware anzufassen schnelles ASIC Prototyping Kostenfaktor gegenüber ASIC bei geringen Stückzahlen
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN FPGA 7/46 Nachteile je nach Situation ist Software Lösung sinnvoller benötigt meistens externen Speicher für Konfiguration je nach FPGA nur relativ geringe Taktraten möglich Kostenfaktor gegenüber ASIC bei höheren Stückzahlen
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN FPGA Entwicklung 8/46 Umsetzung Programmierung auf abstrakter Ebene Hardware Description Language VHDL, Verilog, SystemC,... Design testen Testbench Simuation Constraints definieren Pinbelegung, Timing, Placement,...
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN FPGA Entwicklung 9/46 Umsetzung Synthese Übersetzen von HDL Code Abbilden in FPGA-spezifische Elemente Darstellung in Form von sog. Netzliste Implementierung Netzliste den tatsächlichen Komponenten innerhalb des FPGA zuordnen und diese verbinden Bitstream Erzeugung Bitstream konfiguriert FPGA
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN FPGA Entwicklung 10/46 IP Core fertige Komponente Vielfalt bereits existierender IP Cores können ins eigene Design mit aufgenommen werden als Source Code oder Netzliste kommerzielle und Open Source opencores.org beliebig viele Cores können in ein FPGA gepackt werden abhängig von verfügbaren Resourcen
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN FPGA Entwicklung 11/46 Beispiele Arithmetikeinheit UART Ethernet MAC USB Host Controller Crypto Core... Softprozessor <o/
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN 12/46
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN 13/46 Prozessor in (z.b) einem FPGA implementiert mit allen Vorteilen aus der konfigurierbaren Welt sprich Prozessor kann den wünschen und dem Zielsystem angepasst werden zusammen mit anderen Komponenten erhält man so einen anwendungsspezifischen Mikrocontroller
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN 14/46 Konfigurierbarkeit theoretisch alles einstellbar interne Komponenten Cache, Arithmetik, FPU, MMU,... Busbreiten Endianess Registersatz Instruction Set
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN 15/46 Instruction Set Prozessor mit Anwendungsspezifischen Opcodes ausstatten Hardware Implementierungen in Software mappen damit nicht auf CPU beschränkt GPU, DSP, Math/Crypto/Biotech/... Prozessor denkbar Problem: benötigt entsprechenden Compiler
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN 16/46 Vorteile CPU nach eigenem Wunsch zusammenstellen vom internem Aufbau bis hin zum Instruction Set Anwendungsspezifisches System als Mikrocontroller auf einem Chip realisierbar (SoPC) möglicher Kompromiss bei der Frage Software oder Hardware Spassfaktor ;)
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN 17/46 Nachteile echte CPU im direkten Vergleich in der Regel performanter relativ geringe Taktfrequenz (je nach FPGA) Kosten
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Beispiele 18/46 cw667x Brainfuck CPU \o/ führt nativ Brainfuck Code aus Instruction Set folglich die bekannten 8 Brainfuck Befehle entwickelt von Clifford Wolf als Beispielprojekt zum Thema VHDL Development für den 20C3
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Beispiele 19/46 JOP Java Optimized Processor führt nativ Java Bytecode aus Open Source Core
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Beispiele 20/46 OpenSPARC Sun Microsystems Open Source Core UltraSPARC T1 und T2
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Beispiele 21/46 OpenCores.org OpenRISC 8051 Clones AVR Clones 68k Clones zich andere
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Beispiele 22/46 FPGA Herstellerspezifische Altera Nios II LatticeMico32 Open Source Xilinx PowerPC 440/405 keine sondern harte Kerne als Resource in speziellen Xilinx Virtex FPGAs vorhanden Xilinx MicroBlaze gleich mehr
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN 23/46 Xilinx MicroBlaze
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Xilinx MicroBlaze 24/46 MicroBlaze 32Bit RISC Architektur als Netzliste in Xilinx EDK verfügbar VHDL Source Code Lizenz- und Kostenpflichtig :/
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Xilinx MicroBlaze 25/46 Konfigurierbarkeit Data und Instruction Cache Größen MMU (seit MicroBlaze 7.0 - aktuell 7.10.d)... Single Precision Floating Point Unit Pipeline 3stufig - Flächenoptimierung 5stufig - Geschwindigkeitsoptimierung Hardware Multiplizierer (disabled/32bit/64bit) Hardware Dividierer Barrel Shifter Exceptions
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Entwicklung 26/46 Xilinx EDK Xilinx Embedded Development Kit beinhaltet Xilinx Platform Studio Unterstützung aller (?) Xilinx Development Boards neben CPU noch andere Komponenten definierbar und konfigurierbar (Speicher, UART, Timer, Ethernet MAC,... ) Konfiguration von Busanschlüssen und Adressmapping System in ner GUI zusammenklicken im Hintergrund aber alles über Textfiles
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Entwicklung 27/46 Board Support Package Software Unterstützung für alle Komponenten Low Level Treiber besteht aus Konfigurationsdatei und TCL Script in der Regel proprietärer Teil Details folgen gleich..
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Entwicklung 28/46 libxil Haupt-API beinhaltet die Low Level Treiber wird für Standalone Applikationen oder in Verbindung mit Betriebssystemen verwendet
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Entwicklung 29/46 Toolchain Portierung von gcc, binutils und gdb vorhandem jedoch nicht offiziell sondern Third Party Vendors Xilinx (EDK) PetaLogix Prozessorspezifische Einstellungen wie gewohnt mit gcc -m<option> gcc -mno-xl-soft-mul gcc -mhard-float gcc -mxl-soft-div...
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Betriebssysteme 30/46 Standalone Anwendung direkt oberhalb der Hardware also kein Betriebssystem libxil steht zur Verfügung damit auch Low Level Treiber der Komponenten RS232 Komponente kann im BSP als stdin/stdout definiert werden, libxil bringt I/O Funktionen allerdings halt keine Grundfunktionen eines OS Threads, Semaphoren, Message Queues,...
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Betriebssysteme 31/46 Betriebssysteme für MicroBlaze Linux uclinux (nur Kernel 2.4) PetaLogix PetaLinux (LynuxWorks BlueCat Linux) Xilkernel FreeRTOS ecos (bedingt - nicht offiziell) diverse kommerzielle RTOSs ThreadX, uc/os-ii, Nucleus,...
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Betriebssysteme 32/46 Xilkernel kommt auch mit Xilinx EDK mit Konfiguration über EDK (GUI) oder system.mss BSP generiert libxilkernel gcc... -lxilkernel Threads, Semaphoren, Shared Mem, Interrupt Handling,... POSIX API recht kleiner Footprint
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Betriebssysteme 33/46 FreeRTOS minimales RTOS Standalone BSP, Konfiguration über FreeRTOSConfig.h paar Source Files, einfach mit dazukompilieren Memory Management wird über hinzunahme von heap 1.c, head 2.c oder head 3.c gewählt
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Betriebssysteme 34/46 ecos ziemlich umfangreiches RTOS verschiedene Pakete zur Auswahl TCP Stack, Dateisysteme, USB Stack,... allerdings keine offizielle MicroBlaze Unterstützung monecos als Projekt von Michal Šimek1 leider noch sehr unausgereift und nicht wirklich für Produktiveinsatz brauchbar bisher ecos bringt configtool mit, BSP generiert Template dafür 1 MicroBlaze Linux Maintainer, PetaLinux Entwickler
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Betriebssysteme 35/46 PetaLinux Linux Distribution mit MicroBlaze Portierung (Kernel 2.6) uclinux mit dabei, inklusive Userland Applikationen BSP generiert Kconfig.auto nach arch/microblaze/platform/$platform kopieren beinhaltet Treiber für Board Komponenten bestehen aus libxil Low Level Treibern und adapter.c zur Einbindung der Treiber in Kernel API MMU Unterstützung in Entwicklung (Testrelease oder SVN) Distribution bringt Toolchain mit Kernelteil (natürlich) GPL, BSP eben proprietäre Lizenz
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN 36/46 Demosystem
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Aufbau 37/46 Board Xilinx XtremeDSP Starter Kit Xilinx Spartan-3A DSP 1800 FPGA 128MB DDR2 SDRAM 8MB SPI Flash 16MB Parallel Flash 10/100/1000 Ethernet PHY RS232 VGA ADC, DAC...
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Aufbau 38/46 FPGA MicroBlaze CPU 32kB Data und Instruction Cache UART 8 LEDs DDR2 SDRAM Controller SPI Flash Controller Ethernet MAC Hardware Timer Interrupt Controller
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN System 39/46 SPI Flash # cat /proc/mtd dev: size erasesize name mtd0: 00100000 00010000 "bitstream" mtd1: 00300000 00010000 "kernel" mtd2: 00200000 00010000 "romfs" mtd3: 00200000 00010000 "rwfs" FPGA lädt Konfiguration aus mtd0 Bootloader (im FPGA BRAM) lädt Kernel Image aus mtd1 Kernel lädt read-only Root Dateisystem aus mtd2 read-write Partition mit JFFS2 Dateisystem auf mtd3
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN System 40/46 Sonstiges Bootloader um Kernel vom Flash in RAM zu laden PetaLinux, Kernel 2.6.20-uc0 kleiner Webserver zum schlaue Sachen machen ;) MTD Treiber zur Flash Ansteuerung verwendeter Flash Controller ermöglicht SPI Flash Adressraum in normalen CPU Adressraum zu mappen
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN 41/46 Fazit
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN Fazit 42/46 Fazit FPGAs allein sind ja schon ein nettes Spielzeug eröffnen dem Ganzen aber nochmal ganz neue Dimensionen der Möglichkeiten und des Spasses
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN 43/46 weitere Informationen
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN weitere Informationen 44/46 mein Kram Embedded Systems, UnFUG SS 2006 FPGA Development, UnFUG SS 2008 Diplomarbeit Embedded Plattform auf FPGA Basis (bald :p)
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN weitere Informationen 45/46 Links Open Source IP Cores http://www.opencores.org Xilinx MicroBlaze http://www.xilinx.com/microblaze PetaLogix Developer Portal http://developer.petalogix.com/ Michal Šimeks Development Wiki http://monstr.eu
SYN Rückblick MicroBlaze Demosystem Fazit Informationen FIN 46/46 Fragen?