Südafrika: Der Kruger National Park

Heute mal ein etwas persönlicherer Beitrag. Die letzten drei Wochen war ich im Urlaub, in Südafrika mit einem kurzen Stopover in Dubai. Ich habe dabei die Zeit zwischen Masterabschluss und Doktorendenstelle genutzt, um ein wenig zu Reisen. Für mich war es die erste Reise auf die Südhalbkugel, und mit Dubai auch die erste Reise nach Asien. Zudem mit Abstand die weiteste (fast 10.000 km), bis her war ich nur bis Marokko und Ägypten gekommen. Schlussendlich war ich das erste Mal alleine unterwegs.

Mein Flug ging von Hamburg aus nach Dubai, und von dort direkt weiter nach Johannesburg. Von Johannesburg aus habe ich dann eine viertägige Tour zum Kruger National Park unternommen. Südafrika ist größer als man denkt, und so sind es von Johannesburg (oder Joburg, wie man dort sagt), noch gute acht Stunden Fahrt bis zum National Park an der Grenze zu Mosambik. Dort habe ich vier Tage in einer Logde übernachtet. Diese lag nicht direkt im Kruger-Park, sondern in einem sog. „private game reserve“, also einem privaten Reservat. Von dort aus haben wir dann Fahrten durch den Park gemacht. Wir waren dabei mit diesem Fahrzeug unterwegs, waren also „draußen“, ohne Glasscheibe dazwischen.Wir haben viele Stunden im Park verbracht, und dabei viele (unterschiedliche) Tiere gesehen. Es ist ein seltsames Gefühl, die Tiere dort zu sehen. Sie sind zwar theoretisch eingesperrt, durch die gigantische Größe des Parks (>1 Mio Hektar) und das Nicht-Eingreigen der Menschen quasi in freier Wildbahn. Die Tiere sind an die Autos gewöhnt, und ignorieren die Menschen komplett. Natürlich hat man all diese Tiere schon mal gesehen, es ist aber schon noch mal etwas anderes, ihnen in freier Wildbahn zu begegnen. Ein etwas unwirkliches Gefühl… Dazu kommt, das die Tiere natürlich über den Park verstreut sind, und die Ranger nur auf den Wegen fahren dürfen. Es kommt also schon mal vor, das man eine Stunde lang gar nichts sieht und einfach nur in einem windigen Fahrzeug sitzt und friert. Und wenn man die Tiere dann gefunden hat, sind sie auch oft schnell wieder weg… Doch gerade das macht es irgendwie besonders. Wir haben später noch in einem anderen Park (dazu später mehr) ein Skelett eines Büffels gefunden. Das hat mich sehr beeindruckt. Die Tiere werden eben nicht gefüttert, sondern jagen.

Weiterlesen

Spieleaufbewahrung

Inzwischen ist meine Brettspiele-Sammlung hier vor Ort auf ein gar nicht mal so kleines Maß gewachsen (lies: ein Billy-Fach reicht nicht mehr aus). Nun bin ja als Perfektionist bekannt, und das hat sich auch auf meine Spiele-Sammlung ausgeweitet: Früher (sic!) war das mit der Organisation des Spiel-Materials einfach: In der Box war ein Plastik-Einsatz, in dem jedes Teil seinen mehr oder weniger festen Platz hatte. Heute sieht das anders aus: Üblicherweise ist die Box randvoll mit Material, was in Plastiktüten geliefert wird. Meistens liegen gleich noch ein paar leere Tüten bei, damit man ein bisschen sortieren kann. Gut, vielleicht liegt das nicht nur daran, dass Plastikeinsätze teurer sind, sondern auch daran, dass ich inzwischen komplexere Spiele mit mehr Material bevorzuge…

Als Perfektionist gefällt mir diese Art der Aufbewahrung aber gar nicht: Alles fliegt nach dem Auspacken mehr oder weniger lose auf dem Tisch rum, und beim Zusammenpacken landet alles wahllos in einer Tüte die viel zu klein dafür ist. Zumindest, wenn nicht ich zusammenpacke 🙂 Dafür muss eine Lösung her! Hier schon mal ein kleiner Vorgriff, wie es jetzt aussieht:

Weiterlesen

Masterarbeit: Done

So, nach meiner Bachelorarbeit ist nun auch meine Masterarbeit abgehakt. Ich muss gestehen, ich bin ziemlich froh, das ich die letzten 6 Monate hinter mir habe, das ganze war doch eine ziemliche anstrenge Sache mit vielen neuen Erfahrungen für mich.

Was habe ich denn überhaupt gemacht? Meine Arbeit trägt den schönen Titel „Konzeptionierung und Implementierung einer hybriden MAC-Layer-Architektur für Paket-basierte Powerline Kommunikation auf einem FPGA“ 🙂 Powerline-Kommunikation ist dem einen oder anderen vermutlich ein Begriff, auch unter dem Begriff „dLan“: Weiterleitung einer LAN-Verbindung über das bestehende Stromnetz. Der passende Standard dazu heißt „HomePlug“ und sieht eine Aufteilung von Geräten in eine MAC- und eine PHY-Schicht vor, ähnlich wie im OSI-Modell. Ich habe jetzt in meiner Arbeit einen MAC-Layer auf einem FPGA implementiert. Der MAC-Layer macht vor allem so Sachen wie das Erzeugen von Headern und Prüfsummen, Segmentierung von zu langen Frames und Ackknowlegdments. Nicht ganz einfach, aber eine interessante Sache 🙂

Weiterlesen

RPi im Radio: Hardware

Ich bin der glückliche Besitzer einer Sharp XL-560 Mini-Stereoanlage, die ich vor einiger Zeit relativ günstig über ebay-Kleinanzeigen bekommen habe. Ein schönes Gerät, besonders die Tatsache das es einen Drehknopf hat, mit dem man die Lautstärke einstellen kann ist super. Mein Radio vorher hatte nur zwei Knöpfe, das war ein bisschen nervig, wenn es plötzlich zu laut war 🙂

Das Gerät ist schon aus einer bisschen älteren Generation, und hat die für die Zeit übliche Kombination: (UKW-)Radio, CD, Kassette, AUX-Eingang. Nun, irgendwie war meine Anwendung für das Kassettedeck ein bisschen limitiert (ich weiß bis heute nicht, ob es überhaupt funktioniert…). Daher nun also meine Idee: Modernisieren wir das Ding ein bisschen, und ersetzen das Kassettendeck durch einen Rasperry Pi Zero, mit Internetradio und Airplay. Gesagt getan 🙂 In diesem Post schreibe ich ein bisschen war zum Hardware-Umbau, zur Software kommt später noch mal was.

Eine weitere schöne Eigenschaft dieses Radios ist, das man im Internet ein Service-Manual findet, komplett mit Demontageintruktionen, Fehlersuchhilfe, Blockschaltbild und vollständigem Schaltplan (!) inklusive Bestückungsplan (!!). Ganz ehrlich, ohne dieses Dokument hätte ich das auch nicht hinbekommen… Zeit, mal wieder den Schreibtisch ins Chaos zu stürzen 🙂

Weiterlesen

Softcore CPU NEO430 mit GHDL simulieren

Für meine Masterarbeit beschäftige ich mich gerade mit Softcore-Prozessoren auf FPGAs. Dabei kommt für meine Arbeit der NEO430 zum Einsatz, ein sehr kleiner aber feiner Prozessor der an meinem Institut entwickelt wurde (von Stephan Nolting). Da ich aktuell noch nicht in einem Stadium bin, wo ich den Prozessor wirklich auf einem FPGA implementiere (auch wenn das der nächste Schritt ist) arbeite ich aktuell sehr viel mit Simulation, und da vor allem mit ModelSim. Ein bisschen was dazu hatte ich ja hier im Blog schon mal da zu geschrieben.

Nun hatte ich heute Abend die Idee, man könnte ja mal einen anderen Simulator ausprobieren. Mir hat es dabei GHDL angetan, vor allem, da er OpenSource ist, aber auch weil er einen interessanten Ansatz verfolgt: Der VHDL-Code wird mit einem umgebauten Compiler (GCC oder LLVM) direkt in Maschinencode kompiliert, und dieser Code dann ausgeführt. Dadurch soll der Simulator extrem schnell sein. Auf Windows ist das ganze etwas eingeschränkt, hier wird ein interner Codegenerator verwendet. Weiterlesen

Netze in Eagle in Schaltplan und Board verbinden

Zwei kleine Tipps zum Platinenentwurf mit EAGLE, die zwar irgendwie das gleiche Thema haben, eigentlich aber nichts miteinander zu haben 🙂

Signale im Schaltplan kreuzungsfrei verbinden

Stellen wir uns vor, wir haben die unglaubliche Schaltung aus vier Widerständen, die auf genau diese Weise verbunden werden müssen:

Mal abgesehen davon, dass man das Problem hier natürlich leicht durch Umpositionieren der  Widerstände lösen könnte, ist das doch ein häufiges Problem: Leitungen kreuzen sich nun mal. Das dabei ein Hakenkreuz entsteht ist nur eines der Probleme… Weiterlesen

Schöne Debugausgaben mit VHDL

Aktuell arbeite ich fleißig an meiner Masterabeit (einer der Gründe, warum es hier auf dem Blog so still ist…), und entwickele dafür auch ein paar Sachen in VHDL (ich entwickele also Hardware 🙂 ). Am Ende soll das ganze natürlich auf einem FPGA laufen (vielleicht sogar mal in einem echtem Chip, einem ASIC!), aber aktuell wird das ganze nur simuliert. Das ist zwar ziemlich langsam (aktuell etwa um den Faktor 1000), aber dafür kann man sich jedes Signal in seiner Schaltung ganz genau ansehen und bei Bedarf auch Debug-Ausgaben tätigen. Besonders das hat sich aktuell als sehr hilfreich dargestellt.

VHDL unterstützt das im Prinzip mit assert und report, allerdings finde ich die Ausgaben recht unübersichtlich, vor allem weil sie über mehr als eine Zeile gehen. Zudem ist alles einfarbig, so dass man schnell die Übersicht verliert. Ich habe mir als etwas überlegt, was etwas schöner aussieht (siehe Screenshot)

Weiterlesen

Kombinatorik zu Ostern

Frohe Ostern!

Am Ostersamstag waren in in der Familie fleißig und haben Eier gefärbt. Meine Aufgabe war es danach, die Eier auf unsere zwei Osternester „hübsch“ zu verteilen. Nach einer kleinen Diskussion darüber, wie man das am besten macht, kam dann die Frage auf, wie viele Möglichkeiten es dazu eigentlich gibt.

Wir färben unsere Eier immer in fünf verschiedenen Farben (zumindest wenn ich nicht wieder die Farbtabletten mit blau und grün vertausche und wir daher zwei mal blaugrün haben 🙂 ) und haben dieses Jahr zwanzig Eier gefärbt. Es gibt also vier Eier in jeder Farbe. Wir haben zwei Osternester, in jedes kommen also 10 Eier. (Das Bild oben ist nur Demo 🙂 )

Wie viele Möglichkeiten gibt es also 20 Eier, von denen jeweils 4 identisch sind, in 2 Nestern à 10 Stück anzuordnen? Dabei zählen natürlich keine Möglichkeiten, bei denen zwei gleichfarbige Eier vertausch wurden, und auch keine, die man durch Drehen der Nestern ausgleichen kann. (Die Eier liegen in jedem Nest in einem Kreis). Ein klassisches Problem der Kombinatorik also 🙂

Weiterlesen

Null coalescing in PHP

Heute habe ein neuen Feature von PHP kennengelernt, das wirklich praktisch ist: Null coalesing mit dem tenären Operator. (Ok, das klingt für ungeübte Ohren vielleicht ein bisschen seltsam :))

Null coalescing ist ein Feature dass viele Programmiersprachen haben, meistens mit Hilfe des Operators „??“ (Zwei Fragezeichen). Der Ausdruck gibt den linken Wert zurück, wenn dieser nicht null ist, ansonsten den rechten. Also z.B. so:


action = getAction() ?? 'save';

Weiterlesen

Einfache Sättigungsarithmetik in VHDL

Für ein Projekt an der Uni habe ich mit zwei Kommilitonen ein Malprogram („FPGArt“) auf einem FPGA implementiert. Dabei wird eine Maus per PS/2-Schnittstelle angebunden und das Bild schließlich per VGA ausgegeben. Zu dem Projekt selber später vielleicht mehr, hier jetzt nur ein kleines VHDL-Snippet das man vielleicht man gebrauchen kann.

In dem Projekt wird regelmäßig die relative Bewegung der Maus abgefragt und zu dem alten Wert addiert. Natürlich hat das Bild eine begrenze Größe und der Mauszeiger muss in diesen Grenzen von 800×600 gehalten werden. Es wird also eine sog. Sättigungsarithmetik benötigt: Sollte das Ergebnis der Addition größer als 800 (bzw. 600) sein, oder kleiner als 0 wird es auf den Grenzwert gesetzt. Das ganze ist gar nicht so einfach in Hardware zu implementieren (zumindest ist uns nichts intelligentes eingefallen…).

In jedem Fall muss es ein Zwischenergebnis geben das ausreichend groß ist, um Überläufe überhaupt zu erkennen. Die Maus kann pro Intervall Maximal um 256 bewegt werden, entsprechend muss als ein Wert von 800+256 = 1056 gespeichert werden können. Mit 11 bit kommt man auf 2048, das reicht. Hiermit kann man auch Unterläufe erkennen: 0-256 = -256 was dann 1792 entspricht. Dieser Bereich überlappt auch nicht mit den 1056 nach oben. Es ist also immer einwandfrei erkennbar, dass ein Über/Unterlauf stattgefunden hat.

Weiterlesen