Lofar ript sterren van de hemel

Reading time: 6 minutes

Author:

Wessel Lubberhuizen is senior engineer bij Inspiro in Arnhem. Hij heeft meer dan tien jaar ervaring in ontwikkeling van geavanceerde systemen voor digitale signaalbewerking. Inspiro is actief op het gebied van embedded intelligentie.

De antennes van de Lofar-radiotelescoop leveren straks 35 terabit aan informatie per seconde. De centrale supercomputer kan deze stroom echter niet behappen. Daarom reduceren de meetstations de hoeveelheid data, zoals een pc een cd overzet naar MP3. Voor deze taak beschikt elk van de 77 stations over 24 digitale processingborden met FPGA‘s. In opdracht van Astron ontwikkelde Inspiro hier de firmware voor.

Lofar is een netwerk van 25 duizend radioantennes verspreid over Nederland en Duitsland. Groepen van 192 antennes zijn verbonden met een meetstation dat via een glasvezelnetwerk in contact staat met een IBM Bluegene-supercomputer in Groningen. De Stichting Astronomisch Onderzoek in Nederland (Astron) ontwikkelt Lofar voor sterrenkundige analyses, maar het netwerk is ook geschikt voor andere toepassingen waaronder geologie en precisielandbouw.

De antennes van de Lofar-radiotelescoop produceren straks 35 terabit aan informatie per seconde. Dit is equivalent met vijfduizend cd‘s. Hoewel de centrale supercomputer in de wereldwijde snelheidstoptien staat, is deze hoeveelheid data te groot om te verwerken. Daarom comprimeren de meetstations de hoeveelheid informatie met een factor 250, middels een techniek die vergelijkbaar is met het overzetten van een cd naar MP3. Bij dat ’rippen‘ splitst een algoritme de muziek op in discrete informatiebanden en gooit het alle informatie weg die niet van belang is.

De Lofar-stations reduceren de data in twee slagen. Een filterbank deelt de antennesignalen allereerst op in smalle frequentiebandjes en selecteert de gebieden met voldoende kwaliteit voor verdere bewerking. Frequentiebandjes met te veel stoorsignalen worden weggelaten. Vervolgens combineert een bundelvormer de signalen van meerdere antennes. In feite pakt het systeem hiermee alleen data uit specifieke richtingen en reduceert het de stoorsignalen daarmee nog verder.

Door de hoge eisen van het systeem was het niet eenvoudig om dit principe te realiseren. De astronomische bronnen die Lofar wil bestuderen, staan op een afstand van miljarden lichtjaren, waardoor de uitgezonden signalen aanzienlijk zwakker zijn dan de ruis van de antennes en de versterkers. Na digitalisatie zijn ze zelfs lager dan een bit. Kleine afrondingsfouten zorgen daardoor al voor grote verstoringen. Het optimaliseren van de woordbreedtes en de afrondingsmethode kregen daarom veel aandacht. De kernvragen hierbij waren: wat is wenselijk, wat is echt nodig, en wat is praktisch realiseerbaar?

De grootste en meest kritieke module was de filterbank. Deze moet het ingangssignaal met een bemonsteringsfrequentie van 200 megahertz opsplitsen in 512 bandjes met minimaal 80 dB onderdrukking ertussenin. Een windowed FFT bleek hiervoor niet goed genoeg te zijn. Daarom gebruiken we een polyfasefilterbank. Die bestaat uit een Fir-filter (Finite Impulse Response) met in totaal 32.768 taps, gecombineerd met een 1024-punts FFT. Vanwege de vereiste signaalkwaliteit besloot Inspiro om zelf een FFT-core te ontwikkelen. Hiermee kunnen we de woordbreedtes en afronding zelf kiezen. Deze kern gebruikt bovendien minder bronnen, simuleert sneller en heeft een hogere kloksnelheid dan de FFT-cores die FPGA-producenten aanbieden.

Astron ontwikkelde het Remote Station Processing-bord (RSP) om de radiogegevens op de meetstations te comprimeren. Het bord beschikt over vier FPGA’s die elk de gegevens van twee antennes bewerken. Daarnaast is er een FPGA om de aansturing te regelen. Via een Ethernet-verbinding communiceert ieder bord met de lokale besturingseenheid (LCU) van het station. De meetstations beschikken over 24 van deze borden en kunnen daarmee de gegevvens van 192 antennes verwerken.

Platte VHDL

Elk van de 24 Remote Station Processing-borden (RSP) die een meetstation gebruikt om de data te comprimeren, heeft vijf FPGA‘s. Vier hiervan bewerken de antennesignalen en de vijfde zorgt voor de communicatie en besturing. Een Local Control Unit (LCU) stuurt de borden aan via een Ethernet-verbinding. Deze LCU gebruikt standaard hardware en draait onder Linux. Een van zijn belangrijkste taken is het uitrekenen van de coëfficiënten voor de bundelvormer. We hebben eerst overwogen om dit op de FPGA‘s te doen, maar de algoritmes bleken te complex en geheugenintensief voor een softcoreprocessor. Het overlaten van dit soort besturingstaken aan de LCU bespaart zowel ontwikkeltijd als hardwarebronnen.

Voor de bundelvorming bleken er twee mogelijke oplossingen te zijn: een centrale bundelvormer of één die gedistribueerd is over de RSP-borden. Een centrale bundelvormer moet de data van alle antennes tegelijk kunnen verwerken en is daarom relatief kostbaar. In de gedistribueerde oplossing zijn de RSP-borden in een ringvormige keten met elkaar verbonden en wordt de bundelvorming op elk bord gedaan. Deze versie spaart een centrale processor uit maar is minder krachtig.

Lofar gebruikt beide oplossingen. Meetstations die verder weg liggen, beschikken over minder netwerkbandbreedte en produceren daarom minder data. Hiervoor is de gedistribueerde oplossing het meest efficiënt. Er zijn zelfs plannen voor een Lofar-station op de maan. In de kern van Lofar zullen de stations zo veel data produceren dat een centrale bundelvormer efficiënter is. De RSP-borden zijn zodanig ontworpen dat ze in beide architecturen zijn toe te passen.

In het begin lagen de specificaties nog niet vast en werd er veel flexibiliteit gewenst. Daarom zette Inspiro de applicatie zo generiek en platformonafhankelijk mogelijk op. De standaard toolflow, waarbij grafische wizards van FPGA-producenten code genereren, was hiervoor niet geschikt. De toepassing hebben we daarom zo veel mogelijk gecodeerd in platte VHDL. De onvermijdelijke platformspecifieke delen kwamen in een aparte bibliotheek. Als referentie voor de signaalbewerkingsmodules gingen we uit van floating-pointmodellen in Matlab. Deze hebben we tegelijk met de VHDL-codering omgezet naar fixed point.

Een groot deel van de tijd ging op aan verificatie, zowel in Modelsim als op het target. In het begin waren de testen voornamelijk modulegeoriënteerd. Voor het testen op chip-, bord- en systeemniveau gebruikten we de scripttaal TCL, die is ingebouwd in Modelsim. Dankzij enkele SWIG-extensies in C++ konden we de testscripts ook voor het target afspelen. Daarnaast hebben we built-in self-tests ontwikkeld voor het doelsysteem die bij het opstarten en op afroep specifiek hardwareonderdelen testen. Met de Ethereal-pakketsniffer konden we de besturingscommando‘s naar het target opnemen, analyseren en in de simulator afspelen. Dat vereenvoudigde het opsporen van fouten tijdens integratie op het doelsysteem.

Alle verificatie-inspanningen ten spijt zijn fouten in de praktijk nooit helemaal uit te sluiten. Om dat te ondervangen kunnen we de firmware op afstand wijzigen.

Een deel van de datacompressie bestaat uit het selecteren van radiosignalen uit één specifieke richting door een bundelvormer. Er waren twee opties voor de implementatie hiervan. Een gedecentraliseerde bundelvormer schakelt de RSP-borden in een ringstructuur aan elkaar en gebruikt de FPGA‘s voor deze taak. Een centrale bundelvormer kan meer gegevens verwerken maar is kostbaar. Meetstations die verder weg liggen en daardoor een kleinere bandbreedte tot hun beschikking hebben voor het versturen van gegevens, gebruiken de ringvormige bundelvormer om minder data te produceren.

FM-radio-uitzending

Tijdens de ontwikkeling hebben we verschillende FPGA‘s gebruikt. Het eerste target was een standaard ontwikkelbord met een Altera Stratix S25, een 40 MHz AD-converter en een 100 Mbit Ethernet-chip. De functionaliteit bestond uit een kleine versie van de filterbank en een eenvoudige besturing via Ethernet. Door de ervaringen met dit prototype konden we gedetailleerde broninschattingen maken en het besturingsprotocol verfijnen.

Na deze eerste test hebben we een prototype RSP-bord ontwikkeld met een Altera Stratix S90 voor de signaalverwerking en een S60 voor de aansturing. Dit bord was voor het eerst volledig functioneel en maakte het mogelijk om de complete signaalketen uitgebreid te testen. Als demonstratie luisterden we ’live‘ via het systeem naar een FM-radio-uitzending.

Om de vereiste verwerkingssnelheid van 200 MHz te halen, bleek een snellere FPGA nodig te zijn. Een tweede prototype met een Altera Stratix II realiseerde de volledige snelheid. De eerste Lofar-teststations zullen dit bord gebruiken. De massageproduceerde versie gebruikt echter een Xilinx Virtex 4. Doordat het ontwikkelproces vanaf het begin af aan platformonafhankelijk was, is het migreren van de firmware relatief weinig werk. Daardoor konden we het meest kostenefficiënte platform op het laatste moment kiezen.

Op dit moment bestaat de broncode uit 60 duizend regels VHDL-code en kostte het ontwerp, de implementatie en de verificatie ongeveer zes manjaar. Sommige FPGA-engineers zullen de gekozen ontwikkelmethode wellicht als ’conventioneel‘ kwalificeren. In dit geval hebben we heel bewust de aantrekkingskracht van megawizards, systeemgeneratoren, soft-cores en grafische ontwikkeltools weerstaan en ons zo veel mogelijk beperkt tot generieke VHDL. Hierdoor zijn alle details volledig onder controle en kan de broncode probleemloos wisselen van targetplatform en toolomgeving. Dat is een belangrijke eigenschap, omdat de verwachte levensduur van Lofar ten minste tien jaar bedraagt. Momenteel wordt het systeem ook gebruikt in een prestudie van de Square Kilometre Array, de beoogde opvolger van Lofar, en zijn er plannen om delen van de broncode als open-source-project beschikbaar te maken.