ã¯ããã«ãŸãã¯ãªããã®ãããã¯
Habrahabrãèªãã§ããæŸãã æ°Žã§è¡šç€ºãããæµ®åå°æ°ç¹èšç®ãšãã2ã€ã®ãããã¯ã«åºäŒããŸããã
IEEE754èŠæ Œããã®çµã蟌ã¿ãšæµ®åå°æ°ç¹èšç®ã®äž»ãªåé¡ã®1ã€ã¯ååãªè©³çŽ°ãšå質ã§æäŸããã ãã1ã€ã¯PCã§ã®èšç®ããã¹ãŠãããŸãããããã§ã¯ãªããšããçããããã¯ããŒãã§ãã åæã«ãçµæã®æ°åŠç粟床ãéèŠãªå ŽåãæŽæ°èšç®ã䜿çšããããã³ã³ããä¿®æ£ãããããŸãã¯å°ãªããšããã©ãããã©ãŒã ïŒã³ã³ãã€ã©+ããã»ããµïŒã«ãã£ãŠçæãããçµæã確èªãããšãã«æšå¥šäºé ãäžããããŸãã
ã¢ããã€ã¹ãå®çšçã§ãããšããäºå®ã«ããããããã以åã«æµ®åå°æ°ç¹ããã£ãæŽæ°èšç®ã䜿çšããæ¹æ³ãç解ããããšã¯ãç¹ã«æ°åŠçãªæºåãªãã§ã¯å®¹æã§ã¯ãããŸããã§ããã ãã®æå³ã§ããããããã¹ã¯åžæ°ãã®äžäººãå®éšçææ³ã䜿çšããŠäžåç¹ã«å¯ŸåŠããããšããè©Šã¿ã¯éåžžã«èå³æ·±ããã®ã§ãã
ãã®ãããã¯ã¯ç°¡åãªçŽ¹ä»ã§ãããåºå®å°æ°ç¹èšç®ã®ã¢ã€ãã¢ãæäŸããŸãã ãã®èšäºã®æ°åŠã¯èª°ããæããããã¹ãã§ã¯ãããŸãã-ãã¹ãŠãéåžžã«åå§çã§ãã ããã«èš±ããŠãã ãããç§ã®å人ã®éã§ã¯ã確ç«ãããè¡šçŸã¯æ£ç¢ºã«ã è±èªããã®åºå®å°æ°ç¹ãã§ããããã³ã³ããã§ã¯ãããŸããããããã£ãŠãç§ã¯ãã®çšèªã«åºå·ããŸãã
ä»®æ°ãšææ°ã«ã€ããŠããäžåºŠ
èšç®æ°åŠã§ã¯ãå°æ°å€ã¯æŽæ°ã®ãã¢ïŒnãeïŒãšããŠè¡šãããŸããä»®æ°ãšææ°ïŒãã·ã¢èªã§ã¯ãææ°ãã¯ããçå®ã§ãããç°¡æœããšç¿æ £ã®ããã«ãå°æ¥ã¯ãææ°ããšããèšèã䜿çšããŸãïŒã ãã¢ã¯n * 2 -eã®åœ¢åŒã®å°æ°ãè¡šããŸãã
ææ°ã¯ãæ°å€ã®å°æ°éšåãåºåãå°æ°ç¹ã®åã®æ¡æ°ãšèŠãªãããšãã§ããŸãã
ææ°ãã¬ãžã¹ã¿ã«æžã蟌ãŸããã³ã³ãã€ã«æã«äžæãªå€æ°ã§ããå Žåã ïŒnãeïŒã¯æµ®åå°æ°ç¹æ°ãšåŒã°ããŸãã ææ°ãäºåã«ããã£ãŠããå Žåã ïŒnãeïŒã¯åºå®å°æ°ç¹æ°ãšåŒã°ããŸãã åºå®å°æ°ç¹æ°ã¯ãä»®æ°ã®ã¿ãä¿åããããšã«ãããéåžžã®æŽæ°å€æ°ïŒã¬ãžã¹ã¿ïŒã«æžã蟌ãããšãã§ããŸãã éåžžãææ°ã¯æåqã§ç€ºãããŸãã ãããã£ãŠãå€æ°ã®è§£èª¬ã§ã q15ãã«ããã©ã€ã€ãŒ ãã®ç²Ÿç¥ã§äœãã«åºäŒã£ãå Žåããã®å€æ°ãåºå®å°æ°ç¹æ°ãš15ã«çããææ°ãšèŠãªãå¿ èŠããããŸããããããããŸããŸãªãœãŒã¹ã³ãŒããèšäºã«ããè¡šèšã®åé¡ã«æ»ããŸãã
èšç®
ãã®ãããåºå®å°æ°ç¹ã§äœæ¥ããå Žåãææ°ã¯ã©ãã«ãèšé²ããããã念é ã«çœ®ããŠãä¿æãããããšãããããŸããã
èšç®æ¹æ³ èšç®ç®è¡ã¯ãç¬èªã®å ¬åŒãå ¬çãå®çãæã€ç§åŠå šäœã§ãã ãã®èšäºã®ç®çã¯ããã®ç§åŠã玹ä»ããããšã§ã¯ãããŸããã 以äžã«ç€ºãã¢ãããŒãã¯ãäž»ã«ãšã³ãžãã¢ãªã³ã°ãšå¿çšã®åé¡ã解決ããããã°ã©ããŒã察象ãšããŠããŸãã ãã®ãããªå Žåã蚱容å€ã®ç¯å²ãšèšç®ã®å¿ èŠãªç²ŸåºŠã¯æ¢ç¥ã§ãããå¶éãããŠããŸãã
ãã®èšäºã®ãã1ã€ã®å¶éã¯ãäžè§æ³ããã®ä»ã®è€éãªæäœã®ã¢ã«ãŽãªãºã ãããã«èšèŒãããŠããªãããšã§ãã 1ã€ã®èšäºã§å®å šãªã¬ãã¥ãŒãè¡ãããšã¯éçŸå®çã§ãïŒã»ãšãã©å¿ èŠãããŸããïŒã ãã®èšäºã§ã¯ããã®ãããªã¢ã«ãŽãªãºã ãç解ããïŒããã³ç¬èªã®ã¢ã«ãŽãªãºã ãéçºããïŒããã«å¿ èŠãªåºç€ãæäŸããŸã-åºæ¬çãªæäœïŒå ç®/æžç®ãä¹ç®ãé€ç®ïŒãå®è¡ããããã®ã«ãŒã«ãšåºå®å°æ°ç¹ã§èšç®ããäžè¬çãªæ¹æ³ã§ãã
å ç®ãšæžç®
çŽã®äžã«ãåã«ã2ã€ã®å°æ°ãå ¥ããªããã°ãªããªããšæã蟌ãã§ãããªããå ç®ã¯ç°¡åã§ãã ãã®æäœãå®è¡ãããšãå°æ°éšåãåºåãã³ã³ããäžäžã«é 眮ãããããã«ãæ°å€ãåã«æžã蟌ãŸããŸãã äºé ç®è¡ã§ã¯ããã®ãããªæŒç®ã¯ææ°ã®ç°¡çŽãšåŒã°ããŸãã
ãããŒããŒãããæ°åŠè¡šèšã«é²ããšã次ã®ããã«ãªããŸãã
2ã€ã®æ°å€a = n1 * 2 -q1ãšb = n2 * 2 -q2ããããšããŸãã
次ã«ïŒ
a + b = n1 * 2 -q1 + n2 * 2 -q2 =ïŒn1 + n2 * 2 ïŒq1-q2ïŒ ïŒ* 2 -q1 ã
第2é ã®ä¿æ°2 ïŒq1-q2ïŒã¯ãæ¬è³ªçã«æ°å€ã1ã€ã®ææ°ã«æžããç®è¡ã·ãããæå³ããŸãã
èšç®çµæãåžæã®ææ°å€ã«ãªãããã«ã·ããã§ããããšã«æ³šæããŠãã ããã
Cã³ãŒãã¹ããããïŒ
int32_t a = 0x1000L; // q15: a = 0.125 int32_t b = 0x20000L; // q20: b = 0.125 int32_t c = 0; // q25 c = (a << 5) + b; // q20: (a * 2 ^ (20 - 15) + b); c = 0x40000L (0.25 q20) c <<= 5; // q25: c = 0x800000L (0.25 q25)
ãã®äŸãããå®éã®ã³ã³ãã¥ãŒãã£ã³ã°ã§ã¯ãå ç®ãªã©ã®åçŽãªæäœã§ãã£ãŠããæèã®äœå°ãããããšãç解ã§ããŸãã 質åãèŠããŠãã䟡å€ã¯åžžã«ãããŸãã
- 粟床ãç ç²ã«ãããã©ããïŒ çµå±ãå³ã«ã·ããããããšã§çšèªãããå°ããªææ°ã«ããäžã®æ¡ãèœãšãããšãã§ããŸãã
- å€æ°å€ã¯å¶éãããŠããŸããïŒ ããšãã°ããã®å Žåã®å³ãžã®ã·ããã¯ã粟床ã®äœäžã«ã¯ã€ãªãããŸããã
- 容éãæ¡åŒµããããšã¯å¯èœã§ããïŒ
ããã¯å®å šãªãªã¹ãã§ã¯ãããŸãããããã¹ãŠãäžèŠãããšæããã»ã©åçŽã§ã¯ãªãããšããã§ã«ç€ºããŠããŸãã ã»ãšãã©ã®å®çšçãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ãåãµããžã§ã¯ãé åã«ã€ããŠã蚱容å€ã®ç¯å²ãæ¢ç¥ã§ãããååŸã§ãããããåºå®å°æ°ç¹ã§äœæ¥ããå Žåã¯ãããçšåºŠã®çµéšãŸãã¯ç 究ãå¿ èŠã§ãã å€ãã®å Žåãã³ãŒãã¯æµ®åå°æ°ç¹ã§äºåã«äœæããããã®åŸãå€ã®ç¯å²ãæ€æ»ãããå°ããªå€ã¯ç¡èŠãããŸãã
ä¹ç®
åºå®å°æ°ç¹ä¹ç®ã¯ãããªãããŒãªã¢ã©ã€ã¡ã³ããåäžã®ææ°ãžã®åæžãªãã«å®è¡ã§ããŸãã ããã«ãããããããä¹ç®ã¯ããªãå±éºãªæäœã§ãããã»ãšãã©ã®å Žåã粟床ã倱ãããåãæ±ãã«ã¯ç¹å¥ãªæ³šæãå¿ èŠã§ãã
ä¹ç®ã®æ°åŠçãªèª¬æããå§ããŸãããã
2ã€ã®æ°å€a = n1 * 2 -q1ãšb = n2 * 2 -q2ããããšããŸãã
次ã«ïŒ
a * b = n1 * 2 -q1 * n2 * 2 -q2 = n1 * n2 * 2- ïŒq2 + q1ïŒ ã
åŒãããä¹ç®ããããšãã®æ°å€ã®ææ°ãå ç®ãããããšãããããŸãïŒ 2- ïŒq2 + q1ïŒ ã ãã®èšäºã§ã¯ãããŒã¿ã®ããã深床ã¯èæ ®ãããŠããŸãããçŸæç¹ã§ã¯ããªãŒããŒãããŒãšç²ŸåºŠã®äœäžã䌎ããªãå®å šãªä¹ç®ã®ããã«ãçµæã®ããã深床ã¯å åã®åèšããã深床以äžã§ãªããã°ãªããªãããšãèŠããŠããã°ååã§ãã
ææ°ã®å ç®ã«ãããããã«èšç®ãå®è¡ããããã«ä¹ç®çµæã調æŽããå¿ èŠããããŸãã ææ°ãæžå°ãããšãçµæã®æäžäœãããã¯ç Žæ£ãããŸãã ã€ãŸãã粟床ã倱ãããŸãã 粟床ã®æ倱ãæžããããšãã§ããŸãïŒå¿ èŠãªå ŽåããããŸãïŒããæ倱ã«å¯ŸåŠããæ¹æ³ã¯åžžã«ãªãŒããŒãããã«é¢é£ä»ããããŸãã
Cã³ãŒãã¹ããããïŒ
int32_t a = 0x8000L; // q16: a = 0.5 int32_t b = 0x100000L; // q21: b = 0.5 int32_t c = 0xC0000L; // q20: c = 0.75 int64_t d; // , . d = (int64_t)a * (int64_t)b; // q37 = q16 * q21; d = 0x800000000L (0.25 in q37) d >>= 17; // q37 / 2 ^ 17 = q20 c += (int32_t)d; // q20: c = 0x100000 (1 in q20)
ä¹ç®çµæã®æäžäœ15ãããã¯ãæ°åãçšèªã®åœ¢åŒã«ããããã«ç Žæ£ãããããšã«æ³šæããŠãã ããã ãã¡ãããå€æ°cã®ããã深床ãå¢ããããšã¯ã§ããŸãããããã§ã«è¿°ã¹ãããã«ãå®éã«ã¯å€ã®ç¯å²ã¯éåžžå¶éãããä¹ç®ã®äžäœæ¡ã¯ãã°ãã°ç¡èŠãããŸãã ããã«ãåæå åã«ãŒã以å€ã®é«æ¬¡ããããååšããå¯èœæ§ã¯èæ ®ãããŠããŸããã
ãã ãããã®èšäºã§ã¯ãªãŒããŒãããŒåŠçã«ã€ããŠã¯èª¬æããŸããã
éšé
é€ç®ã®æ°åŒããå§ããŸãããïŒ
2ã€ã®æ°å€a = n1 * 2 -q1ãšb = n2 * 2 -q2ããããšããŸãã
次ã«ïŒ
a / b = n1 * 2 -q1 /ïŒn2 * 2 -q2 ïŒ= n1 / n2 * 2- ïŒq1-q2ïŒ ã
ä¿æ°2- ïŒq1-q2ïŒã¯ãé€ç®ã®å®è¡æã«ææ°ãèªåçã«æžå°ããããšãæå³ããŸãã ã¢ã¯ã·ã§ã³ãå®è¡ãããªãå Žåãæå¹æ°åã®äžéšã¯èªåçã«ç Žæ£ãããŸãã
ä¿®æ£æ¹æ³ã¯æããã§ã-é€ç®ã®çµæãæå¹ãªãããã®åžææ°ãåŸãããã«ãé€ç®åšã®ããã深床ãäºåã«å¢ããå¿ èŠããããŸãã
a / b = n1 * 2 -q1 * 2 q3 /ïŒn2 * 2 -q2 ïŒ= n1 / n2 * 2- ïŒq1-q2 + q3ïŒ ã
ãããã£ãŠããã©ã€ããŒãææ°ã¯q3æŸé»ã«ãã£ãŠå¢å ããŸãã
Cã³ãŒãã¹ããããïŒ
int32_t a = 0x4000L; // q15: a = 0.5 int32_t b = 0x80000L; // q20: b = 0.5 int32_t c = 0; // q25 int64_t d; // . d = (int64_t)a << 30; // q45: d = 0x200000000000; (0.5 in q45) c = (int32_t)(d / (int64_t)b); // q25: c = 0x2000000; (1 in q25)
æããã«ãæ°å€ã32ããããè¶ ãããšãåé¡ãç°¡åã«è§£æ±ºã§ããªããªããŸãã ãã ããåçŽãªå·¥åŠèšç®ã§ã¯ãéåžž32ãããã®æ°å€ã§ååã§ãã
é€ç®ã®ç²ŸåºŠã®æ倱ãå€§å¹ ã«æžããç°¡åãªæ¹æ³ã1ã€ãããŸã-é åœã®äºåçãªæ£èŠåã§ãã æ£èŠåã¯ãå®éã«ã¯ä»®æ°ã®å·Šãžã®æ倧ã·ããã§ãããæå¹ãããã¯ç Žæ£ãããŸããã ç¹å¥ãªã¢ã«ãŽãªãºã ïŒãŸãã¯ããŒããŠã§ã¢ããã»ããµã®åœä»€ïŒãããé åœã®å è¡ãŒããã«ãŠã³ãããããšã§ãæ°å€ãã©ãã ãã·ããã§ããããå€æã§ããŸãã
é€ç®åŸãåãåããããæ°ã ãå³ã«ã·ããããŠãææ°ã埩å ããå¿ èŠããããŸãã
äžèšã®ã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
int32_t a = 0x4000L; // q15: a = 0.5 int32_t b = 0x80000L; // q20: b = 0.5 int32_t c = 0; // q25 int norm_shift = norm(a); // . norm_shift = 16 c = ((a << norm_shift) / b); // q(-5): c = 0x800 (1*2^norm in q(-5)) c <<= (30 - norm); // q25: c = 0x2000000; (1 in q25)
ã芧ã®ãšããããã®å Žåã®ç²ŸåºŠã®äœäžã¯ãé åœã®ãã£ãã·ãã£ãå¢å ããªãéãçºçããŸããã§ããã
ãã ããããã¯åžžã«çºçããããã§ã¯ãªããç¹å®ã®ããã深床ïŒããšãã°ã32ãããïŒå ã«ãšã©ãŸãå Žåã¯ãé€ç®ãã¢ã«ãŽãªãºã çã«å®è£ ããå¿ èŠããããŸãã ã¬ãã¥ãŒèšäºã§ã¯ããã®ãããªãžã£ã³ã°ã«ã«é£ã³èŸŒã䟡å€ã¯ã»ãšãã©ãããŸãããåå²ããã»ã¹ãšããã«äŒŽãå°é£ãç解ããã«ã¯ãäžèšã®èª¬æã§ååã§ãã
æç®ããã³ããŸããŸãªãœãŒã¹ã³ãŒãã§åãå ¥ããããŠããè¡šèš
èšäºã®æåŸã®ã»ã¯ã·ã§ã³ã§ã¯ãåºå®å°æ°ç¹ã¢ã«ãŽãªãºã ã®èª¬æã§äœ¿çšãããŠããäžè¬ã«åãå ¥ããããŠããè¡šèšæ³ã«ããäžåºŠæ»ããããšæããŸãã
ããã¯ãä»ã®äººã®æ å ±æºãèªããšãã«æ³šæããªããã°ãªããªãããªãéèŠãªãã€ã³ãã§ãã
æãäžè¬çãªã®ã¯ãåºå®å°æ°ç¹æ°ãæå®ããããã®2ã€ã®ãªãã·ã§ã³ã§ãã
- Q M - Mã¯å°æ°ç¹ä»¥äžã®æ¡æ°ã§ãã èšäºã§äœ¿çš
- Q N.M - Nã¯å°æ°ç¹ã®åã®æ¡æ°ã§ã笊å·ããããé€ãã M-åŸã§ãã
æåã®è¡šèšæ³ã®ãã€ãã¹ã¯æããã§ããå€æ°ãæäœãããšãã¯ãå€æ°å®£èšãåç §ãïŒããã深床ãèŠããŠïŒãææ°ãåžæã®ææ°ã«åãããæ¹æ³ãç解ããããã«å¿ã®äžã§ããã€ãã®èšç®ãè¡ãå¿ èŠããããŸãã ããã«ãä¹ç®ã®äŸã§äžžãïŒint32_tïŒdãæãåºããšããã®è¡šèšã®ã³ã¡ã³ãã§ã¯ãéèŠãªãããã®ã·ãããŸãã¯ç Žæ£ããšã©ãŒã«ã€ãªãããã©ãããç解ããããšãå°é£ã§ããããšã«æ³šæã§ããŸãã
2çªç®ã®è¡šèšæ³ã§ã³ã¡ã³ãã䜿çšãããšãèšç®ã®æ£ç¢ºããç°¡åã«èšé²ã§ãããããå€æ°ã®å®£èšæ¹æ³ãæãåºãå¿ èŠããªããªããŸãã
äŸãæããŸãããã
a = 0x1000; // Q15 b = 0x8000; // Q15 int32_t c = a + b; // ??? , . a = 0x2000; // Q0.15 b = 0x8000; // Q16.15 c = a + b; // Q0.15 + Q16.15 = Q16.15: 16 + 15 = 31 + 1
2çªç®ã®è¡šèšã®ã³ã¡ã³ãã®æ¹ãæããã«äŸ¿å©ã§ãã
ããã§ã¯ãã³ã¡ã³ãã®æçšæ§ã«ã€ããŠã¯èª¬æããŸããïŒã³ã¡ã³ãã¯ã©ãããã§ãïŒãç§ã¯ééããç¯ãããææ°ã®æžå°ãšæ··åããªãããã«ãèšç®æã«åžžã«å€æ°ã®ã¿ã€ãããã€ã³ããããšèšããŸãã
ååãšããŠã³ã¡ã³ãããªãå Žåãã³ãŒãã®èªã¿åããšç解ã¯ãã¡ããè€éã§ãããæ··ä¹±ããå Žåã¯ãQè¡šèšã§ãã®ãããªåŸ©å·åããã€ã§ãè¿œå ããŠãããã®ã·ãããå·Šã«4ã·ãããã次ã«å³ã«10ã·ãããããããšãç解ã§ããŸãã
æè¿å ¬éãããVoIP GIPSãšã³ãžã³ïŒ webrtc ïŒã®Googleã®ãœãŒã¹ã§ã¯ãã³ã¡ã³ãã®äžã§æãé »ç¹ã«Qãæžãããšã«æ³šæããŠãã ãããã€ãŸããæ°åã®ãã¹ãŠã®ããããå°æ°éšã«å²ãåœãŠãããŸãã ããã¯ç§ãå人çã«æ··ä¹±ãããŸãããªããªã ã³ãŒããã©ã®ããã«æ©èœããããæ確ã«ããããã«ãå®çŸ©ã調ã¹ãªããã°ãªããŸããã
ç§èªèº«ã¯ãäžèšãšã¯ç°ãªããåºå®å°æ°ç¹ãæäœããããã®MATLABããŒã«ããã¯ã¹è¡šèšã«è¿ãå¥ã®è¡šèšã䜿çšããŸãã æ°åŠãå€æ°ã®å®¹éã«çµã³ä»ããæäœã®çµæïŒå®¹éãšææ°ïŒãè©äŸ¡ããå¿ èŠãããå Žåã«ãç掻ãç°¡çŽ åããŸãã
ç§ã®ã³ã¡ã³ãã§ã¯ãåºå®å°æ°ç¹æ°ãQN.MãšããŠããŒã¯ããŸã ãããã§ã Nã¯æ°å€ã®ããã容éã Mã¯å°æ°ç¹ä»¥äžã®æ¡æ°ã§ãã
ãã®ãããªã¹ããŒã ãèªåã«ãšã£ãŠäŸ¿å©ã ãšæã£ãçç±ã説æããŸãããã
- æ°å€ã®ããã深床ããããã°ãçµæã®ããã深床ããã€ã§ãäºæž¬ã§ããŸãã ãããè¡šãã®ã«ååãªå€æ°ã¿ã€ããéžæããŸãã
- å人çã«ã¯ã QïŒ-NïŒ.Mãšãã圢åŒã®ã¬ã³ãŒããèªãã®ã¯äžäŸ¿ã§ããããšãããããŸããããã¯ãå³ãžã®ã·ãããšå°æ°éšã®æ¡æ°äžè¶³ãå®è¡ããåŸã2çªç®ã®è¡šèšã«è¡šç€ºãããŸãã ããšãã°ãææ°ã18ïŒ n * 2 -18 ïŒã§ãã16ãããæ°ã®ã¬ã³ãŒãã¯ãç§ã«ãšã£ãŠã¯q16.18ã2çªç®ã®è¡šèšã«ã€ããŠã¯qïŒ-3ïŒ.18ã«èŠããŸãã ãã§ã«è¿°ã¹ãããã«ãæåã®è¡šèšã®ã¬ã³ãŒãã¯ããããã®å Žåãèšç®ã®ç²ŸåºŠãç解ããããã«å®çŸ©ã«æ»ãããšã匷å¶ããŸããããã®å Žåãå®çŸ©ãªãã§ã¯æ確ã§ã¯ãããŸãããå é ã®éèŠãªãããã¯ãã§ã«ç Žæ£ãããŠãããã©ããã§ãã
- ç¬èªã®è¡šèšæ³ã䜿çšããŠèšç®ãè¡ã£ãåŸãã©ã®å€æ°ã§ããã深床ãçµæã«é©åããããææ°ãã©ã®ããã«èª¿æŽããããç°¡åã«ç¢ºèªã§ããŸãã ããšãã°ã q32.15 * q16.4 = q48.19ã§ãã çµæãå®å šã«è¡šç€ºããã«ã¯ã48ããããå¿ èŠã§ããããšãããã«ããããŸãã 2çªç®ã®è¡šèšã§ã¯ããšã³ããªã¯q16.15 * q11.4 = q27.19ã®ããã«ãªããæåã®ä¿æ°ãã27 + 19 = 47 + 1笊å·+ 2çªç®ã®ä¿æ°ãã1笊å·= 48ããããèšç®ããå¿ èŠããããŸãã äºçŽ°ãªããšã§ãããçŽ æŽãããã ç¹ã«å€ãã®ãœãŒã¹ã³ãŒããããå Žåã
åºå®å°æ°ç¹ã䜿çšããé·æãšçæã«ã€ããŠ
åºæ¬çãªæäœã§ãã£ãŠãããã®ãããªè©³çŽ°ãªèª¬æã¯ãç¹ã«çµæã远跡ããã«æµ®åå°æ°ç¹ã®ç¿æ £ãæ¢ã«éçºãããŠããå Žåãèšç®ã§åºå®å°æ°ç¹ã䜿çšããããšãããšã³ãžãã¢ãšããã°ã©ããŒãæããããããšãã§ããŸãã ããã§ããåºå®å°æ°ç¹ã®äœ¿çšã«ã¯å©ç¹ãããããã®ããã€ãã¯æããã§ã¯ãããŸããã
å¿ èŠãã©ãããæçµçã«å€æããã«ã¯ã次ã®åºå®å°æ°ç¹èšç®ã®èŠçŽã䜿çšã§ããŸãã
é·æïŒ
- èããå¿ èŠæ§ã
- çµæã®äºæž¬å¯èœæ§ã ã³ãŒãã£ã³ã°ãžã®æ£ããã¢ãããŒãã«ãããèšç®ã®çµæã¯ããã®æç¹ãŸã§æ£ç¢ºãªãã©ãããã©ãŒã ïŒããã»ããµãŒ+ã³ã³ãã€ã©ãŒïŒã§åãã«ãªããŸãã ãã®çŸè±¡ã«ã¯ããbitexactivityããšããç¹å¥ãªçšèªããããŸãïŒè±èªã®bit- exactnessããïŒã æ£ãããšã³ã³ãŒããããã¢ã«ãŽãªãºã ã¯åžžã«ãããããã¯ãããŠãããããã¿ãŒã²ãã以å€ã®ãã©ãããã©ãŒã ã§èª¿æ»ã§ããŸãã ããã¯ãã¿ãŒã²ãããã©ãããã©ãŒã ã§ã®ãããã°ãå°é£ãŸãã¯äžå¯èœã§ãããå ¥åããŒã¿ã®ã¿ãååŸã§ããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
- ã³ãŒãã®åäœãå®å šã«å¶åŸ¡ããŸãã åºå®å°æ°ç¹ã¯ã䜿çšããããã©ãããã©ãŒã ã§ã®æµ®åå°æ°ç¹ã®å®è£ ã®æ©èœã«é¢é£ãããé©ããã®åºçŸãæé€ããŸãã
- ç¡èŠã§ããå€ã®èªåããã£ã«ã¿ãªã³ã°ãã æµ®åå°æ°ç¹ã§ã¯ãèšç®ãšã©ãŒã环ç©ããå¯èœæ§ããããåºå®ãã€ã³ãã§ã¯ããã¯èµ·ãããŸããïŒå°ããªå€ãç Žæ£ããããïŒããŸãã¯ãšã©ãŒã环ç©ããããã»ã¹ã¯ã¢ã«ãŽãªãºã ã§å¶åŸ¡ã§ããŸãã
- å€æ°å€ã®ã¢ã«ãŽãªãºã å¶åŸ¡ç¯å²ã æµ®åå°æ°ç¹ã䜿çšãããšèšç®ã®èªç±åºŠãé«ãŸããŸãããçµæã¯èš±å®¹é床ãè¶ ããå¯èœæ§ããããåå¥ã«å¶åŸ¡ããå¿ èŠãçããŸãã åºå®ç¹ã§ã¯ããã®åé¡ã¯ã¢ã«ãŽãªãºã ã®éçºããã³ãããã°ã®æ®µéã§èªåçã«è§£æ±ºãããŸãã
- 移æ€æ§ã¢ã«ãŽãªãºã ã ããã«å ããŠãæåã®ãã®ãšããªãããçžé¢ããŠããŸãããå€ãã®éx86ããã»ããµã§ã¯ãæµ®åå°æ°ç¹èšç®ãããæŽæ°èšç®ã®æ¹ãã¯ããã«ãããµããŒããããŠããããšã«æ³šæããŠãã ããã ãã®ãããåºå®ç¹ã§äžåºŠã¢ã«ãŽãªãºã ãéçºãããšãããŸããŸãªã匱ãããã©ãããã©ãŒã ãžã®ç§»æ€ãã¯ããã«ç°¡åã«ãªããŸãã éåžžãã¿ãŒã²ãããã©ãããã©ãŒã ã§å©çšã§ããã®ã¯æŽæ°èšç®ã ãã§ããå ŽåããããŸãã
- ã¢ã«ãŽãªãºã ã®éçºã®ç²ŸåºŠãäžããããšã«ãããèšç®ã®è€éããå¶åŸ¡ããæ©èœã
- ããã¯æã é¢çœãã§ãã
çæïŒ
- èããå¿ èŠæ§ã
- æµ®åå°æ°ç¹ãšæ¯èŒããå€æ°å€ã®ç¯å²ã®çž®å°ïŒæãåçŽãªå ŽåïŒã
- å€æ°ã®å€ã®ç¯å²ãã¢ã«ãŽãªãºã ã§å¶åŸ¡ããå¿ èŠæ§ã éçºæéã®å€§éšåã¯ãæ£ããã¹ã±ãŒãªã³ã°ãšç¯å²ã®éžæã«è²»ããããŠããŸãã
- èšç®ã®å段éã§å®¹éãç£èŠããå¿ èŠæ§ã
- åºæ¬é¢æ°ïŒäžè§é¢æ°ã察æ°ãªã©ïŒã®ç¬èªã®ãã¬ãŒã ã¯ãŒã¯ãèšè¿°ããããæ¢åã®ãã¬ãŒã ã¯ãŒã¯ãå€æŽããå¿ èŠããããŸãã
- ã¢ã«ãŽãªãºã ãéçºããéã«ã¢ããªã±ãŒã·ã§ã³é åã«é£ã³èŸŒãå¿ èŠæ§ã
- ã³ãŒãã®èšè¿°ãšä¿å®ã®æåãæ¹åããå¿ èŠæ§-åºå®ç¹ã§ç¬èªã®éçºã䜿çšããã«ã¯ã§ããŸããã æµ®åå°æ°ç¹ã§ã¯ãã»ãšãã©ã®å Žåãããããããšãªããæ¢è£œã®é¢æ°ã䜿çšããŠæ°åŠããçæ£é¢ãããæžãæããããšãã§ããŸãã
çµè«ãšããŠ
çµæã®ãªãŒããŒãããŒãäžžãäžã®ãŒãããªãããªã©ã®åºå®å°æ°ç¹ã䜿çšããèšç®ã®åé¡ãããããã®åŠçæ¹æ³ã«ã¯è§ŠããŸããã§ããã ããã¹ãã¯ã詳现ãè£ãããã«ããã§ã«èšå€§ã§ãããããéå±ã§ããããšãå€æããŠããŸãã
次ã«ãç¹æ®ãªæç®ã®èªã¿åããšç¬èªã®ãœãŒã¹ã®äœæïŒããã³ãããããèšäºã®ç¬¬2éšã®ç解ïŒã容æã«ããããã«ãåºå®å°æ°ç¹æŒç®ãèšé²ããéã«äžè¬ã«åãå ¥ããããŠããè¡šèšæ³ã«éåžžã«å€ãã®æ³šæãæããŸããã ã¯ããQè¡šèšæ³ã§èšç®ãããã³ã¡ã³ãã¯ããœãŒã¹ã®æ·±å»ãªãããã°ãšåæããç§ãæã£ãã
ãããã¯ãå¿ èŠãªå Žåã¯ã次ã®ããŒãã§èšäºãè£è¶³ããŸãã次ã®ããŒãã§ã¯ãäžèšã®ç¹ã説æããäžè¬çãªå Žåãã¢ã«ãŽãªãºã ãæµ®åå°æ°ç¹ããåºå®å°æ°ç¹ã«ç§»è¡ããæ¹æ³ã説æããŸãã
NBæ°åŠè ãå¿é ããªãã§ãã ãããç§ã¯ããªãã察åŠãããŠããåé¡ãããç¥ã£ãŠãããšæããŸãã
åç §è³æ
- ARMã®åºå®å°æ°ç¹æŒç®
- åºå®å°æ°ç¹ãšæµ®åå°æ°ç¹DSPã®æ¯èŒïŒSPRY061ïŒ
- åºå®å°æ°ç¹æŒç®ïŒã¯ããã«-Digital Signal Labs
- ã°ãŒã°ã«
æŽæ°ïŒ
- çµå±ãç§ã䜿çšããè¡šèšæ³ã¯ãMATLABããããããŸããã ç§ã¯èªåã®æéã®ã©ãã§ãããæã£ããããŸã èŠããŠããŸããã§ããã nerudoã«æè¬ããŸãã ãªããžã§ã¯ããäœæããããã«ãæå®ãããããã±ãŒãžã®åºå®å°æ°ç¹ããŒã«ããã¯ã¹ã¯ãããããæ°ã+ãåæ°ãããã®ãããæ°ããã¢ã®ã¿ã䜿çšããæ瀺çãªè¡šç€ºïŒç¬Šå·ä»ããŸãã¯ç¬Šå·ãªãã®æ°ã䜿çšããŸãã
- äŸã8ãããã16ãããã32ããããããã³64ãããã®åèªã«ããµããŠãããšããäºå®ã«ãããããããç§ã¯èª¬æãx86ããã³ãã®ä»ã®æ±çšããã»ããµã®ã¿ã«æ·»ä»ããããšããŸããã§ããã ã·ã³ãã«ã§ã第äžã«ãCã§äŸãæããã®ãç°¡åã§ã第äºã«ãFPGAãASICãªã©ã®å°é家ïŒVERILOGãªã©ãèªãïŒããã¯çšé ããããä»»æã®ããã深床ãéžæããŠæ確ã«äŒããããšãã§ããŸãã ã ããããããã®åé¡ã«ç²ŸéããŠãã人ã¯ãäŸã§ãããã¯ãèšäºã«è¿œå ããããšãã§ããŸãã
- è¡šèšæ³ã®èª¬æã§ã¯ã笊å·ãªãã®æ°å€ãã©ããããã«ã€ããŠã¯èšåããŠããŸããã äžè¬ã«ãç§ãããããèŠãäž»ãªæ å ±æºã¯ãå åã«ã€ããŠãäœãèšã£ãŠããŸããã åºæ¬çã«ããã¹ãŠã®æ°å€ãéèŠã§ããããšãæ瀺ãããŸããã èè ã眲åãããæ°åã®èšé²ãèŠãæ¹æ³ãããã«èšãããšã¯ã§ããŸããã / matlabè¡šèšã§ã¯ã笊å·ã®ãªãçªå·ãããŒã¯ããããã«Qã®åŸã«æåãuããè¿œå ããããšã«æ³šæããŠãã ããã