
FPGAã10幎以äžäœ¿çšããŠãããšããããŸããŸ4ã€ã®ç°ãªãã¡ãŒã«ãŒã®è£œåã䜿çšããŠããŸããã ãã®ãããªå€æ§æ§ã«ãããéçºããã»ã¹ã®äžè¬çãªæ©èœãšç¹å®ã®äŒæ¥ã«åºæã®æ©èœã®äž¡æ¹ã«æãã泚æãåããããšã«ãªããŸãã ãããŠä»ãæ°ã¶æåãç§ã¯çªç¶ãã«ãªãã©ã«ãã¢ã®å°ããªéå¿çãªäŒç€Ÿã«ãã£ãŠçç£ãããæ°ããFPGAãã¡ããªãŒãç¥ããŠããŒã¯ãªæ©äŒãåŸãŸããã ç§ã¯æ幎å°ã®FPGAã¡ãŒã«ãŒã§ããAkroniksïŒAchronixïŒãšãã®FPGA Speedster22i HD1000ã«ã€ããŠè©±ããŠããŸãã
åµæ¥ïŒ2004幎ïŒä»¥æ¥ããã®è¥ãäŒç€Ÿã¯ãç¬èªã®ã¢ãŒããã¯ãã£ãšç¬èªã®æ©èœãåããHI-End FPGAãéçºããããšãã§ããŸããã ããã«ãå瀟ã¯ãã¹ãŠã®FPGAã¡ãŒã«ãŒã®äžã§ã€ã³ãã«ã³ãŒãã¬ãŒã·ã§ã³ãšæŠç¥çææºãçµãã æåã®äŒæ¥ã§ããããã以æ¥ãã€ã³ãã«ã®æå 端ã®æè¡æ ç¹ã§ç¬èªã®ãã€ã¯ãåè·¯ïŒå³ãããããããã«ãµã€ãºãããã€ã¯ãããã¯ããã«è¶ ããŠããŸãïŒã補é ããŠããŸãã¢ã¡ãªã«ã«çŽæ¥ã çŸåšãSpeedsterã·ãªãŒãºã¯3D Tri-Gate 22nmãã¯ãããžãŒã§å©çšã§ããŸãã è¿ãå°æ¥ãã·ãªãŒãºéçºããã°ã©ã ã¯14nmããã³10nmã®æè¡ããã»ã¹ãžã®ç§»è¡ãæäŸããŸãïŒIntelã®å·¥å Žã§ç¿åŸãããããïŒã
ãã®ã¬ãã¥ãŒèšäºã§ã¯ãäžæ¹ã§ãSpeedster FPGAã§åäœããããã«äœ¿çšããã補åãç°¡åã«èª¬æããä»æ¹ã§ãéåžžã«ã·ã³ãã«ã ãå®éã«å®æãããããžã§ã¯ãã®äŸã䜿çšããŠããããã®è£œåã§ã®ç§ã®çµéšïŒææ ãå«ãïŒã«ã€ããŠèª¬æããŸãã ã ãã...
éãšéçºããŒã«
ãããããä»æ¥ã®ä»äºã§Speedster22i FPGAã«æ £ããå¯äžã®æ¹æ³ã¯ãSpeedster22i HD1000éçºããããããã°ããããè³Œå ¥ããããšã§ãïŒã®ãããã¬ã³ã¿ã«ããªãŒã¹ãšããŠåãåãïŒã é éãåŸ ã€éçšã§æºåäœæ¥ãè¡ãããŸãããæ°Žå·ã32GB RAMã2å°ã®ã¢ãã¿ãŒãåãã匷åãªã³ã³ãã¥ãŒã¿ãŒãè³Œå ¥ãããŸããã éçºããŒã«ãå ¥æããã«ã¯ãAchronix Webãµã€ãïŒhttp://www.achronix.com/company/contact-us.htmlïŒã«ç»é²ãããŠãŒã¶ãŒã¢ã«ãŠã³ããååŸããå¿ èŠããããŸããã ãŠãŒã¶ãŒã¢ã«ãŠã³ãã«ãããäœæ¥ã«å¿ èŠãªãœãããŠã§ã¢ããã¢ããã³ãªã³ã¯ãã¶ã€ã³ãå«ãŸãããµã€ããšãªã¢ãžã®ã¢ã¯ã»ã¹ãèš±å¯ãããŸãã ãããã®éãã¯äœã§ããïŒ ãªãã¡ã¬ã³ã¹ãã¶ã€ã³ã«ã¯FPGAã®ãœãŒã¹ã³ãŒããä»å±ããŠããŸãããéåžžããã¢ãã¶ã€ã³ã«ã¯FPGAã®ããŒããã¡ã€ã«ããå«ãŸããŠããŸããã
ç»é²ã®ç¢ºèªã«ã¯æ°æ¥ãããããŠãŒã¶ãŒåãšãã¹ã¯ãŒããå«ãæçŽãåãåã£ãŠçµäºããŸããã ãã®åŸãå¿ èŠãªããŒã«ãããŠã³ããŒãããããšãå¯èœã«ãªããŸãã-ACEãšåŒã°ããAchronixç¬èªã®ã·ã§ã«ãšSynplifyã·ã³ã»ãµã€ã¶ãŒã ãã ãããããã®ããã°ã©ã ãæ©èœããããã«ã¯ãã©ã€ã»ã³ã¹ãã¡ã€ã«ãå¿ èŠã§ãã ãããè¡ãã«ã¯ãå¥ã®ãã©ãŒã ã«èšå ¥ãããããã¯ãŒã¯ã«ãŒãã®MACã¢ãã¬ã¹ãæå®ããŸãã ã©ã€ã»ã³ã¹ãã¡ã€ã«ã¯é»åã¡ãŒã«ã§éä¿¡ãããŸãã ãããã®æ¥ç¶ãåé¡ãåŒãèµ·ãããŸããã§ãããããã«ããã®ããã»ã¹ã®è©³çŽ°ã¯ããã¥ã¡ã³ãã«èšèŒãããŠããŸãã ã³ã³ãã¥ãŒã¿ãŒã«Windowsãã€ã³ã¹ããŒã«ãããŠããŸãããRed Hat Linuxçšã®éçºããŒã«ãå©çšã§ããŸãã
ããŒããå°çãããŸã§ã®æ®ãã®æéã¯ãFPGA Speedster22i HD1000ã®ã¢ãŒããã¯ãã£ã®ç 究ãèšèšããŒã«ã®ç¿åŸãããã³åçŽãªèšèšã®äœæã«è²»ããããŸããã
Speedster22iã·ãªãŒãºã®äœããããããã§ããïŒ ä»ç€Ÿè£œåãšã®éãã¯äœã§ããïŒ FPGA Speedster22iã«ã¯ç¬èªã®ããã€ã©ã€ããããããŸã-é«ééä¿¡ã¿ã¹ã¯ã«çŠç¹ãåœãŠãããŒããŠã§ã¢IPã³ã¢ã Achronix FPGAã³ã¢ã¯ãŸã 競åç¶æ ã«ãããŸããã ã³ã¢ã®åœåæ³ïŒDDR-3-6åãPCI Express Gen1 / 2/3 x1ãx4ãx8-2åãæ倧100Gã®ã€ãŒãµãããMAC-2åãInterlaken-2åãåèšã¹ã«ãŒãããã¯400以äžGb / sããã¡ãããSpeedster22iã·ãªãŒãºã®FPGAãHI-ENDãšããŠåé¡ã§ããŸãã

ãã以å€ã®å Žåãæ§é ã§æ€èšäžã®FPGAã¯ãä»ã®ã¡ãŒã«ãŒã®è£œåãšå€§å·®ãããŸããïŒè«çã¯ã©ã¹ã¿ãŒïŒ4å ¥åLUTã«åºã¥ãïŒããããã¯ã¡ã¢ãªãåæ£ã¡ã¢ãªãããã³åŒ·åãª56ãããä¹ç®åšãå«ãç®è¡ãããã¯ã§æ§æãããŠããŸãã ãããã¯ãã¹ãŠãæãè€éãªæ©èœãå®çŸããã®ã«ååãªéã§å©çšã§ããŸãã é床ç¹æ§ãå°è±¡çã§ããããšãã°ãã¡ã¢ãªã®æ倧åäœåšæ³¢æ°ã¯750 MHzã§ãã Speedster22iã·ãªãŒãºã®FPGAã®äž»ãªç¹åŸŽã以äžã®è¡šã«ç€ºããŸãã
ãã©ã¡ãŒã¿ | HD680 | HD1000 | HD1500 |
ããŒããŠã§ã¢ã³ã³ãããŒã©ãŒãå«ãããžãã¯ã¹ã³ãŒãïŒæå¹ãªLUTã»ã«ïŒ | 660,000 | 1045000 | 1725000 |
ããã°ã©ããã«ããžãã¯ããªã¥ãŒã ïŒLUTïŒ | 400,000 | 700,000 | 1,100,000 |
BRAMã¢ãžã¥ãŒã«ã®æ° | 600 | 1026 | 1728 |
LRAMã¢ãžã¥ãŒã«ã®æ° | 4320 | 6156 | 10368 |
80ãããããBRAMã®ããªã¥ãŒã ïŒåèšKãããïŒ | 48000 | 82080 | 138240 |
640ãããLRAM容éïŒåèšKbpsïŒ | 2765 | 3940 | 6636 |
ä¹ç®åšïŒ28Ã28ïŒ | 240 | 756 | 864 |
åç·æ°SerDes 12.75 GB / sïŒã®ã¬ããã/ sïŒ | 40 | 64 | 48 |
è¡æ°SerDes 28 gb / sïŒã®ã¬ããã/ sïŒ | - | - | 16 |
ã€ãŒãµãããããŒããŠã§ã¢ã³ã³ãããŒã©ãŒïŒMACã¬ã€ã€ãŒïŒ10/40/100ã®ã¬ããã/ç§ | 2 | 2 | 4 |
Interlaken LLCã³ã³ãããŒã©ãŒ | 1 | 2 | 4 |
PCI Express LLCã³ã³ãããŒã©ãŒ | 1 | 2 | 2 |
DDR2 / DDR3ã³ã³ãããŒã©ãŒ | 4 | 6 | 6 |
PLLçªå· | 16 | 16 | 16 |
ãã³æ°ãã±ãŒã¹FBGA2601 52.5Ã52.5ïŒ12Gã28GãGPIOïŒ | - | 64,0,960 | 48.16.960 |
ãã³æ°ãã±ãŒã¹FBGA1936 45Ã45ïŒ12Gã28GãGPIOïŒ | 40,0,684 | 40,0,684 | 20,4,684 |
ãã³æ°ãã±ãŒã¹FBGA1520 40Ã40ïŒ12Gã28GãGPIOïŒ | 18,0,684 | - | - |
æäœéå¿ èŠãªéçºããŒã«ã®ã»ããã«ã¯ãACEã·ã§ã«ãšSynplifyã·ã³ã»ãµã€ã¶ãŒã®2ã€ã®ããã°ã©ã ãå«ãŸããŠããŸãã èªç€Ÿéçº-ACEã·ã§ã«ã«ã¯ãé 眮ããã³é ç·ãã³ã¢ã®æ§æãããŒãããã³ãããã°ã®ããã®æ©èœãå«ãŸããŠããŸãã ã·ã³ã»ãµã€ã¶ãŒãšããŠãSynopsysã®Synplifyããã°ã©ã ã䜿çšãããŸãã åäžã®çµ±åç°å¢ã§ã¯ãªããäžé£ã®åå¥ã®ããã°ã©ã ã䜿çšããã¢ãããŒãã¯ãäžå°äŒæ¥ã«äžè¬çã§ãã åå¿è ã®éçºè ã«ãšã£ãŠã¯ããŸã䟿å©ã§ã¯ãããŸããããçµéšè±å¯ãªãšã³ãžãã¢ã«ãšã£ãŠã¯ãåã¹ããŒãžã®å®è¡ã®æè»æ§ãšå質ãåäžããŸãã ããæ·±ãçµ±åãå¿ èŠãªå Žåãããšãã°ãMentorGraphicsã®HDLãã¶ã€ããŒã·ã§ã«ã䜿çšããŠãå¿ èŠãªãã¹ãŠã®ãœãããŠã§ã¢ããŒã«ãçµã¿åãããããšãã§ããŸãã
æå®ãããããã°ã©ã ã«ã·ãã¥ã¬ãŒã¿ããã°ã©ã ãè¿œå ããããšããå§ãããŸãã Achronixããã±ãŒãžã«ã¯ãæãäžè¬çãªã·ãã¥ã¬ãŒã·ã§ã³ããã°ã©ã çšã®ã©ã€ãã©ãªãå«ãŸããŠããŸããããããã®ããã°ã©ã èªäœã¯ããã±ãŒãžã«å«ãŸããŠããããåå¥ã«è³Œå ¥ãããŸãã
ãããŠæåŸã«ãåŸ æã®æ¯æããç§ãã¡ã®ãªãã£ã¹ã«å°çããŸããïŒ

è奮ããŠæãéããŸãïŒãããŠãããŒãã®äŸ¡æ Œãå®äŸ¡ãªèŒžå ¥ã¯ãã¹ãªãŒããŒã®äŸ¡æ Œã®ããã«ãªã£ããå¿é ããªãã§ãã ããïŒïŒãããŒããé梱ãããã®ãéåžžã®ãå Žæã«ç§»ããŸãã-ç§ã®ãã¹ã¯ãããã®åž¯é»é²æ¢ã©ã°ã«ãèå³ãæã£ãŠèª¿ã¹ãŸããã

ã芧ã®ãšãããããŒãèªäœã¯è€éã§å€æ©èœãªè£œåã§ãã é»æ°åè·¯ã ãã§ã90ããŒãžããããŸãïŒ ãããã£ãŠãããŒããéçºãšãããã°ãå¯èœã«ããããšã¯é©ãããšã§ã¯ãããŸãããããšãã°ãCFPã¢ãžã¥ãŒã«çšã®ã³ãã¯ã¿ãããã€ãŒãµããã100Gãããã¯ââãŒã¯çšã®æ©åšãäœæããããã®ãŠããŒã¯ãªãããžã§ã¯ããšããèšèãæããŠããŸããïŒäžã®åçã®å·Šäžé ã«ãããé»ãåè§ãïŒ 2ã€ã®Interlakenã€ã³ã¿ãŒãã§ã€ã¹ãAirMaxã³ãã¯ã¿ã«ã«ãŒãã£ã³ã°ãããŸãã
ããªã³ãåè·¯åºæ¿ã®åãã«æãæéãåããŸããã ããã€ã®ã¬ã€ã€ãŒããããŸããïŒ 20ïŒ 30ïŒ 40ïŒ åé¡ã¯æªè§£æ±ºã®ãŸãŸã§ããã

ããŒãã«ã¯PCIãšã¯ã¹ãã¬ã¹ã³ãã¯ã¿ïŒGen 3 x8ã64 Gb / sïŒããããã³ã³ãã¥ãŒã¿ãŒã®äžéšãšããŠåšèŸºæ©åšãšããŠåäœã§ããŸãã åãããŠã次ã®ããã«ãªããŸãã

ããã±ãŒãžã«ã¯ãããŒããŒããã³ãããã¬ãŒãšããŠæ©èœããJTAGã±ãŒãã«ãå«ãŸããŠããŸãã ãã®ã±ãŒãã«ã®æ©èœã¯ãUSBããŒããŸãã¯ã€ãŒãµãããçµç±ã§æ©èœããããšã§ãã åŸè ã®å Žåãããã€ã¹ãžã®ãªã¢ãŒãã¢ã¯ã»ã¹ãæŽçã§ããŸãã ã€ãŒãµãããçµç±ã§äœæ¥ããå Žåãå€éšé»æºãå¿ èŠã§ãïŒä»å±ïŒã ããã±ãŒãžã«ã¯ãããŒãèªäœã®åŒ·åãªé»æºãš2GBã®DGB-3 RAMã¢ãžã¥ãŒã«ãå«ãŸããŠããŸãã
ãã«ã¹ãã§ãã¯
ããŒããæ©èœããŠããããšã確èªããã®ã¯éåžžã«ç°¡åã§ããããšãå€æããŸããã ãã¹ãã¯ãã§ã«ACEã·ã§ã«ã«çµã¿èŸŒãŸããŠããŸãã ãã®ãããå®éã«ã¯ããã§ãã¯å šäœã1ã€ã®ãã¿ã³ãæŒããŠãã¹ããã¡ãŒã ãŠã§ã¢ãããŠã³ããŒãããããšã«ãªããŸãã ãã®åŸãã¹ã€ãããæäœããŠLEDããªã³/ãªãããå éšã¡ã¢ãªãããã¯ããã¹ãã§ããŸãã ããŒãã¯USBã±ãŒãã«ã§ã³ã³ãã¥ãŒã¿ãŒã«æ¥ç¶ããå¿ èŠããããŸãã

éçº
ãããŠä»-Achronix FPGAã®æåã®ãããžã§ã¯ããã©ã®ããã«è¡ã£ããã«ã€ããŠã ãã®ãããæãåçŽãªãªãã·ã§ã³ãéžæãããŸãã-LEDãžã®é«äœãããã®åºåãåããã«ãŠã³ã¿ãŒã ãã¡ããããã®ãããªåçŽãªãããžã§ã¯ãã¯å°é家ãæå¿ããããã®ã§ã¯ãããŸããããFPGA Achronixã䜿çšããŠèšèšã«ãŒããç¿åŸããããã«äœ¿çšãããéçºããŒã«ã®åºæ¬æ©èœãåŠç¿ã§ããŸãã ä»åŸã®åºçç©ã§ã¯ãããŒããŠã§ã¢ã³ã¢ã®æ§æãšäœ¿çšãARMããã»ããµã³ã¢ã䜿çšãããããäžã§ã®ã·ã¹ãã ã®å®è£ ãªã©ãããè€éãªããšã«ã€ããŠè©±ãäºå®ã§ãã
ãããžã§ã¯ãæ§é
å°ãªããšã3ã€ã®ãµããã£ã¬ã¯ããªãå«ãåå¥ã®ãã£ã¬ã¯ããªã«é 眮ããåãããžã§ã¯ãïŒ
- Src-ãœãŒã¹çš
- Syn-åæçš
- TR-å®è£ çš
ã·ã³ã»ãµã€ã¶ã¯ããã«çœ®ããããã¡ã€ã«ãã¯ã€ãã§ãããããSynãã£ã¬ã¯ããªã«äœåãªãã®ãæ®ããªãæ¹ãè¯ãããšãå®è·µçã«ç€ºãããŠããŸãã ãããã£ãŠããœãŒã¹ããã¹ãïŒVerilogã§äœæ¥ããããšã奜ãïŒãSrcãã£ã¬ã¯ããªã«ä¿åãããã¹ãŠã®ã¹ã¯ãªãããTRãã£ã¬ã¯ããªã«ä¿åããŸãã
ãœãŒã¹ã³ãŒã
ã¢ãžã¥ãŒã«ã®ãœãŒã¹ã³ãŒãã¯å®å šã«ç°¡åã§ãã
module counter #( parameter CNT_WIDTH = 32 ) // 8 <= CNT_WIDTH ( input wire clk, input wire rstn, output wire [7:0] leds ); wire rst; reg [CNT_WIDTH-1:0] cnt; assign rst = ~rstn; always @(posedge clk or posedge rst) if (rst) cnt <= 'h0; else cnt <= cnt+1; assign leds[7:0] = cnt[CNT_WIDTH-1: CNT_WIDTH-8]; endmodule
ãã ãããã¢ããŒãã«å®è£ ããã«ã¯ãå°ãå€æŽããå¿ èŠããããŸãã
ãŸããã¯ããã¯ãœãŒã¹ãéžæããŠé©åã«æ¥ç¶ããå¿ èŠããããŸãã ããŒãã«ã¯ãããã®ããã€ãããããŸãã 調æ»åŸãå·®ååºåãæã€100 MHzã®åšæ³¢æ°ã®ãœãŒã¹ãéžæãããŸããã ãã®ãããå ¥åã¯ããã¯åè·¯ã«å·®åãããã¡ãè¿œå ããå¿ èŠããããŸããã
第äºã«ãããã»ã¹ã®å éšä¿¡å·ãèŠããã§ãã ãã¹ãŠã®FPGAã¡ãŒã«ãŒã«ã¯ãã®ãããªæ©äŒããããAchronix FPGAã§ãå©çšã§ããŸãã å éšä¿¡å·ã¢ãã©ã€ã¶ãŒã¯SnapShotãšåŒã°ããŸãã 競åä»ç€Ÿãšã¯ç°ãªããSnapShotã³ã³ããŒãã³ãã¯èšèšã§æ瀺çã«èšè¿°ããå¿ èŠããããŸãã ããã¯æåã¯äžäŸ¿ã§ãããããã®ã¢ãããŒãã®å©ç¹ãç解ããŸããã ãã®å©ç¹ã¯ãããªããããŠããããšãå®å šã«å¶åŸ¡ããããšã«ãããŸãã ããã«ããã®ã¢ãããŒãã«ãããç£èŠå¯Ÿè±¡ã€ãã³ããèšé²ããããã®ããªã¬ãŒãéåžžã«æè»ã«æ§æã§ããŸãã
ãã®ãããæçµããŒãžã§ã³ã§ã¯ãå·®åã¯ããã¯å ¥åãšãã®ãããã¡ãããã³å éšä¿¡å·ã調ã¹ãããã®ShapShotã³ã³ããŒãã³ãããããŸãã æçµVerilogããã¹ãïŒ
`define USE_SNAPSHOT module counter #( parameter CNT_WIDTH = 30 ) // 8 <= CNT_WIDTH <= MNTR_WIDTH ( `ifdef USE_SNAPSHOT input wire tck, input wire trstn, input wire tms, input wire tdi, output wire tdo, `endif input wire clk_p, input wire clk_n, input wire rstn, output wire [7:0] leds ); //********************************************** wire clk; wire rst; reg [CNT_WIDTH-1:0] cnt; assign rst = ~rstn; IPAD_DIFF #( .odt("on"), .termination("100") ) synth_clk_pad ( .pad(clk_p), .padn(clk_n), .dout(clk) ); always @(posedge clk or posedge rst) if (rst) cnt <= 'h0; else cnt <= cnt+1; assign leds[7:0] = cnt[CNT_WIDTH-1: CNT_WIDTH-8]; //********************************************* `ifdef USE_SNAPSHOT localparam MNTR_WIDTH = 36; wire [MNTR_WIDTH: 0] ss_zeroes; ///// Signals going to trigger-detector block to do pattern matching wire ss_clk; wire [MNTR_WIDTH-1 :0] ss_monitor_ch; /// Signals monitored in Snapshot wire [MNTR_WIDTH-1: 0] ss_trigger_ch; ///// Signals going to trigger-detector block to do pattern matching wire ss_rstn_out; ///// Active low user reset signal. wire ss_Arm; ///// Indicates Snapshot activity. wire [MNTR_WIDTH-1:0] ss_Stimuli; ///// User specified values for 3rd trigger pattern value assign ss_clk = clk; assign ss_zeroes = {MNTR_WIDTH+1{1'b0}}; //// //////// Now Snapshot macro block instantiation /////// ACX_SNAPSHOT #(.MNTR_WIDTH(MNTR_WIDTH) ) snapshot_0 ( .tck ( tck ), .tms ( tms ), .trstn ( trstn ), .tdi ( tdi ), .tdo ( tdo ), .usr_clk ( ss_clk ), .Monitor_ch ( ss_monitor_ch ), .trigger_ch ( ss_trigger_ch ), .Rstn_out ( ss_rstn_out ), .Arm ( ss_Arm ), .Stimuli ( ss_Stimuli ) ); assign ss_monitor_ch = { ss_zeroes[MNTR_WIDTH-1: CNT_WIDTH], cnt[CNT_WIDTH-1:0] }; assign ss_trigger_ch = ss_monitor_ch; `endif //********************************************** endmodule
åæ
Synplifyã·ã³ã»ãµã€ã¶ãŒãæ©èœãããã«ã¯ããœãŒã¹ããã¹ããšãšã¬ã¡ã³ãã©ã€ãã©ãªãžã®ãªã³ã¯ã«å ããŠãå®æ°ãã¡ã€ã«ïŒéåžžã¯æ¡åŒµå.sdcãå¿ èŠïŒãå¿ èŠã§ãã ãã®ãããªåçŽãªèšèšã«ã¯å¿ èŠãããŸããããæå®ããããšããå§ãããŸãã ãã®ãããªåçŽãªã±ãŒã¹ã§ã¯ãã¯ããã¯ä¿¡å·ãšãã®ãã©ã¡ãŒã¿ãŒã®ååãæå®ããã ãã§ãã
# synplify_constraints.sdc set_hierarchy_separator {/} create_clock clk_p -period 10 create_clock tck -period 40 set_clock_groups -asynchronous -group { tck } -group { clk_p }
次ã«ãSynplifyã®ãããžã§ã¯ããäœæããåæã«å¿ èŠãªãã¡ã€ã«ãšã©ã€ãã©ãªãæå®ããŠãããã»ã¹ãéå§ããŸãã ãã¹ãŠãæ£ããè¡ããããšãæ¡åŒµåã.vmaã®åºåãã¡ã€ã«ãååŸãããŸãã ïŒFPGAèšèšã®ãé人ãã¯ãSynplifyã®ã¡ã€ã³åºåãã©ãŒããããedifã§ããããšã瀺ããŠããå ŽåããããŸãããã ããACEã¯ã.vmaæ¡åŒµåãæã€Verilogããããªã¹ãã®ã¿ãåãå ¥ããŸãïŒã
å®è£
å®éã«ãå®è£ ããã»ã¹ã¯æšæºã¹ããŒã ã«åŸã£ãŠå®è¡ãããŸãã
- ACEçšã®ãããžã§ã¯ãã®äœæ
- ãããžã§ã¯ãã®åæçµæãã¡ã€ã«ãæå®ããŸãïŒæ¡åŒµåã¯.vmaïŒ
- å¶çŽãå®çŸ©ãã
- å®è£ ããã»ã¹ãéå§ããŸã
- FPGAã«ã¢ããããŒããããã¡ã€ã«ãååŸããŸã
å®è£ ããã«ã¯ã2ã€ã®å®æ°ãã¡ã€ã«ãæºåããå¿ èŠããããŸãããããã¯ã®å®çŸ©ãšãã³ã®æå®ã§ãã ãããã®å 容ãè¡šã«ç€ºããŸãã
# Ace_constraints.pdc create_clock clk_p -period 10 create_clock tck -period 40 set_clock_groups -asynchronous -group { tck } -group { clk_p } # io_preplacement.pdc set_placement -batch -fixed {p:clk_p} {b:P19} set_placement -batch -fixed {p:clk_n} {b:P18} set_placement -batch -fixed {p:rstn} {b:P17} set_placement -batch -fixed {p:leds[0]} {b:AE47} set_placement -batch -fixed {p:leds[1]} {b:AJ46} set_placement -batch -fixed {p:leds[2]} {b:AC46} set_placement -batch -fixed {p:leds[3]} {b:AF47} set_placement -batch -fixed {p:leds[4]} {b:AF46} set_placement -batch -fixed {p:leds[5]} {b:AJ47} set_placement -batch -fixed {p:leds[6]} {b:AG46} set_placement -batch -fixed {p:leds[7]} {b:AE46}
ã³ã³ãã¥ãŒã¿ãŒã§ã®å®è£ ãã§ãŒãºã¯æ¬¡ã®ãšããã§ãã
èšèšã®èªã¿èŸŒã¿ãšãããã°
åã®æé ã§äœæãããã¡ãŒã ãŠã§ã¢ãã¡ã€ã«ãããŠã³ããŒãããã«ã¯ã[ããŠã³ããŒã]ãŠã£ã³ããŠã«ç§»åãã[ããã°ã©ã ã®å®è¡]ãã¿ã³ãã¯ãªãã¯ããŠãæ°ååŸ ã¡ãŸãã
ããŠã³ããŒããå®äºãããšãFPGAã¯ããã«åäœãéå§ããããŒãäžã®LEDãç¹æ» ãã楜ããè¡ã芳å¯ã§ããŸãã
SnapShotã¢ãžã¥ãŒã«ã«æ¥ç¶ãããå éšä¿¡å·ã衚瀺ããã«ã¯ããã¹ãããã·ã§ãããããã¬ãŒããŠã£ã³ããŠãéãå¿ èŠããããŸãã ãã®ãŠã£ã³ããŠã§ã¯ããã£ããã£ããªã¬ãŒã¢ãŒãããã³ãã®ä»ã®ãã©ã¡ãŒã¿ãŒãæ§æã§ããŸãã åæã¯ãArmããã¿ã³ã§éå§ããããã®åŸããªã¬ãŒç¶æ ã®è¿œè·¡ãéå§ãããŸãã ããªã¬ãŒãèšå®ãããšãç»é²ãããä¿¡å·ã®äžæçãªå³ãç»é¢ã«è¡šç€ºãããŸãïŒããããªé 延ããããŸãïŒã
çµè«ãšçµè«
çæéã§ãAchronixã¯HI-ENDã»ã°ã¡ã³ãã®èå³æ·±ã競äºåã®ããFPGAãšãã®éçºããŒã«ãäœæããããšãã§ããŸããã 圌ããšåãæè¡ã¯ãå¹³åçãªè³æ Œã®å°é家ã§ããåé¡ãåŒãèµ·ãããŸããã Achronix補åã¯ãã§ã«ãã·ã¢ã§å ¥æå¯èœã§ãã
åç §è³æ
- ãã·ã¢é§åšå¡äºåæã®ãŠã§ããµã€ãïŒããã€ã¹ã«ãŒããã VLSIç 究æãïŒãURLïŒ www.achronix.ru
- ãŠã£ãããã£ã¢ãAcronixäŒæ¥ã®èšäºãURLïŒ en.wikipedia.org/wiki/Achronix
- Speedster22i HDãã¡ããªãããŒã¿ã·ãŒããURLïŒ www.achronix.com/wp-content/uploads/docs/Speedster22iHD_FPGA_Family_DS004.pdf
- éçºè ããããŠãŒã¶ãŒã¬ã€ãïŒSpeedster22i HD1000éçºããããŠãŒã¶ãŒã¬ã€ããURLïŒ www.achronix.com/wp-content/uploads/docs/Speedster22i_DevelopmentKit_User_Guide_UG034.pdf
- SnapShot DebuggerãŠãŒã¶ãŒã¬ã€ãïŒ www.achronix.com/wp-content/uploads/docs/Speedster22i_Snapshot_User_Guide_UG016.pdf
- ãããã°ããŒãã®é»æ°åè·¯å³ïŒ22iHD1000_Development_Board_Schematic.pdf
- Achronix瀟ã®Webãµã€ãïŒè±èªïŒãURLïŒ www.acronix.com