ãã®èšäºã§ã¯ãæµ®åå°æ°ç¹æ°ãç¹ã«ããã°ã©ããã«ããžãã¯éç©åè·¯ïŒFPGAïŒã§ã®ç¹æ®ãªFP23ãã©ãŒãããã®å®è£ ã«çŠç¹ãåœãŠãŸãã ç¹å®ã®ãããžã§ã¯ãã®äžç°ãšããŠãç¹å®ã®ããŒãºã«æé©ãªæµ®åå°æ°ç¹ããŒã¿åœ¢åŒãå®è£ ãããšããã¢ã€ãã¢ããããŸããã ãã®çµæããã®ã¢ã€ãã¢ã¯å®éã®ãããžã§ã¯ãã«å€ããããã®åŸãããžã¿ã«ä¿¡å·åŠçã®ããã€ãã®èå³æ·±ãã¿ã¹ã¯ã§ã¢ããªã±ãŒã·ã§ã³ãèŠã€ããŸããã ãã®èšäºã§ã¯ãã¶ã€ãªã³ã¯ã¹FPGAã«æµ®åå°æ°ç¹ããŒã¿åœ¢åŒãå®è£ ããéã®äž»ãªåé¡ã«ã€ããŠèª¬æããFP23圢åŒã§ã®åºæ¬çãªæ°åŠæŒç®ã«ã€ããŠæ€èšããŸãã ãŸããèšäºã®æåŸã«ãããžã§ã¯ãã®ãœãŒã¹ã³ãŒãããããŸããããã¯ãã¿ã¹ã¯ã§èªç±ã«äœ¿çšããããããã«åºã¥ããŠåæ§ã®ããŒã¿åœ¢åŒãå®è£ ãããã§ããŸãã
ããŒã¿åœ¢åŒ
æµ®åå°æ°ç¹æ°ã¯ãææ°ã®ä¿¡å·ããã»ããµããããªã«ãŒããããã«ã¯FPGAã§ãç©æ¥µçã«äœ¿çšãããŠããŸãã IEEE 754æšæºã«åŸã£ãŠããããã¯ææ°ïŒææ°ïŒãä»®æ°ãããã³èšå·ã®çµã¿åãããšããŠè¡šãããŸãã IEEE 754æšæºã®æ°å€ã«ã¯32ãããïŒ float ïŒããããŸãã æ確ã«ããããã«ããããŒããžã®æ°å€ã®æžã蟌ã¿ã¯éåžžã®åœ¢åŒã§æžã蟌ãŸããããæ°åŠçæäœãšæ°å€ã®å€æåŸã«æ£èŠåããã圢åŒã«çž®å°ãããŸãã å¯èœãªå€ã®ç¯å²ã¯ãä»®æ°ãšææ°ã®ãããæ°ã«ãã£ãŠç°ãªããŸãã ãããŒãã¯ãåºå®çžå¯Ÿç²ŸåºŠãšå¯å€çµ¶å¯Ÿç²ŸåºŠã«ãã£ãŠç¹åŸŽä»ããããŸãã float圢åŒã®æ°å€ã®äž»ãªé·æãšçæïŒ
- +éåžžã«åºç¯ãªå¯èœãªå€ãæäŸãããŸãã
- +é«ç²ŸåºŠã®èšç®ãå®çŸã
- -éåžžã«å€§ããªæ°å€ãã°ãªããã®å¯èœãªå€ã«äžžããã
- -äºãã«ç°ãªãæ°ãäœåºŠãåèšãããšã粟床ãäœäžããŸãã
- -FPGAã§ã®å®è£ ãšã¢ããªã±ãŒã·ã§ã³ã®è€éãã
ææ°ã®FPGAãããã§ã¯ãæµ®åå°æ°ç¹æ°ã®å®è£ ã¯é£ãããããŸããã 倧æã¡ãŒã«ãŒ-ã¶ã€ãªã³ã¯ã¹ããã³ã¢ã«ãã©ã«ã¯ãæšæºã«åŸã£ãŠãããŒããå®è£ ããæ¢è£œã®SOFT IPã³ã¢ããããŸãã ã¢ã«ãã©ã®ææ°ãã¡ããªã«ã¯ãDSPãããã¯ã§IEEE 754ãã©ãŒããããå®è£ ããHARD IPã³ã¢ããããŸãã
ããžã¿ã«éš
ããžã¿ã«ä¿¡å·åŠçã®æ°åŠçæäœãšã¿ã¹ã¯ãå®è¡ããããã®äž»èŠãªèŠçŽ ããŒã¹ã¯ãé«åºŠãªFPGAãã¡ããªã§ãã ãã®äœæ¥ã¯ãæ§æå¯èœãªã»ã«ã®ãã¯ãã«ã®ãããã¯ãå«ãFPGAäŒç€Ÿã¶ã€ãªã³ã¯ã¹ã§å®è¡ãããŸãã ãŸãããããã¯ããžã¿ã«åŠçããã³æ°åŠã®æ±çšãããã¯ã§ã-DSP48E1ïŒVirtex-6ã·ãªãŒãºããã³7ãã¡ããªã®FPGAçšïŒããã³DSP48E2ïŒUltraScaleãã¡ããªã®FPGAçšïŒã ãããã®ãããã¯ã«ãããæ°å€ã®å ç®ãšæžç®ãã·ãããšè»¢éãé«éä¹ç®ã环ç©ä¹ç®ïŒMACCïŒããã§ãã¯ãµã æ€çŽ¢ãªã©ã®æ©èœãå®è¡ã§ããŸãã ææ°ã®FPGAã®DSP48ã»ã«ã§ã¯ãå€ãã®ã¿ã¹ã¯ãå®è¡ãããŸã-CICããã³FIRãã£ã«ã¿ãŒã®éçºãFFT / IFFTã®é«éèšç®ãããžã¿ã«åšæ³¢æ°ã·ã³ã»ãµã€ã¶ãŒïŒDDSããã³CORDICïŒã®å®è£ ãããŒã¿ãæ瀺ããããã®ããŸããŸãªåœ¢åŒã®äœæãããã³ãããã®æäœã»ããã
FPGAã®2çªç®ã®åºæ¬ã³ã³ããŒãã³ãã¯ãããã¯ã¡ã¢ãªã§ãã ã¶ã€ãªã³ã¯ã¹FPGAã®å Žåããããã¯RAMB36E1ïŒãŸãã¯RAMB18E1ïŒã»ã«ã§ãã ãããã¯ãåäžãããã¯ã®åã®åœ¢ã§æ°Žæ¶å éšã«å®è£ ããã2ããŒãã¡ã¢ãªèŠçŽ ã§ãã å éšã¡ã¢ãªã®åæ°ã¯ããããã®ãµã€ãºã«äŸåããŸãã ã¡ã¢ãªãããã¯ã®æ倧容éã¯36Kãããã§ããããããã18Kãããã®2ã€ã®ç¬ç«ãããããã¯ãšããŠæ§æã§ããŸãã ã¡ã¢ãªã¯ã1ã72ãããã®ããŒã¿å¹ ã§äœ¿çšã§ããŸãã FPGAãããã¯ã¡ã¢ãªã®ç©ºããªãœãŒã¹ããªãå Žåãç¹å¥ãªSLICEMã»ã«ã§åæ£ã¡ã¢ãªã䜿çšã§ããŸãã Ultrascale FPGAã®å Žåããã®ãããªã¡ã¢ãªã®éã¯æ倧512x1ã§ããã¹ã®æ·±ããšãããæ·±ããåæ§æããå¯èœæ§ããããŸãã
åé¡ã®å£°æ
ã¢ããã°ããã³ããžã¿ã«ããŒãã®å®è£ ã«é¢ããäžèšã®æ©èœãèæ ®ãããšãã¿ã¹ã¯ã¯æ¬¡ã®ããã«åœ¢æãããŸãã ADCãããã䜿çšããŠFPGAãããã«å ¥åããããŒã¿ã®ããã容éã16ãããã«ããŸãã FPGAãæå°ãããKintex-7ãéžæããããã ã¿ã¹ã¯ã¯ã16ãããã®ç¬Šå·ä»ãæŽæ°FIX16ãç¹æ®ãªæµ®åå°æ°ç¹åœ¢åŒFP23ã«å€æãããã®éãè¡ããªãããæ°Žæ¶ãªãœãŒã¹ãæå°éã«æããŠFPGAå ã®æ倧åŠçé床ã確ä¿ããããšã§ã ã ãŸããå ç®ãæžç®ãä¹ç®ãªã©ã®äžé£ã®åºæ¬çãªæ°åŠæŒç®ãæå®ããŠå®è£ ããå¿ èŠããããŸãã
FP圢åŒã®å®è£
FP23ã¯ãæµ®åå°æ°ç¹æ°ãè¡šãããã®ç¹å¥ãªåœ¢åŒã§ãã IEEE 754æšæºãšã¯ç°ãªããFP23圢åŒã®èªé·ã¯32ãããã§ã¯ãªãã23ãããã®ã¿ã§ãã 次ã®ç°¡ç¥åããã圢åŒã®åŒã¯ãFP圢åŒã§ã®æ°å€ãAãã®è¡šçŸãåæ ããŠããŸãã
FP23圢åŒã®ä»®æ°ã¯ã17ãããã®æ£æ°ã§ãã ãã¹ãŠã®å€æã®çµæãšããŠãåžžã«æ£èŠåããã圢åŒã§è¡šç€ºãããŸãã ä»®æ°ã®æäžäœãããã¯åžžã«ã1ãã§ãã ã¯ãªã¹ã¿ã«ãªãœãŒã¹ãç¯çŽããæžã蟌ã¿ãç°¡çŽ åããããã«ãä»®æ°ã®17çªç®ã®ãããã¯ãããã¯ãããçµæã®23ãããã¯ãŒãã«è¡šç€ºãããŸããïŒå³ãåç §ïŒã ãããã£ãŠãç®è¡æŒç®ãèšç®ãããã圢åŒããå¥ã®åœ¢åŒã«å€æããå Žåãä»®æ°ãæ£èŠåãããå€216ã16ãããã®ãŒã以å€ã®æ°å€ã«å ç®ãããå¿ èŠãããããšãèŠããŠããå¿ èŠããããŸããä»®æ°ãã©ãã ãä¹ç®ããããã æ®ãã®1ãããã¯ç¬Šå·ã®äžã§åŒ·èª¿è¡šç€ºããããŒãã®å€ã¯æ£ã®æ°ã«å¯Ÿå¿ããåäžã®å€ã¯è² ã®æ°ã決å®ããŸãã ãããã£ãŠãFP23圢åŒã®æ°å€Aã¯ã3ã€ã®ããããã£ãŒã«ããexponentã ïŒEXPïŒAïŒïŒ ããsignã ïŒSIGNïŒAïŒïŒ ãããã³ãmantissaã ïŒMANïŒAïŒïŒã«ãã£ãŠèšè¿°ãããŸãã
è¡š1ã¯ãããŒã¿ã®ããã深床ãä»®æ°ãšææ°ã®å¯èœãªå€ã®ç¯å²ãªã©ã瀺ããŠããŸãã
ãã®ãããFPGAã§æµ®åå°æ°ç¹ããŒã¿åœ¢åŒãéçºããæåã®ã¹ãããã¯ãFPGAå éšã®æ倧åŠçé床ã確ä¿ããªããã笊å·ä»ãåºå®æ¡æŽæ°ãFP23æµ®åå°æ°ç¹åœ¢åŒã«å€æããããšã§ãã 2çªç®ã®ã¹ãããã¯ãFP23圢åŒããåºå®å°æ°ç¹åœ¢åŒãžã®æ°å€ã®éå€æã§ãããåºåãç¹å®ã®é€ç®ä¿æ°ã«ã¹ã±ãŒãªã³ã°ããæ©èœããããŸãã æåŸã«ã第3段éã§ãFP23圢åŒã®èœåãæ倧éã«æŽ»çšããã«ã¯ãå ç®ãæžç®ãä¹ç®ãªã©ã®æ°åŠæŒç®ãå®è£ ããå¿ èŠããããŸãã
FP23ã¢ãžã¥ãŒã«ã«ã€ããŠèª¬æããåã«ãããªãããŒã¿å®¹éã23ãããã®åœ¢åŒã«ãªã£ãŠããã®ã§ããïŒããšããèªç¶ã®è³ªåã«çããå¿ èŠããããŸããçãã¯ããã€ãã®ã³ã³ããŒãã³ãã§æ§æãããŠããŸãã ãŸãã1ããããæåã«äœ¿çšãããæ®ãã®15ããããæŽæ°éšåã«äœ¿çšããããããä»®æ°ãšæåã¯å°ãªããšã16ããããå æããŸãã ææ°ã®å ŽåãåŒã®ãªãã»ãããèæ ®ããŠãæäœ5ããããå¿ èŠã§ãã ææ°ã«å²ãåœãŠãããããããå€ãã»ã©ãçµæã¯å€§ãããªããŸãïŒå¯èœãªå€ã®ç¯å²ãæ¡åŒµãããŸãïŒã ææ°ã6æ¡ã§ãããä»®æ°ã16ãããæ°ãšããŠè¡šããã1æ¡ã笊å·ã«å²ãåœãŠãããŠãããšããŸãã 次ã«ãFP23圢åŒã§æ°å€ãè¡šãããã«ãæ£ç¢ºã«23ãããã䜿çšãããŸãã ä»®æ°ã®é衚瀺ãããã䜿çšãããšãéãŒãå€ã®å Žåã¯1ã«ã2é²æ°ã®ãŒãå€ã®å Žåã¯0ã«çããå Žåãããã容éã¯24ã§ãã
ããã«ãå€ã23ãã¯ã©ã³ãã ã«éžæãããŸããã§ããã å°æ¥ãFPGAã¡ã¢ãªã¯è€çŽ æ°å€ã®ãã¯ãã«ãä¿åããããã«å¿ èŠã§ãã é ããããã衚瀺ããªãå€ã®ãã¢ã®åèšå®¹éã¯46ã§ãããé ããããã¯48ã§ããããã¯ãå¹ ãã¡ããã©3ã€ã®RAMB18E1ã¡ã¢ãªãããã¯ã«é©åããŸãã ãŸããå€ã®ãã¢ã«å¯ŸããŠãDSP48E1¬ãããã¯ã®è¿œå æ©èœã䜿çšã§ããŸãã2ã€ã®æ°å€ã®è¿ éãªæ¯èŒãããªãã£ãSIMDã¢ãŒãã§ã®è¿ éãªåèšã§ãã
FIX16ããFP23ãžã®å€æ
ããŒã¿ãæŽæ°æååFIX16ããFP23圢åŒã«å€æããã«ã¯ãFPGAãããããžãã¯ãšçµã¿èŸŒã¿DSP48E1ä¹ç®åšã䜿çšããå¿ èŠããããŸãã ãã®å³ã¯ãããŒã¿ãFP23圢åŒã«å€æãããããã¯å³ã瀺ããŠããŸãã
DSP48E1ãããã¯ãã¡ã¯ã¿ãŒã®æ倧ããã深床ã¯ããããã25ããã³18ã§ãããæäžäœããããéèŠã§ãã DSP48E1ã¢ãžã¥ãŒã«ã®ç¬Šå·ã«é¢ä¿ãªãæ°å€ãä¹ç®ããã«ã¯ãå ¥åããŒã¿ã®æå¹ããã深床ã1ãããæžãããŸãã ã³ã³ããŒã¿ãŒã¯RAMB18E1ãããã¯ã¡ã¢ãªã䜿çšããŸããã
ãããã£ãŠãæ°å€ã®ç¬Šå·ãèŠã€ããã«ã¯ãå ¥åããŒã¿ã®æäžäœïŒç¬Šå·ä»ãïŒããããååŸããå¿ èŠããããŸãã FPGAããªããã£ãã«åºã¥ãä»®æ°MANïŒAïŒã®æ€çŽ¢ã¢ã«ãŽãªãºã ã¯æ¬¡ã®ãšããã§ãã
- å ¥åçªå·ã®ã¢ãžã¥ãŒã«ãååŸããŸãïŒæäœãæä»çORãïŒã
- æäžäœãããïŒMSB SEEKERïŒãæ€çŽ¢ãã
- æäžäœãããã§ä»®æ°ã®ã·ããå€ã圢æãã
- æ°å€ã®ã¢ãžã¥ã©ã¹ãšã·ããå€ãä¹ç®ããŠãæ£èŠåãããä»®æ°ïŒFRAC SHIFTERïŒãååŸããŸãã
ææ°EXPïŒAïŒãæ€çŽ¢ããã«ã¯ã次ãå¿ èŠã§ãã
- å ¥åçªå·ã®ã¢ãžã¥ãŒã«ãååŸããŸãïŒæäœãæä»çORãïŒã
- æäžäœãããïŒMSB SEEKERïŒãæ€çŽ¢ãã
- æ°å€ã32ãããæå¹ãããã®å転ã€ã³ããã¯ã¹ãæžç®ãã
- 0以å€ã®å ¥åå€ãæ€çŽ¢ããããžãã¯ãèæ ®ããŠãçµæã«1ãè¿œå ããŸãïŒLUT ZERO FORMERïŒã
ä»®æ°ã¯å®æ°ã®ã¢ãžã¥ã©ã¹ã«ç¬Šå·ãªãå ¥åæ°ã®ã·ãããäŸåããããã¹ã¯ããä¹ç®ããããšã§ååŸãããããããããèŠã€ããã«ã¯DSP48E1ãããã¯ãå¿ èŠã§ãã ä»®æ°ãæ€çŽ¢ããŠåœ¢æããæé ã¯ãFRAC SHIFTERããŒãã§çºçããå³ã«ç€ºãããŠããŸãã
ã芧ã®ãšãããä»®æ°ã¯2ã€ã®æ®µéã§åœ¢æãããŸãã æåã®æ®µéã§ã¯ãå ¥åçªå·ã®è«çãªãœãŒã¹LUTã䜿çšããŠã2 16-MSBã®ä¹æ°ãäœæãããŸãã 第2段éã§ã¯ãå ¥åããŒã¿ã«DSP48E1ããŒãã®ã·ããéãä¹ç®ãããŸãã ä¹ç®åšã®åºåã§ãæ£èŠåãããä»®æ°ã圢æãããŸãã 説æã«ããã°ã笊å·ãªãã®æ°å€ãä¹ç®ããå ŽåãDSP48E1ãããã¯ã®èŠå ã®1ã€ã®æ倧ããã深床ã¯17ã§ãããããä»®æ°ãšçæãããã·ããã®ããã深床ã倧ããããããšã¯ã§ããŸããã ãã®å¶éã«ãããFP23圢åŒã®æ°åã®ä»®æ°ã®ããã容éã¯17ã«ãªããŸããéãŒãã®æ°åã®ä»®æ°ã®æäžäœãããã¯1ã§ããäºçŽãããçµæã®ä»®æ°ã®æ€çŽ¢æäœã§äœ¿çšãããŸãããæ£èŠå圢åŒã®æ°åã®åºåè¡šçŸã«ã¯è¡šç€ºãããŸããã ãã®ããããæšæž¬ããŠã¯ãŒãã®äžè¬çãªè¡šçŸã§äœ¿çšãããšãåºåã¯ãŒãã®ããã深床ã¯24ãããã«ãªããŸãã
æ¶è²»ãããæ°Žæ¶ãªãœãŒã¹ã®éãæžããããã«ãDSP48E1ãããã¯ãé€å€ã§ããŸãã 次ã«ãä»®æ°æ€çŽ¢ããŒããé«éã·ããã¬ãžã¹ã¿ïŒãã¬ã«ã·ãã¿ïŒã«å€æãããŸãã äžéšã®FPGAã¯ãªã¹ã¿ã«ã§ã¯ãDSP48E1ã®æ°ãå°ãªãããªãœãŒã¹ã®äœåãªæµªè²»ãéèŠã§ãããããFP23ãããã¯ã䜿çšããå Žåã1ã€ãŸãã¯å¥ã®ãªãã·ã§ã³ãéžæã§ããŸãã ããã«ãé«éã·ãããªãã·ã§ã³ã®å Žåãå®å šãªå€ææäœã®åèšé 延ã1ã¯ããã¯ãµã€ã¯ã«ççž®ãããŸãã
åºå±è ãæ€çŽ¢ããããã®å ç®ããŒãã¯ãå®å šãªãã€ããªå ç®åšã®åœ¢åŒã§äœæããããã®å®è£ ã«ã¯ãããŒã¹ã»ã«SLICELããã³SLICEMã«å«ãŸããè«çã³ã³ããŒãã³ãMUXCYãXORCYããã³CARRY CHAINã䜿çšãããŸãã 詳现ãªèª¬æã¯ãããã°ã©ããã«ããžãã¯ã«é¢ããæç®ã«èšèŒãããŠããŸãã
ã¿ã€ãã³ã°ãã£ãŒãã®äŸ
FIXããFLOAT FP23ãžã®ããŒã¿ã®å€æïŒ
DIN-å ¥åããŒã¿ã16ãããã DOUT-3ã€ã®ãã£ãŒã«ã{EXPãSIGNãMANT}ã«åå²ãããFP23圢åŒã®æ°å€ã
DIN-å ¥åããŒã¿ã16ãããã DOUT-3ã€ã®ãã£ãŒã«ã{EXPãSIGNãMANT}ã«åå²ãããFP23圢åŒã®æ°å€ã
FP23ããFIX16ãžã®å€æ
ããŒã¿ãFP23圢åŒããFIX16ã«å€æããã«ã¯ã4ã€ã®ã¹ããããå¿ èŠã§ãã
2é²æ°ã®ç¬Šå·ä»ãæ°å€æ€çŽ¢ã¢ã«ãŽãªãºã ã¯ãããã€ãã®é£ç¶ããã¢ã¯ã·ã§ã³ã§æ§æãããŠããŸãã
- ææ°EXPïŒAïŒããå€SCALEïŒåºåããŒã¿ã®ã¹ã±ãŒãªã³ã°ïŒãåŒããŸãã
- ã·ãããã¹ã¯2ïŒEXPïŒAïŒ-SCALEïŒã圢æããŸãã
- é ããããIMPLïŒAïŒãä»®æ°ã«è¿œå ããçµæã«ã·ããéãæããŸãã
- æäœãæä»çORãã䜿çšããŠãçªå·SIGNïŒAïŒã®ç¬Šå·ãèæ ®ããŸãã
ãã®ã¹ããŒã ã§ã¯ãFP23圢åŒãžã®çŽæ¥å€æã®ããŒãã«é¢ããŠãFPGAãªãœãŒã¹ãç¯çŽããããã«ãDSP48E1ãããã¯ãSLICEMã»ã«ã§å®è¡ãããé«éã·ããã¬ãžã¹ã¿ã«çœ®ãæããããšãã§ããŸãã
ä¹ç®
FP23圢åŒã®æ°å€ã®ä¹ç®ã¯ãæãåçŽã§æãè«ççãªæŒç®ã®1ã€ã§ãã ããŒããŠã§ã¢ä¹ç®ã¢ã«ãŽãªãºã ã¯ã次ã®ããã«å®è£ ãããŸãïŒå³ãåç §ïŒã
- ããŒãDSP48E1ã®ä»®æ°ä¹ç®ã
- ä»®æ°ã®æ£èŠåïŒæäžäœãããã®å€ã«å¿ããŠãããã[32 ... 17]ãŸãã¯[31 ... 16]ãä»®æ°ãšããŠäœ¿çšïŒ
- åºå±è ã®è¿œå
- ææ°ã®åèšããæ°å€16ãåŒã
- ä»®æ°ç©ã®33çªç®ã®ããããã0ãã®å Žåãçµæã®ææ°ããå¥ã®1ãæžç®ãããŸãã
- ãæä»çORãæäœã䜿çšããäœåã®ãµã€ã³ã®æ±ºå®ã
ãŒãæ°ã«ããä¹ç®ã®è«çã¯ã¹ããŒã ã«åæ ãããŸããããã¢ã«ãŽãªãºã ã«ãããå ¥åæ°ã®ææ°ããŒãã«çããå ŽåãåºåçµæããŒãã«çãããšããäºå®ã«éå ãããŸãã FPGAã§ã¯ãLUTããŒã¹ãŠãããã®ANDããã³ORè«çé¢æ°ã䜿çšããŠãŒãæ€çŽ¢ãç·šæãããŸãã
å ¥åæ°ã®ä»®æ°ã®é ããããã説æããããã«ãææ°ã®åèšããæ°å€16ãæžç®ãããææ°ãå¢å ããŸãã æµ®åå°æ°ç¹ã®æ°å€ãä¹ç®ããããŒãã®å ç®åšãšæžç®åšãããã€ããªå šå ç®åšã¹ããŒã ã«åŸã£ãŠå®è£ ãããŸãã
å ç®ãšæžç®
FP23圢åŒã®æ°å€ã®å ç®ãšæžç®ã¯ãæããªãœãŒã¹ãæ¶è²»ããæäœã§ãïŒå³ãåç §ïŒã FP23圢åŒã§ã®æ°å€ã®è¿œå ã¯ã次ã®åºæ¬çãªæ®µéã§æ§æãããŠããŸãã
- ãªãã©ã³ãã1ã€ã®ææ°ã«çž®å°ïŒã¢ã©ã€ã¡ã³ãïŒã
- ä»®æ°ã®è¿œå
- çµæã®æ£èŠåïŒ16ãããã®ä»®æ°ãã1ãã«çãããªããããªææ°ã®éžæïŒã
ããŒããŠã§ã¢è¿œå ã¢ã«ãŽãªãºã ã¯æ¬¡ã®ããã«å®è£ ãããŸãã
- ãªãã©ã³ããAããšãBãã¯ã| A | <| B |ã®å Žåãã¢ãžã¥ãã§æ¯èŒãããæ°å€ã亀æãããŸãã
- ãªãã©ã³ãã®ææ°ã®å·®ãèšç®ããããã®çµæã«ãããæ°åãBãã®ä»®æ°ãå³ã«ã·ããããŠæ°åã1ã€ã®ææ°ã«ããããã«å¿ èŠãªæ¡æ°ã決ãŸããŸãã
- ææ°ã®å·®ã«åŸã£ãŠãæ°ãBãã®ä»®æ°ã«ä¹ç®ãããæ°ã圢æãããŸãã
- ä¹ç®ã®çµæãæ°åãAãã®ä»®æ°ã«å ç®ãããŸãã
- åä¿¡ããçªå·ã§ã¯ãMSBã®æäžäœãããã®çªå·ã決å®ãããçªå·ã圢æãããŸãã
- ä»®æ°ã®åèšã«æ°å€ãä¹ç®ããããšã«ããä»®æ°ã®æ£èŠåã
- æ°ã®ææ°EXP©= EXPïŒAïŒ-MSB + 1ã
æžç®ã¯å ç®ãšåæ§ã«å®è£ ãããŸãã å¯äžã®éãã¯ãæžç®ããããªãã©ã³ãã®ç¬Šå·SIGNïŒBïŒãå転ãããããšã§ãã DSP48E1ãŠãããã¯ãé«éã·ããã¬ãžã¹ã¿ã«çœ®ãæããããšãã§ããŸãã
è³æº
åããŒãã®æäœã®åæçµæãšäŒæ¬é 延ãè¡š2ã«ãŸãšããŸãããã®è¡šã¯ãæãåçŽã§æéã®æäœãFP23圢åŒã®2ã€ã®æ°å€ã®ä¹ç®ã§ããããšã瀺ããŠããŸãã
ãã¹ãŠã®ããŒãã®åæåŸã®å æãªãœãŒã¹ã®éã¯ãå ±éã®ãã°ãã¡ã€ã«ã«èšé²ãããŸãã fp23ä¹ç®åšã®åæçµæã®äŸïŒ
Top Level Output File Name : fp23_mult_m1.ngc Primitive and Black Box Usage: ------------------------------ # BELS : 106 # GND : 15 # INV : 1 # LUT2 : 25 # LUT3 : 16 # LUT4 : 6 # LUT6 : 14 # MUXCY : 14 # VCC : 1 # XORCY : 14 # FlipFlops/Latches : 75 # Shift Registers : 8 # SRLC16E : 8 # DSPs : 1 # DSP48E1 : 1
ãœãŒã¹ã³ãŒã
FP23圢åŒã®ãã¹ãŠã®ããŒãã¯VHDLèšèªã§èšè¿°ãããŠããŸãã å©äŸ¿æ§ãšæ€èšŒã®ããã«ãFPGAã®æµ®åå°æ°ç¹ã§å®è£ ãããæäœã®æ©èœãå«ãå°ããªããã°ã©ã ãC ++ã§èšè¿°ãããŠããŸãã ãã®å©ããåããŠãææ°ãšä»®æ°ã®ä»ã®æ¬¡å ãæã€ä»ã®æµ®åå°æ°ç¹åœ¢åŒããããã°ããã³å®è£ ã§ããŸãã
VHDLã§ããŒã¿ãèªã¿ãããããããã«ãæµ®åå°æ°ç¹åœ¢åŒã§æ°å€ãå®çŸ©ããåãäœæãããŠããŸãã FP23ã®ãã¹ãŠã®ã³ã³ããŒãã³ããšã¿ã€ãã¯ãfp_m1_pkg.vhdãã¡ã€ã«ã«åéãããŸã
type fp23_data is record exp : std_logic_vector(5 downto 0); sig : std_logic; man : std_logic_vector(15 downto 0); end record;
RTLèšè¿°ã®ãœãŒã¹ã³ãŒãããã¹ãããã°ã©ã ãããã³åæçµæã¯ã githubãªã³ã¯ã«ãããŸãã
ãã¹ãã±ãŒã¹
éçºãããã¹ãŠã®ããŒãããã¹ãããããã«ãå°ããªåè·¯ãæãã€ããŸããã ããã¯è€çŽ æ°ã®ä¹ç®åšã§ãããå ¥åãšåºåã§ã¯ããŒã¿ãæŽæ°åœ¢åŒã§è¡šç€ºãããäžéçµæã¯æµ®åå°æ°ç¹ã«ãªããŸãã ã€ãŸããå ¥åã¯FP23圢åŒã«å€æãããŸãã ãã®åœ¢åŒã§ã¯ãè€çŽ ä¹ç®ãå®è£ ãããçµæãFP23ããåºå®å°æ°ç¹ã«è»¢éãããŸãã RTL-Viewerã®ãããã¯å³ã¯æ¬¡ã®ãšããã§ãã
PlanAheadã§ã¯ã次ã®å³ã«è€çŽ ä¹ç®åšã®é 眮ã瀺ããŸãã FPGA Kintex-7ã XC7K70TFBG484-1C
ãããžã§ã¯ãã®å®å šãªãã¬ãŒã¹ã®çµæãšããŠã çŽ300 MHzã®ãªãŒããŒã®åŠçåšæ³¢æ°ãéæãããŠããããšãããããŸãã å®éã«ã¯ããã®æ°å€ã¯çŽ30ïŒ é«ããªã£ãŠããŸãã
FPGA Editorã§ã¯ãåŸæ¥ã®FP23ä¹ç®åšã®ãããã¯ã¯æ¬¡ã®ããã«ãªããŸãã
ãããã«
ãã®äœæ¥ã®çµæãFP23æµ®åå°æ°ç¹FPGAçšã®ç¹æ®ãªããŒã¿åœ¢åŒãéçºãããŸããã åŸæ¥ã®IEEE 754圢åŒãšã¯ç°ãªããæ倧é床ã§ã®FPGAåŠççšã«åŒ·åãããŠããŸãã ã¶ã€ãªã³ã¯ã¹ããã³ã¢ã«ãã©ã®æšæºãœãªã¥ãŒã·ã§ã³ãšã¯ç°ãªããFP23圢åŒã®ããŒãã¯æ°Žæ¶ãªãœãŒã¹ãå€§å¹ ã«åæžããŸãã FP23ã®å ç®ããã³ä¹ç®æäœã¯ãFIRãã£ã«ã¿ãŒãšFPGAã®FFT / IFFTããŒãã®å®è£ ã«çšéãèŠåºããŸããã
å¿ èŠã«å¿ããŠãä»®æ°ãšææ°ã®ä»»æã®ããã深床ãæã€ç¹å®ã®ã¿ã¹ã¯çšã«ç¬èªã®ããŒã¿åœ¢åŒã FP_X ããäœæã§ããŸãã ãã®å Žåãç¹å®ã®FPGAã®æ©èœãšæ§é ãèæ ®ããå¿ èŠããããŸãã
åæ§ã®ãããã¯ã«é¢ããç§ã®èšäºïŒ
- FPGAããžã¿ã«ãã£ã«ã¿ãªã³ã°-1ïŒCICãã£ã«ã¿ãŒïŒ
- FPGAããžã¿ã«ãã£ã«ã¿ãªã³ã°-2ïŒFIRãã£ã«ã¿ãŒïŒ
æåŠ
ãæž èŽããããšãããããŸããïŒ ç¶è¡ããã«ã¯...