管çããã®åé¡ã¹ããŒãã¡ã³ãã®å±¥æŽ+ããã€ã¹ã®æäœå±¥æŽ
SimBankããã€ã¹ã¯ãSIMã«ãŒãïŒãµãã¹ã¯ã©ã€ããŒèå¥ã¢ãžã¥ãŒã«-ãµãã¹ã¯ã©ã€ããŒIDã¢ãžã¥ãŒã«ïŒã§åäœããããã«èšèšãããŠããŸãã ãããã®ã«ãŒãã¯ãISO-7816ã«ãŒãã®äžçš®ã§ãã Simã«ãŒããŸãã¯ä»ã®çš®é¡ã®ã¹ããŒãã«ãŒãã®éäžã¹ãã¬ãŒãžãããã³GSMã²ãŒããŠã§ã€ãè¡æãã¬ããã¥ãŒããŒãªã©ã®ããã€ã¹ããŸãã¯æäœäžã«ã¹ããŒãã«ãŒãã䜿çšããä»ã®ããã€ã¹ã§ã®åŸç¶ã®äœ¿çšã«äœ¿çšã§ããŸãã Sim-serverã¯ããœãããŠã§ã¢ãšãšãã«ãã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšãããSIMã«ãŒãã®ç£èŠãšã¢ã«ãŠã³ãã£ã³ã°ã®ããã®æè»ãªã·ã¹ãã ãšã䟿å©ãªWebããŒã¹ã®ã€ã³ã¿ãŒãã§ãŒã¹ãä»ããŠã·ã¹ãã ãã»ããã¢ããããã³æ§æããããã®åºç¯ãªãªãã·ã§ã³ãæäŸããŸãã åæã«ãã«ãŒãèªäœã¯ã¢ã¯ã»ã¹å¯èœãªå Žæã«ä¿ç®¡ãããTCP / IPãããã³ã«ãä»ããŠç«¯æ«ããã€ã¹ã«æ¥ç¶ãããŸãã
Habréã«ã¯ãããã€ã¹ãšã¹ããŒãã«ãŒãã®åäœåçã説æããèšäºããããŸãã
OgreSwamp SIMã«ãŒãã®ç°¡åãªçŽ¹ä»
ãã¬ãŒãããæå°ã®ã¹ããŒãã«ãŒã
rlepricon ã®ã¹ããŒãã«ãŒãã® é 眮æ¹æ³
éçºãå§ããåã«ããã¹ãŠãåãã§èªã¿ãŸããã ãããŠãç§ã¯åœŒãã«æžãããŠããããšãç¹°ãè¿ããŸããã
SimBankããã€ã¹
è£ çœ®èªäœã¯äŒç€Ÿã§é·ãéäœãããŠãããæ°å¹Žé䜿çšãããŠããŸãã ããããå瀟ã®ãã¹ãŠã®PCIããã€ã¹ã®ç¹æ§ã¯ããã¬ãŒãã³ã°PCIã³ã¢ã§ãããããã®ãŸãŸæäŸãããã¯ã¬ãŒã ã¯åãå ¥ããããŸããã§ãããã ãããã¯å±ç€ºãããŸããã§ããã æå°éã®å€æŽã§ããã®ã³ã¢ã¯ãã¹ãŠã®ããŒãã«äŸå€ãªãé 眮ãããŸããã ããã«ãããå©çšå¯èœãªã¢ãã¬ã¹ç©ºéãå·§ã¿ã«äœ¿çšããããšãã§ããŸããã åããã³ããŒIDãããã€ã¹IDãã¯ã©ã¹ã³ãŒãã éåžžãããã€ã¹ã¯äŒç€Ÿã§çµã¿ç«ãŠãããæäœæ§ããã§ãã¯ãããããã競åã¯ãããŸããã§ããã éãããæéæ ã§ã¯ããä»äº-觊ããªãããšããååãéåžžã«é©åã§ãã ããã¯ãæè¿ã®ãã¶ãŒããŒãã®äžéšãäœæ¥äžã«äžå®å®ã瀺ããŸã§ããŸãã¯äžè¬çã«ããŒããèµ·åããããªããŸã§ããã°ããç¶ããŸããã
PCIã³ã¢ããã培åºçã«æ±ãæãæ¥ãŸããã ã¿ã¹ã¯çšã«å€æŽããããã¬ãŒãã³ã°ã³ã¢ã¯ã³ã¡ã³ãã§ææžåãããŸããããå¿ ãããååã§ã¯ãããŸããã§ããã 2002幎ãŸãã¯2004幎ã«äœæãããå Žæããã®åç §ã¯æ©èœããŸããã§ããã
ã¿ã¹ã¯ã¯1æ¥ãšåããããç°¡åã§ãããããã€ã¹ã¯ãã¹ãŠã®æšæºããŒãã§åäœããã¯ãã§ããã
ããŒãã¹ãšããŠïŒãããšã200æã®SIMã«ãŒãã§ã¯ãªãã196ãŸãã¯1xxã§ãã£ãŠãã
ãã®ç¬éãŸã§ãFPGAéçºè ãšããŠSIMã«ãŒããŸãã¯PCIãã¹ã®ããããã䜿ã£ãããšã¯ãããŸããã§ããã åè·¯ãšããŒãã®ã¿ã VHDLããã³Verilogã§ã®éçºçµéšã¯ãã§ã«ãããŸããã
SIMã«ãŒãã«é¢é£ããéšåãæ©èœãããããPCIã§ã®å解ãéå§ããããšã決å®ãããŸããã
ãPCI Local Busãä»æ§ã®æåã®èªã¿ç©ã¯å¥è·¡çã«ã¯æ©èœããããã¹ãŠãã©ã®ããã«è¡ãã¹ããã«ã€ããŠããŸãæããã«ããŸããã§ããã è¡ãæ¹æ³ãšããªãæ¹æ³ã«é¢ããèšäºãèªãã åŸãç§ã¯ãŸã äœãç解ããŠããŸããã§ããããããå¿ èŠããããŸããéäžã§ãããææ¡ããŸããã
PCIã®å ŽåãQuartusã®ã¢ã«ãã©ã«ã¯ãå¿ èŠãªãã©ã¡ãŒã¿ã䜿çšããŠPCIã³ã¢ãçæã§ããã¡ã¬ãã¡ã³ã¯ã·ã§ã³ããããŸãã ã«ãŒãã«ã«ã¯é©åãªããã¥ã¡ã³ããæ·»ä»ãããŠããŸãããµã€ãã«ã¯ãModelsSim-Alteraã®ããã€ãã¢ã¢ããªã³ã°çšã®PCIã¢ãã«ãæ·»ä»ãããŠããPCIãããã®èª¬æããããŸãã ãã®ãã¹ãŠãäžç·ã«-ãã®ã¹ã¬ããã§ãŒãããæ £ããã®ã«å€§ãã«åœ¹ç«ã¡ãŸãã
ã¢ã«ãã©ã§ã¯ããã³ããŒID ïŒ1172hïŒ ã䜿çšããããšãã§ããŸã ã
PCIä»æ§ã§ã¯ã以åã®ããŒãžã§ã³ã®ä»æ§ã§ã¯äœ¿çšã§ããªãã£ãããã€ã¹ã¯ã©ã¹ãéžæãããŸããïŒ07h-Simple Communication Controllersã05h-Smart Cardã
次ã«ããã¹ãŠãLinuxã§åäœããã¯ãã§ãã ååã¯SIMã«ãŒããšPCIã®äž¡æ¹ã®çµéšãè±å¯ãªã®ã§ãæè¡çãªèŠä»¶ããããŸãã 圌ã«æè¬ããŸãã é©åã«æžãããææžã¯æŠãã®ååã§ãã ãäœåãªèœæžãããå¿ èŠã§ããã
ææç 究
ãã®ããã€ã¹ã¯ç§ãéçºãããã®ã§ã¯ãªãã®ã§ãåè·¯ãšããŒãã®ãã©ãããããç解ããå¿ èŠããããŸããã
åè·¯éšåã¯ãäœããæ¥ãŠäœã«æ¥ç¶ãããŠããããç解ããããã«å¿ èŠã§ãããããŒãã¯ããã°ã©ããŒãSIMã«ãŒããæ¿å ¥ããå Žæãããã³ãã®ãµãŒãã¹è¡šç€ºãã©ãã«ããããæ確ã«ããŸãã ãããç§ã«æ®é ·ãªåè«ãæŒããæ¹æ³ã«ã€ããŠã¯ãå°ãåŸã§èª¬æããŸãã
ã¹ããŒã ã«ããã°ã672åã®æ¥ç¹ãæã€ã±ãŒã¹ã«2ã€ã®ã¢ã«ãã©Cyclone II EP2C35672C8 FPGAãæèŒããããŒãããããŸãã 1ã€ã®FPGAã¯PCIãã¹ã«æ¥ç¶ããã2çªç®ã®FPGAãå¶åŸ¡ããŸãã åFPGAã«ã¯100åã®SIMã«ãŒããã«ããŒãåãä»ããããŠããŸãã åSIMã«ãŒãã«ã¯ç¬èªã®ãªã»ããããã³ããŒã¿ä¿¡å·ããããCLKä¿¡å·ã¯10æã®ã«ãŒãã®ã°ã«ãŒãã«éãããŸãã
åEP2C35ãããã«ã¯ã105åã®M4Kå éšã¡ã¢ãªãããã¯ãå«ãŸããŠããŸãã åèšã§ãRAMãããã¯ïŒããªãã£ããããå«ãïŒã¯4.608ãããã§ãã
ãããã¯ã¯ã4KÃ1ãã128Ã32ïŒ36ïŒãŸã§ã®ããŸããŸãªæ§æããµããŒãããŸãã
ãã®åŸãç¹å®ã®ã·ã°ãã«ã®æç¶æéãç£èŠããŠããã®ã¯èª°ã§ãäœã®ããã«æåºããã®ããšããè¿œå ã®è³ªåãå«ãææžããã§ã«æžããŸããã SIMãªã©ããã®ããŒã¿ã®å°çã®æ£ç¢ºæ§ã誰ãèæ ®ãããã
PCIãã¹ããã®æåã®ãã€ã¯ãåè·¯ã®ã³ã³ã¿ã¯ããåŠçããåŸãQuartusã®PCIã³ã¢ã®ãã©ã€ã¢ã«ãããžã§ã¯ããäœæããŸãããããã¯ããã¹äžã®æ°ãããã©ã¡ãŒã¿ãŒã§åäœããã¯ãã§ããã ããžãã¯ãªã-ã³ã¢ã®ã¿ã
ãlspci -vvãã³ãã³ãã«å¯Ÿããçããåãåã£ãã®ã§ãç§ã®å¹žçŠã¯ééããããŸããã§ããã
ãã©ã€ããŒãšã¢ããªã±ãŒã·ã§ã³ããã°ã©ã ã®éçºè ãšããã«äœæ¥ãé²ããåŸããã©ã€ããŒãã¡ã¢ãªã«ããŒã¿ãèšé²ããããããèªã¿åã£ãŠæ€èšŒãããã€ããããããžã§ã¯ããäœæããŸããã æåã¯ãåè·¯ã®æåã®ãããã§ã®ã¿ãã§ãã¯ãè¡ãããŸããã
次ã«ã2çªç®ã®è¶ å°ååè·¯ã䜿çšããåæãè¡ãããŸããã
åè·¯å ã®2ã€ã®ãã€ã¯ãåè·¯éã®PLL_OUTåºåãšCLKåºåéã«ã¯ã36æ¬ã®ä¿¡å·ç·+ 2æ¬ã®ç·ããããŸãã åã®ãããžã§ã¯ãã§ã¯ã19ã®ã¢ãã¬ã¹è¡ãšããŒã¿äº€æçšã®2ãã€ãïŒåæ¹åã«1ã€ïŒãä¿¡å·ã®èªã¿åããšæžã蟌ã¿ã«äœ¿çšãããŸããã ããã¯ãæ¢åã®ã«ãŒãã«ã®ä»æ§ã«åºã¥ããŠè¡ãããŸããã ãããŠããŠãããŒãµã«ãã©ã€ããŒãšãœãããŠã§ã¢çšã ããšãã°ãã¢ãã¬ã¹ã«ã¯ç¢ºç«ãããéšåãããããããããµãŒãã¹æ å ±ãå·®ãåŒãããšãã§ããŸãã
ARMããŒã¿ãœãŒã¹ã¯æ¬¡ã®ãããªæ å ±ãä¿åããŸã
Elgato G4_1-ããã€ã¹ã¿ã€ãïŒPCIã«ãŒããK16ããŸãã¯ãK32ããSimbank-ãSimBankãïŒ
SIM51215ïŒSIM900ãŸãã¯ãã®ä»ïŒ-ã€ã³ã¹ããŒã«ãããŠããGSMãŸãã¯3Gã¢ãžã¥ãŒã«ã®ã¿ã€ãïŒATã³ãã³ãã®ã»ãããéžæããããã«å¿ èŠïŒã 説æããããã€ã¹ã«é¢é£ããŠãã©ã®SIMã«ãŒãã«é¢ããŠããã®ã¢ãžã¥ãŒã«ãä»ããŠãªãã¬ãŒã¿ãŒã®ãããã¯ãŒã¯ã«å°éã§ãããã«ã€ããŠã
2014-éçºã®å¹Ž
ver.14.144-ãã¡ãŒã ãŠã§ã¢ã®ããŒãžã§ã³çªå·
SNïŒ0123
ãã¡ãŒã ãŠã§ã¢ã®åã«æ£ãããã®ã«å€æŽããããšãå¿ããªãã£ãå Žåããã®ããŒã¿ããããçŽå±ã®æ¬ãããå€ãã®èå³æ·±ãããšãèŠã€ããããšãã§ããŸãã
Simbankã®å Žåãã·ãªã¢ã«çªå·ã§ååã§ãã æ§é çã«ã¯ãSimbankããŒãã¯åžžã«ããã€ã¹å ã®1ã€ã§ãã ãŸããPCIããŒãžã§ã³ã§ã¯ããã®ãããªããŒãã¯ç€Ÿå ã«1ã€ãããããŸããã
çã¿ã䌎ã決å®
以åã®ã«ãŒãã«ããŒãžã§ã³ã§ã¯ã2ã€ã®BARã䜿çšãããŠããŸããã 1Mã®ã¡ã¢ãªãããã³ã°ãæã€BAR1ã4Kã®å ¥å/åºåã¬ãžã¹ã¿ãšããŠã®BAR0ã ãã¹ãŠã®ã¢ãã¬ã¹ç©ºéã¯ãäž¡æ¹ã®FPGAã«åæã«äžããããŸããã
ããŸããŸãªçç±ã§IOã®äœ¿çšãæŸæ£ããããšã決å®ãããŸããã 第äžã«ããã©ã€ããŒã®éçºè ã¯ã¡ã¢ãªãæ±ãã®ãã¯ããã«ç°¡åã§ãã 第äºã«ããããã¯ãŒã¯ã«ã¯ãå¯èœã§ããã°æ°ããéçºã§IOãæŸæ£ãã䟡å€ãããçç±ãæ°å€ããããŸãã 第äžã«ãã¢ã«ãã©ã®ã³ã¢ã§æ§æã«äœ¿çšã§ããIOãªãœãŒã¹ã®éã¯256ã«å¶éãããŠããŸããå²ãåœãŠãããšãã§ããã¡ã¢ãªãªãœãŒã¹ã¯ã¯ããã«å€ããããŸãã ãããããã®ç§»è¡ã«ãããSIMã«ãŒãã¢ãžã¥ãŒã«ã®åäœãå€æŽãããŸããã ãããŠãããã¯SIM亀æã¢ãžã¥ãŒã«ã®ã»ãŒå®å šãªå€æŽãæå³ããŸããã ããã«ãéåžžã®ã¢ãã¬ã¹æå®ããã®è±åŽã¯ãéåžžã®å Žæã®ããã°ã©ã ã§å¿ èŠãªããããèªã¿åãããšãã§ããªãããšãæå³ããŸããã
2ã€ã®ããŒã¹ã¢ãã¬ã¹ã§ã¯ãªã1ã€ã®ããŒã¹ã¢ãã¬ã¹ã§è¡ãããšãã§ããŸããã æåã®ãããã®ã«ãŒããšäº€æãããšãã1ã€ã®ã¯ããã¯ä¿¡å·ãä¿åããªãã§ãã ããã ããŒã¿äº€æã®ãã®éšåã¯é³å£°äŒéã«é¢äžããªãããã20ããªç§ä»¥äžã®é 延ãåŸãããã«ããªç§ãç¯çŽããå¿ èŠã¯ãããŸããã ããããããã¯ç§ã«ã¯æ£ããããã«æããŸããã
æ§é
ã¡ã¢ãªãžã®ãã¹ãããŒã¿ã®æžã蟌ã¿ã®æåã®æåãšæ€èšŒã®åŸãSIMã«ãŒããšããŒã¿ã亀æããããã®æ§é ãæ§ç¯ããŸãã ç§ã¯é·ãéãããè¡ãæ¹æ³ã®å€§ãŸããªã¢ã€ãã¢ãæã£ãŠããŸãããããã¹ãã®åŸãç§ã¯ãããããŸããããšä»®å®ããæºåãã§ããŠããŸããã ãããŠãè¡ããããã¹ãã¯èãåºãããç¡é§ã§ã¯ãããŸããã§ããã
æ¢åã®36 + 2ä¿¡å·ç·ã§ã¯ãPCIãã¹ãµãŒãã¹ä¿¡å·ãå€æŽããã«2çªç®ã®ãããã«å€æããã®ã«ååã§ã¯ãªãã1ãã€ããŸãã¯2ãã€ãã§ã®éåä¿¡ãå¶éããããããŸããã§ããã ã¢ãã¬ã¹ãšããŒã¿ãã¹ã«ãŸããã£ãŠããŠãã
ãããã£ãŠã36æ¬ã®ä¿¡å·ç·ã®ãã¡32æ¬ãçŽã¡ã«ããŒã¿ãã¹ïŒããã³ã¢ãã¬ã¹ïŒã«éä¿¡ããã1æ¬ã®ä¿¡å·ç·ãã·ã¹ãã ã®äžè¬çãªãªã»ãããå¶åŸ¡ããä»ã®3æ¬ã§ã¯ãã¹ãŠã®ã³ã³ãããŒã«ãæ©ããŠåæããŸããã CLKä¿¡å·ãéä¿¡ããããã«ãå¥ã®åç·ããããŸããã
ãµã€ã¬ã³ãã¢ãŒããã¢ãã¬ã¹è»¢éã¢ãŒããã·ã³ã°ã«ããŒã¿èšé²ã¢ãŒããã¹ããªãŒãã³ã°ããŒã¿èšé²ïŒããŒã¹ãïŒããã¹ã¯èšé²ã¢ãŒããèªã¿åãããã³ã¹ããªãŒãã³ã°èªã¿åãã 3ã€ã®ä¿¡å·ç·ã«é©åãã8ã€ã®ãã¹ç¶æ ã®ã¿ã
ãã¹ã¯ã«ããèšé²ã®ããã«4ã€ã®BEä¿¡å·ãéä¿¡ããã ãã§ãã ãã®ã¢ãŒãã䜿çšããå ŽåãããŒã¿ãã¹ã®äžäœ4ãããã§ããããé衚瀺ã«ããããšã«ããŸããã
FPGAã®åSIMã«ãŒãã«å¯ŸããŠãå¯èœãªæ倧ãããã¡ãå²ãåœãŠãããŸããã åç·ã®åäºéã€ã³ã¿ãŒãã§ãŒã¹ã¯ã¹ããŒãã«ãŒãã§å®è£ ãããŠããããã100æã®ã«ãŒããããããã€ã¯ããµãŒãããã«ã¯10ââ5åã®ã¡ã¢ãªã»ã«ãããªããããéåä¿¡çšã®ãããã¡ãäœæããããšã«ããŸããã ãããŠãéä¿¡ãŸãã¯åä¿¡ã®éå§æã«ã¢ãã¬ã¹æå®ããªã»ããããŸãã 幞éãªããšã«ãæšæºã«ããã°ãã³ãã³ãããšã«256ãã€ããè¶ ããããŒã¿ãSIMã«ãŒãããååŸããããšã¯ã§ããŸããã ãããã£ãŠã䜿çšå¯èœãªãããã¡ã¯ãæžç®ãããŸã§ãªãŒããŒãããŒããŸããã
ããã§ã®ãããŒã ããšããçšèªã¯ãISO-7816æšæºãšã¯å°ãç°ãªããŸãã ããã§ã¯ãã³ãã³ãã®äžã§ãã«ãŒããžã®ã¢ã¯ã»ã¹ãã«ãŒãããã®ç¢ºèªãããŒã¿ã®é ã«ã¢ã¯ã»ã¹ããŸãã ãããããããã¡ã®ãŒãåãããŒãåãŸã§ã®ããŒã¿éã«èå³ããããŸãã
2çªç®ã®ãã€ã¯ãåè·¯ãšããŒã¿ã亀æããããã®ãããã¡ãŒãäœæããã®ã§ã¯ãªãã2çªç®ã®ãã€ã¯ãåè·¯å ã®SIMã«ãŒãã®ã¡ã¢ãªã«çŽæ¥æžã蟌ãããšã«ããŸããã ãã§ã«105åã®ã¡ã¢ãªãããã¯ãã102åã®ã¡ã¢ãªãããã¯ãååŸããŠãããããæåãš2çªç®ã®ãã€ã¯ãåè·¯ã®éžæã¯ãããããBAR0ãŸãã¯BAR1ãžã®ã¢ã¯ã»ã¹ãéããŠéžæãããŸãã
BAR0ãšBAR1ã«ã¯ç°ãªãã³ã³ãããŒã©ãŒãäœæãããŸãã 2çªç®ã®ãã€ã¯ãåè·¯ã¯1ãµã€ã¯ã«åŸã«ã¢ã¯ã»ã¹ãããŸãããããã¯PCIãã¹åŽã®TRDYä¿¡å·ã®é 延ã«ãã£ãŠèª¿æŽãããŸãã
ãããããšã«64Kã®ã¡ã¢ãªãå²ãåœãŠããã128åã®ã¹ããŒãã«ãŒããåŠçããã®ã«ååã§ãã 100åãããŸãããŸã 28ãããã¯ãæ®ã£ãŠããŸãã 2ã€ã®ãããã¯ã«ãã«ãŒãã®ãªã»ããç¶æ ãšçºæ¿ã¬ãŒãã«é¢ããæ å ±ãä¿åããããµãŒãã¹æ å ±ãé 眮ããŸãã æ»ããšãSIMããåä¿¡ããããŒã¿ã®éãè¿ãå¿ èŠããããŸãã
次ã«ãããããã¹ãŠãæ©èœãããŠãããã°ããå¿ èŠããããŸãã 100æã®SIMã«ãŒãã®ãããžã§ã¯ãã¯éåžžã«é·ãæéã³ã³ãã€ã«ããã100æã®SIMã«ãŒãã¯1æãŸãã¯10æãããã¯ããã«é«äŸ¡ãªã®ã§ã1æãã5æã®ã«ãŒãã§äº€æãããã«ãããã°ããæ®ãããã¹ãŠè¿œå ããããšã«ããŸããã ãããŠãååã ãããããã°ãããã¹ãŠãããŸããã£ããšå€æãããã2çªç®ã®ãããã«é²ã¿ãŸãã
ãããŠãé©ããç§ãåŸ ã£ãŠããŸããã
ã«ãŒãã®é£çµ¡å ã«1ã100ã®çªå·ãä»ããããŠããã¹ããŒã ããããŸããFPGAã®é£çµ¡å èšå®ãæ£åžžã«ã€ã³ããŒããããããŒããããžã§ã¯ãããããŸãïŒPCIåäœãã¡ã¢ãªãžã®ãã¹ãæžã蟌ã¿åäœããã€ã¯ãåè·¯éã®äº€æãåäœããŸãïŒã ãã®ãããžã§ã¯ãã¯5æã®ã«ãŒãçšã«ã³ã³ãã€ã«ãããŠããããã0ãŸãã¯1ããã®çªå·ä»ãã®éå§ãééããå Žåã2æç®ã®ã«ãŒããæ©èœããŸãã ãã€ãã
ãŸããäœããããŒãäžã«10åã®LEDããããŸãã åŸã§ãããã«å¯ŸåŠããã€ããã§ããããåŸã§å°ãè¿ãã«ããã·ã¥ããå¿ èŠããããŸããã LEDããªã³/ãªãããç°¡åãªãã®ãè¿œå ãã
ãªã·ãã¹ã³ãŒãã䜿ããŸãã CLOCKã¯ãããŸããããªã»ããã¯ãããŸããã ããŒã¿ããããŸããã
ããŒã¿ã®ã€ã³ããŒãã«å€±æããŸãããïŒ åè·¯ãããŒããšæ¯èŒããããŒããšåè·¯ãQuartusã®Pin Plannerã§æ¯èŒããŸãã äžèŽããŸãã ãããããªã»ããã¯ãããŸããã
ãããŠãããã§äžçŽåå¿ãç§ã®å©ãã«ãªããŸãã ãããŠã圌ã¯ãSIM0ãããã°ã©ã ã®ã
ããã§ãP-CADã®PCBãããžã§ã¯ãã®äžéšã®ã¹ã¯ãªãŒã³ã·ã§ãããæ®ãããšãã§ããŸãã ä¿¡å·ã®çœ²åããããŸã
ããŒãã§ã¯SIM 199ããããžã§ã¯ãã§ã¯SIM0ã§ãã ãã®ãããžã§ã¯ãã¯5æã®ã«ãŒãçšã«ã³ã³ãã€ã«ãããŠããŸãã ïŒ100ã®å Žåã圌ã¯ãŸã é©åããŠããŸããïŒã ãããã£ãŠãæ®ãã®95æã®ã«ãŒãã¯åã«æäŸãããŸããã ãããŠã圌ãã«ãšã£ãŠã¯ãFPGAã®ã¡ã¢ãªãããã¡ã圢æãããŸããã
ãªãœãŒã¹ãç¯çŽããããã«ãSIMã«ãŒããåäœããåšæ³¢æ°ã§ã¡ã¢ãªãããã¯ãã¯ããã¯ããããšã決å®ãããŸããã ãããã£ãŠãå¿ èŠãªãã£ãã€ããŒã¯å°ãªããªããŸãã ãŸããåšæ³¢æ°ãäœããšããããã®é«éãªãœãŒã¹ã«ç°¡åã«ã¢ã¯ã»ã¹ã§ããŸãã PCIãã¹é床ïŒ33 MHzïŒã§SIMã«ãŒãã®ãããã¡ãŒã«æžã蟌ã¿ãSIMã«ãŒãã®äœæ¥é床ã§èªã¿åãããšãèšç»ãããŠããŸããã ãã¥ã¢ã«ããŒãã¡ã¢ãªã®å®è£ ã«ã¯å¶éããããããCyclone IIã¯ä»ã®ãœãªã¥ãŒã·ã§ã³ãæ¢ãå¿ èŠããããŸããã ãã®çµæãPCI_CLKãããã¹ãŠã®33 MHzãããã¯ãã¯ããã¯ããã®ãæãç°¡åã§æãæ£ããããšãå€æããŸããã ãŸãããã«ããããã«ãŠã³ã¿ã®æ°ãæžããã«ã¯ãã¯ããã¯ã¬ãžã¹ã¿ã®ã€ããŒãã«ä¿¡å·ã䜿çšããå¿ èŠããããŸããã ããã«ããã®ã¢ãããŒãã«ãããmultycycleã䜿çšããŠTimingAnalyzerã®æéå¶çŽãç°¡åã«èšè¿°ã§ããããã«ãªããŸããã
ã¢ãã«ã®ã«ã¹ã¿ãã€ãºã ãã¹ãŠã®çºæãæåãããã«ã¯ãã¢ãã«ãå¿ èŠã§ãã PCIã³ã¢ã®å Žåãã¢ãã«ã¯ã¢ã«ãã©ã«ãã£ãŠæäŸãããŸãã ã¹ããŒãã«ãŒãã®å Žåãèªåã§ã¢ãã«ãäœæããå¿ èŠããããŸããã
ãã®ãœãªã¥ãŒã·ã§ã³ã®æ¬ ç¹ã¯ãSIMã«ãŒããã©ã®ããã«æ©èœãããã誀解ããå Žåãã¢ãã«ã誀ã£ãŠèšè¿°ããããšã«ããªããŸãã ããããäœãèµ·ãããŸããã§ããã 確ãã«ãããã§ã¯ãããŸããã
ã·ãã¥ã¬ãŒã·ã§ã³ã«ãããæåã®ã«ããã«ã®ååã®æ³šæããããããšã¯ã§ããŸããã§ããããåŸã§ãããã°æ®µéã§ããŒããŠã§ã¢ãåŠçããå¿ èŠããããŸããã ã¢ãã«ã®äœãåé¡ã§ãã©ã®ããã«ãã¹ããã
T0 / T1ãŸãã¯æåãå°œããå¿ èŠã¯ãªããæ£ãããã
æåã«ãATR SIMã«ãŒãã®ãªã»ãããšèªã¿åããé床ã®å€æŽãããã³åçŽãªã³ãã³ããA0 A4 00 00 02ãã®éä¿¡ã«é¢ããäœæ¥ãSIMã«ãŒãã¹ããããã·ã³ã§ãããã°ãããããããã¹ãŠãA4ããšåçããå¿ èŠããããŸããã é»æºãå ¥ãããšãã¹ãŠèªåã§ãªã³ã«ãªããOSãèµ·åãããŸã§ã«SIMã«ãŒããæé«é床ã§äœ¿çšã§ããèªåãã·ã³ãäœãããã£ãã®ã§ãã ããã«ãããèµ·åæã«200ïŒ200ïŒïŒSIMã«ãŒãã®åæåããããã°ã©ã ãã¢ã³ããŒãã§ããŸãã
äžéšã®SIMã«ãŒãã§ã¯ãã¹ãŠãããŸããããäžéšã®ã«ãŒãã¯é åºã«h'3Bãé ã£ãŠéãã«ãªããŸããã ãã®çµæãã¿ã€ããŒããã·ã³ã§äœåããSIMã«ãŒãããªã»ããããŸãããã圌女ã¯ããªãã圌女ãšè©±ããé床ãæããŠãããŸããã§ããã 3ãã€ããŸãã¯3ãã€ã以äžãåä¿¡ããå ŽåãATRãèªã¿åãããäœæ¥ãç¶è¡ã§ãããšèããŸããã ã¢ãã«ã§ã¯ãã¹ãŠãçŽ æŽãããã£ãããçµå±ã®ãšãããç°ãªãSIMã«ãŒãã¯ATRãç°ãªãæ¹æ³ã§äžããŸãã äžåºŠã«ãã¹ãŠã®æ å ±ãæäŸãããã®ãããã°ãh'3BããããŒãéä¿¡ããåŸãäžæåæ¢ããŠãããã¹ãŠã®æ å ±ã衚瀺ããããã®ããããŸãã äžæåæ¢ãå¢ãããšããã®åé¡ã¯è§£æ±ºããŸããã ãšããããã äžéšã®SIMã«ãŒãã¯ããã€ãh'3Bã®åŸã®æåãšåã倧ããªäžæåæ¢ã§æçµããããæäŸããŸãã
解決ãããŸããã ã¹ããŒããã·ã³ãªããèªçºçãªé床å€æŽãªã©ã ããã»ããµã«èããããŠãã ããã 圌ã¯ããªã»ãããçºè¡ãããããåé€ããã«ãŒãããã®ããŒã¿ã®äžéšããã€å®äºããããèæ ®ãããã¿ã€ãã³ã°ã決å®ããŸãã
ããããåé¡ããããŸãã ãŸã ãã¹ãŠã®ãã³ãæ§æããŠããããåãããã«å¿ èŠãª100åã®ãã¡80ã85åã®SIMã«ãŒããããããŸããã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãã©ã€ããŒã«ãããå®è¡ãããŸãã 圌ã«ãšã£ãŠã¯é£ããããšã§ã¯ãããŸããããç§ãã¡ã«ãšã£ãŠã¯ããåºã ãšããŠããŸãã
次ã«ãOSãããã©ã€ããŒããæ¢ã«åä¿¡ããä»ã®ã³ãã³ãã䜿çšããŠãããã°äœæ¥ãè¡ããŸããã å€æ°ã®SIMã«ãŒãã§ã®ãããã°ã ãããŠãæ°ãããçºèŠãã
200ã®197
200æã®ã«ãŒãã®ãã¡197æãæ©èœãããã3æã¯æ©èœããªããã©ãããå€æããæ¹æ³ã¯ããããæ£ç¢ºãªä»äºãã©ããïŒ ãªãã¬ãŒã¿ã«ãã£ãŠãããã¯ãããSIMã«ãŒãã§ãã¹ããå®è¡ãããŸããããSIMã«ãŒãã¯ãªã»ããã«å¿çããSMSã¡ãã»ãŒãžãèªåèªèº«ã«æžã蟌ããµããããŸããã æ£åœãªçç±ã§3æã®ã«ãŒããããã¯ãããŠããå¯èœæ§ããããŸãããééã£ãŠããŸãã ç§ã¯çŽ æŽã§ããã
ãªã¢ã«ã¢ãŒãã§ã®æåã®äœæ¥ã§ã¯ããã¹ãŠãæ£ããããšã瀺ããŸããã æ±ãã
ãããŠèŠã€ããã ããã§ã¯ãããŸããã ãã¹ãŠã®SIMã«ãŒãã®äº€æãã°ãæŽçããŠãããååãå©ããŠãããŸããã 倧ããªããŒã ãèšé²ãããšãã«ãã«ãŠã³ã¿ãŒããžã£ã³ãããããšãããããšãå€æããŸããã ãããŠãé·ãéä¿¡ã®éäžã§1ãã€ãã2åæžããŸããã è¡åã¢ããªã³ã°ã¯é·ãããžãã¹ãªã®ã§ãã¢ãã«ã§é·ãã³ãã³ãã䜿çšããŸããã§ããã çããã©ã³ã¶ã¯ã·ã§ã³ã«éå®ãããŸãã 圌ã¯ã«ãŠã³ã¿ãŒã®åãæšãŠãµã€ãºãäœããŸããã 圌ã¯äžæ©èžã¿åºããã·ãã¥ã¬ãŒãããã§ãã¯ãç²åŸããŸããã å°ããäžæ³ïŒããããŠç¶ããŸãã ãã€ããã¯ãŒããããã«ã¯ãŒããæžãçããŸããã ããã€ãã®ã¢ãã¬ã¹ãæž¡ãããŸãã-ãããŠããã¹ãŠãããŸãããã§ãããã
ãããŠä»ãå°ããªã¢ãã«ã§ã¯ãã¹ãŠãããŸããããŸããã人çã§ã¯ããŸããããŸããã ãã®å Žåããšã©ãŒãçºçããåã«ãSIMã«ãŒãã¯çªå·ïŒã«ãŒãã«èšé²ãããŠããå ŽåïŒãICCIDãIMSIãªã©ãæäŸããŸãã ãŸããSIMã«ãŒããžã®æžã蟌ã¿/èªã¿åããã·ãã¥ã¬ãŒãããå Žåã åžžã«ã§ã¯ãããŸãããã200æã®ã«ãŒãã®ãã¡3æã ããééããç¯ããŸãã
ããã°ã©ã ãã°ãšè«çã¢ãã©ã€ã¶ãŒãæåã§æ¯èŒããçµæãSMSã¡ãã»ãŒãžã®æ¬æã§ãšã©ãŒãçºçããããšãããããŸããã åæã«ã197æã®ã«ãŒãã§ã¯ããã£ã³ã¬ãŒãéããŠãã®ãšã©ãŒã«CRCãã«ãŠã³ããããŸãã ãªãããçš®ã®SMSã«æ©ãŸããã3æã®ã«ãŒããæé«ã®æéãåŸ ã€ã®ãã
æã¡äžããããã¢ãã«ãå®æãããŸãããããã¹ãŠãé 調ã«é²ãã§ããŸãã ã©ãããŠïŒ
ã«ãŠã³ã¿ãŒãå®å šã«ãã§ãã¯ããŠã¢ãã«ãå®è¡ããŸãïŒ33 MHzã6ã§é€ç®ãã次ã«372ã§é€ç®ããæ¡ä»¶ä»ãã§4ã§é€ç®ãã次ã«16ã§é€ç®ããïŒã ã¢ãã«ã¯å€ã«èµ·åããååäžã«ãã¹ãŠãèŠãããšæããŸã...
ãããŠååäžã¯ãOSã®ç¡ç ãåäŸã®ç¡ç ããã£ããããŸãã 圌女ã¯çé»åã¢ãŒãã§ç»é¢ããªãã«ããŸããã ããããç§ãã¡ã¯åœŒå¥³ãšäžç·ã«å¯ãããšãã§ããŸããã§ããã 300æé以äžã®ä¿¡å·ãšââãã¹ã4æé以äžã¢ããªã³ã°ããåŸã圌女ã¯ãéŽãè±ãããšãªããç ãã«èœã¡ãŸããã ãããŠãååäžã«3åç®ãéå§ããŸããã ã·ã¹ãã å šäœã埩å ããå¿ èŠããªãã£ãããšã¯ããªããŠå¬ããããšã§ãã
æ¥äžã®ä»äºãç¡ç ã®ã·ã£ããããŠã³ã ãããŠç¿æãç§ã¯ééããèŠã€ããããšãã§ããŸããã ãã®æ¥ã®åã®çå®ã¯ãä»ã®ããããçš®é¡ã®ããªãã¯ã§å¯Ÿæ±ºã«è¡ããŸããã ãããŠã幞ããªæ¥ã®æãç§ã¯ãã§ã«ã©ãã§ééããæ¢ãã¹ããçåã«æã£ãŠããŸããã
ããã¯æåŸã§ã¯ãªããçç£ã«é¢ããŠããæçœã§ç°¡åãªä»ã®ãšã©ãŒããããŸããã
ããºã«ãçµã¿ç«ãŠã
ã¹ããŒãã«ãŒãã§ã®äœæ¥ãå®å®ããŠãããšä»®å®ããŠã2çªç®ã®ããããæ¥ç¶ããŸããã ãããžã§ã¯ãã®æåã 次ã«ãã¢ãã«äžã§ã ããããéã§ã äžåºŠã«ãã¹ãŠã§ã¯ãããŸãããããã®éšåãå æããŸããã 200åžãã¹ãŠãåæã«æ©èœããé£äººãšå¹²æžããªãããšã確èªããæ¹æ³ SIMã«ãŒãã¯ã©ãã§å ¥æã§ããŸããïŒ ãžã³ãã«ã§200åãèŠã€ãããŸããã èµ·åããŸããã
圌ãã¯éå§ããéè¡ã«ç¢ºèªãæ±ããŸããã ãããŠãããäžã€ã®é©ãããããŸãã SimBankã§ãã¹ãŠã®å Žæãå æãããŠããå Žåããã¹ãŠãæ£åžžã§ãã ã«ãŒãã¯å®å®ããŠæ©èœããé »ç¹ã«å»æ£ãããããšã¯ãããŸããã ãŸããã«ãŒãã®äžéšãåãä»ããããŠããªãå Žåã代ããã«å®æçãªãªã»ãããè¡ãããŸãã ãã ããé£æ¥ããFPGAã®å¯Ÿç§°ã«ãŒãã§ãªã»ãããçºçããå ŽåããããŸãã ãªãã§ïŒ
ç§ã¯ãŸã ãã®è³ªåã«å¯Ÿããçããæ¬åœã«ç¥ããŸããã ããããã¢ã«ãã©ã®Quartusã§Signal Tap II Logic Analyzerãäœã§ããããããããŸããã ããã䜿çšãããšãJTAGãä»ããŠPCIãã¹ã®ä¿¡å·ç¶æ ãåŒãåºãããšãã§ããŸããã ãããžã§ã¯ããå€æŽããã«ãŠã³ãããŠã³ãéå§ãŸãã¯åæ¢ããæ°ããä¿¡å·ãäœæããããšã«ãããFPGAå ã®äžéšã®ããŒãã衚瀺ããããšãã§ããŸããã ãããã£ãŠãããšãã°ã8ãã€ããè¶ ããèªã¿åããŸãã¯æžã蟌ã¿ãè¡ããšãããŒã¹ãã¢ãŒããã»ãšãã©ãªã³ã«ãªããªãããšãç¥ã£ãŠé©ããã èšé²ã«ãã£ãŠã決ããŠããããŠ2ã€ä»¥äžã®PCIãµã€ã¯ã«ãèªã¿åããšãã ã40ãã€ãã®èªã¿åããã³ãã³ãã¯ããã°ã©ã ããååŸãããŸãããèªã¿åãã«ã¯ãããã4ãã€ãããããŸãã ã¢ãã¬ã¹ã®èšå®ããPCIãž
æŸé»ã®åé¡ã¯ããã©ã€ããŒã«ãã£ãŠããã°ã©ã ã«ãã£ãŠéšåçã«è§£æ±ºãããŸããããéšåçã«ã¯ãããè¯ãæéãŸã§éè¡ã®å¥æ°ã®SIMã«ãŒãã䜿çšããŸããã§ããã
èŽè¡ãžã®è³ªåïŒLinuxïŒCentos 6 32-bitïŒã§ãã¹ãŠã®ã¢ã¯ã»ã¹ãã°ãããã€ã¹ã«æžã蟌ãå¯èœæ§ã¯ãããŸããïŒ PCIãã¹ã®åäœã劚ããªãããšããå§ãããŸãã ãã³ããŒID /ããã€ã¹IDãèšå®ãããã®R / Wã¢ã¯ã»ã¹ãã°ããã¹ã«ä¿åã§ããããã«ããã«ã¯ïŒ
ãŸãšã
ãã®çµæããã¹ãŠã®æ¹åãå®äºãããŸã§ã«ãå®å šãªFPGAãããžã§ã¯ãã¯ããžãã¯ãšã¬ã¡ã³ãã®89ïŒ ãšäœ¿çšå¯èœãªå éšã¡ã¢ãªã®85ïŒ ãæ¶è²»ããŸãã ãã¹ãŠãé©åããããã¯ãããžã§ã¯ãã®åºæ¬çãªããŒã¹ãšæ§é ãæ£ããéžæãããŠããããšãæå³ããŸãã
ã¹ããŒã ã«ããã°ããããžã§ã¯ãã¯33 MHz PCIã¯ããã¯ä¿¡å·ã®ã¿ã䜿çšããããã2ã€ã®50 MHzçºæ¯åšãç¯çŽãããŸãããããã¯äœ¿çšããããå°æ¥ããŒãã«ã€ã³ã¹ããŒã«ãããªãå¯èœæ§ããããŸãã ãã®ãããžã§ã¯ãã¯ãä»æ¥ãã¹ãªããããããã¹ãŠã®ãã¶ãŒããŒãã§åäœããŸãã
GSMãã£ãã«ã ãã§ååãªå Žåãããã€ã¹ã¯ãããã¯ãŒã¯äžã®ãã¹ãŠã®ã«ãŒããäžåºŠã«ç»é²ã§ããŸãã
çŸåšãã客æ§ã®ãã¡ãŒã ãŠã§ã¢ãšãã©ã€ããŒã®æŽæ°ã«å ããŠãããã€ãã®ããã€ã¹ãåäœããŠããŸãã SprintSMSãããžã§ã¯ãçšã«SMSãéä¿¡ãã人ãããŸãã ãã®ä»ã¯ãåœç€Ÿã®æè¡ãµããŒãã«ãã£ãŠãä¿è·ããããã客æ§ã®å©çã®ããã«æ©èœããŸãã ããã«ããã顧客ã®ä»äºã®æ¬è³ªãšã圌ãæ¬åœã«å¿ èŠãªãã®ãç解ããããšãã§ããŸããã 人éå·¥åŠãšè¿œå ã®ãœãããŠã§ã¢æ©èœã®äž¡æ¹ã®é¢ã§ã ããã«ãå®å®ããŠåäœããããã€ã¹ïŒãžã³ã¯ããªãããã«ããã¯ããã¯ããã¯ïŒã«ããããœãããŠã§ã¢ã®ãããã°ãæ¹åãããŸããã
ããããããã¯å¥ã®è©±ã§ãã
ã©ããããããšãã
èšäºã«é¢å¿ãããèªè ã ä»ã®èšäºã®èè ã«ãæçãªã¬ãã¹ã³ã®ããã«ã Habr for Habrã®ã¯ãªãšã€ã¿ãŒãžã å°é£ãªæ代ã®å©ããšãæäŸããããçµéšã®ããã®ååã ãªãŒããŒãž-ç解ã®ããã«ã
PSããŒãã¹ãšããŠãSimBankã®äœæ¥ãèŠèŠçã«å¶åŸ¡ããWebããŒã¹ã®ã€ã³ã¿ãŒãã§ã€ã¹ã®ç»åã
ããã·ã ã«æè¬ããŸãã
ããã§ãSimBankã¯100æã®ã«ãŒãã®ã¢ãŒãã§èµ·åãããŸãã
ãããããæ å ±ãå·®ãåŒããã«ãŒãã®ãªã¹ãã PINãå¿ èŠãšããã«ãŒãã§ã¯ãæ å ±ã®äžéšã¯å©çšã§ããŸããã
Webã€ã³ã¿ãŒãã§ãŒã¹ã¯ã¹ããŒããã©ã³ãããå©çšã§ããŸãã
çŸåšåäœäžã®é»è²ã®ã«ãŒãã¯åŒ·èª¿è¡šç€ºãããŸãã