泚é
ãã®èšäºã§ã¯ãVivadoã®åäœã¢ãŒãã«ã€ããŠèª¬æããŸããããã«ãããæ¥ç¶ãªã¹ãã®ç·šéã¬ãã«ïŒä»¥é-ããããªã¹ãïŒã§ãããžã§ã¯ããå€æŽã§ããŸãã ECOã¢ãŒãèªäœãããã³äœæ¥äžã«è¡šç€ºãããããã€ãã®ãã¥ã¢ã³ã¹ã«ã€ããŠèª¬æããŸãã ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ã®äŸã瀺ãããŠãããçµæãååŸããããã®ã¢ã¯ã·ã§ã³ã®å®å šãªã·ãŒã±ã³ã¹ã説æãããŠããã誰ã§ãæäœæ§ã確èªã§ããŸãã ãã®èšäºã¯ãFPGAéçºè ãç¹ã«Logic Analyzerã§ãããžã§ã¯ããé »ç¹ã«ãããã°ããéçºè ã®ãäžè¬çãªéçºãã«åœ¹ç«ã¡ãŸãã ãã®ã¢ãŒãã§ã¯ãããããªã¹ããå€æŽãããšãã«å®è£ ã«è²»ããæéãæåéãã«æžããããšãã§ããããããã®ã¢ãŒãã§ã®äœæ¥ã¯ãã³ã³ãã€ã«æéãæ°æéïŒãŸãã¯æ°åæéïŒã«éããå¯èœæ§ã®ãã倧ããªã¯ãªã¹ã¿ã«ã§äœæ¥ããéçºè ã«èå³ãããããšãé¡ã£ãŠããŸãæ°åã
ç®æ¬¡
- 泚é
- ã¯ããã«
- 1. ECOïŒæŠèŠ
- 2.èšèšãã§ãã¯ãã€ã³ã
- 3.ãã¹ããããžã§ã¯ãã®éçº
- 3.1ã ãããžã§ã¯ãäœæ
- 3.2ã HDLãã¡ã€ã«ãäœæããŠãããžã§ã¯ãã«è¿œå ãã
- 3.3 MicroBlazeãããžã§ã¯ãã®äœæãšIPã€ã³ãã°ã¬ãŒã¿ãŒã§ã®äœæ¥
- 3.4ãåæãšå®è£
- 3.5ãMicroBlazeçšã®ããã°ã©ã ã®äœæ
- 3.6ããã°ã©ã ã®èµ·åãšãããã°
- 4. ECOã¢ãŒãã«åãæ¿ããŸã
- 5. ECOïŒã€ã³ã¿ãŒãã§ãŒã¹ã®èª¬æ
- 6.ãããžã§ã¯ãã®å€æŽ
- 6.1ã ããããªã¹ãã«æ°ããèŠçŽ ãäœæãã
- 6.2ã ã³ã³ããŒãã³ãã®ããããã£/ãã©ã¡ãŒã¿ãŒãå€æŽãã
- 6.3ã ä»ã®åè·¯ããããŒããšILAã«æ¥ç¶ãã
- 6.4ã I / OããŒãã®äº€æ
- 7.æ¯èŒåæ
- 8.çµè«
- 9.宿é¡
- æžèªãªã¹ã
ãã®èšäºã«ã¯ããã¿ãã¬ã§ã¯ãªãåçããããããããŸãïŒ140æïŒã é»è©±ããæ¥ãå Žåã¯æ³šæããŠãã ããã
ã¯ããã«
å€ãã®å Žåãè¬çŸ©ãããããã»ãããŒãå®æœãããããå¿ èŠããããšããç§ã¯åžžã«ããã°ã©ã ã瀺åãããããå°ãå€ã話ãããšããŸãã ãã®ãããã·ã³ã°ã«ã³ã¢Zynq-7000Sã®äœ¿çšã«é¢ããæåŸã®3ã€ã®ã»ãããŒã§ããã ä»åã¯ãVivadoãæäœãããé ããããã¢ãŒãã®ããã€ãã«ã€ããŠãèŽè¡ãã©ãã ãç¥ã£ãŠããããèŠãã®ã¯èå³æ·±ããã®ã§ããã 質åã¯éåžžã«ç°¡åã§ããããåºåžè ã¯ECOãããŒã¢ãŒãã«ã€ããŠç¥ã£ãŠããŸããïŒã質åã®çŽåŸã«ãæã®æ£®ããšåŒã°ãããã®ãç¶ããŸããããç§ã¯ç¹ã«é©ããŸããã§ããã
å°ãªããšãVivadoã§ã®ãã®ã¢ãŒãã®ååšã«ã€ããŠéçºè ã«ããããåçºããããšããé¡æã¯ãããã§ã®åäœã®ãã¢ã¯èšããŸã§ããªããéåžžã«æã«ç§ã«çŸããŸããã ããããäœããã®äžæè°ãªçç±ã§ãMicroBlazeã䜿çšããŠãããžã§ã¯ããæ§ç¯ãããããæäœããããã®ã¬ã€ããäœæããããã«ãå©çšãããŸããã ãã ããæè¿ã®ã»ãããŒã®åŸãECO Flowã«ã€ããŠã®èšè¿°ãäŸç¶ãšããŠå¿ èŠã§ããããšãæããã«ãªããŸããã
ãã®èšäºã®ç®çã¯ãã¶ã€ãªã³ã¯ã¹ãæ°Žæ¶ã«æäŸããVivadoç°å¢[1]ã®ECOã¢ãŒãã®äžè¬çãªèãæ¹ã瀺ããå®éã®äŸã§ãã®åäœã瀺ããã埮åŠãªããã€ã³ãã瀺ãããã®é·æãšçæãåæããããšã§ãã
ãã®èšäºã§èšå®ãããã¿ã¹ã¯ ïŒ
- å¯èœã§ããã°ãECOã¢ãŒãã§åäœããå¯èœæ§ã®ãã¹ãŠïŒãŸãã¯å°ãªããšãã»ãšãã©ïŒãå«ã¿ãå®èšŒãããã¹ãäŸãéçºããŸãã
- ãããžã§ã¯ããå®è£ ããŸãã
- ãã¶ã€ã³ãã§ãã¯ãã€ã³ãã®æŠå¿µã説æããŸãã
- ECOåäœã¢ãŒããžã®ç§»è¡ã説æããŠãã ããã
- ããããªã¹ããå€æŽããFPGAãã¡ãŒã ãŠã§ã¢ãã¡ã€ã«ãååŸããŸãã
- è¡ãããå€æŽãæ£ããããšã確èªããŠãã ããã
- ãããžã§ã¯ãã®æšæºçãªå€æŽã«ããã£ãæéã®èŠçŽè¡šãäœæãããããECOã¢ãŒãã§è²»ãããæéãšå¢åå®è£ ãšæ¯èŒããŸãã
æ®å¿µãªãããããªããéãããããïŒVirtex UltraScaleãªã©ïŒã§æ¹æ³è«ãç©ççã«æ€èšŒããæ©äŒã¯ãããŸããã ããããArtyããŒã[2]ã«ã€ã³ã¹ããŒã«ãããæ§ãããªArtix-7ã§ã®ãã¹ãã§ã®äŸã§ãããéåžžã«åèã«ãªããšæããŸãã å·çã®éçšã§ã¯ãECOã¢ãŒã[3]ã[4]ã[5]ã説æããããã€ãã®åºæ¬çãªææžã«äŸåããŸãã Vivadoã®äœ¿çšããŒãžã§ã³ïŒããã³ããã¥ã¡ã³ãïŒã¯2017.4ã§ãã
å°ããªäœè«ïŒã¯ãããããžã§ã¯ãã®äœæãMicroBlazeã§ã®ããã»ããµã·ã¹ãã ã®æ§ç¯ãIPã€ã³ãã°ã¬ãŒã¿ãŒã§ã®äœæ¥ããããã°ãªã©ã®æ¹æ³ã«é¢ããããã¥ã¢ã«ã«ã¯å€ãã®åçãšãäºçŽ°ãªããšãããããŸãã çµéšããããECOã«ã€ããŠèªã¿ããå Žåã¯ã第4ç« ãECOã¢ãŒããžã®åãæ¿ããã«çŽæ¥é²ãã§ãã ããã MicroBlazeã§ãããžã§ã¯ããæ§ç¯ããæ¹æ³ãããããªãå ŽåãIPã€ã³ãã°ã¬ãŒã¿ãŒã§åããããšããªãããŸãã¯ã¹ããããã€ã¹ãããã®å³ã®ã¹ã¿ã€ã«ã®ã¬ã€ãã®ããã«ãæ瀺ãããè³æã«ããã«75åãã90åããããŠããã ããã°ããããã§ãã ããã§ããã ãããããŒããŠã§ã¢ã§æ€èšŒããŠããã¥ã¢ã«ãå®å šã«å®æãããŠãããããšãé¡ã£ãŠããŸãã
1. ECOïŒæŠèŠ
ECO-ãšã³ãžãã¢ãªã³ã°å€æŽåœä»€[6]-ããã¯ãå ã®ããããªã¹ããžã®åœ±é¿ãæå°éã«æããŠãåæãŸãã¯å®è£ ããããããžã§ã¯ãã§ããããããªã¹ãã«å€æŽãå ããããšãã§ããã¢ãŒãã§ãã Vivadoã«ã¯ECOã¢ãŒããããããããžã§ã¯ãã®ãããããã¶ã€ã³ãã§ãã¯ãã€ã³ãã®å€æŽïŒä»¥äžãåç §ïŒãå€æŽã®å®è£ ãå€æŽãããããããªã¹ãã«å¿ èŠãªã¬ããŒãã®çæãFPGAãã¡ãŒã ãŠã§ã¢ãã¡ã€ã«ã®çæãå¯èœã§ãã
ãã®ã¢ãŒãã®æãå žåçãªã¢ããªã±ãŒã·ã§ã³ïŒ
- ãããžã§ã¯ãã®ãããã°äžã®ãããŒãããã³ããžãã¯ã¢ãã©ã€ã¶ãŒã®æ¥ç¶ã©ã€ã³ïŒILA-IntegratedLogicAnalyzerïŒã®å€æŽã ãŠãŒã¶ãŒã¯ããããžã§ã¯ãã®å®å šãªåå®è£ ãåé¿ããªãããILAã«æ¥ç¶ãããã©ã€ã³ã®ã»ãããå€æŽã§ããŸãã
- FPGAã¬ãã°ã«æ¥ç¶ãããåè·¯ã®åå²ãåœãŠã ãããžã§ã¯ãéçºè ãåè·¯èšèšè ããŸãã¯PCBéçºè ãã¬ãã°ã®å²ãåœãŠãééããå ŽåïŒããšãã°ãrxãštxãæ··åãããå ŽåïŒãFPGAã®ãããžã§ã¯ããæ¢ã«å®è£ ãããŠããå Žåããã®æ¹æ³ã§ããããªã¹ãã®ããŒããåå²ãåœãŠããŠãå®å šãªå®è£ ïŒtããªãã¡ããããžã§ã¯ãã®åæããããã³ã°ãæé©åãé 眮ããã¬ãŒã¹-ãã·ã³æéãšãªãœãŒã¹ã®ãã¹ãŠã®é¢é£ã³ã¹ãïŒã
- ãWhat_ifïŒãåæã®å®è¡ïŒã¡ã¢ãªã®å 容ã®ç·šéãLUTã®æ©èœã®å€æŽãã¿ã€ãã³ã°ã®æ¹åãªã©ïŒ
ECOã¢ãŒãã§äœæ¥ããäž»ãªã¿ã¹ã¯ã¯ããããžã§ã¯ãã®ã»ããã¢ãããŸãã¯ãããã°ã®æ®µéã§å€æŽãè¡ããšãã«ãæéãç¯çŽãããããžã§ã¯ãã®åå®è£ ãåé¿ããããšã§ãã å€ãã¯ECOã§ã䜿çšãããã€ã³ã¯ãªã¡ã³ã¿ã«å®è£ ã¢ãŒãã«ç²ŸéããŠããŸãããECOã§ã¯ãã€ã³ã¯ãªã¡ã³ã¿ã«å®è£ ãšæ¯èŒããŠããã¡ãŒã ãŠã§ã¢ãã¡ã€ã«ãååŸããã®ãéããçŸåšã®ãããã°å埩ãå®è¡ããã®ãéãã§ãã
泚ïŒECOæäœã¯ããã¶ã€ã³ãã§ãã¯ãã€ã³ãã§ã®ã¿å¯èœã§ãã
2.èšèšãã§ãã¯ãã€ã³ã
èšèšã«ãŒãã¯ãåæãšå®è£ ãå«ãããã€ãã®ã³ã³ããŒãã³ãã«åãããŠããŸãã å®è£ ã¯ãããŸããŸãªæé©åãé 眮ããã¬ãŒã¹ã®ãµãã¹ããŒãžã«åãããŠããŸãã èšèšã«ãŒãã®äžé段éã¯ãèšèšãã§ãã¯ãã€ã³ãïŒDCPïŒ[7]ãšåŒã°ãããã³ã³ãããã«ä¿åãããŸãã ããã¯ãæ¡åŒµåãã.dcpãã®ãã¡ã€ã«ã§ãã ãã¶ã€ã³ãã§ãã¯ãã€ã³ãã®å 容
- dcpãã¡ã€ã«ãæžã蟌ãåã«å®è¡ããããã¹ãŠã®æé©åãå«ããçŸåšã®ããããªã¹ãïŒãã¶ã€ã³ã«ãŒãã®æ®µéã«äŸåïŒã
- ãããžã§ã¯ãã«èª²ããããå¶çŽïŒèšèšäžã®å¶çŽïŒã
ããã©ã«ãã§ã¯ãVivadoã¯4ã€ã®dcpãã¡ã€ã«ãäœæããŸãã1ã€-ãããžã§ã¯ãã®æäžäœã¢ãžã¥ãŒã«ã®åæ段éã§ïŒã³ã³ããã¹ãå€ã¢ãŒãã§åæãå®è¡ããå Žåãã³ã³ããã¹ãå€ã§åæããããã¹ãŠã®ã¢ãžã¥ãŒã«ã«å¯ŸããŠãç¬èªã®dcpãã¡ã€ã«ãäœæãããŸãïŒ 3-å®è£ 段éã§ã ãããã®ãã¡ã€ã«ã¯ããã©ã«ããŒã«ãããŸãã
ããããžã§ã¯ãå.runs /åæå/ top_module_name.dcpã
ãProject_name.runs / implementation_name /ãã
å³ å³1ã¯ãäžéšã®æœè±¡ãããžã§ã¯ãçšã«ããã©ã«ãã§äœæãããå Žæãš.dcpãã¡ã€ã«ã®äŸã瀺ããŠããŸãã

å³1-ããã©ã«ãã§äœæãããdcpãã¡ã€ã«ïŒ1-ãpostsynthesis-ãããã³3-ãpost-implementation-ãïŒæé©ååŸïŒ_optïŒãé
眮åŸïŒ_placedïŒããã¬ãŒã¹åŸïŒ_routedïŒïŒ
Vivadoã®ãããžã§ã¯ãäœæ¥ã¢ãŒãïŒãããžã§ã¯ãã¢ãŒã[8]ïŒã§ã¯ã.dcpãã¡ã€ã«ãèªåçã«äœæãããŸãã ãã ããéãããžã§ã¯ãã¢ãŒãïŒNon-ProjectMode [8]ïŒã§äœæ¥ããå ŽåããŠãŒã¶ãŒèªèº«ããããžã§ã¯ãã®çŸåšã®ç¶æ ã®ãã¹ãããã·ã§ããããèšé²ãããŠããããšã確èªããå¿ èŠããããŸãã ãããè¡ãã«ã¯ãé©åãªTclã³ãã³ã[9ã10]ã䜿çšããŸãã
write_checkpoint <file_name>.dcp read_checkpoint <file_name>.dcp
ãªããã©ã®ããã«ãã©ã®dcpãã¡ã€ã«ãéãã¹ããã«ã€ããŠã¯ãåŸã§èª¬æããŸãã
3.ãã¹ããããžã§ã¯ãã®éçº
ãã¹ããããžã§ã¯ãã§ECOæ©èœãå®èšŒããã«ã¯ã次ã®ãã®ãå«ãŸããŠããå¿ èŠããããŸãã
- å ã®ããããªã¹ãã«ãªãèŠçŽ ããŸãã¯æ©èœãå€æŽã§ããèŠçŽ ã ããšãã°ããã¿ã³ã®LEDããªã³ã«ããŸããå ã®ãããžã§ã¯ãã§ã¯æŒããšç¹ç¯ããå€æŽãããããžã§ã¯ãã§ã¯æŒããšæ¶ç¯ããŸãã ã€ãŸããå ã®ãããžã§ã¯ãã«ã¯ãªãã€ã³ããŒã¿ãããããªã¹ãã«è¿œå ããå¿ èŠããããŸãã
- ã³ã³ãã³ããå€æŽã§ããèŠçŽ ã ããšãã°ãLUTã®ççå€è¡šããããã¯ã¡ã¢ãªã®å 容ã ããã«ãããã§ãããã¯ã¡ã¢ãªã®å 容ãå€æŽããããšããå§ãããŸããè¿œå ã®ã€ã³ããŒã¿ãäœæãããšãã«ãæé 1ã§LUTã®å€æŽãæ¢ã«å®è¡ããŠããããã§ãã
- ILA-æ¥ç¶ãããåè·¯ãä»ã®åè·¯ã«çœ®ãæããå¯èœæ§ã ã€ãŸããILAèªäœã«è§Šããããšãªããããããªã¹ããä»ããŠãããã«æ¥ç¶ãããŠããå ã®ãããžã§ã¯ãã§éžæãããåè·¯ãä»ã®åè·¯ã«çœ®ãæããŸãã
- æ··ä¹±ããçµè«ã ããªã³ãåºæ¿ã®èšèšæã«ãéçºè ãFPGAéçºè ãšèª¿æŽããã«ãé ç·ã®å©äŸ¿æ§ã®ããã«2ã€ã®ãã³ã®ãã³ã¹ã¯ãããå®è¡ãããšããŸãã rxãštx UARTãæ··åãããšã©ãŒãèµ·ãããŸããã ECOã¢ãŒãã§ã¯ãæ¥ç¶ã埩å ããå¿ èŠããããŸãã
3.1ã ãããžã§ã¯ãäœæ
Vivadoã¢ã€ã³ã³ãèŠã€ããŠ2åã¯ãªãã¯ãããšããããããŠã£ã³ããŠãéããŸãïŒå³2ïŒ

å³2-Vivadoã®ãããããŠã£ã³ããŠ
æ°ãããããžã§ã¯ããäœæããã«ã¯ã[ãããžã§ã¯ãã®äœæ]ãã¿ã³ãã¯ãªãã¯ããŸãã ãã¿ã³ãæŒããšãæ°ãããããžã§ã¯ããäœæããããã®ãŠã£ã¶ãŒãã衚瀺ãããŸãã 衚瀺ããããã[次ãž]ãã¿ã³ãã¯ãªãã¯ããŸãïŒå³3ïŒã

å³3-æ°ãããããžã§ã¯ããŠã£ã¶ãŒããäœæããããã®ãŠã£ã³ããŠ
ãããžã§ã¯ãã®ååãå
¥åããããããžã§ã¯ãåããã£ãŒã«ãã«ãeco_flowããšå
¥åããŸãã ãããžã§ã¯ãã®å Žæãæå®ããŸãã[ãããžã§ã¯ãã®å Žæ]ãã£ãŒã«ãã§ããããžã§ã¯ãã®ãã£ã¬ã¯ããªãæå®ããŸãã ãFïŒ/ Projects / FPGA-Systems / eco_flow / projects / vivadoãã«ããŸãã [ãããžã§ã¯ããµããã£ã¬ã¯ããªã®äœæ]ãã§ãã¯ããã¯ã¹ããªã³ã«ãããšããããžã§ã¯ãåãæã€è¿œå ã®ãã©ã«ããŒãäœæãããŸãã [次ãž]ãã¯ãªãã¯ããŸãïŒå³4ïŒã
å³4-ãããžã§ã¯ãã®ååãšå Žæã®å
¥å
éåžžã®ãããžã§ã¯ããäœæãããããRTLãããžã§ã¯ãã¿ã€ããéžæããã ãã§ãã çŸåšã®æ®µéã§ã¯ããããžã§ã¯ãã«ãã¡ã€ã«ãè¿œå ããŸããããã®ãããããã®æç¹ã§ã¯ãœãŒã¹ãæå®ããªããããã§ãã¯ããŠãã次ãžããã¯ãªãã¯ããŸãïŒå³5ïŒã
å³5-äœæãããããžã§ã¯ãã®ã¿ã€ãã®éžæ
ArtyããŒã[2]ã§äœæ¥ããããããã®äžã«ã€ã³ã¹ããŒã«ãããŠããæ°Žæ¶xc7a35tcsg324-1ãéžæããŸãã [次ãž]ãã¯ãªãã¯ããŸãïŒå³6ïŒã
泚ïŒäœ¿çšå¯èœãªããŒãã®ãã³ãã¬ãŒãããæ¢è£œã®ããŒããç¹ã«éžæããŸããã ããã¯ããŠãŒã¶ãŒãæåã§ãã¹ãããããšãã§ããããã«ããããã«è¡ãããŸãã
å³6-æ°Žæ¶xc7a35tcsg324-1ã®éžæ
æ°ãããããžã§ã¯ãã»ããã¢ãããŠã£ã¶ãŒãã®æåŸã¯ãäœæããããããžã§ã¯ãã®[æŠèŠ]ãŠã£ã³ããŠã§ãã [å®äº]ãã¯ãªãã¯ããŸãïŒå³7ïŒã
å³7-äœæããããããžã§ã¯ãã®ç°¡åãªæ
å ±ã®ãŠã£ã³ããŠ
3.2ã HDLãã¡ã€ã«ãäœæããŠãããžã§ã¯ãã«è¿œå ãã
ããã§ã¯ã2ã€ã®ã¢ãžã¥ãŒã«ãäœæããŸããç¹æ»
ããLEDãšãåžžã«èªã¿åããããããã¯ã¡ã¢ãªã®ã¿ã§ãïŒå®éãããã¯ãåŸã§å€æŽããããšãããã£ã«ã¿ä¿æ°ã¡ã¢ãªã®æš¡å£ã§ãïŒã
æ°ãããã¡ã€ã«ãäœæããŠãããžã§ã¯ãã«è¿œå ããã«ã¯ããŠã£ã¶ãŒãã䜿çšããŸãããŠã£ã¶ãŒãã¯ãéããã©ã¹èšå·ãã¯ãªãã¯ããŠåŒã³åºãããŸãïŒå³8ïŒã

å³8-ãããžã§ã¯ããžã®ãã¡ã€ã«ã®è¿œå ãäœæããããã®ãŠã£ã¶ãŒãã®åŒã³åºã
衚瀺ããããŠã£ã³ããŠã§ã[ãã¶ã€ã³ãœãŒã¹ã®è¿œå ãŸãã¯äœæ]ãéžæãã[次ãž]ãã¯ãªãã¯ããŸãïŒå³9ïŒã

å³9-äœæãŸãã¯è¿œå ãããã¡ã€ã«ã®çš®é¡ã®éžæ
[ãã¡ã€ã«ã®äœæ]ãéžæãã衚瀺ããããŠã£ã³ããŠã®[ãã¡ã€ã«å]ãã£ãŒã«ãã«ãäœæããflash_ledãã¡ã€ã«ã®ååãå ¥åããŠã[OK]ãã¯ãªãã¯ããŸãïŒå³10ïŒã
å³10-æ°ãããã¡ã€ã«ã®äœæãšãã®ååã®å
¥å
ãã®åŸãè¿œå ããããã¡ã€ã«ã®ãªã¹ãã«ãã¡ã€ã«ã衚瀺ãããŸãã [å®äº]ãã¯ãªãã¯ããŸãïŒå³11ïŒ
å³11-è¿œå ãŸãã¯äœæããããã¡ã€ã«ã®ãªã¹ã
ããã§ããã¡ã€ã«ã®ãã³ãã¬ãŒããäœæããããã®ãŠã£ã¶ãŒãã衚瀺ãããŸããã VHDLã䜿çšããŠãããããã¢ãŒããã¯ãã£åãrtlã«å€æŽã§ããŸãã ã¢ãžã¥ãŒã«ã®2ã€ã®ãã³ãäœæããŸãããinãæ¹åã®iclkïŒã¢ãžã¥ãŒã«ã®ã¯ããã¯ä¿¡å·ïŒãšãoutãæ¹åã®ollkïŒLEDã«æ¥ç¶ãããåºåïŒã [OK]ãã¯ãªãã¯ããŸãïŒå³12ïŒã

å³12-ã¢ãžã¥ãŒã«ãã³ãã¬ãŒããäœæããããã®ãŠã£ã¶ãŒãïŒVHDLã®å ŽåïŒ
ããã§ãã¢ãžã¥ãŒã«ããããžã§ã¯ãããªãŒã«è¿œå ãããŸããïŒå³13ïŒã
å³13-äœæãããflash_ledã¢ãžã¥ãŒã«
ã¢ãžã¥ãŒã«ã¯åçŽãªæ©èœãå®è¡ããå¿
èŠããããŸãã1ç§ã®åšæã§LEDãç¹æ»
ãããã ãã§ãã ä»åŸã®å±æãšããŠããããžã§ã¯ãã®ã¯ããã¯åšæ³¢æ°ã¯100 MHzã§ãããã¢ãžã¥ãŒã«èªäœã¯å®¿é¡ãããéã«åŒãç¶ã圹ç«ã€ãšèšããŸãã
ãã¡ã€ã«ã®å
容ã次ã®ãã®ã«çœ®ãæããŸãïŒãªã¹ã1ïŒãªã¹ã1ã®ããã¹ãããŒãžã§ã³ã«ã€ããŠã¯ãä»é²Aãåç
§ïŒã ã³ãŒãã¯éåžžã«åçŽã§ããããã®äœæ¥ã説æããããã«è¿œå ã®ã³ã¡ã³ããå¿
èŠãšããŸããã

ãªã¹ã1-Flash_ledã¢ãžã¥ãŒã«ã³ãŒã
brom_readerãšåŒã°ããæ°ããã¢ãžã¥ãŒã«ãäœæããŸããiclkããŒãã¯ãinãæ¹åãodout [7ïŒ0]ã¯ãoutãæ¹åã§ãïŒå³8ããå³12ã®æé ãç¹°ãè¿ããŸãïŒã
ãã¹ãŠãæ£ããè¡ããããšããããžã§ã¯ãããªãŒã«brom_readerã¢ãžã¥ãŒã«ã衚瀺ãããŸãïŒå³14ïŒã

å³14-ãããžã§ã¯ãããªãŒã®brom_readerã¢ãžã¥ãŒã«
ã¢ãžã¥ãŒã«ã®å 容ã次ã®ããã¹ãã«çœ®ãæããŸãïŒãªã¹ã2ïŒãªã¹ã2ã®ããã¹ãããŒãžã§ã³ã«ã€ããŠã¯ãä»é²Bãåç §ïŒã ããã§ããã€ãã®ã³ã¡ã³ããå¿ èŠã«ãªããŸãïŒ
- 13è¡ç®ïŒstd_logic_vectorã¿ã€ãã®ãšã€ãªã¢ã¹ãäœæãããŸãã VHDLã§äœæ¥ãã人ã¯ãå€ãã®å Žåãstd_logic_vectorïŒïŒãããŒã¿åã䜿çšããŸãã ãããã®é·ãååãæ¯åæžããªãããã«ããããã«ããšã€ãªã¢ã¹ã宣èšããŠãã¢ãžã¥ãŒã«ã³ãŒãå šäœã§äœ¿çšã§ããŸãã
- è¡14ã20ïŒèªç¶æ°ã®2次å é åã®æšæºå®£èšãšé åã®åæåïŒæ°å€ãå«ãã¡ã¢ãªãäœæãããŸãïŒã
- è¡22ïŒãšã€ãªã¢ã¹slvã䜿çšããŠã·ã°ãã«ã宣èšãã
- 23ã24è¡ç®ïŒåæå±æ§ã®äœ¿çš[11]ã ãªãããã«ç»é²ãããŠããã®ã§ããïŒ ããªãå°ããª2次å é åïŒè¡15ã20ïŒãäœæããŸãã-ãããããåæäžã«æé©åãããLUTã®åæ£ã¡ã¢ãªãšããŠå®è£ ãããŸãã ãŸããé åããããã¯ã¡ã¢ãªïŒBRAM-Block RAMïŒã«é 眮ãããããã·ã³ã»ãµã€ã¶ãŒã«ãããæ瀺çã«äŒããå¿ èŠããããŸããããã¯ãåæå±æ§ã䜿çšããŠè¡ãããŸãã [11]ã®Vivadoåæã¬ã€ãã§è©³çŽ°ã確èªããŠãã ããã
ããã§ãªããã°ããã¹ãŠãæ確ã«ãªããŸãããã®å 容ãé£ç¶çãé£ç¶çãåšæçã«èªã¿åãããROMã¡ã¢ãªãäœæããŸããã

ãªã¹ã2-brom_readerã¢ãžã¥ãŒã«ã³ãŒã
3.3ã MicroBlazeãããžã§ã¯ãã®äœæãšIPã€ã³ãã°ã¬ãŒã¿ãŒã§ã®äœæ¥
次ã«ãMicroBlazeã䜿çšããŠãããžã§ã¯ããäœæããŸãã ããã§ããåå¿è
åãã®MicroBlazeãœãããŠã§ã¢ããã»ããµã§ã®ãããžã§ã¯ãã®äœæã«é¢ããã¹ããããã€ã¹ãããã¬ã€ãããã·ã¢èªã§æäŸãããŠããããšã«æ³šæããŠãã ãã[16]ã
ãããã¯ãããžã§ã¯ããäœæããã«ã¯ããããã¯ãã¶ã€ã³ãäœæããå¿
èŠããããŸãã [ãããã¯ãã¶ã€ã³ã®äœæ]ãéžæããããŒã ã·ã¹ãã ãå
¥åããŠ[OK]ãã¯ãªãã¯ããŸãïŒå³15ïŒã

å³15-æ°ãããããã¯ãã¶ã€ã³ã®äœæãšãã®ååã®å²ãåœãŠ
Vivado IPãã£ã¬ã¯ããªã®ã«ãŒãã«ããŸãã¯VHDL / Verilog / SystemVerilogã§èšè¿°ãããRTLã¢ãžã¥ãŒã«ã[ãã€ã¢ã°ã©ã ]ãã£ãŒã«ãã«è¿œå ãããŸãã MicroBlazeã¢ãžã¥ãŒã«ã¯IPãã£ã¬ã¯ããªã«ãããŸããããããè¡ãã«ã¯ãéãXãã¯ãªãã¯ããæ€çŽ¢ãã£ãŒã«ãã«ãMicroBlazeããšå ¥åããŠéžæããŸãïŒå³16ïŒã

å³16-å³ã¯ãŒã¯ã¹ããŒã¹ãžã®MicroBlaze IPã³ã¢ã®è¿œå
MicroBlazeãäœæ¥ãã£ãŒã«ãã«è¿œå ããåŸããœããããã»ããµã®ãšã¯ã¹ãã¬ã¹èšå®ã䜿çšããŸãã [ãããã¯ãªãŒãã¡ãŒã·ã§ã³ã®å®è¡]ãéžæããå³ã«åŸã£ãŠèšå®ãèšå®ããŸãã 17. [OK]ãã¯ãªãã¯ããŸãã
ãã®åŸãã¯ããã¯ãžã§ãã¬ãŒã¿ãŒãšããŒã«ã«ããã»ããµã¡ã¢ãª[11ã12]ãå«ããããã€ãã®æ°ããIPã³ã¢ããã€ã¢ã°ã©ã äœæ¥ãã£ãŒã«ãã«è¡šç€ºãããŸãã [åçæ]ãã¿ã³ãæŒããŠãäœæ¥ãã£ãŒã«ããæé©åããŸãïŒå³18ïŒã

å³18-MicroBlazeã®åºæ¬çãªçµã¿èŸŒã¿
ArtyããŒãã«åŸã£ãŠããã€ãã®ã¢ãžã¥ãŒã«ãæ§æããŸãããã clk_wiz_1ã¯ããã¯ã°ãªããçæã¢ãžã¥ãŒã«ãã»ããã¢ããããŸãã ã¢ãžã¥ãŒã«ã®èšå®ãåŒã³åºãã«ã¯ãããŠã¹ã®å·Šãã¿ã³ã§ããã«ã¯ãªãã¯ããŸãã èšå®ãŠã£ã³ããŠã§ã100 MHzã®ãžã§ãã¬ãŒã¿ãŒãããŒãã«ã€ã³ã¹ããŒã«ãããŠãããããå ¥åã¯ããã¯åšæ³¢æ°ã®å€ã100 MHzã«èšå®ããŸã[12]ã ãŸãããœãŒã¹ã¿ã€ãããŠãããŒã©ãšããŠèšå®ããŸãïŒå³19ïŒã [åºåã¯ããã¯]ã¿ãã«ç§»åããŠãã¢ãžã¥ãŒã«ã®åºååšæ³¢æ°ãèšå®ããŸãã

å³19-å ¥ååšæ³¢æ°ãã©ã¡ãŒã¿ãŒã®èšå®
[åºåã¯ããã¯]ã¿ãã§ã¯ãããã»ããµã·ã¹ãã ãšä»ã®ã¢ãžã¥ãŒã«ã®ã¡ã€ã³åšæ³¢æ°ã§ãã1ã€ã®åšæ³¢æ°ã®ã¿ãæå®ããŸãã 100 MHzã«èšå®ããŸãïŒå³20ïŒã
å³20-åºååšæ³¢æ°ãã©ã¡ãŒã¿ãŒã®èšå®
äžã«ã¹ã¯ããŒã«ããŠãè¿œå ã®ãµãŒãã¹ããŒã³ãèšå®ããŸãã 䜿çšããªããªã»ããä¿¡å·ãåé€ããŸãã ãã§ãã¯ãå€ããŸãïŒå³21ïŒã æ®ãã®èšå®ã¯å¿ èŠãããŸããã[OK]ãã¯ãªãã¯ããŸãã

å³21-ãµãŒãã¹ä¿¡å·ã®èšå®
次ã«ãå€éšã¢ãžã¥ãŒã«clk_wiz_1ã®å ¥åclk_in1ã宣èšããŸããå®éã«ã¯ããããããããã¯ãã¶ã€ã³ã®å ¥åãäœæããŸãã ãããè¡ãã«ã¯ãããŠã¹ã®å³ãã¿ã³ã§clk_in1ãã¯ãªãã¯ãã[å€éšäœæ]ãéžæããŸãïŒå³22ïŒã
å³22-clk_in1ããŒããå€éšã«ãã
ã芧ã®ãšãããclk_in1_0ããŒãã衚瀺ãããŸããïŒå³23ïŒã
å³23-å
¥åããŒãclk_in1_0
ããã»ããµã·ã¹ãã ã®ãªã»ããå¶åŸ¡ã¢ãžã¥ãŒã«ã§ã¯ã2ã€ã®æªäœ¿çšã®å ¥åïŒå€éšãªã»ãããšè¿œå ãªã»ããïŒãéã¢ã¯ãã£ãããžãã¯ã¬ãã«ã1ãã«æ¥ç¶ããŸãã ããã¯ãconstantãšåŒã°ããIPãããã¯ã䜿çšããŠè¡ããŸãã ãããè¡ãã«ã¯ãäžéšã®éãååãã¯ãªãã¯ããæ€çŽ¢ããŒã«ãconstããšå ¥åããŠãå®æ°ã¢ãžã¥ãŒã«ãéžæããŸãã

å³24-䜿çšå¯èœãªIPã®ãªã¹ãã§IPãããã¯å®æ°ãæ€çŽ¢
å·ŠããŠã¹ãã¿ã³ã§ããã«ã¯ãªãã¯ããŠãã¢ãžã¥ãŒã«xlconstant_0ãæ§æããŸãããã è¡å€ïŒConst valïŒã«1ãå ¥åããè¡å¹ ïŒConst WidthïŒã«1ãå ¥åããŠ[OK]ãã¯ãªãã¯ããŸãïŒå³25ïŒ

å³25-xlconstant_0ã¢ãžã¥ãŒã«ã®æ§æ
ã¢ãžã¥ãŒã«xlconstant_0ã®åºådoutããã¢ãžã¥ãŒã«rst_clk_wiz_1_100Mã®å ¥åext_reset_inããã³aux_reset_inã«æ¥ç¶ããŸãã ãããã®ããŒããããŠã¹ã§æ¥ç¶ããã ãã§ãïŒå³26ïŒã

å³26-æªäœ¿çšã®ããŒããå®æ°ã«æ¥ç¶ãã
UARTã¢ãžã¥ãŒã«ãè¿œå ããå©çšå¯èœãªIPã³ã¢ã®ã«ã¿ãã°ã§èŠã€ããŸãïŒå³27ïŒã

å³27-å©çšå¯èœãªIPãããã¯ã®ãªã¹ãã§UARTã¢ãžã¥ãŒã«ãæ€çŽ¢
å³ã«åŸã£ãŠéä¿¡èšå®ãèšå®ããŠãaxi_uartlite_0ã¢ãžã¥ãŒã«ãæ§æããŸãããã 28. [OK]ãã¯ãªãã¯ããŸãã

å³28-axi_uartlite_0ã¢ãžã¥ãŒã«ã®èšå®
次ã«ãaxi_uartlite_0ã¢ãžã¥ãŒã«ãããã»ããµã«æ¥ç¶ããŸãã ããã«ã¯èªååãããæ¹æ³ã䜿çšããŸãã [æ¥ç¶ãªãŒãã¡ãŒã·ã§ã³ã®å®è¡]ã®äžéšãã¯ãªãã¯ããæ¥ç¶å ïŒAXI MicroBlazeãžã®AXI UARTå ¥åïŒãéžæããŸãã 29ã

å³29-axi_uartlite_0ãããã»ããµã«æ¥ç¶
UARTã€ã³ã¿ãŒãã§ã€ã¹ã¯æšæºã§ãããVivado IPã€ã³ãã°ã¬ãŒã¿ãŒã§ã¯å¥ã®ã¿ã€ãã®ã€ã³ã¿ãŒãã§ã€ã¹ã«åé¢ãããŠããŸãã å³ã®ãã©ã°ã©ã2 29 axi_uartlite_0ã¢ãžã¥ãŒã«ã®rxãštxãå€éšã«ããããšèšããŸããã ã€ã³ã¿ãŒãã§ã€ã¹ãéããšã衚瀺ãããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ã«éè²ã®ã¯ã€ã€ã1ã€ãããªãããšãæ¥ããããããªãã§ãã ãããåŸã§ãããžã§ã¯ãã®HDLã©ãããŒãäœæãããšã2ã€ã®ããŒãïŒrxãštxïŒãããããšãããããŸãã
[ã¬ã€ã¢ãŠããåçæ]ãã¿ã³ãã¯ãªãã¯ããŸãã ãã®åŸããããã¯ãã¶ã€ã³ã¯ãŒã¯ã¹ããŒã¹ãæé©åãããå³ã«ç€ºãããã«ãåè·¯ã¯idãåãå
¥ããŸãã 30.æ£ããæ¥ç¶ãããŠããããšã確èªããŸãã ãã®æ®µéã§ãã¹ãŠãæ£åžžãªå Žåã¯ç¶è¡ãããšã©ãŒãããå Žåã¯ããã»ããµã·ã¹ãã ãåæ§ç¯ããŸãã

å³30-ããã»ããµã·ã¹ãã ã®çµã¿ç«ãŠã®äžé段éã
AXIãã¹ã«å¥ã®ã¢ãžã¥ãŒã«ãè¿œå ããŸãããã ãããGPIOã¢ãžã¥ãŒã«ã«ãªãããã®åºåãLEDã«æ¥ç¶ããŸãã å©çšå¯èœãªIPãããã¯ã®ãªã¹ãã§AXI GPIOã¢ãžã¥ãŒã«ãèŠã€ããŠãäœæ¥ãã£ãŒã«ãã«è¿œå ããŸãïŒå³31ïŒã

å³31-å©çšå¯èœãªIPã®ãªã¹ãã«ããAXI GPIOã¢ãžã¥ãŒã«
å³ã«åŸã£ãŠã¢ãžã¥ãŒã«ãæ§æããŸãã 32ïŒ1ã€ã®ãã£ãã«ãš1ã€ã®åºåã®ã¿ã䜿çšããŸãïŒã

å³32-ã¢ãžã¥ãŒã«èšå®axi_gpio_0
axi_gpio_0ã¢ãžã¥ãŒã«ãããã»ããµã«æ¥ç¶ããåºåãå€éšã«ããŸãã [æ¥ç¶èªååã®å®è¡]ãã¯ãªãã¯ãããã¹ãŠã®ããã¯ã¹ããªã³ã«ããŸãïŒå³33ïŒã

å³33-axi_gpio_0ãããã»ããµã«æ¥ç¶
[ã¬ã€ã¢ãŠãã®åçæ]ãã¿ã³ãã¯ãªãã¯ãããã¹ãŠã®æ¥ç¶ã衚瀺ãããŠããããšã確èªããŸãã 34ã

å³34-ããã»ããµã·ã¹ãã ã®ã¢ã»ã³ããªã
次ã«ããããã°ã¢ãžã¥ãŒã«ILAãè¿œå ããŸãã UARTã¢ãžã¥ãŒã«ã®AXI Liteãã¹ã§ãã©ã³ã¶ã¯ã·ã§ã³ã衚瀺ãããšããŸãã å©çšå¯èœãªIPã¢ãžã¥ãŒã«ã®ãªã¹ãã«ILAïŒIntegrated Logic AnalyzerïŒããããŸãã 35ã

å³35-å©çšå¯èœãªãªã¹ãã®ILA IPãããã¯
ããã§ã¯ããããã°ã¢ãžã¥ãŒã«ãHDLã³ãŒãã«çŽæ¥è¿œå ããéã«ãããããHDLæ¿å
¥ãããŒãšã®é¡äŒŒæ§ã䜿çšããŸãã åæåŸã«ããããªã¹ãã§ãããã°çšã®åè·¯ãæ€çŽ¢ããããšãã§ããŸãã ãã®ã¢ãããŒãã¯ãããããªã¹ãæ¿å
¥ãããŒãšåŒã°ããŸãã
AXIãã©ã³ã¶ã¯ã·ã§ã³ããããã°ãããããILAãããŒãã¿ã€ããAXIïŒILAãããã¯ã®ã¢ãã¿ãŒã¿ã€ããã©ã¡ãŒã¿ãŒïŒãšããŠèšå®ããå¿
èŠããããŸãã ãã®ã¢ãŒãã¯ããã©ã«ãã§èšå®ãããŠãããããila_0ãããã¯ã®å
¥åSLOT_0_AXIãã衚瀺ããããã©ã³ã¶ã¯ã·ã§ã³ã§ããAXIãã¹ã«æ¥ç¶ããã ãã§ãã ãã®å Žåãããã¯ã€ã³ã¿ãŒã³ãã¯ãããaxi_uart_0ã¢ãžã¥ãŒã«ã«åãããã¹ã§ãïŒå³36ïŒã ãŸããã¢ãžã¥ãŒã«ã®ã¯ããã¯ä¿¡å·ãã·ã¹ãã ã®clkã«æ¥ç¶ãã[ã¬ã€ã¢ãŠããåçæ]ãã¿ã³ãã¯ãªãã¯ããŸãã

å³36-ila_0ãAXIãã¹axi_uart_0ã«æ¥ç¶
ããã©ã«ãã§ã¯ãèšé²ãããããŒã¿ã®é·ãã¯1024ã«èšå®ãããŠããŸããããã¯ããã©ã³ã¶ã¯ã·ã§ã³ã衚瀺ããã®ã«ååã§ãã
RTLã¢ãžã¥ãŒã«ããããã¯ãã¶ã€ã³ã«è¿œå ããflash_ledã¢ãžã¥ãŒã«ãéžæããŠå³ã¯ãªãã¯ãã[ã¢ãžã¥ãŒã«ããããã¯ãã¶ã€ã³ã«è¿œå ]ãéžæããŸãïŒããã¯ããŒãžã§ã³2017.1以éã®Vivadoã§ã®ã¿æ©èœããŸãïŒã

å³37-å³ãã£ãŒã«ããžã®flash_ledã¢ãžã¥ãŒã«ã®è¿œå
flash_led_0ã¢ãžã¥ãŒã«ã®iclkå ¥åãã·ã¹ãã ã®ã¯ããã¯ã«æ¥ç¶ããoledããŒããå€éšã«ããŸãïŒããŒããå³ã¯ãªãã¯ããŠãããMake ExernalãéžæããŸãïŒã [ã¬ã€ã¢ãŠããåçæ]ãã¿ã³ãã¯ãªãã¯ããŸãã
ãã¹ãŠãæ£ããè¡ããããšãå³ã®ããã«ãªããŸãã 38ã

å³38-IPã€ã³ãã°ã¬ãŒã¿ãŒã§ãããžã§ã¯ããæ§ç¯ããäžé段é
åãæé ãç¹°ãè¿ããŠãbrom_readerã¢ãžã¥ãŒã«ãè¿œå ããŸãã iclkã¯ããã¯å ¥åãã¯ããã¯åè·¯ã«æ¥ç¶ããŸãããodout [7ïŒ0]åºåãå€éšã§å®£èšããŸããã [ã¬ã€ã¢ãŠãã®åçæ]ãã¯ãªãã¯ããŸãã ãã¹ãŠãæ£ããè¡ããããšãå³ã®ããã«ãªããŸãã 39ã

å³39-IPã€ã³ãã°ã¬ãŒã¿ãŒã§ãããžã§ã¯ããæ§ç¯ããäžé段é
次ã«ãå¥ã®ILAãè¿œå ãããããbrom_reader_0ã¢ãžã¥ãŒã«ã®åºåodout [7ïŒ0]ã«æ¥ç¶ããŸãã
å©çšå¯èœãªãããã¯ã®ãªã¹ãã§ILA IPãããã¯ãèŠã€ãïŒå³35ïŒãããã[ãã€ã¢ã°ã©ã ]ãã£ãŒã«ãã«è¿œå ããŸãã ããŠã¹ã§ããã«ã¯ãªãã¯ããŠèšå®ããŠã¿ãŸãããã Monitor TypeãNativeã«èšå®ããŸãïŒAXIãã¹ããããã°ããã®ã§ã¯ãªããåçŽãªåè·¯ããããã°ããŸãïŒã æ®ãã¯ããã©ã«ãã®ãŸãŸã«ããŸãã ã¿ãProbe_PortsïŒ0..7ïŒå³ã«ç§»åããŸãã 40ã

å³40-ILAã®æ§æ
ãããŒãå¹ ãèšå®ããŸãã å¹ ã®å€ã8ã«èšå®ããŸãïŒå³41ïŒãããã¯8ããã-brom_reader_0ã¢ãžã¥ãŒã«ã®åºåãã¹odout [7ïŒ0]ã®å¹ ã§ãã OKãã¯ãªãã¯ããŸãã

å³41-ILAãããŒãå¹ ã®èšå®
brom_reader_0ã¢ãžã¥ãŒã«ã®åºåodout [7ïŒ0]ãila_1ã¢ãžã¥ãŒã«ã®probe_0 [7ïŒ0]å ¥åã«æ¥ç¶ããila_1ã¢ãžã¥ãŒã«ã®clkå ¥åããããžã§ã¯ãã®ã¯ããã¯åè·¯ã«æ¥ç¶ããŸãã [ã¬ã€ã¢ãŠããåçæ]ãã¿ã³ãã¯ãªãã¯ããŸãããã¹ãŠãæ£ãããã°ãå³ã®ããã«ãªããŸãã 42ã

å³42-IP Integaratorã§ãããžã§ã¯ããæ§ç¯ããäžé段é
ãã¿ã³ãè¿œå ããã ãã§ãLEDãçŽæ¥ç¹ç¯ããŸãã
ãããã¯å³ã®ç©ºã®å Žæãå³ã¯ãªãã¯ãã[ããŒãã®äœæ]ãéžæããŠãå
¥åããŒããäœæããŸãïŒå³43ïŒã
å³43-IPã€ã³ãã°ã¬ãŒã¿ãŒã§ã®ããŒãã®äœæ
ããŒãèšå®ãŠã£ã¶ãŒãã衚瀺ãããããååã«ibtnãå ¥åããæ¹åã®å ¥åãšãå¿ èŠã«å¿ããŠããã深床ãæå®ããŸãã [OK]ãã¯ãªãã¯ããŸãïŒå³44ïŒã

å³44-æ°ããããŒãèšå®ãŠã£ã¶ãŒãïŒibtnãã¿ã³ïŒ
ãã®åŸãããŒãã[ãã€ã¢ã°ã©ã ]ãã£ãŒã«ãã«è¡šç€ºãããŸãïŒå³45ïŒã
å³45-äœæãããibtnããŒã
åºåæ¹åãæå®ããŠãobtn_ledãšããå¥ã®ããŒããäœæããŸãïŒå³43-44ã®æé ãç¹°ãè¿ããŸãïŒã
ibtnããŒããobtn_ledã«æ¥ç¶ããã ãã§ã[ã¬ã€ã¢ãŠãã®åçæ]ãã¯ãªãã¯ããŸãã å³ã®ããã«ãªããŸãã 47ã

å³46-IPã€ã³ãã°ã¬ãŒã¿ãŒã§çµã¿ç«ãŠããããããžã§ã¯ã
[ãã¶ã€ã³ã®æ€èšŒ]ãã¿ã³ãã¯ãªãã¯ããŠãçŸåšã®ãããã¯ãã¶ã€ã³ã«ãšã©ãŒããªãããšã確èªããŸãã ãã¹ãŠãæ£ããããVivadoã§ã¡ãã»ãŒãžã衚瀺ãããå Žåã [OK]ãã¯ãªãã¯ããŠãçŸåšã®ãããã¯ãã¶ã€ã³ãä¿åããŸãïŒå³48ïŒã

å³47-IPã€ã³ãã°ã¬ãŒã¿ãŒã§ã¢ã»ã³ãã«ããããããžã§ã¯ãã®æ€èšŒ
3.4ã åæãšå®è£
[Sources]ã¿ãã«ç§»åããã·ã¹ãã ãå³ã¯ãªãã¯ããŠ[Create HDL Wrapper]ïŒãããã¯ãã¶ã€ã³ã®HDLã©ãããŒãäœæïŒãéžæããŸãã 48ã
å³48-ãããžã§ã¯ãã©ãããŒã®äœæ
ãã®åŸãVivadoã¯ãããã¯ãã¶ã€ã³ãå€æŽãããšãã«HDLã©ãããŒãæåã§æŽæ°ããããèªåçã«æŽæ°ããããææ¡ããŸãã èªåæŽæ°ãçµäºãã[OK]ãã¯ãªãã¯ããŸãïŒå³49ïŒã
å³49-HDLã©ãããŒã®æŽæ°ãªãã·ã§ã³
ããã§ãsystem_wrapperã¢ãžã¥ãŒã«ãTopã¢ãžã¥ãŒã«ã§ããããšã瀺ããŸãã system_wrapperãå³ã¯ãªãã¯ããŠã[äžéšã«èšå®]ãéžæããŸãïŒå³50ïŒã
å³50-system_wrapperã¢ãžã¥ãŒã«ããããã¢ãžã¥ãŒã«ã«ãã
次ã«ãRun Synthesisãã¿ã³ãã¯ãªãã¯ããŠãsystem_wrapperã¢ãžã¥ãŒã«ã®åæãå®è¡ããŸãïŒå³51ïŒã
泚ïŒãããã°ãããã¯ãæ¥ç¶ããããã«ãå®éã«HDLæ¿å ¥ãããŒ[4]ã䜿çšããŸãããã€ãŸããå®éã«ILAãããã¯ãã³ãŒãã«æ¿å ¥ãããã§ãŒã³ãæ¥ç¶ããŸããã HDLãŸãã¯ããããªã¹ããä»ããŠããããã°ãã§ãŒã³ãäœæããŠæ¥ç¶ããæ¹æ³ã«éãã¯ãããŸããã æçµçã«ãECOã¯åæãŸãã¯å®è£ ãããããããªã¹ããšé£æºãããã¶ã€ã³ãã§ãã¯ãã€ã³ãã«ä¿åãããŸãã
å³51-ãããžã§ã¯ãã®åæã®éå§
[Run Synthesis]ãã¿ã³ãã¯ãªãã¯ããåŸã[OK]ãã¯ãªãã¯ããŠãåæãå®äºãããŸã§åŸ
ã¡ãŸãã
åæãå®äºãããšããŠã£ã³ããŠã衚瀺ãããå®è£ ãéå§ããããåæçµæãéãããã¬ããŒãã衚瀺ããããã«æ±ããããŸãã åæçµæãéããŸãïŒå³52ïŒã
次ã«ããããžã§ã¯ãã®èãæ¥ç¶ããŸãã ããã¯ããã³ãã¬ãŒããŒã䜿çšããŠè¡ãããŸãã éãã«ã¯ã[ãŠã£ã³ããŠ]â[I / OããŒã]ãã¯ãªãã¯ããŸãïŒå³54ïŒã
å³53-ãã³ãå²ãåœãŠãããã®ãŠã£ã³ããŠãéã
Artyã®ãªãã¡ã¬ã³ã¹ããã¥ã¢ã«[12]ã䜿çšããŠãèãå²ãåœãŠãŸãïŒå³54ïŒã
泚æããŠãã ãã!!! å ·äœçã«ã¯ãUARTã¢ãžã¥ãŒã«ã®rxãštxã®ã¬ãã°ãæ··åããŸããïŒ
å³ã«åŸã£ãŠèãå²ãåœãŠãŸãã 54ã
å³54-ãããžã§ã¯ãã¬ãã°ã®å²ãåœãŠïŒrxãštx UARTã¯ç¹å¥ã«æ··åãããŠããŸãïŒ
ä¿åãã¿ã³ãã¯ãªãã¯ãããšãVivadoã§ãããžã§ã¯ãå¶çŽãã¡ã€ã«ãäœæããªãã£ãããšã瀺ãããäœæãä¿ãã¡ãã»ãŒãžã衚瀺ãããŸããconstrãã¡ã€ã«ã®ååãå ¥åãã[OK]ãã¯ãªãã¯ããŸãïŒå³55ïŒã
å³55-èšèšå¶çŽãã¡ã€ã«ã®äœæ
ããã§ããããžã§ã¯ããå®è£ ãããã¡ãŒã ãŠã§ã¢ãã¡ã€ã«ãçæã§ããŸãã [Bistreamã®çæ]ãã¿ã³ãæŒããŠãã[OK]ãéžæããæé ãå®äºãããŸã§åŸ ã¡ãŸãïŒå³56ïŒã
å³56-ãããã¹ããªãŒã ã®çæãã¿ã³ã®å Žæ
ãããã¹ããªãŒã ã®çæãå®äºãããšãè¿œå ã®ã¢ã¯ã·ã§ã³ã®ãŠã£ã³ããŠã衚瀺ãããŸãã [ãã£ã³ã»ã«]ãã¯ãªãã¯ããŸãïŒå³57ïŒ
å³57-ãããã¹ããªãŒã ã®äœæåŸã®è¿œå ã¢ã¯ã·ã§ã³ã®ãŠã£ã³ããŠ
3.5ã MicroBlazeçšã®ããã°ã©ã ã®äœæ
次ã«ãMicroBlazeã®ãœãããŠã§ã¢éçºãè¡ããŸãã ããã¯ãã¶ã€ãªã³ã¯ã¹ãœãããŠã§ã¢éçºãããïŒSDKïŒç°å¢ã§è¡ãããŸããçµã¿ç«ãŠãããããã»ããµã·ã¹ãã ã«é¢ããæ å ±ïŒIPã³ã¢ãAXIãã¹äžã®ãããã®ã¢ãã¬ã¹æå®ïŒãSDKã«éç¥ããã«ã¯ãSDKã«ãšã¯ã¹ããŒãããå¿ èŠããããŸããããã¯ããã¡ã€ã«âãšã¯ã¹ããŒãâããŒããŠã§ã¢ã®ãšã¯ã¹ããŒãã䜿çšããŠè¡ãããŸãïŒå³58ïŒã
å³58-ããã»ããµã·ã¹ãã æ å ±ãSDKã«ãšã¯ã¹ããŒã
衚瀺ããããŠã£ã³ããŠã§ã[ãããã¹ããªãŒã ãå«ãã]ãã§ãã¯ããã¯ã¹ããªã³ã«ããªãã§ãã ãããããã©ã«ãèšå®ã®ãŸãŸã«ããŠ[OK]ãã¯ãªãã¯ããŸãïŒå³59ïŒã
å³59-ãšã¯ã¹ããŒããªãã·ã§ã³ãŠã£ã³ããŠ
次ã«ãSDKãå®è¡ããŸãããããè¡ãã«ã¯ããã¡ã€ã«âSDKã®èµ·åãéžæããŸã
SDKã®ãªãŒããŒããããå®äºããã®ãåŸ ã¡ãŸããå®äºåŸãæ°ãããããžã§ã¯ãã®äœæãéå§ã§ããŸãã[ãã¡ã€ã«]â[æ°èŠ]â[ã¢ããªã±ãŒã·ã§ã³ãããžã§ã¯ã]ãéžæããŸãã
å³61-SDKã§ã®æ°ãããããžã§ã¯ãã®äœæ
æ°ããMB_runãããžã§ã¯ãã®ååãå ¥åãã[次ãž]ãã¯ãªãã¯ããŸãïŒå³62ïŒ
å³62-æ°ãããããžã§ã¯ãã®ã»ããã¢ãã
æ¢è£œã®ãã³ãã¬ãŒããŠã£ã³ããŠã§ãHello Worldã¢ããªã±ãŒã·ã§ã³ã®äœæãéžæãã[å®äº]ãã¯ãªãã¯ããŸãïŒå³63ïŒ
å³63-äœæããããããžã§ã¯ãã®ãã³ãã¬ãŒãã®éžæ
helloworld.cãã¡ã€ã«ïŒãã®å Žæãå³64ã«ç€ºããŸãïŒãéãããã®å 容ããªã¹ã3ã«ç€ºãããã°ã©ã ã³ãŒãã§çœ®ãæããŠãçµæãä¿åããŸãã
å³64-helloworld.cãã¡ã€ã«ã®å Žæ ãªã¹ã3- helloworld.cãã¡ã€ã«ã®çœ®ãæããããå
容
ããã°ã©ã ã¯ããHello WorldïŒãµã€ã¯ã«ãã2ç§ã«çŽ1åéä¿¡ããLD1 LEDïŒèµ€è²ã®ã³ã³ããŒãã³ãïŒã2ç§ã«çŽ1åç¹æ» ãããŸãã
3.6ãããã°ã©ã ãå®è¡ããŠãããã°ãã
ããã»ããµã·ã¹ãã ã®ã³ãŒãã®èšè¿°ãšã¢ã»ã³ããªãå®äºãããã次ã®ããšã確èªããå¿ èŠããããŸãã
- BTN0ãæŒããããšLD4 LEDãç¹ç¯ãã
- «Hello World: cycle» , , rx tx. , LD1.
- AXI-Lite UART
- .
Arty . , UART. SDK. SDK , (. 65).
, Window â Show View â Others â Xilinx â SDK Terminal (. 65).

65 â SDK
, . 66. COM- .

å³66-ã¿ãŒããã«SDKã®æ§æ
次ã«ãVivadoã«ç§»è¡ããŠFPGAããã°ã©ãã³ã°ãè¡ããŸãã
[ããŒããŠã§ã¢ãããŒãžã£ãŒãéã]ãã¯ãªãã¯ããŠãããã°ã©ãã³ã°ã¢ãŒããšãããã°ã¢ãŒãã«å ¥ããŸãã[ã¿ãŒã²ãããéã]ãéžæãã[èªåæ¥ç¶]ãã¯ãªãã¯ããŸãïŒå³67ïŒ
å³67-ããŒããŠã§ã¢ãããŒãžã£ãŒãéããŠFPGAã«æ¥ç¶ãã
ãªã¹ãããã¯ãªã¹ã¿ã«ãéžæãããã¡ãŒã ãŠã§ã¢ã§æºãããŸãïŒå³68ïŒ

å³68-FPGAããã°ã©ãã³ã°
衚瀺ããããã€ã¢ãã°ã§ãç®çã®.bitãã¡ãŒã ãŠã§ã¢ãã¡ã€ã«ãš.ltxãã©ã°ã€ã³åè·¯ã®ãªã¹ããéžæãããŠããããšã確èªãïŒå³69ïŒã[ããã°ã©ã ]ãã¿ã³ãã¯ãªãã¯ããŸãã

å³69-ãã¡ãŒã ãŠã§ã¢ãã¡ã€ã«ãšåè·¯ã®ãªã¹ãã®éžæ
, LD4 , BTN0 LD4.
UART LD1.
SDK, MB_run, Run As â Launch on Hardware (System Debugger), . 70. , .

70 â
, , LD1 , SDK Terminal , rx tx .
, , UART - .
Vivado. , , ILA: AXI UART, . ILA (. 71).
, , , , . , , UART - . «», , , , ILA.
hw_ila_1 .
Trigger Setup , . , . 72. OK.

72 â ILA
: AXI-Lite, . , . , , [14].
. RVALID «1», , , «1». , . 73. .

73 â ILA
, , , . . 74
衚瀺ããããã¹ã¹ããŒã¿ã¹ãASCIIã«å€æŽããŸãããããè¡ãã«ã¯ããã¹ãå³ã¯ãªãã¯ãã[åºæ°]ã[ASCII]ã®é ã«éžæããŸãïŒå³76ïŒã

å³75-* WDATAãã¹äžã®ããŒã¿è¡šçŸã®éžæ[31ïŒ0]
ãã®åŸãããã»ããµãéä¿¡ããã¡ãã»ãŒãžã®ãã¹éšåã確èªããŸããããã«ããããã©ã³ã¶ã¯ã·ã§ã³ãæ£ããé²è¡ããŠããããšãéšåçã«ç¢ºèªãããŸãïŒå³76ïŒã

å³76-* WDATAãã¹äžã®ããŒã¿ã®ASCIIè¡šçŸ[31ïŒ0]
å³71ããå³71ãŸã§ã®æé ãç¹°ãè¿ããŠã¿ãŠãã ããããããã¯ã¡ã¢ãªãªãŒããŒã®åºåã«æ¥ç¶ãããŠããhw_ila_2ã®å Žåã¯76ãããªã¬ãŒã¯å¿ èŠãããŸããããã¹ãŠãæ£ããè¡ãããŠããå Žåãç»åã¯å³ã®ããã«ãªããŸãã77ã

å³77-ãããã¯ã¡ã¢ãªããèªã¿åã£ãããŒã¿
ããã§ãã¹ããããžã§ã¯ãã®ã¢ã»ã³ããªãå®äºããããããªã¹ãã®ç·šéãšECOã¢ãŒãã§ã®äœæ¥ãéå§ã§ããŸãã
4. ECO
:
- BTN0
- UART , ( rx tx)
- ( ASCII:âauthor: KeisN13â).
, ECO, Design Checkpoint (DCP). DCP, (post route).
Vivado DCP, DCP «» DCP .
edited_dcp. (. 78)

78 â DCP
DCP , «_/_.runs/_/___routed.dcp» (. 79) edited_dcp.

79 â DCP
Vivadoã«ç§»åããDCPãéããŸãããããè¡ãã«ã¯ã[ãã¡ã€ã«]â[ãã§ãã¯ãã€ã³ããéã]ãã¯ãªãã¯ããŸãïŒå³80ïŒã

å³80-DCPãéã
edited_dcpãã©ã«ãå ã®ã³ããŒãããDCPãã¡ã€ã«ã®å ŽæãéžæããOKãã¯ãªãã¯ããŸãã
DCPãéããšãããã©ã«ãã§ããã©ã«ãïŒãŸãã¯ããŒã¹ãã¯ãã£ãïŒãã¥ãŒãéããŸããããã¯ãååDCPãéãããšãã«äœ¿çšãããã¥ãŒã§ãïŒå³81ïŒãå³81-Vistaãããã°ãªãŒãã³DCP

DCPã«ã¯ããã€ãã®åäœã¢ãŒãããããŸãããä»æ¥ã¯ECOãããŒã«é¢å¿ããããŸããECOã¢ãŒãã«åãæ¿ããã«ã¯ããã¥ãŒãå€æŽããå¿ èŠããããŸãããããè¡ãã«ã¯ãããããããŠã³ãªã¹ãããå³äžé ã®ECOãéžæããŸãïŒå³82ïŒã
å³82-ECOã¢ãŒããžã®åãæ¿ã
, ECO (. 83). , .

83 â ECO
5. ECO:
ECO , . 84. DCP. DCP , / Tcl-. , , , . , (, .bit) (.ltx). « », , . â DCP .

84 â ECO
. [3] Vivado ECO Flow.
ECO , , .
ECO Navigator, . ECO Navigator .
Edit (. 85): ,

85 â Edit
Create Net: , . , . . pin port, , Connect selected pins and ports (. 86).

86 â Create Net
Create Cell: , . . , , black box. LUT, , (. 87).
Create Port: . : , , .. (. 88).
Create pin: . ( cell) . create_port. , (. 89).

89 â Create Pin
Connect Net: . . , .
Disconnect Net: , . , cell, , .
Replace Debug Probes: , ILA / VIO (Virtual Input Output), , .
Place Cell: cell .
Unplace Cell: cell .
Run
Run , .
ECOããã§ãã¯ïŒãšã©ãŒãã§ãã¯ãå®è¡ïŒDRC-ãã¶ã€ã³ã«ãŒã«ãã§ãã¯ïŒ
泚ïŒVivadoã§ã¯ãECOã¢ãŒãã³ãã³ãã䜿çšããŠããããªã¹ãã«å€ãã®å€æŽãå ããããšãã§ããŸãããã ãããããžã§ã¯ãã«å°å ¥ãããè«ççãªå€æŽã¯ãå®çŸäžå¯èœãªç©ççå®è£ ã«ã€ãªããå¯èœæ§ããããŸãã ECOãããŒã«ãŒãã®åæ段éã§ãšã©ãŒãæé€ããããã«ããããžã§ã¯ãã®å®è£ ãèšç»ããåã«ãECOã®ãã§ãã¯ãéå§ããå¿ èŠããããŸãã
è«çèšèšã®æé©åïŒå Žåã«ãã£ãŠã¯ãopt_designã³ãã³ãããã³å¯Ÿå¿ãããªãã·ã§ã³[9]ã䜿çšããŠããããªã¹ãã®æé©åãå®è¡ããããšããå§ãããŸãã [è«çèšèšã®æé©å]ã䜿çšãããšãopt_designã³ãã³ãã«é©åãªTclåŒæ°ãå ¥åã§ãããã€ã¢ãã°ããã¯ã¹ãåŒã³åºããŠããªãã·ã§ã³è¡ã§èšå®ã§ããŸãã
é 眮èšèšïŒçŸåšã®ããããªã¹ãã®ã³ã³ããŒãã³ãã®å¢åïŒã€ãŸãã以åã®ããããªã¹ãã«åºã¥ãïŒé 眮ãå®è¡ããŸãã place_designã³ãã³ãã®æåŸã«ã³ã³ãœãŒã«ã«è¡šç€ºãããIncremental Placement Summaryã¬ããŒãã§ã¯ãå€æŽãè¡ãããåã®å ã®DCPã«ãã£ãåã®é 眮ã®çµæã®åå©çšã«é¢ããçµ±èšã衚瀺ã§ããŸãã Place Designãã¯ãªãã¯ãããšãplace_design [9]ã³ãã³ãã®å¯Ÿå¿ãããªãã·ã§ã³ãèšå®ã§ãããŠã£ã³ããŠã衚瀺ãããŸããã€ã³ã¯ãªã¡ã³ã¿ã«å®è£ ã®è©³çŽ°ã«ã€ããŠã¯ãã€ã³ã¯ãªã¡ã³ã¿ã«ã³ã³ãã€ã«ã»ã¯ã·ã§ã³ã®[3]ãåç §ããŠãã ããã
ç©çèšèšã®æé©åïŒå Žåã«ãã£ãŠã¯ãç©ççãªæé©åãå®è¡ããå¿ èŠããããŸãïŒphys_opt_design [9]ã³ãã³ãïŒã [ç©çãã¶ã€ã³ã®æé©å]ãã¯ãªãã¯ããŠåŒã³åºããããã€ã¢ãã°ããã¯ã¹ã§ã¯ãphys_opt_designã³ãã³ãã®é©åãªãªãã·ã§ã³ãå ¥åã§ããŸãã
Route DesignïŒéžæã«å¿ããŠãããããªã¹ãã«å ããããå€æŽã®å¢åãã¬ãŒã¹ãéžæããããã³ãŸãã¯åè·¯ã®ãã¬ãŒã¹ãå®è¡ã§ãããã€ã¢ãã°ããã¯ã¹ãéããŸããåå©çšãããè é£ãã§ãŒã³ã®å²åã75ïŒ æªæºã®å Žåãéåžžã®ããããªã¹ããã¬ãŒã¹ãçæãããŸãã
ã€ã³ã¯ãªã¡ã³ã¿ã«å®è£ ã®è©³çŽ°ã«ã€ããŠã¯ãã€ã³ã¯ãªã¡ã³ã¿ã«ã³ã³ãã€ã«ã»ã¯ã·ã§ã³ã®[3]ãåç §ããŠãã ããã
ã¬ããŒãã»ã¯ã·ã§ã³
ãã®ã»ã¯ã·ã§ã³ã§ã¯ã䜿çšããããªãœãŒã¹ãæéç¹æ§ãã¯ããã¯ãã¡ã€ã³ã®å ±ééšåãªã©ã®ã¬ããŒããå«ããå€æŽãããããããªã¹ãã«å¿ èŠãªã¬ããŒããçæã§ããŸãã
ããã°ã©ã ã»ã¯ã·ã§ã³ãã®ã»ã¯ã·ã§ã³ã®
ããŒã«ã䜿çšãããšãæ°ããDCPã«å ããããå€æŽãä¿åããFPAãã¡ãŒã ãŠã§ã¢ãã¡ã€ã«ãäœæããILAãä»ããŠãããã°ãããåè·¯ã®æ°ãããªã¹ããäœæã§ããŸãã
Scratch
, , , . Con , PnR .
Scratch (. 90). , , . , [3] Vivado ECO Flow â Scratch Pad â Scratch Pad Pop-up Menu.

90 â Scratch
6.
. , , . , LD0 , BTN0 . , , .
6.1ã
, ibtn, , F4. , , .

91 â
, ibtn. ibtn LD1 ( obtn_led). ibtn, Expand Cone To Flops or I/Os. Regenerate Layout (. 92)

92 â ,
«» (. 93).

93 â «» ibtn obtn_led
, , , . system_i . obtn_led system_i I obtn_led_OBUF_inst, Edit Disconnect Net.

94 â
Regenerate Layout , (. 95)

95 â
Scratch Pad, .
. Edit Create Cell, invertor, INV OK (. 96)

96 â
INV (. 97)

97 â
, LUT. , LUT , , , Cell Properties, Truth Table Edit LUT Equation⊠(. 98).

98 â LUT
. , Scratch Pad I0 invertor obtn_led system_i.

99 â
. Edit Create Net. btn_led, (. 100)

100 â
. Regenerate Layout (. 101)

101 â
O invertor I obtn_led_OBUF_inst. -, . btn_led_o. . 102
DCP , (. 103).

103 â ECO
é
眮ãšãã¬ãŒã¹ãå®è¡ããªãã£ããããããã瀺ããšã©ãŒãå€æ°è¡šç€ºãããŸãã
ããã§ã¯ããã¡ãŒã ãŠã§ã¢ãã¡ã€ã«ãå°ãçæããŠã¿ãŠãå€æŽãæ£ããè¡ããããã©ããã確èªããŸãããããããè¡ãã«ã¯ãå®è¡ã»ã¯ã·ã§ã³ã®æé ãé çªã«å®è¡ããå¿
èŠããããŸãããã¹ãŠãæ確ã§ãªãã·ã§ã³ããªãããã§ã¯ãããŸãããããã©ã«ãã§ã¯ãã¹ãŠãæ®ã£ãŠããŸãïŒå³104ïŒã
[ãã¶ã€ã³ã®é
眮]ãã¯ãªãã¯ãããªãã·ã§ã³ãå
¥åããã«[OK]ãã¯ãªãã¯ããŸããæäœã®å®äºãåŸ
ã£ãŠããã[ã«ãŒãèšèš]ãã¯ãªãã¯ãã衚瀺ããããŠã£ã³ããŠã§[ã€ã³ã¯ãªã¡ã³ã¿ã«ã«ãŒã]ãéžæããŠã[OK]ãã¯ãªãã¯ããŸãã
ãã®åŸãGenerate Bitstreamãã¯ãªãã¯ããŠããããã¡ã€ã«ãçæããŸãããã¡ã€ã«ãã¹ãã£ãŒã«ãã«edited_dcpãã©ã«ããæå®ãããŠããããšã確èªããŠãã ããããã®åŸãããŒããŠã§ã¢ãããŒãžã£ãŒãéããŠFPGAããã©ãã·ã¥ããŸãã

å³104-.bitãã¡ãŒã ãŠã§ã¢ãã¡ã€ã«ãååŸããæé ã®ã·ãŒã±ã³ã¹
, Vivado. , Vivado Hardware Manager (. 105). , .bit ILA .ltx
105 â Hardware Manager Vivado
, .67-69 . , , edited_dcp (. 106).
, LD0 , BTN0 .
6.2ã /
ECO . brom_reader, , , . BROM INIT, .
Netlist brom_reader (.107).

107 â brom_reader
, , Cell Properties (. 108). Properties INIT.

å³108-éžæãããããã¯ã¡ã¢ãªã®INITããããã£
ã芧ã®ãšããããããã¯ã¡ã¢ãªã®åæåå€ã¯INITããããã£ã«ä¿åãããŸããå€ãã®ããããã£ã®äžã§ãèå³ãããã®ã¯INIT_00ãšINIT_01ã®ã¿ã§ããããã2ã€ã®ããããã£ã®å 容ãHEXããASCIIãžã®ã³ã³ããŒã¿ãŒ[15]ãã³ããŒãããšãå³ã«èŠãããç¢æãåŸãããŸãã77ããã ãéã®é åºã§èšè¿°ãããŠããŸãïŒå³109ïŒå³109-ASCII圢åŒã®INITããããã£ã®å 容

ã³ã³ããŒãã³ãããããã£ãå€æŽããã«ã¯ãéçã¢ã€ã³ã³ãã¯ãªãã¯ããŠæ°ããå€ãå
¥åããããTclã³ã³ãœãŒã«ãšset_ptopertyã³ãã³ãã䜿çšããŸãã
å³110ã«åŸã£ãŠããããã£å€ã眮ãæããçµæãä¿åããŸãã
INIT_00ïŒ256'h0061006700700066002E00770077007700200020002000200020002000200020
INIT_01: 256'h0020002000200020002000750072002E0073006D00650074007300790073002D

110 â INIT ASCII
, . Generate Bitstream . .ltx, (. 111).

111 â
Hardware manager FPGA .bit .ltx (.112). , edit_dcp.

112 â
, . 73-75 ( hw_ila_2, ASCII ). , . 113.

113 â
, , , , . , , , , MMCM PLL . , , , , (Report Timing Summary ..).
6.3. ILA
, ECO , . , , « ». , gnd vcc.
, , , .
ECO, , ; .
: , « », : . : , , Disconnect Net . «DONT_TOUCH» ( «unrote») â Disconnect Net . .
, , . , brom_reader. . , (. 114). cnt, , 5.
Replace Debug Probes. 31, 5 , ila_1, Edit Probes (. 115). ila, . , .

115 â
, *cnt[*]. , . , 5 , 5 . contains match tcl . Tcl , .

116 â
«0», Vivado , gnd const0. , Edit Probes (.117).

117 â ila_1
*const0 , , (. 118). !!! Debug Hub (dbg_hub), Vivado , . IP, , uartlite.

118 â
ila_1 . 119. , . , DRC.

119 â ila_1
OK , , DONT_TOUCH , ila_1. , . , , . , Unset Property DCP.
, , (.120). 1 . , !
Hardware Manger , .bit .ltx .
hw_ila_2 4 : cnt const0. cnt hex unsigned decimal ( . 75) , . , cnt 0 31 1 (.121).

121 â cnt ila_1
, .
6.4. /
, rx tx uart - Hello World . , ECO , . .
. , , cell, . , .
.
uart_rtl_0_rxd, . unplace cell (. 122). , , .

122 â
. uart_rx, Create Port . 123

123 â
A9 , Vivado , A9. (. 124)

124 â
. Create Cell, ibuf_rx (. 125)
. . , . uart_rx Create Net. rx_net.

126 â
I Connect Net. (. 127)

127 â
, system_i. O uart_rtl_0_rxd, system_i Create Net

128 â
.
uart_rtl_0_txd, . Unplace cell, , (. 122). , , .

129 â
uart_tx, Create Port, Output LVCMOS33 (. 130)

130 â
tx_net, uart_tx. uart_tx Create Net

131 â tx_net
tx_obuf, Create Cell OBUF (. 132)

132 â
O , uart_tx Connect Net.

133 â
system_i. I uart_rtl_0_txd (. 134).

134 â
. (. 135).

135 â
Hardware Manager . SDK (. . 70). , Hello World: cycle (. 136).

136 â Hello World SDK Terminal
7.
, . , , , .. , , .. HDL , , «-» . 1. , , . , . , IP Integrator â IP RTL.
è¡š1.ããŸããŸãªã¢ãŒãã§æçµãã¡ãŒã ãŠã§ã¢ãã¡ã€ã«ãååŸããã®ã«ãããæéã®æ¯èŒåæã
æ¯èŒåæãèŠçŽãããšãããäžåºŠç§ã¯ãããéåžžã«è¡šé¢çã§ãããšèšããŸããFPGAã¯è€éãªã·ã¹ãã ã§ããããã¶ã€ã³ã«ãŒãã®ãã®æ®µéãŸãã¯ãã®æ®µéã¯éåžžã«å€åããå¯èœæ§ãããããšãå®å šã«ç解ããŠããŸããããã«ãé¢ããããECOã¯åæãå¿ èŠãšãããç¹ã«ã¯ãªã¹ã¿ã«ãã¬ãŒã¹ãä¿åããŠã³ã³ããŒãã³ãã®å 容ã®ã¿ãå€æŽãããå Žåããããžã§ã¯ããžã®å°ããªå€æŽã¯éåžžã«é«éã§ãã
8.çµè«
å®éã«ECOã¢ãŒããé©çšããããšããããŸããïŒ ã¯ã , , , . ECO; , Tcl-, . , ECO â , LogicAnalyser (ChipScope) ILA ( ) . , , - , .
ECO Flow , , : Vivado ECO Flow.
. é 匵ã£ãŠ
9.
- , LUT, , .
- ECO. Tcl Vivado [9].
- AXI-lIte, GPIO. ECO , ila_1 uartlite, gpio.
- * , MMCM, 100. 50 . , . , , .
- * Tcl , ECO. , , , ..
- ** , brom_reader, 32 ASCII, /
1. Vivado Xilinx
2. Arty Board Digilent
3. UG904 Vivado Design Suite User Guide: Implementation
4. UG908 Vivado Design Suite User Guide Programming and Debugging
5. UG986 Vivado Design Suite Tutorial: Implementation
6. Wiki : ECO
7. UG949 UltraFast Design Methodology Guide
8. UG892 Vivado Design Suite User Guide Design Flows Overview
9. UG835 Vivado Design Suite Tcl Command Reference Guide
10. UG894 Using Tcl Scripting
11. UG901 Vivado Design SuiteãŠãŒã¶ãŒã¬ã€ãåæ
12. Artyãªãã¡ã¬ã³ã¹ããã¥ã¢ã«
13. UG908ããã°ã©ãã³ã°ããã³ãããã°
14. UG1037 Vivado Design Suite AXIãªãã¡ã¬ã³ã¹ã¬ã€ã
15. Hex-to-ASCII
16. ããã¥ã¢ã«ïŒ MicroBlazeãœãããŠã§ã¢ããã»ããµã«åºã¥ããããã»ããµã·ã¹ãã ã®éçºã¶ã€ãªã³ã¯ã¹Vivado IDE / HLx
ä»é²A. flash_ledã¢ãžã¥ãŒã«ã®ãªã¹ã
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity flash_led is Port ( iclk : in STD_LOGIC; oled : out STD_LOGIC); end flash_led; architecture rtl of flash_led is signal cnt : natural range 0 to 100_000_001 := 0; signal led : std_logic := '0'; begin process(iclk) begin if rising_edge(iclk) then if cnt = 100_000_000 then cnt <= 0; else cnt <= cnt + 1; end if; if cnt < 50_000_000 then led <= '0'; else led <= '1'; end if; end if; end process; oled <= led; end rtl;
ä»é²B. brom_readerã¢ãžã¥ãŒã«ã®ãªã¹ã
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; entity brom_reader is Port ( iclk : in STD_LOGIC; odout : out std_logic_vector(7 downto 0) ); end brom_reader; architecture rtl of brom_reader is alias slv is std_logic_vector; type rom_type is array (0 to 31) of natural; signal rom : rom_type := ( 32 , 32, 32, 32, 97, 117, 116, 104, 111, 114, 58, 32, 75, 101, 105, 115, 78 , 49, 51, 32, 32, 32, 32, 32, 32 , 32, 32, 32, 32, 32, 32, 32 ); signal cnt : natural range 0 to rom'length-1 := 0; signal dout: slv(odout'range) := (others => '0'); attribute RAM_STYLE : string; attribute RAM_STYLE of rom : signal is "BLOCK"; begin process(iclk) begin if rising_edge(iclk) then dout <= slv(to_unsigned(rom(cnt), dout'length)); if cnt = (rom'length - 1) then cnt <= 0; else cnt <= cnt + 1; end if; end if; end process; odout <= dout; end rtl;
ä»é²B. helloworldããã°ã©ã ã®ãªã¹ã
#include "platform.h" #include "xil_printf.h" #include "xparameters.h" #include "xgpio.h" XGpio Gpio; /* The Instance of the GPIO Driver */ #define DELAY 10000000 int main() { init_platform(); int Status; volatile int Delay; int k = 0; /* Initialize the GPIO driver */ Status = XGpio_Initialize(&Gpio, XPAR_GPIO_0_BASEADDR); if (Status != XST_SUCCESS) { xil_printf("Gpio Initialization Failed\r\n"); return XST_FAILURE; } /* Loop forever blinking the LED */ while (1) { /* Set the LED to High */ XGpio_DiscreteWrite(&Gpio, 1, 1); xil_printf("Hello World: cycle %d\n\r", k); k++; /* Wait a small amount of time so the LED is visible */ for (Delay = 0; Delay < DELAY; Delay++){}; /* Clear the LED bit */ XGpio_DiscreteWrite(&Gpio, 1, 0); /* Wait a small amount of time so the LED is visible */ for (Delay = 0; Delay < DELAY; Delay++){}; } cleanup_platform(); return 0; }
PS: intekus Des333 , ishevchuk , roman-yanalov 91 ( Word), .