ã¿ãªããããã«ã¡ã¯ïŒ ç§ã¯é·ãéããæ°ã«å
¥ãã®ãããã¯ã«é¢ããèšäºãæžããŠããŸããã§ãããããããŠããçšåºŠãŸãšãã§äŸ¡å€ã®ãããã®ã«æçããŸããã ãã®èšäºã§ã¯ãéçºãšã³ãžãã¢ãã»ãŒæ¯æ¥çŽé¢ããéåžžã«è峿·±ãã¿ã¹ã¯ã«ã€ããŠèª¬æããŸãã
FPGAã§ã®èšèšã«
TCLã¹ã¯ãªããã®ãã«ãã¯ãŒãšã·ã³ãã«ããã©ã®ããã«äœ¿çšã§ããããæ€èšããããšããå§ãããŸãã ãã®èšäºã®èª¬æã¯
ã¶ã€ãªã³ã¯ã¹ FPGAã«åºã¥ããŠããŸãããããã¯ä»ã®ã¡ãŒã«ãŒã®FPGAã®TCLã¹ã¯ãªããã®æ©èœãç¡å¹ã«ãããã®ã§ã¯ãããŸããã

é¢çœãïŒ
è¡ãã...TCLãšã¯äœã§ããïŒ
TCLïŒTool Command LanguageïŒã¯ãããŸããŸãªã¿ã¹ã¯ãå®è¡ããããã®é«ã¬ãã«ã®ã¹ã¯ãªããèšèªã§ãã å€ãã®å ŽåãTCLã¯
Tkã°ã©ãã£ã«ã«ã·ã§ã«
ïŒããŒã«ãããïŒãšçµã¿åãããŠäœ¿çšââãããŸããããã®èšäºã§ã¯ãã®åŽé¢ã¯èæ
®ãããŸããã ãã®èšèªã¯ãããã»ã¹èªååã®ããŸããŸãªã¿ã¹ã¯ã§åºã䜿çšãããŠããŸãã
- è€éãªã¢ãžã¥ãŒã«ãããŒããã³ãŒãããŒãã®ãã¹ãã
- ã¹ããŒããããã¿ã€ãã³ã°
- ã³ã³ãœãŒã«ã¢ããªã±ãŒã·ã§ã³ã®ã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ã®äœæã
- ã¢ããªã±ãŒã·ã§ã³ã¢ããªã±ãŒã·ã§ã³ããã³ã¿ã¹ã¯ã§ã®å®è£
ã
äœããã®æ¹æ³ã§ãTCLã®äž»ãªæ©èœã¯
ã«ãŒãã³ã¿ã¹ã¯ã®
èªå åãšãéçºã«è²»ãããã
æéã®å€§å¹
ãª
åæžã§ãã TCLããã°ã©ã ã¯ã
ã³ã³ãã€ã«ãšã³ã³ãã€ã«ãå¿
èŠãšããŸãããããã«ãããã¹ã¯ãªããããããã°ããã¿ã¹ã¯ãç°¡åãã€ç°¡åã«ãªããŸãã TCLã€ã³ã¿ãŒããªã¿ãŒã¯
ç¡æã©ã€ã»ã³ã¹ã§é
åžãããã»ãŒãã¹ãŠã®ãã©ãããã©ãŒã ã§äœ¿çšã§ããŸãïŒå€ãã®Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ã¯ãããã©ã«ãã§äœ¿çšå¯èœã§ãïŒã ããã¯ããã©ã€ããŒãããã°ã©ã ããããã©ã€ãšã¿ãªã¢ããªã±ãŒã·ã§ã³ã®éçºã«å¶éãªã䜿çšã§ããããšãæå³ããŸãã å·çæç¹ã§ã¯ãTCLã®çŸåšã®ããŒãžã§ã³ã¯8.6ã§ãã
MyTclãTclKitãActiveTclãªã©
ã TCLã¹ã¯ãªããã®æäœããããã°ãèŠèŠåã«å€ãã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãå©çšã§ããŸãã 1 ActiveTclã©ã€ã»ã³ã¹ã®äŸ¡æ Œã¯çŽ1,500ãã«ã§ãåçšã¢ããªã±ãŒã·ã§ã³ã®éçºã«ã¯äžåœã§ãã å人çãªæ
£ç¿ãããã»ãšãã©ã®éçºè
ã¯äœ¿ãæ
£ããã³ãã³ãã©ã€ã³ã䜿çšããŠããŸãã
ãã¹ãŠã®TCLããã°ã©ã ã¯ã
ã;ãã§åºåããã
ã³ãã³ãã§æ§æãããŠã
ãŸã ãŸãã¯æ¹è¡æåã ä»ã®å€ãã®ããã°ã©ãã³ã°èšèªãšåæ§ã«ãæåã®åèªã¯ã³ãã³ãã§ãããæ®ãã®åèªã¯ã³ãã³ãã®åŒæ°ã§ãã
ã³ãã³ãarg1 argt2 ... argNäŸïŒ
set NewValue âHello World!â puts $NewValue
æåã®ã³ãã³ãã¯
NewValue倿°ãäœæãã2çªç®ã®ã³ãã³ãã¯å€æ°ã®å€ãã³ã³ãœãŒã«ã«åºåããŸãã
ã¹ããŒã¹ä»ãã®å€æ°ã䜿çšããã«ã¯ãåŒçšç¬Šã䜿çšããŸãã ãã®ä»ã®å Žåããããã¯å¿
èŠãããŸããã ã³ãã³ãã®å®è¡çµæã¯ã次ã®å³ã«ç€ºãããŠããŸãã
ç§ã®æèŠã§ã¯ãTCLã®äž»ãªå©äŸ¿æ§ã¯ãã³ãã³ãã«å¯ŸããåŒæ°ã
å¥ã®ã³ãã³ãã«çœ®ãæããããšãã§ããããšã§ãã ãããè¡ãã«ã¯ãè§æ¬åŒ§å
ã«é
眮ããå¿
èŠããããŸãã 以äžã®äŸã§ã¯ããã®æ©èœã瀺ããŸãã ãšããããTCLã¯ããŸããŸãªã€ãã³ãã«åºã¥ã
ãŠããã°ã©ã ã®åäœã
å¶åŸ¡ã§ããŸãã ã€ãŸããã³ãã³ããã³ãã©ãŒã¯ãã¹ã¯ãªããã«èšé²ãããæ¡ä»¶ã ãã§ãªããããŸããŸãªå€éšã€ãã³ãïŒå€éšãã¡ã€ã«å
ã®å€æ°ã®å€ã®å€æŽããã£ãã«å
ã®ããŒã¿ã®ãã£ããã£ãã¢ããªã±ãŒã·ã§ã³ã®çµäºãç¹å®ã®å€ã®ã¿ã€ããŒã«ãŠã³ã¿ãŒãžã®å°éãããã³ãªã©ïŒã TCLèšèªã«ã¯äžé£ã®ã³ãã³ããè±å¯ã§ãããŒã¿é
åãæ£èŠè¡šçŸãæäœããéåžžã«äŸ¿å©ãªææ®µãå«ãŸããŠããŸãã TCLã§ã¯ã颿°ãšããã·ãŒãžã£ãäœæããæ©èœãå®è£
ãããŠãããæ¡ä»¶ããšã®ã«ãŒããšåŒã®èª¬æãå©çšã§ãããããã³ãŒãã®äœæãéåžžã«å®¹æã«ãªããŸãã
ãªãTCLãå¿
èŠãªã®ã§ããïŒ
ã»ãšãã©ãã¹ãŠã®FPGA / ASICéçºè
ã¯ãé
ããæ©ãããããžã§ã¯ãã§TCLã«ééããŸãã ææ°ã®FPGAéçºã§ã¯ãTCLã¹ã¯ãªãããèªååããã³ããã»ã¹çµ±åã¿ã¹ã¯ã«ç©æ¥µçã«äœ¿çšãããŠããŸãã TCLã¯ã
ã¢ã«ãã©ã® Quartus ã
ã¶ã€ãªã³ã¯ã¹ã® ISE Design Suite ã
Vivadoã®ãã¹ãŠã®äž»èŠãªCAD FPGAã«å«ãŸããŠããŸãã TCLãå®è¡ã§ããã®ã¯ãªãã§ããïŒ
- ãããžã§ã¯ãã®äœæïŒãœãŒã¹ãã¡ã€ã«ã®è¿œå ããªãã·ã§ã³ã®èšå®ãèšèšéå±€ããããã¬ãã«ãã¡ã€ã«ã®å²ãåœãŠãªã©ïŒã
- åæãšãã¬ãŒã¹ïŒç°ãªãèšå®ã§ç¬ç«ããã¹ããŒãžãäœæãããŸã§ïŒã
- 宿ããããŒããåã
ã®ã¢ãžã¥ãŒã«ããããžã§ã¯ãå
šäœã®ãã¹ãã
- ãã³ãã¬ãŒãã«åºã¥ãå¶éãã¡ã€ã«ïŒUCF / XCIïŒã®èªåçæã
- åæããã³ãã¬ãŒã¹ããããããžã§ã¯ãã®æéå¶çŽã確èªããŸãã
- FPGAåè·¯ãã³ã³ããŒãã³ããããã³ããªããã£ãã®ãã©ã¡ãŒã¿ãŒã®èšå®ãIPã³ã¢ã®ãªãã·ã§ã³ã®èšå®ã
ãªã©
ãããã®ãã¹ãŠã®æ®µéã¯ãVHDL / Verilogèšèªã§ã®ããŒãåäœã®ã¢ãã«ã®äœæãããåæããã³ãã¬ãŒã¹æ®µéã§ã®CADã§ã®å®æãããããžã§ã¯ãã®ãããã°ãŸã§ãFPGAã§ã®éçºããã»ã¹ã®
åºæ¬çãªæäœã§ãã éåžžãè€éãªãããžã§ã¯ãã«ã¯ãããŸããŸãªéçºè
ãäœæãã倿°ã®ã¢ãžã¥ãŒã«ãããã€ãã®IPã³ã¢ãå¶éãã¡ã€ã«ãã©ã€ãã©ãªãããã³æ©èœããã±ãŒãžãå«ãŸããŸãã ãã®çµæã宿ãããããžã§ã¯ãã«ã¯ãç¹å®ã®éå±€æ§é ãšãç¹å®ã®ã¢ãžã¥ãŒã«ãå¿
èŠãªãããžã§ã¯ãããŒãã«æ¥ç¶ããããã®äžé£ã®ã«ãŒã«ããããŸãã éçºè
ã«ãšã£ãŠããããã°ã¢ãžã¥ãŒã«ãã©ãã§ã©ã®ããã«é
眮ãããã¹ãããäœæ¥ã§äœ¿çšããå Žåã«å®è¡ããæ©èœã«é¢ããç¥èãèŠããŠããã®ã¯å°é£ã§ãããéçºæ®µéã§ã¯äœæ¥ã®ç¥èã¯å¿
èŠãããŸããïŒããããã
ãã©ãã¯ããã¯ã¹ ãã¢ãžã¥ãŒã«ïŒã TCLã¹ã¯ãªããã¯ããããžã§ã¯ãæ§é ã管çããäºåã«æºåããããã³ãã¬ãŒãã«åŸã£ãŠå¿
èŠãªããŒãããªã³ã¯ããŸãã ããã«ãããéçºã®æè»æ§ãæäŸããããããããžã§ã¯ãããå¥ã®ãããžã§ã¯ãã«ç§»è¡ãããšãã«ãå®å
šãªããŒãã®åçŸæ§ãå¯èœã«ãªããŸãã
ååãšããŠãFPGAçšã®æ°ããããŒããäœæããæ®µéãšåæã«ããããã®ããŒãããããžã§ã¯ããšã¯å¥ã«ã宿ããã·ã¹ãã ãšäžç·ã«ãããã°ããæ®µéãé²ã¿ãŸãã äžæ¬¡ã·ãã¥ã¬ãŒã·ã§ã³ã¯ãå°çšã®CADã·ã¹ãã ãšã·ãã¥ã¬ãŒã·ã§ã³ç°å¢ã®ã³ã³ãã¥ãŒã¿ãŒäžã®FPGAããæœè±¡åãããŠå®è¡ãããŸãããããã¯ModelsimãISimãAldec Active-HDLãªã©ã§ãã ãããžã§ã¯ãããããã°ããã¿ã¹ã¯ãå®è£
ããããã«ãTCLã¹ã¯ãªããã圹ç«ã¡ãŸããããã«ãããã¢ããªã³ã°äžã«çºçããã€ãã³ããåŠçããã¢ãã«ã®çµæã«åºã¥ããŠæ±ºå®ãäžãããšãã§ããŸãã çŽç²ã«HDLèšèªã§RTLããŒãããããã°ããå Žåãåè·¯ã®åäœã倿Žãããšã¢ãã«ãšãã¹ãã¹ã€ãŒãã倿Žããå¿
èŠããããããã¢ãã«ã®äœæãå°é£ã«ãªãå ŽåããããŸãã HDLèšèªãšTCLã¹ã¯ãªããã§å€æ°ã®ã¢ãã«ã䜿çšããããšã¯éåžžã«äŸ¿å©ã§ãããå€ãã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ããããã°ããã»ã¹ãé«éåããè€éãªãã¹ããçµ±åã§ããŸãã
ã³ãŒãã®èšè¿°ãšãããã°ã®æ®µéã®åŸã«ãFPGAãããã§ãããžã§ã¯ããåæãé
眮ããã¬ãŒã¹ããéåžžã®æé ãç¶ããŸãã ããããããã¯æãå°é£ãªã¹ãããã®1ã€ã§ãããã¯ãŒã¯ã¹ããŒã·ã§ã³ã®å€§ããªã³ã³ãã¥ãŒãã£ã³ã°ãªãœãŒã¹ãšå®äºãŸã§ã«é·ãå®è¡æéãå¿
èŠã§ãã TCLã¹ã¯ãªããã䜿çšãããšãåæ®µéã§å®è¡ã€ãã³ãã管çããç¹å®ã®èšç®çµæãåæããŠããããžã§ã¯ãã®æé©ãªé
ç·ãšãã¬ãŒã¹ç¹æ§ïŒäœ¿çšããããªãœãŒã¹ã®éãæå€§ã¯ããã¯åšæ³¢æ°ãã¿ã€ãã³ã°ã®èš±å®¹ã¬ã€ãã³ã·å€ãªã©ïŒãéæã§ããŸãã ããã«ãTCLã䜿çšãããšãFPGAãã¡ãŒã ãŠã§ã¢ãã¡ã€ã«ãäœæãããšãã«ãèšå®ã®éžæãšå€æŽãæ€èšŒã¹ããŒãžã®åèµ·åãç¹å®ã®ã¹ããŒãžã®åèµ·åã®ããã®ã«ãŒãã³ã¢ã¯ã·ã§ã³ãé€å€ã§ããŸãã ãã®ãããªèšèšã®èªååã«ããããããã®æ®µéã§äººãåžžã«ååšããããšãå®å
šã«ãªããªããŸãã
ãããã®è¡ãèªãã åŸãTCLããããžã§ã¯ãã§çµ¶å¯Ÿã«äœ¿çšããå¿
èŠããã䟿å©ã§åŒ·åãªãã®ã§ããããšãæ¢ã«ç¢ºä¿¡ããŠããããšãé¡ã£ãŠããŸãã 以äžã§ã¯ãVivadoç°å¢ã§ãããžã§ã¯ããäœæããããã«ããŒã ã䜿çšãã䟿å©ãªã¹ã¯ãªããã®1ã€ãåæããæ¢ã«æžã蟌ãŸãããœãŒã¹ãã¡ã€ã«ãããããçš®é¡ã®IPã«ãŒãã«ãXCIå¶éãã¡ã€ã«ãªã©ã远å ããŸãã
FPGAãTCLïŒ
FPGAã§ãããžã§ã¯ããèªåçã«äœæããããã®æãåçŽãªTCLã¹ã¯ãªããã®1ã€ãæ€èšããŠãã ããã æ¬¡ã®å³ã«ç€ºãããã«ãæºåæé ã¯ãããããã§ããããŒã«ã«ãã·ã³ã«ã¯
ããããžã§ã¯ãã®ãœãŒã¹ã³ãŒããå«ããã£ã¬ã¯ããªãå¿
èŠã§ãã
䟿å®äžãFPGAãã¡ããªã§èš±å¯ãããŠããå ŽåïŒ
ã·ãªãŒãº7ïŒArtixãKintexãVirtex ïŒã
ã¶ã€ãªã³ã¯ã¹ISE Design Suiteããã³
Vivadoã§äœæããããããžã§ã¯ãã«ç¬ç«ããã«ã¿ãã°ã䜿çšããŸãã ãœãŒã¹ãã¡ã€ã«ã¯
/ srcãã£ã¬ã¯ããªã«ããã
vivadoãããžã§ã¯ã
ã¯åãååã®ãã£ã¬ã¯ããªã«ãããISEç°å¢ã®ãããžã§ã¯ãã¯
/ iseãã£ã¬ã¯ããªã«äœæãããŸãããåæããã³é
ç·ã®çµæã¯
/ implementãã£ã¬ã¯ããªã«ä¿åãããŸãã ããã¯ãã¹ãŠããããžã§ã¯ãå
šäœã®ç®¡çã®äŸ¿å®ãšãç°ãªãç°å¢ã§ã®ç¬ç«ãã管çã®ããã«è¡ãããŸãã ãŸããéå±€ãããèŠèŠçã«ãªãããœãŒã¹å
ã®å€§éã®ãžã£ã³ã¯ãã¡ã€ã«ããããªããæããŸãã æäžäœãã¡ã€ã«ãšå¿
èŠãªå¶éãã¡ã€ã«ããããœãŒã¹ãã£ã¬ã¯ããªã®
/ topãã£ã¬ã¯ããªã«åå¥ã«æ³šæããå¿
èŠããããŸãïŒISEã®å Žåã¯
* .ucfãã¡ã€ã«ãVivadoã®å Žåã¯
* .xdcãã¡ã€ã«ïŒã
ãããžã§ã¯ãã«ã¯ãISEã§äœæãããå€ã
IPã³ã¢ãšVivadoã§äœæãããæ°ãã
IPã³ã¢ãæ··åšããŠã
ãŸã ã core_k7ãã£ã¬ã¯ããªã«ã¯ãISEçšã®CoreGeneratorã§äœæããããã¹ãŠã®ã«ãŒãã«ãå«ãŸããŠããŸãã ãããã¯ãVivadoãããžã§ã¯ãã§äœ¿çšããå ŽåãåçæãŸãã¯æŽæ°ãããŸããïŒ* .vhdãã¡ã€ã«ã¯ã¢ããªã³ã°ã«äœ¿çšããã* .ngcãã¡ã€ã«ã¯åæã«äœ¿çšããã* .xcoãã¡ã€ã«ã¯Vivadoãããžã§ã¯ãã«è¿œå ãããŸããïŒã / ipcoresãã£ã¬ã¯ããªã«ã¯ãVivadoç°å¢ã§çŽæ¥äœæããã* .xci圢åŒã®æ°ããã«ãŒãã«ãå«ãŸããŠããŸãã åã³ã¢ã«ã¯åå¥ã®ãµããã£ã¬ã¯ããªãå¿
èŠã§ããããã§ãªãå Žåããããžã§ã¯ãã®IPã³ã¢ã«ã¯ã
LOCKED ã屿§ãèšå®ããããããã«ãŒãã«ãæŽæ°ããŠåæçšã«åçæããããšã¯ã§ããŸããã
TCLã¹ã¯ãªããã®èª¬æã«ç§»ããŸãããã
æåã®è¡ã¯ãããŒã«ã«ãã·ã³ïŒ
src / tclãã£ã¬ã¯ããªã«ããïŒã§TCLã¹ã¯ãªããã®å Žæãæ¢ãããã¡ã€ã«ãžã®ãã«ãã¹ãæã€æåå倿°ãäœæããŸãã
2è¡ç®ã¯ããã¹ã®äžéšãåãåããã远å ã®å€æ°ãäœæããŸãã æ¬¡ã®å€æ°ããããžã§ã¯ããžã®ãã¹ãšæäžäœãã¡ã€ã«ã®ååãæåã§æå®ããªãããã«ãäž¡æ¹ã®å€æ°ãå¿
èŠã§ãã
倿°
PartDevã«ã¯ãFPGAãããã®ååãå«ãŸããŠããŸãã ãããŠãããã¯ãããžã§ã¯ãã§å€æŽãããå¯äžã®å€æ°ã§ãïŒ ã¹ã¯ãªããã®ä»ã®ãã¹ãŠã®è¡ã¯ãã©ã®ãããžã§ã¯ãã§ã
倿ŽãããŸããã
æ¬¡ã®æ®µéã§ããœãŒã¹ãã¡ã€ã«ã®å Žæãæ±ºå®ãã远å ã®å€æ°ãäœæãããŸããããã§ãªãå Žåã¯ãvivadoãã£ã¬ã¯ããªãäœæããŸãã ããŒã«ã«ãã·ã³äžã®vivadoãã£ã¬ã¯ããªã®ååšã確èªããŠããããšã«æ³šæããŠãã ããã ãã£ã¬ã¯ããªãååšããå Žåã¯ãæ°ãããããžã§ã¯ãã§ç«¶åãçºçããªãããã«ããã£ã¬ã¯ããªãåé€ãããŠåäœæãããŸãã
cdã³ãã³ãã¯äœæ¥ãã£ã¬ã¯ããªã倿Žããpwdã³ãã³ãã¯äœæ¥ãã£ã¬ã¯ããªã®å Žæã衚瀺ããŸãã
ããã§ã¯ãã¹ãŠãåå§çã§æç¢ºã§ã-/ srcãã£ã¬ã¯ããªå
ã®ãã¹ãŠã®ãœãŒã¹ãã¡ã€ã«ã®ååãå®çŸ©ãã倿°ãäœæãããŸãã ãã¡ã€ã«ãèŠã€ããã«ã¯ãfindFilesããã·ãŒãžã£ã䜿çšããŸããããã¯åŸã§æ»ããŸãã
PCI-EããŒãã®ã³ã³ããŒãã³ããåå¥ã«æ€çŽ¢ããŸããããã¯ããã¹ãŠã®ãããžã§ã¯ãã®åºæ¬çãã€äžå¯æ¬ ãªéšåã§ãã
æ¬¡ã®æ®µéã§ããããžã§ã¯ãå
ã®ãã¹ãŠã®IPã³ã¢ãæ€çŽ¢ãããŸãã ããã«ãã¢ããªã³ã°ã«äœ¿çšããããã¡ã€ã«ã®ååã¯ãSrcSim倿°ã«æžã蟌ãŸããŸãã ã«ãŒãå
ã®lappendã³ãã³ãã¯ãä»ã®å€ã倿°ã«è¿œå ããTCLã§ã¯ã·ãŒããšåŒã°ããé
åã圢æããŸãã ããã§ãã¹ã¯ãªããã®æºåéšåãçµäºãããããžã§ã¯ãã®äœæãéå§ãããŸãã
ãããžã§ã¯ããäœæããæäžäœãã¡ã€ã«ãå®çŸ©ããFPGAãããã®ã¿ã€ãïŒãã®äŸã§ã¯Kintex-7 K325TïŒãèšå®ããèŠã€ãã£ããœãŒã¹ãã¡ã€ã«ã远å ããŸãã
ã·ãã¥ã¬ãŒã·ã§ã³ãã¡ã€ã«ã®ãªãã·ã§ã³ãèšå®ãïŒåæããé€å€ïŒãPCI-EããŒãã§äœ¿çšãããã³ã¢ã®
GLOBAL_INCLUDEãã©ã¡ãŒã¿ãŒãèšå®ããŸãïŒããã¯ãããžã§ã¯ãã«å¿
èŠãªç¹å®ã®æ©èœã§ãïŒã
ãã®æ®µéã§ããããžã§ã¯ãã®IPã³ã¢ãXCI圢åŒã§æ€çŽ¢ãããã«ãŒãã«ããŒãžã§ã³ã®æŽæ°ã®å¿
èŠæ§ãšããã¯ããããã©ã¡ãŒã¿ãŒããã§ãã¯ãããŸããããã¯FPGAãããã®å€æŽã®åœ±é¿ãåããŸãã ã«ãŒãã«ã®åæåŸãæŽæ°ãè¡ãããæ£åžžã«å®äºããæäœã«é¢ããã¬ããŒããçºè¡ãããŸãã
åæããã³ãã¬ãŒã¹èšå®ãã»ããã¢ãããããæçµæ®µéã§ã¯ãå©çšå¯èœãªãªã¹ãããæŠç¥ãéžæããŸãã æ¬¡ã«ãFPGAãã¡ãŒã ãŠã§ã¢ãå®å
šã«é
ç·ããããŸã§ãåæãé
眮ããã¬ãŒã¹ã1ã€ãã€éå§ãããŸãã
ã芧ã®ãšãããã¹ã¯ãªããã䜿çšãããšããããžã§ã¯ãã®äœæãæ°ãããã¡ã€ã«ã®è¿œå ãIPã³ã¢ã®æŽæ°ãªã©ãåãçš®é¡ã®å€ãã®é¢åãªäœæ¥ãããŠãŒã¶ãŒãæãããšãã§ããŸãã ã¹ã¯ãªããã¯å®å
šã«èªååãããŠãããåäžã®åŒæ°-FPGAãããã®ã¿ã€ããã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã ãã¡ã€ã«å
ã®å€æ°ããŸãã¯TCLã¹ã¯ãªããã®èµ·åãšåæã«å®è¡ãããåŒæ°ãšããŠèšå®ã§ããŸãã æ¬¡ã®å³ã¯ãã¹ã¯ãªããã䜿çšããŠèµ·åãããVivadoç°å¢ã®ãããžã§ã¯ãã¯ãŒã¯ã¹ããŒã¹ã®ã¹ã¯ãªãŒã³ã·ã§ããã瀺ããŠããŸãã
ãããšã¯å¥ã«ããã£ã¬ã¯ããªå
ã®ãã¹ãŠã®ãã¡ã€ã«ãæ€çŽ¢ã§ãã
findFilesããã·ãŒãžã£ã«æ³šæããå¿
èŠããããŸãã 颿°ã®åŒæ°ïŒ
basedir-æ€çŽ¢ãã£ã¬ã¯ããªã
pattern-æ€çŽ¢ãã¹ã¯ã
proc findFiles { basedir pattern } { set basedir [string trimright [file join [file normalize $basedir] { }]] set fileList {} foreach fileName [glob -nocomplain -type {fr} -path $basedir $pattern] { lappend fileList $fileName } foreach dirName [glob -nocomplain -type {dr} -path $basedir *] { set subDirList [findFiles $dirName $pattern] if { [llength $subDirList] > 0 } { foreach subDirFile $subDirList { lappend fileList $subDirFile } } } return $fileList }
æ€çŽ¢ã¯ããã€ãã®ã¹ãããã§å®è¡ãããŸãïŒäœæ¥ãã£ã¬ã¯ããªããã¡ã€ã«ãã³ãã¬ãŒããšããŠæ±ºå®ãããã«ãã¹ã§ãã¡ã€ã«åã§ãªã¹ããäœæããèŠã€ãã£ããã¡ã€ã«ãè€æ°ããå Žåã¯ãªã¹ãã¿ã€ããªã¹ãã®é
åã圢æããŸãã findFiles颿°ã®äŸã次ã®å³ã«ç€ºããŸãã æç¢ºã«ããããã«ãèŠã€ãã£ããã¹ãŠã®ãã¡ã€ã«ã衚瀺ãããµã€ã¯ã«ãèšè¿°ãããŠããŸãã ã芧ã®ãšãããåãã¡ã€ã«ãžã®ãã«ãã¹ã瀺ãããŠããŸãã
ã¹ã¯ãªããã¯ãã³ãã³ãã©ã€ã³ããããŸãã¯Vivadoã¢ããªã±ãŒã·ã§ã³GUIã䜿çšããŠå®è¡ãããŸãã æåã®ã±ãŒã¹ã§ã¯ãVivado TCLã·ã§ã«ãå®è¡ããç°¡åãªã³ãã³ããèšè¿°ããå¿
èŠããããŸã
vivado âmode tcl âsource %full_path/example.tcl
泚ïŒèµ·åã¢ãŒãã
guiã«å€æŽããŠãã³ãã³ãã©ã€ã³ããã°ã©ãã£ã«ã«ç°å¢ãéå§ããããšãã§ããŸãã
Vivadoç°å¢ã§ã¯ãã¹ã¯ãªããã¯åçŽãªæ¹æ³ã§å®è¡ãã
ãŸã ã
ã¡ãã¥ãŒ->ããŒã«-> TCLã¹ã¯ãªããã®å®è¡...ããã§ãTCLèšèªã®ç޹ä»ã¯å®äºã§ãã ãããžã§ã¯ãèªååã®å¯èœæ§ã¯ããã§çµããã§ã¯ãããŸããã ãã®ç°¡åãªäŸã§ã¯ãTCLã¹ã¯ãªããã䜿çšããŠãFPGAãã¶ã€ã³ãèªååããæ¹æ³ã瀺ããããšæããŸããã TCLã¯éåžžã«äŸ¿å©ã§ãçè§£ããããããããŠæãéèŠãªããšãšããŠããªãŒãã³ã«äœ¿çšã§ããŸãã å人çãªèŠç©ããã«ãããšãéçºè
ã®ç掻ã«ãããã¹ã¯ãªããã®å®è£
ã«ããããããžã§ã¯ããåææ®µéããæçµæ®µéãŸã§å®å
šã«äœæããã®ã«ãããæéãæ°åççž®ã§ãããã¯ãªãŒã³ãªãéçºïŒã³ãŒãã®äœæïŒã«æéããããããšãã§ããŸãã 以äžã¯ãFPGAã§TCLã¹ã¯ãªããã調ã¹ãã®ã«åœ¹ç«ã€ãªã³ã¯ã§ãã
åç
§ïŒ
ãæž
èŽããããšãããããŸããïŒ