Als Elektronikingenieur muss man ständig über den Tellerrand hinausblicken, und immer wieder wird die Zeit abseits von Arbeitsplatz und Projektstress dazu genutzt, mal „in Ruhe“ neue Dinge zu testen. In einem solchen Test soll eine Überwachungskamera mit WLAN Anschluss implementiert werden. Von Altium gibt es ein interessantes Entwicklungssystem namens NanoBoard 3000, das in Kombination mit der Designsoftware Altium Designer spannende Möglichkeiten dafür bietet. Dieses Lösungspaket will ein stolzer Vater für einen ersten Praxistest dazu einsetzen, seinen wenige Monate alten Stammhalter stets im Auge zu behalten.
Um Kosten zu sparen, möchte der Vater als Bildgeber eine einfache Webcam benutzen. Diese dürfte hinsichtlich der Auflösung und der Bildfrequenz vollkommen ausreichend sein. Die Wiedergabe des Bildes soll bei Bedarf über das neue iPhone erfolgen, denn das hat er sowieso immer dabei. Übertragen werden die Bilder über das vorhandene WLAN-Netz in seinem Haus.
Die Umsetzung – in groben Zügen dargestellt
Die Entwicklungs-Plattform ist so konzipiert, dass die integrierte Entwurfssoftware Altium Designer mit ihrem OpenBus-System alle benötigten IPs für das NanoBoard3000 zur Verfügung stellt. Dies wiederum führt dazu, dass die erforderliche Hardware auf einer sehr hohen Abstraktionsebene schnell definiert und in dem auf dem Nanoboard integrierten FPGA programmiert werden kann. Primärer Bestandteil der Applikation ist ein Soft-Prozessor (TSK3000, 32-bit-RISC-Prozessor), der mit der Designsoftware inklusive aller benötigten IPs für die Schnittstellen des NanoBoards mitgeliefert wird.
An den Peripherie-Anschluss schließt der FPGA-/Board-Entwickler ein Soft-Terminal an, um zur Verifikation Statusanzeigen generieren zu können. Außerdem verbindet er mit dem Peripherie-Bus den interrupt-fähigen USB-Interconnector als Steuereinheit für den USB-Hub auf dem Nanoboard. Mit dem Speicherbus verbindet er ein SRAM für die Bilddaten sowie eine Shared-Memory-Steuereinheit. Letzteres ermöglicht die gemeinsame Nutzung des Speichers sowohl vom Prozessor als auch vom USB-Interface.
Abschließend konfiguriert er den Prozessor, weist diesem 32k internen Speicher und dem USB-Controller einen vorhandenen Interrupt zu. Das Memory Mapping erfolg automatisch, wobei sich der Entwickler noch einen passenden „c-header“ generieren lässt. So kann er später das Hardware-Mapping verändern, ohne die Software anpassen zu müssen. Diese verwendet die zugewiesenen Variablen, nicht die Adressen.
Das generierte Embedded System basiert auf dem Wishbone-Bus, so dass der Entwickler seine Anwendungen mit Funktionen aus der OpenSource-Gemeinschaft erweitern kann, bei der er sehr aktiv ist. Bild 1 zeigt das komplette OpenBus-System.
Sein Top-Level-Schaltplan instanziiert anschließend des erstellte OpenBus-System und stellt über die mitgelieferte NanoBoard3000-Bibliothek die physikalische Verbindung zu den Anschlüssen in der Hardware her. So kann er auch gleich sein verwendetes FPGA auf dem NanoBoard programmieren und später gegebenenfalls mit virtuellen Messinstrumenten verifizieren, falls etwas nicht wie erwartet funktionieren sollte.
Ferner sprechen noch zwei weitere Gründe dafür, zur Programmierung eines Systems Altium Designer zu verwenden: Erstens verwendet Altium Designer im Hintergrund die Software des FPGA-Herstellers und kann somit auch alle deren Funktionen nutzen. Außerdem kann der Boarddesigner bei Verwendung derselben Sourcen problemlos auf ein FPGA eines anderen Herstellers wechseln.