
ã¿ãªããããã«ã¡ã¯ïŒ
ããã¯ããããã¯ãFPGAã§ã®ããžã¿ã«ãã£ã«ã¿ãªã³ã°ãã«é¢ãã2çªç®ã®åºçç©ã§ãã 2çªç®ã®éšåã¯ãFPGAã§ã®FIRãã£ã«ã¿ã®å®çšçãªå®è£
ã«å°å¿µããŸãã çŽ æãæºåããéçšã§ãåäŸã®ãªããµã€ãºã«èšããããšã«æ°ã¥ããŸããããããã€ãã®éšåã«åããããããŸããã§ããã ãããã£ãŠãFIRãã£ã«ã¿ãŒã®çè«ãšåæã®åŸ®åŠãªç¹ã¯ãã¹ãŠ1ã€ã®èšäºã«ãŸãšããããçžäºã«é¢é£ããã»ã¯ã·ã§ã³ã«åããããŸãã ç¹ã«çè«çãªéšåããã¬ãã¥ãŒãéå§ããŸãããã£ã«ã¿ãŒä¿æ°ã®èšç®ã®æ©èœãšæ¹æ³ã«ã€ããŠèª¬æããŸãã MATLABãCoreGENERATORãVivado HLSãªã©ãããŸããŸãªç°å¢ã§ã®FIRãã£ã«ã¿ãŒã®äœæã«ã€ããŠè©³ããæ€èšããŸãã ç«ã«èå³ããã人ã¯èª°ã§ãèããŠãã ããã
ããŒã2. FIRãã£ã«ã¿ãŒ
çè«
FIRãã£ã«ã¿ãŒã®ç°¡åãªå®è£
äŸãèããŠã¿ãŸãããã ãåç¥ã®ããã«ããã£ã«ã¿ãŒã«ã¯2ã€ã®å€§ããªã¯ã©ã¹ããããŸã-
ç¡éã€ã³ãã«ã¹å¿çã
æ〠IIRãšã
æéã€ã³ãã«ã¹å¿çãæã€FIRã§ãã 2çªç®ã®ã¿ã€ããFIRãã£ã«ã¿ãŒïŒEngãFIR-ãæéã€ã³ãã«ã¹å¿çãïŒã«ã€ããŠèª¬æããŸãã FIRãã£ã«ã¿ãŒã¯ç·åœ¢ããžã¿ã«ãã£ã«ã¿ãŒã§ããããã®äž»ãªç¹åŸŽã¯ããã®ã€ã³ãã«ã¹å¿çã®éãããæéã§ããã€ãŸããããæç¹ãããŒãã«çãããªããŸãã ååãšããŠãã»ãšãã©ã®FIRãã£ã«ã¿ãŒã¯ãã£ãŒãããã¯ãªãã§å®è¡ããããããã»ãšãã©ãã¹ãŠã®FIRãã£ã«ã¿ãŒã¯éååž°çã§ãã
ããã¯ãFFPãã£ã«ã¿ãŒã®å®è£
ãäžè¬çãªåœ¢åŒãç¹ã«FPGAã§ã©ã®ããã«èŠãããã§ãã

ãã¹ãŠã®FIRãã£ã«ã¿ãŒã¯ã次ã®æ¹çšåŒã§èšè¿°ãããŸãã

ããã§ã
yïŒnïŒã¯åºåä¿¡å·ïŒå
¥åã®çŸåšããã³éå»ã®å€ã®é¢æ°ïŒã
xïŒnïŒã¯å
¥åã¢ã¯ã·ã§ã³ã
hïŒkïŒã¯ã€ã³ãã«ã¹å¿çä¿æ°ã
Nã¯ãã£ã«ã¿ãŒé·ïŒãã£ã«ã¿ãŒä¿æ°ã®æ°ïŒã
HïŒzïŒã¯ãã£ã«ã¿ãŒã®äŒéç¹æ§ã
FIRãã£ã«ã¿ãŒã®ç§å¯ã¯äœã§ããïŒFIRãã£ã«ã¿ãŒã®æãéèŠãªæ©èœã¯ãæ£ç¢ºãª
ç·åœ¢äœçžå¿çãååŸã§ãã
ããšã§ãã èªè
ã«ã¯èªç¶ãªè³ªåããããŸã-ããªããããå¿
èŠãªã®ã§ããïŒãã ãã®ç¬éã«ã€ããŠè©³ããèŠãŠãããŸãããã ä¿¡å·ã¯ããã£ã«ã¿ãŒãééãããšãã«ããŸããŸãªå€æãåããŸãã ç¹ã«ãä¿¡å·ã®æ¯å¹
ãšäœçžã¯ããã£ã«ã¿ãŒã®åšæ³¢æ°å¿çïŒæ¯å¹
ãåšæ³¢æ°å¿çãäœçžãäœçžå¿çïŒã«å¿ããŠå€åããŸãã å€åšæ³¢ä¿¡å·ã®å ŽåãåŠçãŠããããééãããšãã«ä¿¡å·ã®äœçžãæªãããšã¯å®¹èªã§ããŸããã ããã«ãéé垯åã®åšæ³¢æ°å¿çãã»ãŒäžå®ã§ããã°ãããã¯é£ãããããŸããããã®å Žåãåšæ³¢æ°å¿çã«åé¡ããããŸãã äœçžæªã¿ãè©äŸ¡ããã«ã¯ãäœçžããã³çŸ€é
延ã®æŠå¿µãå°å
¥ãããšäŸ¿å©ã§ãã
äœçžé
延ã¯ãä¿¡å·ã®ååšæ³¢æ°æåã®é
延éã§ãã äœçžè§ãåšæ³¢æ°ã§å²ã£ããã®ãšããŠå®çŸ©ãããŸãã 矀é
延ã¯ãè€æ°åšæ³¢æ°ä¿¡å·å
šäœã®å¹³åæéé
延ã§ãã åšæ³¢æ°ã®äœçžã®å°é¢æ°ãšããŠå®çŸ©ãããŸãã æ°åŠçã«äœçžããã³çŸ€é
延ã¯æ¬¡ã®ããã«èšé²ãããŸãã

矀é
延ã®åŒãããäœçžå¿çãã£ã«ã¿ãŒã®ç·åœ¢æ§ãæããã«ãªããŸãã äœçžå¿çãç·åœ¢ã®å Žåãå°é¢æ°ãååŸããåŸã®çŸ€é
延ã¯äžå®ã§ããã€ãŸãããã¹ãŠã®åšæ³¢æ°æåã«å¯ŸããŠäžå®ã§ãã éç·åœ¢ã®äœçžå¿çãåãããã£ã«ã¿ãŒãä¿¡å·ã®äœçžãæªããããšã¯è«ççã§ãã
ãããã£ãŠãäœçžç¹æ§ã®ç·åœ¢æ§ã¯ãFIRãã£ã«ã¿ãŒã®æãéèŠãªæ©èœã®1ã€ã§ãã ãã®ã¯ã©ã¹ã®ãã£ã«ã¿ãŒã®ç 究ã«ã€ããŠèª¬æããŸãã
ç·åœ¢äœçžå¿çãåããFIRãã£ã«ã¿ãŒ
äœçžå¿çã®ç·åœ¢æ§ã確ä¿ããã«ã¯ããã£ã«ã¿ãŒã®ã€ã³ãã«ã¹å¿çïŒãŸãã¯ä¿æ°ïŒã®
察称æ¡ä»¶ãæºããå¿
èŠããããŸãã ç°¡åã«èšãã°ãç·åœ¢äœçžå¿çãæã€FIRãã£ã«ã¿ãŒã¯å¯Ÿç§°ã§ãã ãã£ã«ã¿ãŒæ¬¡æ°Nã®ããªãã£ãšå¯Ÿç§°ã®ã¿ã€ãïŒæ£ãŸãã¯è² ïŒãç°ãªã4çš®é¡ã®ãã£ã«ã¿ãŒããããŸãã äŸãã°ãè² ã®å¯Ÿç§°æ§ãæã€ãã£ã«ã¿ãŒã®å Žåã90
°ã®äœçžã·ãããåŸãããŸãã ãã®ãããªãã£ã«ã¿ãŒã¯ã埮ååšãšãã«ãã«ãå€æã®èšèšã«äœ¿çšãããŸãã FIRãã£ã«ã¿ãŒã®ã€ã³ãã«ã¹å¿çã®ãšã³ãããŒãã¯ããã£ã«ã¿ãŒã®çš®é¡ïŒããŒãã¹ãã£ã«ã¿ãŒããã€ãã¹ãã£ã«ã¿ãŒãPFãRFã埮ååšïŒ
ã«é¢ä¿ãªããæ³å
ãsinïŒxïŒ/ xã«åŸã£ãŠæ§ç¯ãããŸãã å®éçãªåé¡ã解決ããããã«ãå€ãã®å Žåãã©ã®ã¿ã€ãã®ãã£ã«ã¿ãŒãéžæãããããèããå¿
èŠã¯ãããŸããã ä¿æ°ã®å¯Ÿç§°æ¡ä»¶ã®èšŒæã¯ããŸãããã奜å¥å¿ã®åŒ·ãèªè
ã§ããã°ãããŸããŸãªæç®ã§ãããèŠã€ããããšãã§ããŸãã
FIRãã£ã«ã¿ãŒã®èšèš
ãFIRãã£ã«ã¿ãŒã®èšç®ãã§ã¯ãã»ãšãã©ã®å Žåãåšæ³¢æ°å¿çã®å€ã«ãã
ä¿æ°ã®æ€çŽ¢ãæââå³ããŸãã åŠè¡çãªèå³ãé€ããŠãéåé¡ã解決ãããã±ãŒã¹ãæãåºããŸããã
æ°ããããžã¿ã«FIRãã£ã«ã¿ãŒãäœæãããšãããšã³ãžãã¢ã¯éçºã®ç¹å®ã®æ®µéãçµãŸã*ïŒ
- ãã£ã«ã¿ãŒä»æ§ ã ãã£ã«ã¿ãŒã¿ã€ãïŒããŒãã¹ãã£ã«ã¿ãŒããã€ãã¹ãã£ã«ã¿ãŒãéé垯åããããïŒãNä¿æ°ã®æ°ãå¿
èŠãªåšæ³¢æ°å¿çãæžè¡°åž¯åãšéé垯åã®éç·åœ¢æ§ã®èš±å®¹ç¯å²ãªã©ãèšå®ãããŸãã
- ä¿æ°ã®èšç® ã å©çšå¯èœãªæ¹æ³ãšæ段ã«ãããå段èœã®ä»æ§ãæºãããã£ã«ã¿ãŒä¿æ°ãèšç®ãããŸãã
- æé容éã®çµæã®åæ ã ãã®æ®µéã§ããã£ã«ã¿ãŒä¿æ°ãäžéããŒã¿ãããã³åºåããŒã¿ã«å¯Ÿããéååå¹æã®åœ±é¿ãæšå®ãããŸãã
- å®è£
ã ãã®æ®µéã§ã¯ããã£ã«ã¿ãŒã¯ã¢ã¯ã»ã¹å¯èœãªããã°ã©ãã³ã°èšèªã§éçºãããããæ¢æã®IPã³ã¢ãäœæããããšã§ãã£ã«ã¿ãŒãå®è£
ãããŸãã
*-éçºã®æ®µéã¯å€å°ç°ãªãå ŽåããããŸãããæ¬è³ªã¯åžžã«åãã§ãã
ãã£ã«ã¿ãŒä»æ§ãã®æ®µéã§ããšã³ãžãã¢ã¯åŠ¥åãœãªã¥ãŒã·ã§ã³ãæ€çŽ¢ããŠãç®çã®ãã©ã¡ãŒã¿ãŒã§ç®çã®ãã£ã«ã¿ãŒãå®è£
ããŸãã ãããã¯å°æ°ã§ãããå€ãã®å Žåã1ã€ã®ãã©ã¡ãŒã¿ãŒãç ç²ã«ããŠä»ã®å€ã«å¿
èŠãªå€ãéæããå¿
èŠããããŸãã
- Apass-垯åå¹
ã®äžåäžæ§ã
- Astop-æå¶åž¯åã®æžè¡°ã¬ãã«ã
- Fpass-ã«ãããªãåšæ³¢æ°åž¯åå¹
ã
- Fstop-ã«ãããªãåšæ³¢æ°ã«ãããªãåšæ³¢æ°ã
- Nã¯ãã£ã«ã¿ãŒæ¬¡æ°ïŒãã£ã«ã¿ãŒä¿æ°ã®æ°ïŒã§ãã
å®éã«ã¯ãApassããã³Astopãã©ã¡ãŒã¿ãŒã¯ãã·ãã«ïŒdBïŒã§æå®ãããFpassãšFstopã®éã®è·é¢ã¯ãã£ã«ã¿ãŒé·ç§»åž¯åå¹
ãè¡šããŸãã Apassã®å€ã¯å¯èœãªéãå°ãããApassã¯å¯èœãªéã倧ããããFpass / Fstopæ¯ã¯çæ³çã«ã¯çµ±äžããåŸåããããŸãïŒå®å
šã«é·æ¹åœ¢ã®åšæ³¢æ°å¿çïŒã ãã£ã«ã¿ãŒä»æ§ã«å
¥åãããä¿æ°ã®æ°ã¯ç¡é§ã§ã¯ãããŸããã 以äžã«ç€ºãããã«ããã£ã«ã¿ãŒã®åšæ³¢æ°ç¹æ§ãšFPGAãªãœãŒã¹ã®å æéã¯ããã£ã«ã¿ãŒã®æ¬¡æ°Nãšä¿æ°ã®ããã深床ã«äŸåããŸãã
ãã£ã«ã¿ãŒä¿æ°ã®èšç®ãã®ããŒãã«ã€ããŠã¯ãããã€ãã®æžç±ãç§åŠèšäºãæžãããšãã§ããŸããããã®èšäºã®æ çµã¿ã®ãã¹ãŠã®æ¹æ³ã詳现ã«æ€èšããããšã¯ããŸããã ãã£ã«ã¿ãŒä¿æ°ãèšç®ããæ¹æ³ã¯å€æ°ãããŸãããŠã£ã³ããŠé¢æ°ã«ããéã¿ä»ãæ¹æ³ãåšæ³¢æ°ãµã³ããªã³ã°æ¹æ³ãRemezã¢ã«ãŽãªãºã ã䜿çšããããŸããŸãªæé©ãªæ¹æ³ïŒãã§ãã·ã§ãã«ããïŒãªã©ã§ãã ãã¹ãŠã®æ¹æ³ã¯ããã®ç¹æ§ãç¬ç¹ã§ãããç¹å®ã®çµæããããããŸãã ãŠã£ã³ããŠéã¿ä»ãæ³ã®å Žåã
ã®ãã¹å¹æã¯è² ã®å
åã«ãªããé¢æ°ã®èšç®ããããã€ã³ãéã®ãã£ã«ã¿ãŒã®åšæ³¢æ°å¿çã«äžåäžæ§ãšå€ãå€ãå°å
¥ãããŸãã ç¡éã«å¯ŸåŠã§ããŸãããå®éã«ã¯ãéé垯åãšæå¶åž¯åã®äžåäžæ§ã«èš±å®¹ç¯å²ãå°å
¥ãããŸãã
å€ãã®ãã£ã«ã¿ãŒã®ä¿æ°ãèšç®ããäž»ãªæ¹æ³ã¯ãä¿®æ£ãããRemezã¢ã«ãŽãªãºã ã§ãã
Parks-McClellanã¢ã«ãŽãªãºã ã§ãã æ¬è³ªçã«ã¯ããã§ãã·ã§ããã£ã«ã¿ãŒç¹æ§ã䜿çšããŠæé©ãªå€ãèŠã€ããããã®éæ¥å埩æ³ã§ãã ãã®æ¹æ³ã®ç¹åŸŽã¯ãã€ã³ãã«ã¹å¿çã®ãã§ãã·ã§ãè¿äŒŒã«ãããæžè¡°åž¯åãšäŒé垯åã®èª€å·®ãæå°éã«æããããšã§ãã ä¿æ°ã®æ°ãå€ãã»ã©ãåšæ³¢æ°å¿çã®äžåäžæ§ãå°ãªããªããããé·æ¹åœ¢ã«ãªãããšã¯éåžžã«è«ççã§ãã
æçµçµæã¯æ¹æ³ã®éžæã«äŸåããŸããããã¹ãã³ãã§ã®æŸå°ãæå°éã«æããåšæ³¢æ°å¿çã®ãè§åœ¢æ§ããé«ãããšããããã¹ãŠåãç®æšã«å°éããŸãã
æé容éã®çµæã®åæä¿æ°ã®ããã深床ã¯ãåšæ³¢æ°å¿çã®ã¿ã€ããäŸåããäž»ãªèŠå ã§ãã ææ°ã®FPGAã§ã¯ãä¿æ°ã®ããã深床ã¯ä»»æã«éžæã§ããŸããã劥åœãªæ°å€ã¯16ã27ãããã§ãã ãã£ã«ã¿ãŒæ¬¡æ°ãé«ãå ŽåãæŸé»ã°ãªããã®åºããã€ãããã¯ã¬ã³ãžãæäŸããå¿
èŠããã°ãã°ãããŸããããããã§ããªãå Žåãé
ããæ©ãããéåå誀差ãçŸãå§ããŸãã ä¿æ°ã®ããã深床ãå¶éãããŠãããããåšæ³¢æ°å¿çãå€æŽãããå Žåã«ãã£ãŠã¯æªã¿ã倧ãããªãã蚱容å¯èœãªçµæãââåŸãããã«åšæ³¢æ°ä»æ§ãããã©ã¡ãŒã¿ãŒãç ç²ã«ããå¿
èŠããããŸãã ãããã«ãããä¿æ°ã®è¡šçŸã®ããã深床ã¯ãAstopã®æ倧å¯èœæžè¡°ã«çŽæ¥åœ±é¿ããŸãã ãããã£ãŠãå¶éãããä¿æ°ã®æŸé»ã°ãªããã䜿çšãããšã巚倧ãªãã£ã«ã¿ãŒæ¬¡æ°ã§ãææã®æå¶ãéæã§ããªãå ŽåããããŸãïŒ
äžéããŒã¿ã®ããã深床ãšç®è¡ãªãŒããŒãããŒã¯ãåšæ³¢æ°å¿çã®ã¿ã€ããšãã£ã«ã¿ãŒåºåã§ã®çµæãäŸåããèŠå ã§ãã å€ãã®FPGAã§ã¯ãDSPãŠãããã«å€§å®¹éã®ããããªãŒã䜿çšããããšã§åé¡ã解決ããŠããŸãã ããšãã°ãã¶ã€ãªã³ã¯ã¹6ããã³7ã·ãªãŒãºFPGAã¯ãDSP48E1ã»ã«ã§48ãããã®ããããªãŒãšä¹ç®åšã䜿çšããŸãã 次ã®å³ã¯ãFIRãã£ã«ã¿ãŒãå®è£
ããæšæºãããã¯DSP48E1ã瀺ããŠããŸãã

ææ°ã®FPGAã®çµã¿èŸŒã¿DSPãããã¯ã¯ãDSPã¿ã¹ã¯ãæã䟿å©ã«å®è¡ã§ããããã«èšèšãããŠããŸãã ãŸããFIRãã£ã«ã¿ãŒã®å®è£
çšã
å®è£
æãåçŽãªãã£ã«ã¿ãŒãå®è£
ããããã«å¿
èŠãªè«çæŒç®ã¯ã»ãšãã©ãããŸããã FIRãã£ã«ã¿ãŒãå®è£
ããã¡ã€ã³ããŒãã¯ãDSP FPGAãããã¯ã§ãã ãã®ãããã¯ã§ã¯ããã¹ãŠã®æ°åŠæŒç®ãè¡ãããŸã-å
¥åãµã³ãã«ãšãã£ã«ã¿ãŒä¿æ°ã®ä¹ç®ãå
¥åä¿¡å·ã®é
延ãããŒã¿ã®åèšã ææ°ã®DSPããŒãã«ã¯äºåå ç®åšãå«ãŸããŠããããã察称THEMã䜿çšãããã£ã«ã¿ãŒã®å ç®æäœããã®ããŒãå
ã§å®è¡ã§ããŸãã DSPãããã¯ã«å ããŠããã£ã«ã¿ãŒã«ã¯ä¿æ°ïŒåæ£ãŸãã¯ãããã¯ïŒãä¿åããããã®ã¡ã¢ãªãå¿
èŠã§ãã ãã£ã«ã¿ãŒã¯ä»ã®ãã®ã䜿çšããŸããã ãã®å³ã¯ãä¹ç®åšãããããªãŒãé
延ã©ã€ã³ãããã³ä¿æ°ãä¿åããããã®ã¡ã¢ãªã䜿çšããFIRãã£ã«ã¿ãŒã®å®è£
ã瀺ããŠããŸãã

MATLABã§ã®ãã£ã«ã¿ãŒèšç®
ãã£ã«ã¿ãèšç®ãããã®ä¿æ°ãæ€çŽ¢ã§ããå€ãã®ã¢ããªã±ãŒã·ã§ã³ããããŸãã ããšãã°ãMATLABã®LABViewãScope FIRãFDAToolãŸãã¯Octaveã®ç¡æã®ã¢ããã°ã ãããããFIRãã£ã«ã¿ãŒãèšç®ããæã䟿å©ãªæ段ã¯MATLABã§ãã ãã£ã«ã¿ãŒãäœæããã³åæããããŒã«ãå®è¡ããã«ã¯ãç°å¢ã®ã³ãã³ããŠã£ã³ããŠã§ããŒã¯ãŒã
fdatoolãå
¥åããŸãã ãã®ãããªãŠã£ã³ããŠã衚瀺ãããŸãïŒMATLABã®ããŒãžã§ã³ã«ãã£ãŠã¯ãå€èŠ³ãå°ãç°ãªãå ŽåããããŸãïŒã

äž»ãªãã©ã¡ãŒã¿ãŒã¯ã
ãã£ã«ã¿ãŒä»æ§ãŠã£ã³ããŠã§èšå®ããŸãã ãã£ã«ã¿èšå®ã«ãã£ãŠã¯ãã¡ã€ã³ãŠã£ã³ããŠé åã«ããã€ãã®ãã©ã¡ãŒã¿ã衚瀺ãããå ŽåããããŸãã
- ãã£ã«ã¿ãŒæ¬¡æ° -ãã£ã«ã¿ãŒæ¬¡æ°ãå®çŸ©ããŸãïŒæå°ãŸãã¯ãŠãŒã¶ãŒå®çŸ©ïŒ**ã
- åšæ³¢æ°ä»æ§ -ãã£ã«ã¿ãŒç¹æ§ã®åšæ³¢æ°ãã©ã¡ãŒã¿ãŒãå®çŸ©ããŸãã
- æ¯å¹
ä»æ§ -ãã£ã«ã¿ãŒç¹æ§ã®æ¯å¹
ãã©ã¡ãŒã¿ãŒãå®çŸ©ããŸãã
- å¯åºŠä¿æ° -çãªããã«ã¿ã€ãã®å Žåããã£ã«ã¿ãŒãè¿äŒŒãããã€ã³ãã®ã°ãªãããèšå®ããŸãã
**-FDAToolã§ã¯ããã£ã«ã¿ãŒæ¬¡æ°Nã¯æå®ããã次æ°ãã1ã€å€§ãããªããŸãïŒN = 7ã«èšå®ãããšããŠãŒãã£ãªãã£ã¯8ã€ã®ä¿æ°ãèšç®ããŸãïŒ!!!
å¿çã¿ã€ã -
å¿çã¿ã€ãããã£ã«ã¿ããŸãã ãã®ãã£ãŒã«ãã§ã¯ãããšãã°æ¬¡ã®ãããªèªç¶çã«ååšãããã£ã«ã¿ãŒãéžæãããŸãã
- ããŒãã¹ -ããŒãã¹ãã£ã«ã¿ãŒã
- ã¬ã€ãºãã³ãµã€ã³ -ã¬ã€ãºãã³ãµã€ã³ãã£ã«ã¿ãŒã
- ãã€ãã¹ - ãã€ãã¹ãã£ã«ã¿ãŒã
- ãã³ããã¹ -ãã³ããã¹ãã£ã«ã¿ãŒã
- ãã³ãã¹ããã -ãããïŒåŒŸå¹ïŒãã£ã«ã¿ãŒã
- 埮ååš -埮ååšã
- ãã€ãã¹ã - ãã€ãã¹ããã£ã«ã¿ãŒã
- ãã«ããã³ã -ãã«ããã³ããã£ã«ã¿ãŒã
- ãã«ãã«ãå€æåš -ãã«ãã«ãå€æåšã
- ä»»æã®å€§ãã -ä»»æã®åšæ³¢æ°å¿çãæã€ãã£ã«ã¿ãŒã
ãªã©
ããã«ããã£ã«ã¿ãŒã®ã¿ã€ãã«å¿ããŠãåæããŒã«ã¯ãã£ã«ã¿ãŒã®ã¿ã€ãã®å¶éã瀺ããNã®æ£ããå€ãå
¥åããããã«ææ¡ããŸãã
èšèšæ³ -ãã£ã«ã¿ãŒèšèšæ³ãšãã®ã¿ã€ãïŒIIRãŸãã¯FIRïŒãéžæããŸãã IIRãã£ã«ã¿ãŒã§ã¯ã次ã®ãªãã·ã§ã³ã䜿çšã§ããŸãã
- ãã¿ãŒã¯ãŒã¹ - ãã¿ãŒã¯ãŒã¹ãã£ã«ã¿ãŒã
- ãã§ãã·ã§ãã¿ã€ãIãII-ãã§ãã·ã§ããã£ã«ã¿ãŒã
- æ¥å -æ¥åãã£ã«ã¿ãŒã
- æ倧ãã©ãã -éé垯åã§æããã©ãããªå¿çãæã€ãã£ã«ã¿ãŒã
ãªã©
*** FIRãã£ã«ã¿ãŒã®ãªãã·ã§ã³ãå©çšå¯èœã§ãïŒ
- çãªããã« -åäžã«èåããåšæ³¢æ°å¿çãæã€ãã£ã«ã¿ãŒã
- æå°äºä¹ -æå°äºä¹ãã£ã«ã¿ãŒã
- ãŠã£ã³ã㊠-ããŸããŸãªæ©èœãæã€ãŠã£ã³ããŠã®éã¿ä»ããã£ã«ã¿ãŒ****ã
- Complex Equiripple-åäžã«èåããåšæ³¢æ°å¿çãæã€è€éãªãã£ã«ã¿ãŒã
- æ倧ãã©ãã -éé垯åã§æããã©ãããªå¿çãæã€ãã£ã«ã¿ãŒã
ãªã©
***-ã¿ã€ã
Equirippleããã³
Windowã®ãã£ã«ã¿ãŒã¯ãå®çšäžã®æ倧ã®é¢å¿äºã§ãã
****-ãã®ãªãã·ã§ã³ãéžæãããšããŠã£ã³ããŠæ©èœãšãã®ãã©ã¡ãŒã¿ãŒãžã®ã¢ã¯ã»ã¹ããã«ã衚瀺ãããŸãã
çãªããã«æ³ã®å Žåãä¿®æ£ãããRemezã¢ã«ãŽãªãºã ã䜿çšããŠãæãåçŽãªFIRãã£ã«ã¿ãŒèšç®ãå®è¡ãããŸãã ãŠãŒã¶ãŒã¯ããã£ã«ã¿ãŒã®ä»æ§ãããã©ã¡ãŒã¿ãŒãèšå®ããããã«çµæã確èªããŸãã æºè¶³ã®ããçµæãåŸãããªãå Žåã¯ããã€ã§ã1ã€ä»¥äžã®ãã£ã«ã¿ãŒãã©ã¡ãŒã¿ãŒãå€æŽããŠãç°ãªãåšæ³¢æ°å¿çãååŸã§ããŸãã èšç®ã¯ãå¿
èŠãªç¹æ§ãåŸããããŸã§å®è¡ãããŸãã ã¿ã¹ã¯ã®å€ãéæã§ããªãã£ãå Žåãé
ããæ©ãããä»æ§ãã1ã€ãŸãã¯å¥ã®å€ãç ç²ã«ããããNãã£ã«ã¿ãŒã®æ¬¡æ°ã倧å¹
ã«å¢ããå¿
èŠããããŸãã
Windowã¡ãœããã®ãŠã£ã³ããŠé¢æ°ã«ã¯ããŠãŒã¶ãŒå®çŸ©ã®ãŠã£ã³ããŠé¢æ°ïŒãŠãŒã¶ãŒå®çŸ©ïŒãŸã§ã
BartlettãBlackmanãBlackman-HarrisãChebyshevãFlat TopãGaussianãHammingãHannãKaiserãRectangleãªã©ã®ããã€ãã®ãªãã·ã§ã³ããããŸãã ãããã®é¢æ°ã¯ãã¹ãŠç¬èªã®ç¹æ§ãæã¡ãFIRãã£ã«ã¿ãŒã®åšæ³¢æ°å¿çã®ããŸããŸãªãã©ã¡ãŒã¿ãŒãæäŸã§ããŸãã ãŠã£ã³ããŠé¢æ°ã®äžéšã¯ãã©ã¡ãŒã¿ãŒãªãã§èšç®ããããã£ã«ã¿ãŒã®äžéšã¯ãã£ã«ã¿ãŒã®åšæ³¢æ°å¿çã«åœ±é¿ããç¹å®ã®ãã©ã¡ãŒã¿ãŒãä»ããŠæå®ãããŸãã
ç§ã®æèŠã§ã¯ã衚瀺ããããã¹ãŠã®ãŠã£ã³ããŠé¢æ°ã®äžã§ã
KaiserãŠã£ã³ããŠãæã䟿å©ã§ãã åšæ³¢æ°å¿çãäœæããã«ã¯ã1ã€ã®ããŒã¿ãã©ã¡ãŒã¿ãŒã®ã¿ãå¿
èŠã§ããããã¯ãæžè¡°åž¯åã®æå¶ã¬ãã«ãšåšæ³¢æ°å¿çã®è§åœ¢æ§ã«åœ±é¿ããŸãã
FDAToolã«ã¯ãã¡ã€ã³ã¯ãŒã¯ã¹ããŒã¹ã®å·Šäžã«è¿œå ã®ã¿ããããããã£ã«ã¿ãŒã®ã¿ã€ãïŒãã·ã¡ãŒã¿ãŸãã¯ã€ã³ã¿ãŒãã¬ãŒã¿ãŒïŒãSimulinkã«æ¿å
¥ãããã¢ãã«ã®ååãä¿æ°ãšå
¥åããŒã¿ã®ã¿ã€ããšè§£å床ãªã©ãæå®ã§ããŸãã å®çšçãªç®çã®ããã«ãæãåºæ¬çãªã¿ãã¯ã
ãã¶ã€ã³ãã£ã«ã¿ãŒ -ãã£ã«ã¿ãŒããã®äžã§èšç®ããã
éååãã©ã¡ãŒã¿ãŒ -ãã®ã¿ãã§ã¯ãããŒã¿ã®ã¿ã€ããšå¹
ãèšå®ãããŸãã
äžéšããã«ã«ã¯ããã£ã«ã¿ãŒã®åšæ³¢æ°å¿çãšäœçžå¿çãã°ã«ãŒããšäœçžé
延ããã«ã¹ãšé·ç§»ç¹æ§ããã£ã«ã¿ãŒã®é¶ç¹ãšæ¥µã®ããããèšç®ãããä¿æ°ãªã©ã確èªã§ãããã¿ã³ããããŸãã
FDAToolã¯ãŒã¯ã¹ããŒã¹ã®ã¹ã¯ãªãŒã³ã·ã§ãããã£ã«ã¿ãŒã®åšæ³¢æ°å¿çãšäœçžå¿çã®ã°ã©ãïŒ

ã€ã³ãã«ã¹å¿çã°ã©ãã®ãã£ã«ã¿ãŒïŒ

é¶ç¹ãšæ¥µã®ã°ã©ããã£ãŒãïŒ

ããã«å ããŠãFDAToolã§ã¯ãã£ã«ã¿ãŒã¢ãã«ãšèšç®ãããä¿æ°ãã€ã³ããŒãããã³ãšã¯ã¹ããŒãã§ããŸãã ããšãã°ããã£ã«ã¿ãŒãèšç®ãããã®ã¢ãã«ãæšæºããªããã£ãã®ã¢ãã«ãšããŠSimulinkã«éä¿¡ã§ããŸãã ä¿æ°ãèšç®ããŠãããšãã°* .hïŒããããŒïŒãšããæ¡åŒµåãæã€ãã¡ã€ã«ãšããŠå¥ã®ãã¡ã€ã«ã«ä¿åã§ããŸãã
*ãã£ã«ã¿ä¿æ°ãå«ã.HããããŒãã¡ã€ã« #include "tmwtypes.h" const int BL = 128; const int16_T B[128] = { -18, 0, 19, 39, 58, 75, 88, 97, 100, 96, 85, 68, 44, 16, -16, -50, -83, -113, -139, -157, -166, -164, -152, -128, -94, -51, 0, 55, 111, 164, 211, 248, 272, 280, 269, 240, 192, 126, 45, -47, -146, -245, -339, -421, -483, -521, -528, -501, -434, -329, -183, 0, 217, 462, 728, 1006, 1288, 1564, 1823, 2056, 2254, 2409, 2517, 2571, 2571, 2517, 2409, 2254, 2056, 1823, 1564, 1288, 1006, 728, 462, 217, 0, -183, -329, -434, -501, -528, -521, -483, -421, -339, -245, -146, -47, 45, 126, 192, 240, 269, 280, 272, 248, 211, 164, 111, 55, 0, -51, -94, -128, -152, -164, -166, -157, -139, -113, -83, -50, -16, 16, 44, 68, 85, 96, 100, 97, 88, 75, 58, 39, 19, 0, -18 };
ããã«ãã¶ã€ãªã³ã¯ã¹çšã®ç¹å¥ãªåœ¢åŒã§* .COEä¿æ°ãã¡ã€ã«ãäœæã§ããŸãã ãããè¡ãã«ã¯ãåºå®å°æ°ç¹ãæã€ä¿æ°ã®ã¿ã€ããéžæããããã深床ãèšå®ããŸãã 次ã«ã[
ã¿ãŒã²ãã ]
-> [ã¶ã€ãªã³ã¯ã¹ä¿æ°ïŒ.COEïŒãã¡ã€ã« ]ãã¯ãªãã¯ããŸãããã®çµæããã¡ã€ã«ã®å
容ïŒã°ããŒãã«èšå®ãšHEX圢åŒã®ä¿æ°ïŒãã¡ã€ã³MATLABãŠã£ã³ããŠã«è¡šç€ºãããŸãã
äŸ* .coeãã¡ã€ã« ; XILINX CORE Generator(tm)Distributed Arithmetic FIR filter coefficient (.COE) File ; Generated by MATLAB(R) 8.3 and the DSP System Toolbox 8.6. ; ; Generated on: 06-Dec-2015 15:35:35 ; Radix = 16; Coefficient_Width = 18; CoefData = 3ffeb, 00018, 00049, 00067, 0005f, 00029, 3ffd2, 3ff79, 3ff46, 3ff59, ...
åäžã®ã€ã³ãã«ã¹ãå
¥åã«é©çšããããšããã£ã«ã¿ãŒã®ã€ã³ãã«ã¹å¿çã®ã¿ãåºåã§åœ¢æãããããšãããããŸãïŒSimulinkã®ã°ã©ãïŒã

ã¶ã€ãªã³ã¯ã¹FIRã³ã³ãã€ã©
CICãã£ã«ã¿ãŒã®å Žåãšåæ§ã«ãã¶ã€ãªã³ã¯ã¹ããFIRãã£ã«ã¿ãŒãäœæããæ¹æ³ã«ã€ããŠè©³ãã説æããŸãã 説æã«ã¯ãããŒã¿ã·ãŒãããã®ç¿»èš³ã ãã§ãªããå人çãªçµéšãååã®çµéšããã®ã³ã¡ã³ããæšå¥šäºé
ãå«ãŸããŠããããšã«æ³šæããŠãã ããã
FIRã³ã³ãã€ã©-ã¿ã1ïŒ
ã³ã³ããŒãã³ãå -
ã³ã³ããŒãã³ãã®åå ïŒã©ãã³æåaãzãæ°å0ã9ãããã³èšå·ã_ãã䜿çšïŒã
ã¡ã€ã³ã®ãã£ã«ã¿ãŒãã©ã¡ãŒã¿ãŒãæå·åãããŠããæå³ã®ããååã䜿çšããããšããå§ãããŸãã ããšãã°ã
xfir128t_d1_b18_4c_w6_a7ã¯ã¶ã€ãªã³ã¯ã¹åãã«äœæããããã£ã«ã¿ãŒã§ãN = 128ïŒã¿ããïŒããã·ã¡ãŒã·ã§ã³ã¯äœ¿çšããããããã深床ã¯
18ã4ãã£ãã«ãããŒã¿= 6ã®ã«ã€ã¶ãŒãŠã£ã³ããŠé¢æ°ãé©çšãããFPGAãããã¯Artix-7ã§ãã
ãã£ã«ã¿ãŒä¿æ°ïŒ- ãœãŒã¹ã®éžæ -ä¿æ°ã®ãœãŒã¹ãéžæããŸãïŒ ãã¯ãã« -æåã§æå®ããããã¯ãã«ãŸãã¯COEãã¡ã€ã« -ä¿æ°ã®ã»ãããæã€ãã¡ã€ã«ïŒã ãªãŒããŒããŒãããã* .COEãã¡ã€ã«ã䜿çšããããšããå§ãããŸãã
- ä¿æ°ãã¯ãã« -æåã§èšå®ãããä¿æ°ã®ãã¯ãã« ã
- ä¿æ°ãã¡ã€ã« -ãã¡ã€ã«ããèªã¿åãããä¿æ°ã®ãã¯ãã«ã
- ä¿æ°ã»ããã®æ°-ä¿æ°ãåŠçããããã«å®éã«äœ¿çšãããDSPãããã¯ã®æ°ã ä¿æ°ã®æ°ã¯ãæå®ãããå€ã§å®å
šã«é€ç®ããå¿
èŠããããŸãã ãµã³ããªã³ã°åšæ³¢æ°ã«æ¯ã¹ãŠé«ãåšæ³¢æ°ã§äœæ¥ããå Žåã«äŸ¿å©ãªãªãã·ã§ã³ã¯ãFPGAãªãœãŒã¹ã倧å¹
ã«ç¯çŽã§ããŸãã
- ä¿æ°ã®æ°ïŒã»ããããšïŒ -DSPãããã¯ã«ãã£ãŠåæã«åŠçãããä¿æ°ã®æ°ã ãã£ãŒã«ãã®å€ã¯ãä¿æ°ã®æ°ãšåã®ãã©ã¡ãŒã¿ãŒãèªã¿åããšãã«èªåçã«èšå®ãããŸãã
ãã£ã«ã¿ãŒä»æ§ïŒ- ãã£ã«ã¿ãŒã¿ã€ã -ãã£ã«ã¿ãŒã¿ã€ãïŒåçŽ/è£é/éåŒã/å€çžã
- ã¬ãŒãå€æŽã¿ã€ã -åŠçé床ã®å€æŽã æŽæ°ã§ãåæ°ã§ãããŸããŸããã
- è£é/éåŒãçå€ -è£é/éåŒãä¿æ°ã
- ãŒãããã¯ä¿æ° -ãã£ã«ã¿ãŒãè£éããå Žåããã©ã¡ãŒã¿ãŒã¯ä¿æ°éã«æ¿å
¥ããããŒãã®æ°ã決å®ããŸãã
- ãã£ãã«æ° -ç¬ç«ãããã£ã«ã¿ãªã³ã°ãã£ãã«ã®æ°ïŒ1ã64ã
ããŒããŠã§ã¢ãªãŒããŒãµã³ããªã³ã°
ä»æ§ïŒãããã®ãã©ã¡ãŒã¿ãŒã¯ãåºåãµã³ãã«ã¬ãŒããããŒã¿ã®åŠçã«å¿
èŠãªã¯ããã¯ãµã€ã¯ã«æ°ã«åœ±é¿ããŸãã ã«ãŒãã«å
ã®äžŠååŠçã®ã¬ãã«ãšå æããããªãœãŒã¹ã®éãããããã®ãã©ã¡ãŒã¿ãŒã«äŸåããŸãã
- 圢åŒã®éžæ -ãã£ã«ã¿ãŒã®åšæ³¢æ°æ¯ãéžæããŸãïŒåšæ³¢æ°ä»æ§/ãµã³ãã«åšæã
- åšæ³¢æ°ã®æå® ïŒãŠãŒã¶ãŒã¯ããµã³ããªã³ã°ã¬ãŒããšããŒã¿åŠçã®é »åºŠãèšå®ããŸãã
- ãµã³ãã«åšæ -ã¯ããã¯ä»æ§ïŒãŠãŒã¶ãŒã¯åŠçåšæ³¢æ°ãšããŒã¿ã®ã¯ããã¯åšæ³¢æ°ã®æ¯çãèšå®ããŸãã
- å
¥åãµã³ããªã³ã°åšæ³¢æ° -*ã
- ã¯ããã¯åšæ³¢æ° -ãã£ã«ã¿ãŒåŠçåšæ³¢æ°ïŒ*****ã
- å
¥åãµã³ããªã³ã°æé -å
¥åã¯ããã¯ä¿¡å·ã®åšæ³¢æ°ã«å¯ŸããåŠçåšæ³¢æ°ã®æ¯çïŒ*****ã
*****-ç¯å²ã¯äžè¬èšå®ãšãµã³ããªã³ã°ã¬ãŒãRã«äŸåããŸãã
FIRã³ã³ãã€ã©-ã¿ã2ïŒ
ãã£ã«ã¿ã¢ãŒããã¯ã㣠-å®è£
ããããã£ã«ã¿ã¢ãŒããã¯ãã£ãå®çŸ©ããŸãã
- Systolic Multiply Accumulate-环ç©ã䌎ãåçž®æãã£ã«ã¿ãŒã
- Transpose Multiply Accumulate-环ç©å¯èœãªèª¿æŽå¯èœãªãã£ã«ã¿ãŒã
- åæ£æŒç® -åæ£FPGAããžãã¯ã«åºã¥ããã£ã«ã¿ãŒã
ä¿æ°ãªãã·ã§ã³ -ä¿æ°ã®ãã©ã¡ãŒã¿ãŒ
- ãªããŒãå¯èœãªä¿æ°ã䜿çš-ãªãŒããŒããŒããããä¿æ°ã䜿çšããŸãã 1ã€ã®ãã£ã«ã¿ãŒã«éè² è·ã®åšæ³¢æ°å¿çãå®è£
ããããã®äŸ¿å©ãªãªãã·ã§ã³ã
- ä¿æ°æ§é -ä¿æ°æ§é ã5çš®é¡ïŒé察称ã察称ãè² å¯Ÿç§°ãããŒãã¹ããªããããã«ãã«ãå€æããã ããã©ã«ãã§ã¯ãFIRã³ã³ãã€ã©ãŒã¯ä¿æ°ã®ã¿ã€ãïŒæšå®ïŒèªäœã決å®ããããšããŸãã
- ä¿æ°ã¿ã€ã - ä¿æ°ã®ã¿ã€ã ïŒç¬Šå·ä»ããŸãã¯ç¬Šå·ãªãã
- éåå -äžžãæ¹æ³ãèšå®ããŸãïŒæŽæ°ä¿æ°ãæãè¿ãæŽæ°ãžã®äžžãããŸãã¯æ倧ãã€ãããã¯ã¬ã³ãžïŒæ倧å€ã«å¯ŸããŠä¿æ°ãã¹ã±ãŒãªã³ã°ããŸãïŒã
- ä¿æ°ã®å¹
- ä¿æ°ã®ããã深床ã ãã®ãã£ãŒã«ãã®å€ã¯ããã£ã«ã¿ãŒã®åšæ³¢æ°å¿çã«åœ±é¿ããŸããããã¯ã察å¿ãããŠã£ã³ããŠã§ç¢ºèªã§ããŸãïŒåšæ³¢æ°å¿çïŒã
- æé«ç²ŸåºŠã®å°æ°éšã®é·ã -ãããã°ãªããã®å
šäœããã³å°æ°éšã«æé©ãªæ¯çãèªåçã«èšå®ããŸãã
- Coefficient Fractional Bits-ãããã°ãªããå
ã®ä¿æ°ã®å°æ°è¡šçŸããæŽæ°éšåãåé¢ããäœçœ®ã決å®ããŸãã
ããŒã¿ãã¹ãªãã·ã§ã³ -å
¥åãªãã·ã§ã³
- ãã¹ã®æ°-åŠçãã䞊åãã£ãã«ã®æ°ã決å®ããŸãã DSPã³ã¢ã®æ°ã¯ããã®ãã£ãŒã«ãã®å€ã«æ¯äŸããŸãã ãã®ãªãã·ã§ã³ã®å Žåããã£ã«ã¿ãŒå
¥åã¯ããã€ãã®ç¬ç«ããããŒã¿ã¹ããªãŒã ãåãåããŸããã[ãã£ã³ãã«æ°]ãã©ã¡ãŒã¿ãŒã®å ŽåãããŒã¿ã¯1ã€ã®å
¥åã«éãããé 次åŠçãããŸãã
- å
¥åããŒã¿å -ãã£ã«ã¿ãŒã®å
¥åã§ã®ããŒã¿åïŒç¬Šå·ä»ããŸãã¯ç¬Šå·ãªãïŒã
- å
¥åããŒã¿å¹
- å
¥åããŒã¿ã®å¹
ã
- å
¥åããŒã¿ã®å°æ°ããã -å
¥åããŒã¿è¡šçŸã®å°æ°éšåããšã®ãããæ°ã決å®ããŸãã ãã®ãã£ãŒã«ãã®å€ã¯ããã£ã«ã¿ãŒã®å®è£
ã«åœ±é¿ããŸããïŒ ïŒåºå®å°æ°ç¹æ°ã¯å¥œããªããã«è¡šçŸã§ããŸããå°æ°éšãããå Žåãšãªãå ŽåããããŸãããçµæã¯åãã§ãïŒã
- åºåäžžãã¢ãŒã -åºåããŒã¿ã®äžžãã¢ãŒãïŒå®å
šç²ŸåºŠãæäžäœãããã®ç Žæ£ãæŽæ°ã®åãäžã/åãäžããå¶æ°/å¥æ°ãžã®åãäžãã å€ãã®ã¿ã¹ã¯ã§ã¯ããã®ãã©ã¡ãŒã¿ãŒãå€æŽããå¿
èŠã¯ãªããå®å
šç²ŸåºŠ-å®å
šç²ŸåºŠã®ãŸãŸã«ããŠããããšãã§ããŸãã
- åºåå¹
-ãã£ã«ã¿ãŒã®åºåããŒã¿ã®å¹
ã
- åºåå°æ°ããã - åºåã®å°æ°éšã決å®ãããããæ°ã ãã®ãã£ãŒã«ãã¯åèæ
å ±ã§ããããã£ã«ã¿ãŒã®å®è£
ã«ã¯åœ±é¿ããŸããã
- äžžãè¿äŒŒãèš±å¯ -察称䞞ãã¢ãŒãã¢ãŒãã®å Žåããã®ãªãã·ã§ã³ã«ãããè¿œå ã®ãªãœãŒã¹ã³ã¹ããªãã§äžžããéã®è¿äŒŒãå¯èœã«ãªããŸãïŒåèªã®ç¬Šå·ãããã®èªå決å®ïŒã
- Registered Output-ã¢ã¯ãã£ããªãªãã·ã§ã³ã¯ããã£ã«ã¿ãŒåºåã«è¿œå ã®ã¬ãžã¹ã¿ãŒãè¿œå ããŠããã£ã«ã¿ãŒã®ããã©ãŒãã³ã¹ãåäžãããŸãïŒæ倧åŠçåšæ³¢æ°ïŒã
FIR Compiler-ã¿ã3ïŒ
æé©åã®ç®æš -ãã£ã«ã¿ãŒãäœæãããšãã®æé©åã®ç®æšãå®çŸ©ããŸãïŒé¢ç©-é¢ç©ãé床-é床ïŒã ã»ãšãã©ã®å Žåãæ倧é床ãšæå°ãªãœãŒã¹æ¶è²»ãåæã«å®çŸã§ããŸãããç¹å®ã®å Žåãé床ãæå®ãããšããã£ã«ã¿ãŒã¯è«çé¢æ°éã®ã¯ãªãã£ã«ã«ãã¹ã«å
éšã¬ãžã¹ã¿ãæé©ã«é
眮ããŸãã
- SCLR-åæãã£ã«ã¿ãŒãªã»ããïŒå
¥åã®è«çãŠãããããªã»ãããå®è¡ããŸãïŒã
- 確å®çãªSCLRåäœã®äœ¿çš -ãªã»ããããã»ã¹äžã®ç©åãã£ã«ã¿ãŒã®å
éšããŒã¿ã®åäœãå®çŸ©ããŸãã ã¢ã¯ãã£ããªãã·ã§ã³ã䜿çšãããšããªã»ããä¿¡å·ã¯å
éšã¬ãžã¹ã¿ãããŒã¿ã¡ã¢ãªãããã³ã¹ãã¬ãŒãžä¿æ°ãã¯ãªã¢ããŸãã
- ND- ãæ°ããããŒã¿ãããã£ã«ã¿ãŒå
¥åãžã®ããŒã¿å
¥åã決å®ããå
¥åä¿¡å·ã RFDä¿¡å·ãšäžç·ã«ãããŒã¿ã®ãããåŠçãæŽçããããšãã§ããŸãã éåžžãNDããã³RFDä¿¡å·ã¯FIFOå¶åŸ¡ä¿¡å·ã«æ¥ç¶ãããŸãã
- CE- ãã¯ããã¯ã€ããŒãã«ãããã£ã«ã¿ãŒã¯ããã¯ã€ããŒãã«ä¿¡å·ã ãã®ä¿¡å·ã®å
¥åã®äœã¬ãã«ã§ã¯ãæ°ããããŒã¿ãå°çãããã©ããã«é¢ä¿ãªãããã£ã«ã¿ãŒå
éšã®åŠçã¯ãã¹ãŠåæ¢ããŸãã
- DATA_VALID-åºåããŒã¿ã®æå¹æ§ã®ã·ã°ãã«ã ãã®ãªãã·ã§ã³ã¯ããã«ããã£ãã«ã¢ãŒãïŒNumber of Channels> 1ïŒã§ã®ã¿åœ¹ç«ã¡ãŸãã
ã¡ã¢ãªãªãã·ã§ã³ -å
¥åããŒã¿ããã£ã«ã¿ä¿æ°ãäžéããŒã¿ãåºåããŒã¿ãä¿åããã¡ã¢ãªã®ã¿ã€ããéžæããããã®ã°ããŒãã«èšå®ã åæ£ã¡ã¢ãªã§ã¯ãªããããã¯ã¡ã¢ãªãéžæãããšãFPGAè«çãªãœãŒã¹ãäœçŸåãç¯çŽã§ããå ŽåããããŸãã
ããŒã¿/ä¿æ°/å
¥å/åºåãããã¡ã¿ã€ãã®å Žåã
èªå/ãããã¯/åæ£ã¢ãŒããå¯èœã§ãã
ä»ã®ã¹ãã¬ãŒãžã®èšå® -äžéããŒã¿çšã®ã¡ã¢ãªã®ã¿ã€ããå®çŸ©ããŸãã èªå/ãããã¯/åæ£ã¢ãŒããå©çšã§ããŸãã
DSPã¹ã©ã€ã¹åãªãã·ã§ã³-FPGAåéã®DSPãããã¯ã®åæ£ã®èšå®ãå®çŸ©ããŸãã ããšãã°ã察称ä¿æ°ã䜿çšããäžéšã®ãã£ã«ã¿ãŒã¢ãŒããã¯ãã£ã§ã¯ãMulti-Colomn Supportã¢ãŒãã䜿çšã§ããªãããããã£ã«ã¿ãŒã®å®è£
ã®å¯èœæ§ãç£èŠããå¿
èŠããããŸãã
- ããã€ã¹åã®é·ã -DSPãããã¯ã®åã®é·ãã決å®ããŸãã ãã£ã«ã¿ãŒæ¬¡æ°ã®äžéãšå®è£
ãããŠãããã£ã«ã¿ãŒã®æ倧æ°ãäºåã«å®çŸ©ã§ãã䟿å©ãªæ
å ±ãã£ãŒã«ãã
- åæ§æ -åå
ã®DSPãããã¯ã®æ§æãšäœçœ®ã決å®ããŸãã ãã®ãã©ã¡ãŒã¿ãŒã¯æ
éã«åŠçããå¿
èŠããããŸãããã£ã«ã¿ãŒãè€æ°ã®åã®éã§ç Žæãããšã倧ããªé
延ãçºçããå¯èœæ§ããããããæ倧ã¯ããã¯åšæ³¢æ°ãäœäžããããã§ãã
- åéãã€ãé· -äŒæ¬é
延ã®æªåœ±é¿ãé€å»ããããã«ãDSPãããã¯ã®åéã®è¿œå ã¬ãžã¹ã¿ã®æ°ã決å®ããŸãã
FIR Compiler-ã¿ã4ïŒ
èŠçŽ -ãªã¹ã圢åŒã®ãã®ã¿ãã«ã¯ãæçµãã£ã«ã¿ãŒèšå®ïŒãã£ãã«æ°ããã£ã«ã¿ãŒæ¬¡æ°ãåšæ³¢æ°ãã©ã¡ãŒã¿ãŒãå
¥åã®ããã深床ãåºåããã³äžéããŒã¿ãä¿æ°ã®ããã深床ããã£ã«ã¿ãŒã®é
延ã䜿çšãããDSPãããã¯ã®æ°ãå¶åŸ¡ä¿¡å·ã®æç¡ãªã©ïŒãåæ ãããŸãã
FIR CompilerãŠã£ã³ããŠã®å·ŠåŽã«ã¯ã3ã€ã®äŸ¿å©ãªè¿œå ã¿ãããããŸãã
- IPã·ã³ãã«ã¯ãã¢ã¯ãã£ããªI / OããŒããåããIPãããã¯ã®æŠç¥å³ã§ãã
- é »åºŠ response -FIRãã£ã«ã¿ãŒã®åšæ³¢æ°å¿çã
- å®è£
ã®è©³çŽ° -DSPããã³RAMBã®å æãªãœãŒã¹ã®æšå®ãåèšé
延ãä¿æ°ã®æ°ãããã³ãããã®ããŒãã®é åºã
æœè±¡äŸ
ç¶æ
次ã®ãã©ã¡ãŒã¿ãŒãæã€ãã©ã€ããªåŠçã®ãããŒããã³ããã£ã«ã¿ãŒãèšç®ããŸãã
- Fsãµã³ããªã³ã°ã¬ãŒãïŒ250 MHzã
- Fpassãã£ã«ã¿ãŒã®ã«ãããªãåšæ³¢æ°ïŒ55 MHz
- è§åœ¢æ¯ïŒ> 0.88ïŒFpass / FstopïŒã
- 垯åå¹
æå¶ïŒApassïŒïŒ<0.5 dBã
- æžè¡°æå¶ïŒAstopïŒïŒ> 50 dBã
Artix-7 XC7A100T-FGG484ãããã«6ã€ã®ç¬ç«ãããã£ã«ã¿ãªã³ã°ãã£ãã«ãå®è£
ããŸãã ãããã®ä¿æ°ã¯ãªãŒããŒããŒãããã察称ã§ãããåãã£ã«ã¿ãŒãã£ãã«ã«å¯ŸããŠç¬ç«ããŠããŸãã
解決çã¹ããã1ïŒFPGAãªãœãŒã¹ã®èŠç©ãããã®ãããªãã£ã«ã¿ãŒãå®è£
ããããã«äœ¿çšã§ããæ°Žæ¶ãªãœãŒã¹ã®éãç解ããå¿
èŠããããŸãã DS180ã§ã¯ããããã«240åã®DSP48E1ãããã¯ã3åã«é
眮ãããŠããããšãããããŸãïŒããã¯éèŠã§ãïŒïŒã TKããTHEMã¯å¯Ÿç§°ã§ããããšãããã£ãŠããŸããã€ãŸãã次æ°Nã®ãã£ã«ã¿ãŒã§ã¯ãDSP48E1ã®N / 2ãããã¯ãå¿
èŠã§ãã ãããã£ãŠãéžæããè¶
å°ååè·¯ã§ã¯ãç¹æ§é·N = 240ã®2ã€ã®ãã£ã«ã¿ãŒããŸãã¯é·ãN = 80ã®6ã€ã®ãã£ã«ã¿ãŒãå®è£
ã§ããŸããå®éã®ç®çã§ã¯ãä¿¡å·ãåŠçããå Žåããã£ã«ã¿ãŒã®é·ãã¯2ã®ã¹ãä¹ã®åæ°ãšããŠéžæãããŸãã ããšãã°ãN = 64ã128ãŸãã¯256ããŸãã¯ââãN =ïŒ128 + 64ïŒãïŒ32 + 16 + 8ïŒã ãã®å Žåã240åã®DSPãããã¯ã«6åã®ãã£ã«ã¿ãŒãå®è£
ããå¿
èŠããããŸãã åãã£ã«ã¿ãŒã«å¯Ÿç§°æ§ãããå Žåãä¿æ°ã®é·ãN <81ã䜿çšã§ããŸãã ãã£ã«ã¿ãŒãã©ã¡ãŒã¿ãŒãå®çŸããã«ã¯ãN = 80 = 64 + 16ã®ä¿æ°ã§ååã§ãããšããŸãã
ã¹ããã2ïŒãã£ã«ã¿ãŒä¿æ°ãèŠã€ããFDAToolãå®è¡ããä»æ§ããå¿
èŠãªãã£ãŒã«ãã«ãã£ã«ã¿ãŒãã©ã¡ãŒã¿ãŒãè¿œå ããŸãïŒæ¬¡æ°Nã¯å®éã®ãã£ã«ã¿ãŒæ¬¡æ°ãã1å°ãªãå€ã«èšå®ãããŠããããšã«æ³šæããŠãã ããïŒã ã¢ãŒã1-
çãªããã« ã Fpass = 55 MHzã®ã«ãããªãåšæ³¢æ°ãš0.85ãè¶
ããçŽè§åºŠä¿æ°ã®å Žåãããªã¢åšæ³¢æ°Fstop <62.5 MHzãèŠã€ãããŸãã 次ã®å³ã¯ãå¿
é ãã©ã¡ãŒã¿ãŒã«å¿ãããã£ã«ã¿ãŒã®èšç®ã瀺ããŠããŸãã

ã芧ã®ãšããããã£ã«ã¿ãŒã¯äžèšã®èŠä»¶ããã¹ãŠæºãããŠããŸãã
ã¢ãŒã2-ãŠã£ã³ã㊠ã çªç¶ããããžã§ã¯ããé£è§£ãªé¡§å®¢ã«åŒãæž¡ãçŽåã«ã圌ã®é ã«æããæµ®ãã³ãŸããã ã70 dBã®æå¶ãå¿
èŠã§ããä»ã®æ¡ä»¶ã¯ãã¹ãŠåãã§ãïŒã ãšã¬ã¡ã³ã¿ã«ããŒã¹ãéžæãããããŒããé
ç·ããã³ããŠã³ããããFPGAãã€ã³ã¹ããŒã«ããããããžã§ã¯ãã¯æ°ãæéãããã°ãããŠããããªã¡ã€ã¯ãããã®ã眮ãæ¹æ³ã¯ãããŸããã ã©ããã ãããžã§ã¯ããå®äºãã1é±éåã«ãç¬èªã®FIRãã£ã«ã¿ãèšèšããŸããïŒ åšæ³¢æ°å¿çãæå¶ããä»ã®æ¹æ³ããæ¢ãã§ããïŒ ããŒããããçŽããFPGA fatterãã€ã³ã¹ããŒã«ããŸããïŒ éçŸå®çïŒ äž»ãªããšã¯ãããã¯ã«ãªããªãããšã§ãã Equirippleã¡ãœããã¯ä¿åããªããªããŸããã ãŠã£ã³ããŠã¢ãŒãWindowã«æž¡ããŸãã ç§ã®ãæ°ã«å
¥ãã®ã«ã€ã¶ãŒãŠã£ã³ããŠãéžæãããšãæé«ã®ãã£ã«ã¿ãŒç¹æ§ãå®çŸã§ããŸãã ããšãã°ãæžè¡°åž¯åAstop = 80 dBïŒãã©ã¡ãŒã¿ãŒBeta = 8ïŒã§å¿
èŠãªæå¶ãæäŸããŸãã ãã ãããŠã£ã³ããŠæ¹åŒã§ã¯ãä¿æ°ã®ããã深床ãäžååã§ãããããæžè¡°åž¯åã§éååå¹æãçºçããå¯èœæ§ãããããšãèæ
®ããå¿
èŠããããŸãã

次ã«ãæ¢ç¥ã®æ¹æ³ã§ãèšç®ããä¿æ°ã* .COEãã¡ã€ã«ã«ã¢ããããŒãããŠãããã«äœæ¥ãé²ããŸãã
ã¹ããã3ïŒå®è£
ãã£ãã«ãšä¿æ°ã®æ°ã¯ãFPGAã®DSP48E1ã®ãªãœãŒã¹ã100ïŒ
å æããããã«éžæãããŸããã 次ã®å³ã®6ãã£ãã«ã®å æãªãœãŒã¹ã®æ°ïŒ

ãããžã§ã¯ãã250 MHzã§åäœããªãããšãæããªãã§ãã ããã ä»çµã¿ãã PlanAheadã¯å®å
šã«ãã¬ã€ããããšã奜ã¿ãå®éãããäœãå€ã瀺ããŸãã FIRãã£ã«ã¿ãŒã®6ã€ã®ãã£ãã«ã®é
ç·çµæã
ãããžã§ã¯ãã®é
ç·ã®çŸããå³é¢FIRãã£ã«ã¿ãŒã®IPã³ã¢ã®äžéšã®æŠç¥å³ïŒ

FPGA Editorã®ããŒãã¬ã€ã¢ãŠãïŒãºãŒã äžéšïŒïŒ

FPGA Editorã®ããŒãã¬ã€ã¢ãŠãïŒ

å®çšçãªãã³ã
ãã¡ãããWindowãžã®ç§»è¡ã¯åžžã«ä¿åããããšã¯éããŸãããå®éã«ã¯ãéçºè
ã®ç掻ãäœããã®åœ¢ã§åçŽåããä»ã®æ¹æ³ãããã€ããããŸãã
- ä¿¡å·ã®å¯èœãªãã·ã¡ãŒã·ã§ã³ãäºåã«æ±ºå®ããŸãïŒä¿¡å·ã¹ãã¯ãã«ã®ãµã³ããªã³ã°åšæ³¢æ°ãšã«ãããªãåšæ³¢æ°ã®æ¯ã«ãã£ãŠïŒã éåŒãã«ã¯å®äŸ¡ãªCICãã£ã«ã¿ãŒã䜿çšããŸãã éåŒãã®åŸã䜿çšãããDSPã¯ãªã¹ã¿ã«ãããã¯ã®æ°ãæžããããšãã§ããŸãã
- FPGAãããã®ãµã³ããªã³ã°åšæ³¢æ°ãšåŠçåšæ³¢æ°ã®æ¯çã決å®ããŸãã åŠçé »åºŠããµã³ããªã³ã°é »åºŠãããæ°åé«ãå ŽåãFIRãã£ã«ã¿ãŒã®å®è£
ã«å¿
èŠãªãªãœãŒã¹ã®éãäœåºŠã§ãç¯çŽã§ããŸãã
- åæ£FPGAããžãã¯ã«ãã£ã«ã¿ãŒãå®è£
ããŸãïŒãããå¯èœã§ãããåŠçåšæ³¢æ°ã®ç¹ã§éèŠã§ãªãå ŽåïŒã ãã®æ¹æ³ã¯å®è£
ãéåžžã«é£ããããã£ã«ã¿ãŒNã®å€§ããªæ¬¡æ°ã§ã¯å®å®ããŠæ©èœããŸããã
- 察称THEMã§ãã£ã«ã¿ãŒãå®è£
ããã«ã¯ãæåã«DSPãããã¯ã®åã®ãµã€ãºãšFPGAã®ãããã®åã®æ°ãæšå®ããŸãã 察称THEMã§é·ããã£ã«ã¿ãŒãå®è£
ããã«ã¯ãDSPãããã¯ã®ã«ã¹ã±ãŒãæ¥ç¶ãå¿
èŠã§ããã1åã®FPGAå
ã«ãã£ã«ã¿ãŒãé
眮ããå ŽåãååãªDSPã»ã«ããªãå ŽåããããŸãã äžæ¹ãç¬ç«ãããã£ã«ã¿ãŒãã£ãã«ãå®è£
ããå Žåãååã«ãã£ã«ã¿ãŒã1ã€ããåãŸããªãå Žåãåã ãã§ã¯äžååãªå ŽåããããŸãã ç¹æ§ã®é·ããçãããããä¿æ°ã®å°ãªã2ã€ã®å°ããªãã£ã«ã¿ãŒãäœæããå¿
èŠããããŸãã
- ææ°ã®FPGAã¯ãªã¹ã¿ã«ïŒAlteraããã³XilinxïŒã®å Žåã察称THEMã䜿çšããŠãã£ã«ã¿ãŒãå®è£
ããå Žåãåæ£ããžãã¯ã§ã¯ãªãDSPããŒãã§äºåå ç®åšã䜿çšããŸãã å
éšã®å眮å ç®åšã¯ãè«çã»ã«ã ãã§ãªããæ°Žæ¶ãªãœãŒã¹ã®ãã¬ãŒã¹ã倧å¹
ã«ç¯çŽããŸãïŒ *******
******-ã¶ã€ãªã³ã¯ã¹ã®å Žåã察称ãã£ã«ã¿ãŒã䜿çšãããã£ã«ã¿ãŒã1åã«åãŸããªãå Žåããã£ã«ã¿ãŒã®åé¢ã¯ä¿èšŒãããŸããïŒPlanAheadã§ã¯ãDSPãããã¯ã®åãç·è²ã§åŒ·èª¿è¡šç€ºãããŸãïŒã ã¢ã«ãã©ã§-ãã§ãã¯ããŸããã§ããã 誰ããèªåã®çµéšãå
±æããŠããããå¬ããã§ãã
*******-ã¶ã€ãªã³ã¯ã¹7ã·ãªãŒãºä»¥åã®FPGAã®å Žåãä¿æ°ã®ããã深床ã18ãè¶
ããªãå Žåã«ã®ã¿ãã®æ¹æ³ãä¿åãããŸãã2015-2016幎ã®è¶
è¿ä»£çãªã¶ã€ãªã³ã¯ã¹Ultra-Scaleãããã®å Žåãå¯èœã§ãã 24å åã®å®¹éãæã€äºåå ç®åšãå®è£
ããŸãã
Vivado hls
FPGAã§ããžã¿ã«ä¿¡å·åŠçã¿ã¹ã¯ã®ããŒããäœæããææ°ã®æ¹æ³ã¯ã2ã€ã®ååã«åºã¥ããŠããŸãã
- èšèšæéã®ççž®ïŒã åžå Žæå
¥ãŸã§ã®æé ãã®æŠå¿µïŒã
- ãšã³ããªã®ãããå€ã®æžå°ïŒC ++éçºè
ã®éã§ã®FPGAã®æ®åïŒã
äž¡æ¹ã®ååã¯å¶ç¶ã«çãããã®ã§ã¯ãªããäž»ã«FPGAã®è«ç容éã®çµ¶ãéãªãå¢å ã«ç±æ¥ããŠããŸãã ã¶ã€ãªã³ã¯ã¹ã¯ãïŒVHDLããã³Verilogèšèªã®ïŒå€ãããã°ã©ãã³ã°æ¹æ³ã§ã¯çŸåšã®ã¿ã¹ã¯ã«å¯Ÿå¿ã§ããªããªã£ãŠãããšäž»åŒµããŠãããå°æ¥çã«ã¯FPGAããã°ã©ãã³ã°ãCãC ++ãªã©ã®é«çŽèšèªã§ã®ã¿è¡ãããå¯èœæ§ãé«ããªããŸãã ã¶ã€ãªã³ã¯ã¹ã¯ãæ°å¹Žåã«Vivado HLSãšåŒã°ããæ°ãããã¶ã€ã³ããŒã«ãçºè¡šãããã¹ãŠã®å€§èŠæš¡ãããžã§ã¯ããéšåçãŸãã¯å®å
šã«æ°ããã¬ãã«ã«åŒãäžããŸããã Vivado HLSã§ã®éçºã¯ãã
ã¯ããã¯åšæ³¢æ° ãã®æŠå¿µããé¢ããŠãFPGAãåç
§ããã«è€éãªã¢ã«ãŽãªãºã ãéçºã§ãããšããäºå®ã«åž°çããŸããFPGAã®ãã¹ãŠã®æé©åã¯ããããžã§ã¯ãã®æçµæ®µéã§æ¢ã«è¡ãããŠããå¿
èŠããããŸãã æ°ããç°å¢ã䜿çšããŠäœãã§ããããèŠãŠãVivado HLSã§æãåçŽãªFIRãã£ã«ã¿ãŒãéçºããŠã¿ãŸãããã
äŸãšããŠãã¶ã€ãªã³ã¯ã¹ã®å®éšå®€ã®äœåã®1ã€ãåãäžããŸãããæåã®è¿äŒŒã§ã¯ãææ°ã®ããŒã«ã®èœåãæ倧éã«çºæ®ããŸãã Vivado HLSã䜿çšããäž»ãªéçºã¯ãçžäºã«é¢é£ããã¿ã¹ã¯ã«åºã¥ããŠããŸããã³ãŒããèšè¿°ãããã£ã¬ã¯ãã£ãã䜿çšããŠé床ãšå æé åïŒãšãªã¢ïŒãæé©åããŸãã
ã¶ã€ãªã³ã¯ã¹ã¯ã次ã®ãã¶ã€ã³åäœãæäŸããŸãã
- -Cæ€èšŒ/ã·ãã¥ã¬ãŒã·ã§ã³ïŒ ãããžã§ã¯ã-> Cã·ãã¥ã¬ãŒã·ã§ã³ã®å®è¡ ïŒïŒã¢ã«ãŽãªãºã ã®äœæããããžã§ã¯ãã®ãããã°ãã³ãŒãã®ãšã©ãŒã®æ€åºãæšæºãšã®ããŒã¿ã®æ¯èŒãªã©ã
- -CåæïŒ ãœãªã¥ãŒã·ã§ã³-> Cåæã®å®è¡ ïŒïŒCã³ãŒãããRTL圢åŒãžã®ãããžã§ã¯ãã®åæãšåä¿¡ããŒã¿ã®åæïŒããã©ãŒãã³ã¹è©äŸ¡ïŒã¬ã€ãã³ã·ãããªããã«ãŠã³ããé床ãªã©ïŒããªãœãŒã¹æšå®ãåä¿¡I / Oã€ã³ã¿ãŒãã§ã€ã¹*
- -RTLæ€èšŒïŒ ãœãªã¥ãŒã·ã§ã³-> Run C / RTL Cosimulation ïŒïŒã¡ã€ã³ïŒïŒãã¹ãã®Cã¢ãã«ãåå©çšããŠãRTLã¢ãã«ãåæããŸãïŒã»ã«ããã§ãã¯ïŒã
- -IPã®äœæïŒ ãœãªã¥ãŒã·ã§ã³-> RTLã®ãšã¯ã¹ããŒã ïŒïŒã¡ã€ã³ãããžã§ã¯ãïŒXilinx ISEãVivadoãªã©ïŒã§ããã«äœ¿çšããããã®IPã³ã¢ã®äœæ
*-æé©åæ¹æ³ãç°ãªããŠããŒã¯ãªãœãªã¥ãŒã·ã§ã³ïŒ
ãœãªã¥ãŒã·ã§ã³ ïŒãäœæããéã®Vivado HLSã®èœåã é©åãªã¢ãããŒãã¯ãåäžã®ãœãªã¥ãŒã·ã§ã³ããããã°ããã®ã§ã¯ãªããå€ãã®ãœãªã¥ãŒã·ã§ã³ãäœæããŠæé©ãªãœãªã¥ãŒã·ã§ã³ãéžæããããšã§ãïŒ
ããŸããŸãªæ±ºå®ãäžãæ¹æ³ã¯ïŒ ãã£ã¬ã¯ãã£ãã䜿çš-Vivado HLSã§ãããžã§ã¯ããæé©åããããŒã«ã ãã£ã¬ã¯ãã£ãã¯ããœãŒã¹ã³ãŒãïŒ
ãœãŒã¹ãã¡ã€ã« ïŒãŸãã¯å¥ã®ãã£ã¬ã¯ãã£ããã¡ã€ã«ïŒ
ãã£ã¬ã¯ãã£ããã¡ã€ã« ïŒã«è¿œå ã§ã
ãŸã ã
- ãœãŒã¹ãã¡ã€ã« -ãããžã§ã¯ãã®äœæäžã«å€æŽãããªããã£ã¬ã¯ãã£ãã®èšå®ã«é©ããŠããŸãã ããšãã°ãI / OããŒãã€ã³ã¿ãŒãã§ã€ã¹ã®ãã£ã¬ã¯ãã£ãã¯å€æŽãããŸããã ãããžã§ã¯ãã§ã¯ããããã®ãã£ã¬ã¯ãã£ãã¯#HLSãšãããã¬ãã£ãã¯ã¹ã§ç€ºãããŸãã
- ãã£ã¬ã¯ãã£ããã¡ã€ã« -é床ãšé
眮ã®æé©åã«åœ±é¿ããæ¡ä»¶ãšå¶éã®èšå®ã«é©ããŠããŸãã ååãšããŠããããžã§ã¯ãã§ã¯ãããŸããŸãªãœãªã¥ãŒã·ã§ã³ã®ããã€ãã®å¶éãæ¯èŒããæé©ãªå¶éãéžæã§ããŸãã ãããžã§ã¯ãã§ã¯ããããã®ãã£ã¬ã¯ãã£ãã¯æ¥é èŸïŒ
HLSã§ç€ºãããŸã ã
æãåçŽãªFIRãã£ã«ã¿ãŒã®ãœãŒã¹ã³ãŒãã®äŸã瀺ããŸãã ãœãŒã¹ã³ãŒãå
ã®ãã£ã¬ã¯ãã£ãã«æ³šæããŠãã ããã
Vivado HLSçšFIRãã£ã«ã¿ãŒC ++ #include "fir.h" void fir ( data_t *y, coef_t c[N], data_t x ) { <b>#pragma HLS</b> INTERFACE ap_ovld port=y <b>#pragma HLS</b> INTERFACE ap_vld port=x <b>#pragma HLS</b> RESOURCE variable=c core=RAM_1P_BRAM static data_t shift_reg[N]; acc_t acc; data_t data; int i; acc=0; Shift_Accum_Loop: for (i=N-1;i>=0;i--) { if (i==0) { shift_reg[0]=x; data = x; } else { shift_reg[i]=shift_reg[i-1]; data = shift_reg[i]; } acc+=data*c[i];; } *y=acc; }
å¥ã®ãã¡ã€ã«ã®ãã£ã¬ã¯ãã£ãã¯æ¬¡ã®ãšããã§ãã set_directive_unroll "fir/Shift_Accum_Loop" set_directive_array_partition -type complete -dim 1 "fir" shift_reg
泚ïŒæé©åããã»ã¹äžã«ãéçºè
ã¯å€ãã®å Žåãããã©ãŒãã³ã¹ãšãªãœãŒã¹ã®èŠ³ç¹ããç°ãªãçµæãæ¯èŒããå¿
èŠããããŸãããããã£ãŠãå€ãã®å Žåããã£ã¬ã¯ãã£ãã®å€§éšåã¯å¥ã®ãã¡ã€ã«ã«æžã蟌ãŸããŸããéçºè
ããã¹ãŠã®æ±ºå®ã«ç¹å®ã®æé©åãå¿
èŠã§ãããšç¢ºä¿¡ããŠããå ŽåããœãŒã¹ã³ãŒãã«å
¥åã§ããŸãïŒFIRãããžã§ã¯ãçšã«3ã€ã®ç°ãªããœãªã¥ãŒã·ã§ã³ãäœæããŸãã- ãã£ã¬ã¯ãã£ãã䜿çšããªãïŒã·ã³ã»ãµã€ã¶ãŒã¯æå°éã®ãªãœãŒã¹ã䜿çšãã-é 次ããŒã¿åŠçïŒ
- ããŒããã£ã¬ã¯ãã£ãã䜿çšããïŒã·ã³ã»ãµã€ã¶ãŒãå
¥å/åºåã€ã³ã¿ãŒãã§ã€ã¹ãæé©åããïŒã
- UNROLLãã£ã¬ã¯ãã£ãã䜿çšããŸãïŒFORã«ãŒããå±éããã«ãŒãã®åå埩ã䞊ååŠçããŸãïŒã
Vivadoã§ã®åæã®çµæã䜿çšããããªãœãŒã¹ãšæ倧ããã©ãŒãã³ã¹ã®å®å
šãªåæãå®è¡ã§ããŸããäœæãããã«ãŒãã«ã®I / OããŒãã€ã³ã¿ãŒãã§ã€ã¹ãåç
§ããŠãã ãããããã«ãç¹å®ã®æ©èœãå®è¡ãããæ¹æ³ãããããå æãããªãœãŒã¹ã®æ°ãããã³å®è¡ãããã¯ããã¯ãµã€ã¯ã«ã®æ°ã確èªã§ããŸãã3ã€ã®ãœãªã¥ãŒã·ã§ã³ã®æ¯èŒïŒ
Vivado HLSã§ã®ãããžã§ã¯ãåæçµæãã£ã¬ã¯ãã£ãïŒ[
ããã©ãŒãã³ã¹
]ã¿ãïŒ[ãªãœãŒã¹]ã¿ãïŒ
- ããŒãxã®èªã¿åããšããŒãyã®æžã蟌ã¿ã¯ã1ã¯ããã¯ãµã€ã¯ã«ã§è¡ãããŸããããŒãcã¯RAMã¡ã¢ãªã€ã³ã¿ãŒãã§ã€ã¹ãšããŠèšè¿°ãããŠããããã2ãµã€ã¯ã«ã§èªã¿åããŸãã
- 2ã€ã®ä¹ç®åšã䜿çšãããŸãã
- ã·ããã¬ãžã¹ã¿shift_regã¯ãèªã¿åãããã³æžã蟌ã¿æäœã«äœ¿çšãããŸãã
- æ®ãã®ãªãœãŒã¹ã¯ãåäžã®åœ¢åŒïŒã³ãŒãå
ã®åŒïŒã§ååšãããããå
±æãããŸããã
ã¯ãªã¹ã¿ã«ãªãœãŒã¹ïŒ
ãã®èšäºã¯åäŸã®ãªããµã€ãºã«æ¢ã«æé·ããŠãããããæ°ãããããžã§ã¯ãã®äœæããã»ã¹ãšãã¹ãŠã®èšèšã¹ãããã«ã€ããŠã¯èª¬æããŸããããããããããžã§ã¯ãã§Vivado HLSã䜿çšãããããã¯ã«èå³ãããå Žåã¯ãåãã§ç§ã®çµéšãå
±æããŸããurockã®ãã«ãã䜿çšã§ããŸãããã®åé¡ã§ã¯ã圌ã¯ãã¹ã¿ãŒã§ãïŒãããã«
ãããèŠçŽããããšæããŸãã
ãã®èšäºã§ã¯ãFPGAã§FIRãã£ã«ã¿ãŒãäœæããåºæ¬ååã«ã€ããŠèª¬æããŸããèšäºã«é¢ããäžè¬çãªçµè«ïŒ- â , FPGA .
- = = = .
- , .
- .
- .
- N (, 512), .
- .
- .
- .
- , .
- . , .
ã¢ã«ãã©FIRèšèšïŒ
ã¶ã€ãªã³ã¯ã¹HLS FIRãã¶ã€ã³1ïŒ
ã¶ã€ãªã³ã¯ã¹HLS FIRãã¶ã€ã³2ïŒ
æåŠ- DSPLIB
- Altera FIR Compiler
- Xilinx FIR Compiler
- Xilinx DSP48E1 (7 Series)
- Xilinx DSP48E2 (Ultra-Scale)
- Wikipedia FIR
- Parks-McClellan algorithm
- MATLAB Tutorial 1
- MATLAB Tutorial 2
- OpenCores FIR 1
- OpenCores FIR 2
- OpenCores FIR 3
ç¶è¡ããã«ã¯...