Habréã§å ¬éãããŠããã¢ããã¥ã¢FPGAãããžã§ã¯ãã®ã»ãšãã©ã¯ãã¢ã«ãã©ïŒçŸåšã®IntelïŒã®æ©åšã§äœæãããŠããŸãã äž»èŠãªç«¶åä»ç€Ÿã§ããã¶ã€ãªã³ã¯ã¹ã®è£œåã§äœãã§ããããèŠãŠã¿ãŸãããã ç§ãã¡ã¯ãå®è£ ã®éçšã§å¿ èŠãšãªãååã«å€§ããè€éãªãããžã§ã¯ããåããäœæããŸãã
- éçºããŒããšããã«å¿ èŠãªPMODãéžæããŸã
- ãããžã§ã¯ãã®èšèšã決å®ããã¯ããã¯ãã¡ã€ã³ãšãããã®éã®ç§»è¡ã«ãŒã«ãéžæããŸãã
- ã¶ã€ãªã³ã¯ã¹Vivadoã®åºæ¬æ©èœããã¹ã¿ãŒãã-ãããžã§ã¯ãã®äœæããããã¯å³ã®æäœãã³ã³ãã€ã«ãã·ãã¥ã¬ãŒã·ã§ã³ããããã°
- AXI4ã€ã³ã¿ãŒãã§ã€ã¹ã§è€æ°ã®IPãäœæãã
- å€éšããã€ã¹ãæäœãã
- ãã¹ã³ã³ãããŒã©ãŒãšå²ã蟌ã¿åŠçã䜿çšããŠç¬èªã®ããã»ããµããŒãããäœæãã
- æ€èšŒçšã®ã¢ãžã¥ãŒã«ãæžã
- æåŸã«ããã¹ãŠããŸãšããŠã80幎代åã°ã®äŒèª¬çãªïŒå°ãªããšãåœæçããŠãã人ãã¡ã®ïŒã³ã³ãã¥ãŒã¿ãŒã®FPGAã«å®è£ ãååŸããŸã-BK-0010
ãã®ãã¹ãŠã詳现ã«èª¬æããäžé£ã®èšäºãèšç»ãããŠããŸãããä»æ¥ã¯ãããã®æåã®ãã®ã§ãã ãããžã§ã¯ãã¯System Verilogã§èšè¿°ãããŠãããå¿ èŠã«å¿ããŠå°ããªVerilogãšVHDLãæ¿å ¥ãããŸãã èªè ã¯ã HarrisïŒHarrisããã¯ã¬ãã«ã§Verilog / VHDLèšèªã®åºæ¬ååãç解ããå¿ èŠããããŸãã
BK-0010ã«ã€ããŠäžèš
BK-0010ã¯1986幎ã«ç»å ŽããKR1801BM1ããã»ããµïŒDEC PDP-11ã³ãã³ãã·ã¹ãã ïŒã«åºã¥ãã·ã³ã°ã«ããŒãã³ã³ãã¥ãŒã¿ãŒã§ããã ã¹ããŒãªãŒãé²ãã«ã€ããŠããã®ã¢ãŒããã¯ãã£ã®æ©èœã®äžéšãæ€èšããå¿ èŠããããŸããä»ã¯ãããŒãããã®ä»ã®æ©åšãéžæããã®ã«éèŠãªã³ã³ãã¥ãŒã¿ãŒã®ç¹æ§ã«éå®ããŸãã
ç¹åŸŽ | äŸ¡å€ |
---|---|
CPU | 3 MHzãçŽ18000ã®ãã©ã³ãžã¹ã¿æ°ïŒn-MOSïŒ |
RAM | 32 KB |
ROM | 8-32 KB |
åºåããã€ã¹
- 家åºçšãã¬ãã512x256ã®çœé»ãŸãã¯256x256ã®è²ïŒåãããã¯ä»ãšã¯ç¬ç«ããŠ4è²ãæã€ããšãã§ããŸãïŒ
- ãµãŠã³ããã¥ã€ãŒã¿ãŒïŒ1ãããåºåïŒãšããŒãã¬ã³ãŒããŒãžã®åºåã®çµã¿åãã
å ¥åæ©åš
- JCUKENããŒã¬ã€ã¢ãŠãã®ããŒããŒã
ããŒãã®éžæ
ãããžã§ã¯ãã«äœ¿çšããããŒããšãããã¯äœã§ããïŒ æ°Žæ¶ã®å ŽåãArtix-7ããã³Zynq-7000ããèŠä»¶ã«åãããŠéžæã§ããŸããã©ã¡ãã®å Žåããæå°ã®æ°Žæ¶ã§ååã§ãã éçºããŒã-ã¶ã€ãªã³ã¯ã¹èªäœãè¡ãããšã¯ãéåžžã«è±å¯ãªã¹ã¿ããããããã4æ¡ã®äŸ¡æ Œã¿ã°ãæã€ããŒãã§ãã ãšãŒãããã®äŒç€ŸTrenz Electronic GmbHããããŸããã圌ãã®è£œåã¯æ¢è£œã®ããã€ã¹ã®äœæã«ããéç¹ã眮ããŠãããšæããŸãã ç§ã®æèŠã§ã¯ãDigilentã¯ã¢ããã¥ã¢åãã«ã¶ã€ãªã³ã¯ã¹ããããæèŒããæé©ãªãã¶ãŒããŒãã補é ããŠããŸãã Artix-7ã§ã¯Basys-3ãNexus 4 DDRãNexus VideoãZynq-7000ã§ã¯Zyboããã³ZedBoardã§ãã
ç§èªèº«ã¯ãZyboã«æ±ºããŸããã ãã®ããŒãã¯ãæãå®äŸ¡ãªãã®ã®1ã€ïŒ189ãã«ãAcademic Discount Programã®èŠä»¶ãæºãããŠããããšãDigilentã«ç¢ºä¿¡ãããå Žåã¯125ãã«ïŒãVGAåºåãšHDMIåºåã®äž¡æ¹ãå€ãã®PMODããŒãã512MB RAMãåããŠããŸãã ã¯ãããã®ããŒãã¯SoCã«åºã¥ããŠããããã®ãããžã§ã¯ãã§ããã»ããµã³ã¢ã®æ©èœã䜿çšããäºå®ã¯ãããŸããã ããããFPGAã®ããã«ãã®ããŒãã䜿çšãã人ã¯ããŸããã ããŒãã«ã¯7ã»ã°ã¡ã³ããããã°ã€ã³ãžã±ãŒã¿ãŒããªããPS2ãŸãã¯USBããŒããŒããFPGAããŒãã«æ¥ç¶ããæ¹æ³ã¯ãããŸããïŒããé«äŸ¡ãªNexus 4 DDRãšã¯ç°ãªããŸãïŒããããã2ã€ã®ããŒãã®äŸ¡æ Œå·®ã¯ããã®æ©èœãæèŒã§ããPMODã¢ãžã¥ãŒã«ã®ã³ã¹ããããã¯ããã«å€§ãããªããŸãåä¿¡ããã
ãããã£ãŠãæçµçã«ã¯ããããžã§ã¯ãã«ã¯æ¬¡ã®æ©åšãå¿ èŠã«ãªããŸãã
ã¶ã€ã
PMOD-SSD-ãããã°çšã®2ã€ã®7ã»ã°ã¡ã³ãã€ã³ãžã±ãŒã¿ãŒ
PMOD-PS2 -PS / 2ããŒããŒããæ¥ç¶ããŸãã è³Œå ¥ããã®ãå¿ããŠããã®ã§ãèªåã§ãããªããã°ãªããŸããã§ããã åæã«ã3.3Vã®ããŒããŒããæ©èœããªãã£ããããDC-DCã³ã³ããŒã¿ãŒ3.3-> 5Vãé 眮ããŸããã
å€ãPS / 2ã䜿ããããªãã®ã§ãããããŒããŒããUSBã§æ¥ç¶ãããã§ãã
ãããããããŸããããããã€ãã®å°é£ããããŸãã
Zyboã«ã¯USBãã¹ãããããŸãããPSããŒãã«æ¥ç¶ãããŠããŸãã PLãããžã§ã¯ããèšç»ããå Žåã¯ãå¥ã®USBãã¹ããããŒãã«æ¥ç¶ããå¿ èŠããããŸãã
USBãããã³ã«ã®å®å šãªä»æ§ïŒHOSTããã³ãã¹ãŠã®ã¿ã€ãã®ããã€ã¹ã®ãµããŒããå«ãïŒãFPGAã«å®è£ ããã®ã¯éåžžã«é£ãããUSBã€ã³ã¿ãŒãã§ã€ã¹ã¯ããªãé«ãé »åºŠã§ãã 劥åœãªåŠ¥åæ¡ã¯ãäŸãã°ULPIã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠå€éšç©çå±€ã³ã³ããŒã¿ãŒãæ¥ç¶ããããšã§ããULPIãæäœããããã«ãVerilog / VHDLã§æ¢è£œã®IPã¢ãžã¥ãŒã«ãèŠã€ããããšãã§ããŸãã ãŸããããŒããŒããšããŠã¹ãæäœããããã®USBãã¹ãããã§ã«ããå¥ã®ããŒãïŒDigilentãããšãã°Nexus 4 DDRïŒãéžæããããšãã§ããŸãã
Zyboã«ã¯USBãã¹ãããããŸãããPSããŒãã«æ¥ç¶ãããŠããŸãã PLãããžã§ã¯ããèšç»ããå Žåã¯ãå¥ã®USBãã¹ããããŒãã«æ¥ç¶ããå¿ èŠããããŸãã
USBãããã³ã«ã®å®å šãªä»æ§ïŒHOSTããã³ãã¹ãŠã®ã¿ã€ãã®ããã€ã¹ã®ãµããŒããå«ãïŒãFPGAã«å®è£ ããã®ã¯éåžžã«é£ãããUSBã€ã³ã¿ãŒãã§ã€ã¹ã¯ããªãé«ãé »åºŠã§ãã 劥åœãªåŠ¥åæ¡ã¯ãäŸãã°ULPIã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠå€éšç©çå±€ã³ã³ããŒã¿ãŒãæ¥ç¶ããããšã§ããULPIãæäœããããã«ãVerilog / VHDLã§æ¢è£œã®IPã¢ãžã¥ãŒã«ãèŠã€ããããšãã§ããŸãã ãŸããããŒããŒããšããŠã¹ãæäœããããã®USBãã¹ãããã§ã«ããå¥ã®ããŒãïŒDigilentãããšãã°Nexus 4 DDRïŒãéžæããããšãã§ããŸãã
ã¶ã€ãªã³ã¯ã¹Vivadoå ¥é
ã¶ã€ãªã³ã¯ã¹ã®ãããžã§ã¯ãïŒãã®å Žåã第7ã·ãªãŒãºã®ãããã«ã€ããŠè©±ããŠããïŒã¯ãã¶ã€ãªã³ã¯ã¹Vivadoã§äœæãããŸãã ãã€ãšã³ããããïŒUltraSCALE / UltraSCALE +ïŒã䜿çšããäºå®ã¯ãªããããç¡æã®ã¶ã€ãªã³ã¯ã¹Vivado WebPACKãšãã£ã·ã§ã³ããã®ç®çã«é©ããŠããŸãã xilinx.comã«ç»é²ããããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããŸãã
ã·ã¹ãã èŠä»¶
ããã¯äž»ã«RAMã§ãã Zyboã«ãšã£ãŠã¯é£ããã§ããã8 GBã§ååã§ãããã匷åãªãããã䜿çšããã«ã¯ãããã«å€ããå¿
èŠã§ãã
Zyboã䜿çšããã«ã¯ãVivadoããŒããã¡ã€ã«ããã±ãŒãžãããŠã³ããŒãããŠãVivadoã«è¿œå ããå¿ èŠããããŸããããã«ã¯ãããŒãã§äœ¿çšå¯èœãªã€ã³ã¿ãŒãã§ã€ã¹ããããã®åšæ³¢æ°ç¹æ§ãªã©ã®èª¬æãå«ãŸããŠããŸãã Digilent Webãµã€ãïŒãŸãã¯GitHub ïŒããããŠã³ããŒãããŠãVivadoã«è¿œå ããŸãã
ãŸãããããã³ãã¯ã¿ãšããŒãã³ãã¯ã¿ã®ãã³çªå·ã®å¯Ÿå¿ãèšè¿°ãããªãœãŒã¹ãã¡ã€ã«ãå¿ èŠã§ãã ããŒãããã®å Žåã¯ZyboãGitHub / Digilentã§èŠã€ããŠããŠã³ããŒãããŸãã
ãããŠæåŸã«ãVerilogã§æåã®ãããžã§ã¯ãããã£ãŠã¿ãŸãããã BK-0010ããŒããŒãã³ã³ãããŒã©ãŒãäœæããã«ã¯ãä»åŸãã®ãããžã§ã¯ããå¿ èŠã«ãªããŸãã
PS / 2ã€ã³ã¿ãŒãã§ã€ã¹ãåãããã®ãããªçãããããããŒããŒãããããŸãã
ãããžã§ã¯ãã®ishevchukã¯ã ãã®ã³ã³ãããŒã©ãŒã䜿çšããŠPS / 2ããŒããŒããæäœããŸããã
ãããåããå°ãããçŽããŸãã ã³ã³ãããŒã©ã¯ã50 MHzã®åºå®ã¯ããã¯åšæ³¢æ°ãæã£ãŠããããšãé€ããŠããã¹ãŠã®äººã«é©ããŠããŸãã BK-0010ãããžã§ã¯ãã§ã¯ãã®ãããªé »åºŠã¯ãããŸããããŸãããã®ãããªããšãããŒãã³ãŒãã£ã³ã°ããã®ã¯è¯ããããŸããã Vivadoã§æ°ãããããžã§ã¯ããäœæããã³ã³ãããŒã©ãŒãã¡ã€ã«ãããŠã³ããŒãããŠãã¯ããã¯åšæ³¢æ°ããã©ã¡ãŒã¿ãŒãšããŠèšå®ããŸãã
æ°åŒã¢ãžã¥ãŒã«ããããŒ
module Altera_UP_PS2_Command_Out # ( parameter CLOCK = 100, // Timing info for initiating Host-to-Device communication // when using a 50MHz system clock parameter CLOCK_CYCLES_FOR_101US = (CLOCK * 101), // 5050; parameter NUMBER_OF_BITS_FOR_101US = $clog2(CLOCK_CYCLES_FOR_101US), parameter COUNTER_INCREMENT_FOR_101US = 1, // Timing info for start of transmission error // when using a 50MHz system clock parameter CLOCK_CYCLES_FOR_15MS = (CLOCK * 15000), // 750000; parameter NUMBER_OF_BITS_FOR_15MS = $clog2(CLOCK_CYCLES_FOR_15MS), parameter COUNTER_INCREMENT_FOR_15MS = 1, // Timing info for sending data error // when using a 50MHz system clock parameter CLOCK_CYCLES_FOR_2MS = (CLOCK * 2000), // 100000; parameter NUMBER_OF_BITS_FOR_2MS = $clog2(CLOCK_CYCLES_FOR_2MS), parameter COUNTER_INCREMENT_FOR_2MS = 1 )
ãããžã§ã¯ãã®äžéšã®ã¢ãžã¥ãŒã«ã«ã¯ãååã«ã¢ã«ãã©ãšããåèªãå«ãŸããŠããŸãã ã¶ã€ãªã³ã¯ã¹ã§ã¯ãéçºè ãå°éãããããããããæ©èœããªããªãããšã¯ãããŸãããååãå€æŽããŸããã§ããã
ããã«ãRESETä¿¡å·ã®æ¥µæ§ãå€æŽããŸããæšæºIPã®å ŽåãRESETå ¥åã«0ãé©çšããããšã¶ã€ãªã³ã¯ã¹ãªã»ãããçºçããŸãã
䟿å®äžããããžã§ã¯ããIP圢åŒã§æé ããŸãã Vivadoã«ã¯ãããè¡ãçµã¿èŸŒã¿ããŒã«ãããã[ããŒã«]-> [æ°ããIPã®äœæãšããã±ãŒãžå]ããåŒã³åºãããŸãã ãããžã§ã¯ãããããã¡ã€ã«ã®å ¥åãšåºåã¯ãæ°ããIPã®å ¥åãšåºåã«ãªããŸãã Vivadoã¯ãååãåæããŠããŒãã®ã¿ã€ããå€å¥ããããšããŸãã ãã®å Žåããããžã§ã¯ããããã«çµã¿ç«ãŠãéã®èŠåã®æ°ãæžããããã«ããã®ããã»ã¹ã«ä»å ¥ããã¯ããã¯ããã³ãªã»ããä¿¡å·çªå·ããPS2_CLKããŒããé€å€ããå¿ èŠããããŸãã PS2_CLKã¯ãåšæ³¢æ°ãæ°åãããã«ãã§ãããããæ¬æ Œçãªã¯ããã¯ä¿¡å·ãšã¯èšããŸããã
ãã®ããŒã«ã¯éåžžã«æè»æ§ãé«ããããŒãã®ã¿ã€ããèšå®ããã ãã§ãªããããŸããŸãªãã©ã¡ãŒã¿ãŒã管çããæ¡ä»¶ä»ãã³ã³ãã€ã«ãªãã·ã§ã³ãèšå®ãããã©ã¡ãŒã¿ãŒã«å¿ããŠIPã®å€èŠ³ãå€æŽã§ããŸãã ãã®ãããžã§ã¯ãã«ã¯ãInitialize MouseïŒããã€ã¹ã®éžæ-ããŒããŒããŸãã¯ããŠã¹ïŒãšClockïŒã¯ããã¯åšæ³¢æ°ïŒã¡ã¬ãã«ãïŒïŒã®2ã€ã®ãã©ã¡ãŒã¿ãŒããããŸãã åŸã§MPIãã¹ãæäœããããã®ã¢ãžã¥ãŒã«ãäœæãããšãã«ãæ¡ä»¶ä»ãã³ã³ãã€ã«ã®åé¡ãæ€èšããŸãã
GitãVivadoã«æ¥ç¶ãã
æåŸã«ïŒãããŠãäžè¬çã«ããã¯ãã¡ãããæ°ãããããžã§ã¯ããäœæããçŽåŸã«è¡ãå¿ èŠããããŸãïŒããããVivado Gitã«åºå®ããŸãã Verilog / VHDLãœãŒã¹ã³ãŒããå¶çŽãã³ã³ããŒãã³ãã®èª¬æãIPã¢ãžã¥ãŒã«ã€ã³ã¿ãŒãã§ã€ã¹ã®èª¬æããããžã§ã¯ãèªäœãªã©ã¯ããã¹ããã¡ã€ã«ã§ããããããã¯ãã¹ãŠç°¡åã§ãã ãã ããè€éãªç¹ã1ã€ãããŸãããããžã§ã¯ããã¡ã€ã«ïŒXML圢åŒïŒã«ã¯ããœãŒã¹ããã¹ããžã®çµ¶å¯Ÿãã¹ãããããã·ã³éã§ãããžã§ã¯ãã転éãããšãã«åé¡ãçºçããå¯èœæ§ããããŸãã 解決çã®1ã€ã¯ãæ¢è£œã®ããŒã«ïŒã¶ã€ãªã³ã¯ã¹ãšã³ãžãã¢ãäœæïŒã䜿çšããããšã§ãããã®ããŒã«ã¯ãVivadoãããžã§ã¯ãã«åºã¥ããŠããŒã¿ãã«tclã¹ã¯ãªãããäœæããã¿ãŒã²ãããã·ã³ã§èµ·åãããšãå ã®ãããžã§ã¯ããšåäžã®ãããžã§ã¯ããäœæããŸãã ãã®ããŒã«ã«ã©ãããŒãè¿œå ãããtclã¹ã¯ãªããã®äœæã®èªååã.gitignoreãã¡ã€ã«ã®å ¥åãå ¥åãšã©ãŒã®åŠçãªã©ãè¡ãããŸããã ãã®ã©ãããŒãã€ã³ã¹ããŒã«ãããšãVivado Tclã³ã³ãœãŒã«ããGitãçŽæ¥æäœã§ããããã«ãªããŸãã
ãããžã§ã¯ããéã§åããŸã
ããã§ã¯ãã©ã®ããã«æ©èœãããã確èªããŸãããã PS2ã³ã³ãããŒã©ãŒãããžã§ã¯ããéããŠãããŒããŒãããã¹ãã£ã³ã³ãŒããåãåãã7ã»ã°ã¡ã³ãã€ã³ãžã±ãŒã¿ãŒã«çºè¡ãããã¹ããããžã§ã¯ããäœæããŸãã ãã®ãããžã§ã¯ãã§ã¯ãVerilogã³ãŒãã1è¡ãèšè¿°ããŸããããæ¢è£œã®IPã¢ãžã¥ãŒã«ããåè·¯ãçµã¿ç«ãŠãŸãã
IPã€ã³ãã°ã¬ãŒã¿ãŒã§ãæ°ãããããã¯ãã¶ã€ã³ãäœæããIPãè¿œå ããŠããã®ã¹ããŒã ã次ã®ããã«ãªããŸã§æ¥ç¶ããŸãã
ããã§ã¯æ¬¡ã®IPã䜿çšãããŸããã
ã¯ãããã³ã°ãŠã£ã¶ãŒãã¯ããã¯ä¿¡å·ãäœæããããã®ã¢ãžã¥ãŒã«ã ç°ãªãåšæ³¢æ°ãšãã¥ãŒãã£ãµã€ã¯ã«ïŒãã®å Žåã¯1ã€ã®100MHzã®æ¹åœ¢æ³¢ïŒãæã€ã¯ããã¯ä¿¡å·ïŒæ倧6åïŒãäœæããããã«èšèšãããŠããŸãã ã·ã¹ãã ã¯ããã¯ïŒ125 MHzïŒãå ¥åã«äŸçµŠãããŸãã PLLãªãœãŒã¹ã䜿çšãããšãåºåã¯ããã¯ä¿¡å·ã¯å¯Ÿå¿ããæ°Žæ¶ãªãœãŒã¹ãäŒæããŸãã ã¶ã€ãªã³ã¯ã¹æšæºã¢ãžã¥ãŒã«ã
ãã€ããªãŒã«ãŠã³ã¿ãŒ ã«ã¹ã¿ã åºåãç·ããã®å Žåã¯8ãããã ã¶ã€ãªã³ã¯ã¹æšæºã¢ãžã¥ãŒã«ã
ã¹ã©ã€ã¹ ãã®å Žåããã¹ãã£ãã€ããŒã¯ãã€ããªã«ãŠã³ã¿ãŒããæäžäœããããåŒãåºãã256ã®ãã£ãã€ããŒã圢æããŸããæšæºã®ã¶ã€ãªã³ã¯ã¹ã¢ãžã¥ãŒã«ã
äžè¬ã«ããã®ãããªããšã¯ã¯ããã¯ä¿¡å·ã§ã¯ã§ããŸãã; Clocking Wizardããå¥ã®åºåãååŸããClock Domain Crossingãæ£ããèšå®ããå¿ èŠããããŸãã ãã ãããã®å Žåãæ°çŸãã«ãããæ°çŸãããã«ããŸã§ã®ããããåšæ³¢æ°ãããŸã£ããåæãããŠããªããããSSD_pmodãæ©èœããã®ã«é©ããŠããŸãã
SSD_pmodã 2æ¡ã®7ã»ã°ã¡ã³ãDigilent PMOD-SSDã€ã³ãžã±ãŒã¿ãŒã«16é²åœ¢åŒã§ãã€ãã衚瀺ããã¢ãžã¥ãŒã«ã ãã€ãã¯ã¢ãžã¥ãŒã«ã®å ¥åã«å°çããŸãã ã¢ãžã¥ãŒã«ã®ãœãŒã¹ã³ãŒãã¯GitHubã«æçš¿ãããŠããŸãã
PMOD_GPIOã PMODã³ãã¯ã¿ãŒã®ä¿¡å·ã®åŠçã説æããã¢ãžã¥ãŒã«ã ã³ãã¯ã¿ã«æ¥ç¶ãããŠããã¢ãžã¥ãŒã«ã®ã¿ã€ãã«å¿ããŠãããŸããŸãªãããã³ã«ã䜿çšãããŸã-GPIOãSPIãI2CãUARTã ç§ã¯ãPMODããµããŒãããããã«Digilentãäœæããã¢ãžã¥ãŒã«ãåºæ¬ãšãããããã«å€æŽããŸããã ã¢ãžã¥ãŒã«ã®ãœãŒã¹ã³ãŒãã¯GitHubã«æçš¿ãããŠããŸãã
å®æ°ã¢ãžã¥ãŒã«ã ããã¯åã«0ãŸãã¯1ã®å®æ°ã§ãããã®å ŽåãããŒããŒãéä¿¡ã䜿çšããŸããããããã£ãŠã0ã¯å ¥åsend_commandãšthe_commandã«éä¿¡ããã1ã¯ãªã»ããå ¥åã«é©çšãããŸãïŒæçµãããžã§ã¯ãã§ã¯å®å šãªãªã»ããåè·¯ããããŸãïŒã
æåŸã«ã PS2_controllerãåã®ã¹ãããã§äœæããã¢ãžã¥ãŒã«ã è¿œå ã§ããããã«ããããžã§ã¯ãããããã£ã§ãã¹ãæå®ããããšãå¿ããªãã§ãã ããã
次ã®å€éšæ¥ç¶ã䜿çšããŸãã
sys_clockããŒãäžã®å€éšãžã§ãã¬ãŒã¿ãŒããã®125MHzã¯ããã¯ïŒãã³L16ïŒã PLLãéå§ããããã«äœ¿çšãããŸãã
PMOD_CããŒããŒãã¯ããŒãCã«æ¥ç¶ããããããJC2ïŒW15ïŒããã³JC4ïŒT10ïŒã䜿çšãããŸã
PMOD_D 7ã»ã°ã¡ã³ãã€ã³ãžã±ãŒã¿ã¯ããŒãDã«æ¥ç¶ããã8ããããã¹ãŠã䜿çšãããŸãã
ãããã¯ãã¶ã€ã³ãä¿åããVerilogã§ã©ãããŒãçæïŒHDLã©ãããŒãçæ...ïŒããããžã§ã¯ããã³ã³ãã€ã«ïŒãããã¹ããªãŒã ãçæïŒãJTAGãä»ããŠããŒãã«ã¢ããããŒãïŒããŒââããŠã§ã¢ãããŒãžã£ãŒãéããã¿ãŒã²ãããéããããã°ã©ã ããã€ã¹ïŒã ããã§ãããŒããŒãã®ãã¿ã³ãæŒããšãã¹ãã£ã³ã³ãŒãã7ã»ã°ã¡ã³ãã€ã³ãžã±ãŒã¿ãŒã«è¡šç€ºãããŸãã
8'h4E㯠'-'
åç §è³æ
ããããã¹ãŠããŒããŠã§ã¢ã§è©ŠããŠã¿ãã人ã®ããã«ããã¹ãŠã®ãœãŒã¹ãGithubã«æçš¿ãããŠããŸãã
â VivadoããGitãæäœããããã®Vrapper
ããã«ã以äžãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã
â Zyboãå«ãã€ã³ã¿ãŒãã§ã€ã¹ãšDigilentããŒãã®èª¬æ
â 1ã€ããã³2〠-7ã»ã°ã¡ã³ãã€ã³ãžã±ãŒã¿ãŒã«16é²æ°ã衚瀺ããããã®è£å©ã¢ãžã¥ãŒã«
â PS2ããŒããŒãã³ã³ãããŒã©ãŒ
â ããããã¹ãŠãäžç·ã«æ¥ç¶ãããŠããã¢ãžã¥ãŒã«
ã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããã«ã¯ãGithubããã¢ãžã¥ãŒã«ãããŠã³ããŒãããVivadoã®äžããã«ãŒãã«ãã.tclãã¡ã€ã«ãå®è¡ããå¿ èŠããããŸãã