የፕሮጀክት ጥልቅ እይታ: በFPGA ላይ ሊኑክስን ለሬድዮ ግንኙነት ማስኬድ

By Eyobed Awel on 7/28/2024

በዋናው ገፄ ላይ የጠቀስኩት “በFPGA ላይ ሊኑክስ” ፕሮጀክት ከሰራኋቸው ፕሮጀክቶች ሁሉ ፈታኝ እና አርኪ ከሆኑት አንዱ ነው። ይህ ፕሮጀክት ከቀላል ፕሮግራሚንግ አልፎ ወደ ልዩ የሃርድዌር ማፍጠን እና የስርዓተ ክወና ውህደት ዓለም ይወስደናል። እንዴት እንደሚሰራ በዝርዝር እንመልከት።

ግቡ: ከፍተኛ አፈጻጸም ያለው እና ተለዋዋጭ ሲግናል ፕሮሰሲንግ

ዋናው ዓላማ የዲጂታል ሲግናል ፕሮሰሰርን (DSP) ማሻሻል ነበር። ባህላዊ DSPዎች ፈጣን ቢሆኑም፤ አሰራራቸው ግን የማይለወጥ ነው። FPGA በመጠቀም፣ በኮድ (VHDL) አማካኝነት ልዩ እና ትይዩ የፕሮሰሲንግ ሃርድዌር የመፍጠር ችሎታ እናገኛለን። በተመሳሳይ ጊዜ፣ አብሮ የተሰራው የARM ፕሮሰሰር ሙሉ የሊኑክስ OS በማስኬድ ለከፍተኛ ደረጃ ቁጥጥር እና ኔትወርክ ያገለግላል። ይህ የሁለቱንም ዓለማት ምርጡን እንድናገኝ ያስችለናል፤ የልዩ ሃርድዌርን ፍጥነት እና የሶፍትዌርን ተለዋዋጭነት።

ቁልፍ የአርክቴክቸር ክፍሎች

ስርዓቱ በሶስት ዋና ዋና ምሰሶዎች ላይ ተገንብቷል:

  • ሃርድዌሩ (FPGA ሎጂክ): በVHDL የተጻፈው ይህ ክፍል እንደ ማጣራት፣ ሞጁሌሽን እና ዲሞጁሌሽን ያሉትን ከባባድ የሲግናል ፕሮሰሲንግ ስራዎችን ያከናውናል። ይህ ሎጂክ በትይዩ ስለሚሰራ፣ መረጃን ከባህላዊ ሲፒዩ በበለጠ ፍጥነት ያካሂዳል።
  • ፕሮሰሰሩ (የተከተተ ARM ኮር): የተጠቀምነው Zynq series FPGA ሲሆን፣ በዚሁ ቺፕ ላይ ከፕሮግራም ሊደረግ ከሚችለው ሎጂክ ጎን ለጎን እውነተኛ ARM Cortex-A9 ፕሮሰሰርም ይዟል።
  • ስርዓተ ክወናው (ሊኑክስ): በARM ኮር ላይ እንዲሰራ ቀለል ያለ፣ በDebian ላይ የተመሰረተ የሊኑክስ ስርጭት (ከRaspberry Pi OS ጋር ተመሳሳይ) አዘጋጅተናል። ይህም እንደ ድራይቨሮች፣ የፋይል ስርዓት፣ የኔትወርክ ስታኮች እና በC++ ወይም Python የተጻፉ ውስብስብ አፕሊኬሽኖችን የማስኬድ ችሎታ ያለው ምቹ ከባቢን ይሰጣል።

ትልቁ ፈተና: የሃርድዌር እና ሶፍትዌር ግንኙነት

የፕሮጀክቱ በጣም ውስብስብ ክፍል በFPGA ሎጂክ እና በሊኑክስ OS መካከል እንከን የለሽ የግንኙነት ድልድይ መፍጠር ነበር። ይህንን ያከናወነው AXI (Advanced eXtensible Interface) bus በመጠቀም ነው፤ ይህ ፕሮሰሰሩን ከፕሮግራም ሊደረግ ከሚችለው ሎጂክ ጋር የሚያገናኝ ከፍተኛ አፈጻጸም ያለው መደበኛ ባስ ነው።

በVHDL ውስጥ ከAXI ጋር የሚጣጣሙ ልዩ የሃርድዌር ክፍሎችን መንደፍና መተግበር ነበረብን። ከዚያም በሊኑክስ ውስጥ እነዚህን የሃርድዌር ብሎኮች እንደ መሳሪያ እንዲያውቃቸው የሚያደርጉ ልዩ የከርነል ድራይቨሮችን ጻፍን። ይህ በሊኑክስ ውስጥ የሚሰራ የC++ አፕሊኬሽን በቀላሉ ወደ /dev/my_dsp_core አይነት ፋይል በመጻፍ ወይም በማንበብ ትዕዛዞችን እና መረጃዎችን በቀጥታ ወደ ከፍተኛ ፍጥነቱ የVHDL ፕሮሰሲንግ ሰንሰለት እንዲልክ አስችሎታል።

ይህ ፕሮጀክት የሃርድዌር ገለጻን፣ የከርነል-ደረጃ ሶፍትዌርን እና የአፕሊኬሽን ልማትን ዓለማት በማጣመር በስርዓት-ደረጃ ዲዛይን ላይ ትልቅ ልምድ ያስጨበጠ ነበር።