FPGA alapú PCIe gyorsító kártya megvalósítása

OData támogatás
Konzulens:
Szántó Péter
Méréstechnika és Információs Rendszerek Tanszék

A dolgozatomban összefoglalom egy FPGA alapú PCIe-es gyorsítókártya megvalósításának lépéseit és nehézségeit. A PCIe manapság a legelterjedtebben használt busz asztali számítógépekben, szerverekben és az erősebb beágyazott processzorokban.

A PCIe busz egy csomagokat használó az eszközök között nagy sebességű soros differenciális pont-pont kapcsokra épülő busz. Az órajel és az adat úgy van kódolva a vezetékeken megjelenő jelbe, hogy a küldő pontos órajele visszaállítható legyen.

Megismerkedtem a Xilinx által kiadott három PCIe IP-vel, majd az AXI Memory Mapped To PCI Express IP használatával valósítottam meg a kapcsolatot a PCIe busz és az FPGA-n belüli AXI busz között. Az FPGA-n beül van egy DDR vezérlő, a gyorsító egység működéséhez szükséges adatok ebben a RAM-ban is tárolhatóak, így a gyorsító egység nagyobb sebességgel érheti el azokat.

A rendszer működésének bemutatásához HLS-el készítettem egy 2D konvolúción alapuló Gauss-elmosást végző gyorsító egységet. A HLS segítségével egy C/C++ nyelven megvalósított algoritmusból lehet hardvert szintetizálni.

Fejlesztettem egy Linux kernel drivert, amivel az eszközt a (Unix-szerű rendszerekben szokásos) open/read/write/fcntl fájl-műveletekkel tudja elérni a felhasználói program.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.