Fpga/cpu-hybrides beteugelen met model based design

Als designpartner van zowel Altera en Xilinx heeft 3T zijn modelgebaseerde aanpak toegepast op socs van beide leveranciers. Aan de hand van twee projecten beschrijft het zijn ervaringen.

FPGA en SOC

FPGA’s zijn bij uitstek geschikt voor tijdkritieke en veeleisende systemen. Capaciteit en rekenkracht blijven maar groeien en fpga-leveranciers bieden steeds meer extra functieblokken zoals high-speed-communicatie-
interfaces, dsp’s, analog/mixed signal en een enorme hoeveelheid logica en intern geheugen. En op de roadmaps van de fpga-giganten staan nog veel meer hardcoded functieblokken, waaronder optische communicatiekanalen,
digitale radio, video, radar en data-encryptie.

Vaak is er in een systeem echter ook behoefte aan de flexibiliteit van een processor voor het programmeren van applicaties. Traditioneel wordt hiervoor in een fpga-gebaseerd systeem meestal een softcore geïnstantieerd. Maar ondanks de prestaties van het programmeerbare silicium blijft de performance van deze softcores ver achter bij die van de processoren van mobiele telefoons en tablets.

FPGA-leveranciers Altera en Xilinx spelen hier slim op in met de recente introductie van systeemchips die eenFPGA integreren met een dualcore ARM Cortex-A9-processor, de industriestandaard wat betreft cpu’s. Ze hebben allebei ook al multicore 64 bit Arm-systemen aangekondigd in hun volgende generaties SOC’s.

De toenemende complexiteit en intrede van processoren stellen allebei andere eisen aan de ontwikkeling van het systeem. Traditioneel wordt fpga-functionaliteit meestal in VHDL beschreven. Voor de FPGA-SOCs komt daar nu een stuk softwareontwikkeling bij: er moet een softwaredesigner aan het ontwikkelteam worden toegevoegd voor het schrijven van drivers, applicaties en eventueel de configuratie van een (realtime) besturingssysteem.

Model Based Design

Een manier om dit aan te pakken, is via modelgebaseerd ontwerpen. Een traditioneel ontwerpproces bestaat uit het op papier zetten van de requirements en specificaties, de implementatie in hardware en software en uiteindelijk de verificatie in een testomgeving. Vaak zijn meerdere iteraties nodig omdat de specs niet eenduidig zijn of onvolledig. Ontwerpfouten worden vaak pas in een laat stadium gevonden en wijzigingen in de requirements kosten veel extra werk en zetten de projectplanning en doorlooptijd onder druk.

Bij 3T werken we al een tijd met modelgebaseerd ontwerpen. We hebben een aantal projecten gedaan (zie ook Bits&Chips 4, 2013) en hiervoor een specifieke ontwikkelstraat ingericht gebaseerd op Matlab/Simulink. Met Matlab HDL/C Coder kunnen we VHDL of C/C++-code genereren voor respectievelijk de fpga-logica en de Cortex-processor.

Bij modelgebaseerd ontwerpen ziet het ontwikkelproces er radicaal anders uit. De specs worden meteen vastgelegd in modellen
en geverifieerd in een simulatieomgeving. De impact van specifieke requirements wordt snel duidelijk, wijzigingen in de vereisten zijn eenvoudig door te voeren en ontwerpfouten worden in een vroeg stadium gevonden. De modellen zijn een exacte specificatie van de te bouwen code en kunnen naar keuze worden geïmplementeerd in hardware, software of fpga-logica. Onze ervaring is dat deze eigenschappen de methode uitermate geschikt maken voor de ontwikkeling van multidisciplinaire fpga-soc-gebaseerde systemen.

Flitsende ontwikkeling voor Gatso

In samenwerking met een van onze klanten, Gatso uit Haarlem, hebben we een radartrackingsysteem ontwikkeld op basis van de Xilinx Zynq-soc. Gatso produceert onder meer systemen om snelheidsovertredingen op de wegen te bepalen. De radarmodule meet de positie en snelheid van voertuigen op basis van het range doppler-principe: de reflecties van uitgezonden frequentiesweeps worden synchroon door twee ontvangers gemeten en vertaald naar een tweedimensionaal
spectrum waarin snelheid en positie van objecten naar voren komen. Hierop worden objectherkenningsalgoritmes losgelaten om de verschillende voertuigen in de tijd te kunnen volgen.

Gatso heeft de Matlab-modellen voor het simuleren van de signaalprocessing- en radaralgoritmes in eigen beheer ontwikkeld en met ruwe radardata gevalideerd. Deze modellen omvatten dus de specificaties voor het radartrackingsysteem
en kunnen worden ingezet als gouden referentie waaraan implementatiemodellen continu worden geverifieerd.

Print Gatso met Xilinx Zynq SoC

De input en output van de radarelektronica verlopen via ethernet. Daardoor kan het systeem zonder veel moeite worden getest tegen pc-gebaseerde modellen.

De functionaliteit is grofweg onder te verdelen in dsp-functies en radaralgoritmes. Het dsp-deel bestaat onder meer uit het genereren van de frequentiesweeps, data-acquisitie, filtering en een tweedimensionale fft. De timing tussen het uitsturen van de frequentiesweeps en het bemonsteren van de gereflecteerde radardata komt heel precies. Deze randvoorwaarden vragen om het gebruik van een fpga.

De algoritmes om objecten te detecteren en te tracken, zijn echter typische softwaretaken. Ook hier gelden realtime eisen, maar de toelaatbare jitter bedraagt enkele milliseconden, ongeveer een factor duizend hoger dan voor het dsp-deel. Met een performancetest hebben we in een vroeg stadium aangetoond dat de dualcore Cortex-A9 voldoende rekenkracht heeft om deze veeleisende algoritmes uit te voeren.

We hebben verschillende besturingssystemen onderzocht voor de softwarekant van het systeem. Gatso legde weinig eisen op aan de os-keuze en de softwarearchitectuur, met één grote uitzondering: alle algoritmes moeten met Matlab-C/C++-codegeneratie in het softwareraamwerk worden geïntegreerd. Op deze manier kan Gatso in een later stadium zelf de bestaande algoritmes verfijnen en nieuwe toevoegen.

Goede realtime-eigenschappen waren een vereiste voor het besturingssysteem, en de voorkeur ging uit naar opensource. In een test met realtime Linux met een softwaregebaseerde tcp/ip-stack bleek de ethernetbandbreedte een issue te zijn. Het dataverwerkingssysteem gebruikt een Gigabit Ethernet-link om de radardata in te lezen en de output naar een ssd weg te schrijven. De vereiste bandbreedte hiervoor komt neer op ongeveer 750 Mb/s full-duplex, en dat bleek niet haalbaar. We hebben er daarom voor gekozen udp te gebruiken en de ethernetinterface in de fpga-logica te implementeren.

Na het wegvallen van de eis voor tcp ondersteuning in de software kwam Ecos als beste optie uit de bus rollen voor het besturingssysteem. Een nadeel van dit rtos is wel dat er momenteel alleen singlecore-implementaties van beschikbaar zijn voor de Cortex-A9. We gebruiken het processorsysteem daarom in asymmetrische multiprocessing-configuratie (AMP), waarbij Ecos op de eerste cpu draait en de algoritmes bare metal op de tweede core. Als onderdeel van het softwareraamwerk hebben we een efficiënt communicatiemechanisme ontworpen om informatie uit te wisselen tussen beide cpu’s.

Het radartrackingsysteem wordt aangestuurd en uitgelezen via een Can-businterface. De leverancier van de CANOpen stack heeft deze geport naar de Xilinx Zynq-architectuur en samen met onze softwarearchitect geïntegreerd in Ecos. Het fpga-ontwerp is met de Vivado tooling van Xilinx gemaakt. Vivado is een complete toolset voor design, verificatie en debugging van Xilinx-fpga’s en -socs. De tooling bevat ook een sdk om softwareapplicaties te ontwikkelen.

De fft-berekeningen zijn gebaseerd op standaard Xilinx-ip-blokken; voor data-acquisitie, digitale filtering en ethernet hebben we eigen functionele blokken ontwikkeld die we als ip-cores konden toevoegen aan de ip-catalogus in Vivado, waardoor ze via een blokschema met elkaar gekoppeld kunnen worden. De blokken kunnen met standaard 64 bit Axi-bussen worden verbonden met het processorsysteem en ze hebben adresseerbare registers die in de gedeelde geheugenruimte van de fpga en de cpu zijn gemapt.

Voor het fpga-ontwerp is dus geen codegeneratie gebruikt. Matlab is wel ingezet voor de verificatie van de functionele ip-blokken. Hiervoor zijn vanuit de gouden-referentiemodellen voor elk ip-blok testvectoren gegenereerd. Die kunnen in en simulatieomgeving worden aangeboden, maar via de ethernetlink is het net zo eenvoudig om de daadwerkelijke elektronica te gebruiken.

Gatso flitspaalDe radarsystemen van Gatsometer om snelheidsduivels te betrappen, werken op een Xilinx Zynq-soc. Het fpgagedeelte verzorgt de dsp-functionaliteit, terwijl de cpu het volgen van objecten voor zijn rekening neemt.

Flexibele testoplossing: MINT

Een ander project met een fpga-soc is het Multi Interface Board, een flexibel inzetbaar bord dat we in eigen huis hebben ontwikkeld. Dankzij een Altera Arria V SOC systeemchip kunnen we het aanpassen aan specifieke klantwensen.

Het bord ondersteunt standaard pc-interfaces zoals USB 3 en Gigabit Ethernet, en daarnaast industriestandaarden als Canopen, Ethercat, Modbus TCP en Serial Rapid IO (SRIO). Het kan bijvoorbeeld gebruikt worden om een standaard laptop of pc uit te breiden met een SRIO-interface en klantspecifieke interfaces gebaseerd op RS485 en LVDS. Er is bovendien een fpgamezzanineconnector (FMC) aanwezig voor uitbreidingskaarten.

Ook is het bord inzetbaar als kwalificatietool om een device under test via ethernet of usb te verbinden met een standaard pc. Die wordt eigenlijk alleen gebruikt voor de gebruikersinterface; de testscripts (stimuli) worden vanaf de pc eerst naar de soc gedownload en door de Arm-cores uitgevoerd, terwijl de fpga de sensoren en actuatoren modelleert.

De pc heeft zodoende geen invloed op de timing, waardoor er volledig closed-loop getest kan worden in realtime. Tegelijkertijd kunnen de testscripts nog steeds eenvoudig worden aangepast of uitgebreid. De kwalificatie is volledig geautomatiseerd en is ook uitermate geschikt voor reproduceerbare regressietests.

We gebruiken modelgebaseerd ontwerpen voor een andere toepassing van het bord: als platform voor rapid prototyping en voor hardware-in-the-loop-simulaties bij het testen van algoritmes. Matlab- en Simulink-modellen worden hiervoor gemapt op de fpga- en Arm-cores en realtime gesimuleerd op hardware.

Uit onze projecten blijkt dat er geen grote verschillen zijn tussen de fpga-soc-architecturen van Xilinx en Altera. Als een bedrijf eerder ervaring heeft opgedaan met fpga’s van een van beide leveranciers, ligt het voor de hand om bij dezelfde leverancier te blijven voor een fpga-soc. Het ontwerpen van een soc-gebaseerd systeem is wel heel anders dan een traditioneel fpga-ontwikkelproces. Het is een multidisciplinaire aangelegenheid geworden waarin software- en hardwareontwerpen samenkomen.

De leveranciers van deze chips beseffen dit goed en investeren fors in de ontwikkeling van goede tools. OpenCL, high-level synthesis en modelgebaseerd ontwerpen moeten het designproces naar een hoger abstractieniveau brengen. Wat ons betreft, tonen de projecten die wij hebben gedaan duidelijk aan dat een ontwikkeling op basis van modelgebaseerd ontwerpen het ontwikkeltraject voor een fpga-soc aantoonbaar sneller maakt en dat de uiteindelijke oplossing betrouwbaarder is.

Ronald Grootelaar (ronald.grootelaar@3t.nl) is systeemarchitect bij 3T en gespecialiseerd in embedded processing en modelgebaseerd ontwerpen voor embedded toepassingen.
Richard Mijnheer (richard.mijnheer@3t.nl) is manager commerciële zaken bij 3T en verantwoordelijk voor business development en marketing.

Bron: Bits&Chips, nr.8, oktober 2014