03.05.2013 Views

Nederland proeftuin voor slim verkeer

Nederland proeftuin voor slim verkeer

Nederland proeftuin voor slim verkeer

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

12 | 3<br />

Opinie<br />

Eric Leenman is senior interim-professional<br />

bij Yacht Embedded Systems.<br />

eric.leenman@yacht.nl<br />

FPGA-ontwikkeling<br />

Een IP die IP bouwt<br />

Onlangs moest ik <strong>voor</strong> een klant FPGAcode<br />

ontwikkelen op een onderdeel<br />

waar ik niet zo veel ervaring mee heb.<br />

Ik heb toen onderzocht of het inzetten van<br />

intellectual property (IP) een oplossing kon<br />

bieden. Eerst keek ik of de IP in essentie het<br />

probleem oplost en daarna of die toepasbaar<br />

is in het product – een core die te veel<br />

DSP-blokken van de FPGA gebruikt, heeft<br />

geen zin. De taal waarin de IP is geschreven,<br />

is ook van belang. Zelf ben ik beter thuis<br />

in C dan Java. Verilog is ook geschikt <strong>voor</strong><br />

FPGA’s, maar VHDL heeft mijn <strong>voor</strong>keur.<br />

Als ik wijzigingen wil doorvoeren, is het wel<br />

handig als ik de taal begrijp.<br />

Op IP-gebied is er veel te krijgen, zowel<br />

open- als closed-source. Een groot <strong>voor</strong>deel<br />

van open source is dat er geen kosten aan<br />

zijn verbonden. Verilog- en VHDL-code is<br />

gratis beschikbaar op bij<strong>voor</strong>beeld de site<br />

van Opencores. Status en kwaliteit van de<br />

code worden aangegeven door middel van<br />

lemma’s zoals ‘specication done’, ‘FPGAproven’<br />

of ‘Opencores-certied’. Support<br />

wordt geleverd via de community.<br />

Mooi systeem. Je downloadt de code,<br />

leest de documentatie en komt er dan globaal<br />

achter wat de core doet. De aanpassing<br />

die ik wilde doen, was klein, maar na het<br />

bestuderen van de IP-code bleek dat toch<br />

iets complexer te zijn. Aangezien het project<br />

onder druk stond, was afhankelijk zijn<br />

van communitysupport een te groot risico.<br />

Wachten op een antwoord op het forum<br />

paste niet in de planning.<br />

Daarom onderzocht ik wat de mogelijkheden<br />

waren met closed-source IP van de<br />

FPGA-leverancier. Op het bijbehorende<br />

ontwikkelbord bleek de core goed te werken.<br />

Documentatie en <strong>voor</strong>beeldprojecten<br />

hielpen om snel op gang te komen. Na deze<br />

eerste stappen moest er dieper in de code<br />

van de IP worden gedoken, en dan merk je<br />

dat de pijn en kennis in de details zitten.<br />

Support is dan erg belangrijk. Die van de<br />

FPGA-leverancier liep via een IT-ticketsysteem.<br />

Je kunt je vraag per e-mail stellen en<br />

dan pakt een supportengineer deze op. Telefonisch<br />

contact of on-site ondersteuning is<br />

niet mogelijk. Maar via e-mail je probleem<br />

duidelijk maken, is lastig. Het is een proces<br />

waar je geduld <strong>voor</strong> moet hebben en uitgebreid<br />

en gedetailleerd moet antwoorden met<br />

behulp van plaatjes, referenties naar handleidingen,<br />

code en snapshots. En dan nog<br />

moet je elkaars e-mails juist interpreteren.<br />

Vervolgens geprobeerd om de code om te<br />

zetten naar het bord in ontwikkeling. Bij het<br />

integreren van het stuk IP met bestaande<br />

code liep ik ineens tegen problemen aan zoals<br />

shared PLL’s, beschikbare Ram-blokken<br />

en andere resources. Als de DDR3-controller<br />

een PLL gebruikt die de core ook nodig heeft<br />

om zijn 20 bit video over de LVDS-lanes te<br />

kunnen sturen, en de FPGA-tooling het dus<br />

niet kan routen, heb je alsnog een probleem.<br />

Dan lost de IP je probleem functio neel wel<br />

op, maar krijg je er een ander <strong>voor</strong> terug;<br />

DDR3-geheugens verleggen op je PCB is ook<br />

geen sinecure. De tijdwinst door een core<br />

IP is geen black box<br />

die je probleem als<br />

puzzelstukje even oplost<br />

te gebruiken, heb je dan alweer verspeeld.<br />

Door kleine codewijzigingen door te voeren<br />

en een grotere FPGA in dezelfde familie en<br />

hetzelfde package te kiezen, kon de schade<br />

beperkt blijven.<br />

Mijn ervaring laat zien dat de keuze <strong>voor</strong><br />

open- of closed-source IP sterk afhankelijk<br />

is van de situatie, het project, de planning<br />

en de bedrijfsvisie. In sommige gevallen kan<br />

een IP-blok een goede start zijn om een probleem<br />

in de basis op te lossen. Maar gedegen<br />

product- en vakkennis zijn noodzakelijk<br />

om de gekozen core te kunnen gebruiken en<br />

te integreren in je eigen product. IP is geen<br />

black box die je probleem als puzzelstukje<br />

even oplost. Je moet er tijd in steken om te<br />

kunnen beoordelen of de code goed te integreren<br />

is in het product. Essentieel daarbij<br />

is support op die IP.<br />

Als senior ontwikkelaar heb ik kennis en<br />

ervaring opgebouwd waardoor ik makkelijker<br />

de overweging kan maken welke oplossing<br />

het beste past. Overigens noemt mijn<br />

werkgever mij ook IP. Het staat zelfs op mijn<br />

visitekaartje: interim-professional. Een IP<br />

die IP bouwt.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!