Nederland proeftuin voor slim verkeer
Nederland proeftuin voor slim verkeer
Nederland proeftuin voor slim verkeer
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.