ã·ã³ãã«ãšã°ãŒãã¥ãŒã¿ãŒã®ãžã£ã³ã¯ã·ã§ã³-ã·ã³ãã«ã¿ãŒã²ããã€ã³ã¿ãŒãã§ã€ã¹ïŒä»¥é-STIïŒã¯ã1ã€ã®FPGAæ§æãããžã§ã¯ããŸãã¯VLSIãããïŒä»¥äž-ãããžã§ã¯ãïŒã®ç¯å²å ã§ããã€ãã®æ©èœãããã¯ã®æ¥ç¶ãæäŸããè«çä¿¡å·ãšå¯Ÿè©±ãããã³ã«ã®ã»ããã§ãã STIããŒãžã§ã³1.0ã€ã³ã¿ãŒãã§ãŒã¹ä»æ§ã¯[1]ã§å ¬éãããŸããã
以äžã§äœ¿çšãããçšèªãä»æ§ã«å°å ¥ãããSTIã¢ãŒãã£ã¹ãã1ã€ã®ã»ã°ã¡ã³ãå ã®ã€ãã·ãšãŒã¿ãŒã«æ¥ç¶ããããã®åºæ¬ååã決å®ãããŸããã
äŸãšããŠãã€ãã·ãšãŒã¿ãŒãš4人ã®ããã©ãŒããŒãçµã¿åãããã»ã°ã¡ã³ã64-pãã¹STIãèæ ®ããããšãææ¡ãããŠããŸãã åæã«ã2ã€ã®ããã©ãŒããŒã®ããŒã¿å®¹éã¯32ããããš8ãããã§ãã ãã®ãããªSTIã»ã°ã¡ã³ãã®ãããã¯å³ãå³6ã«ç€ºããŸãã 1ã
å³ 1. STIã»ã°ã¡ã³ãã®ãããã¯å³
åã¢ãŒãã£ã¹ãã«ã¯ãæžã蟌ã¿æã«ããŒã¿ãåä¿¡ããèªã¿åãæã«ããŒã¿ãçæããããã«å©çšå¯èœãªãªãœãŒã¹ãå«ãŸããŠããŸãã ãããã®ãªãœãŒã¹ã¯ãã¬ãžã¹ã¿ãã¡ã¢ãªãããã¯ãã€ã³ã¿ãŒãã§ã€ã¹ããªããžã§è¡šãããšãã§ããŸãã ãã®ãããªåãªãœãŒã¹ã¯ã察å¿ããã¢ãã¬ã¹ç©ºéã«ç¬èªã®ã¢ãã¬ã¹ãæã£ãŠããŸãã ã¡ã¢ãªãããã¯ãã¬ãžã¹ã¿ãã¡ã€ã«ãããã³ã€ã³ã¿ãŒãã§ã€ã¹ããªããžã¯ãã¢ãã¬ã¹ç©ºéããé£ç¶ããã¢ãã¬ã¹ã®ç¯å²ãå æã§ããŸãã
4人ã®ã¢ãŒãã£ã¹ããI / Oã¢ãã¬ã¹ãšã¡ã¢ãªã®ã¹ããŒã¹ã«ãªãœãŒã¹ãæã£ãŠããäŸãèããŠã¿ãŸãããã ã¢ãŒãã£ã¹ãããšã®ã¢ãã¬ã¹ç¯å²ã®ååžãè¡š1ã«ç€ºããŸãã
è¡š1
åºæŒè | ã¢ãã¬ã¹ç©ºé | ADDR [25] | ADDR [24] | ADDR [23] | ADDR [22] | ADDR [21] | ADDR [20] | ADDR [19] | ADDR [18] | ADDR [17] | ADDR [16] | 容éããã€ã | DC_1 | DC_2 | DC_3 | DC_4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Target_a | èšæ¶ | 1 | 0 | 0 | X | X | X | X | X | X | X | 800äž | 1 | 0 | 0 | 0 |
Target_b | èšæ¶ | 0 | 0 | 0 | 0 | X | X | X | X | X | X | 4M | 0 | 1 | 0 | 0 |
Target_c | èšæ¶ | 1 | 0 | 1 | 1 | X | X | X | X | X | X | 4M | 0 | 0 | 1 | 0 |
Target_d | èšæ¶ | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 64K | 0 | 0 | 0 | 1 |
Target_d | I / O | 1 | 0 | 0 | X | X | X | X | X | X | X | 800äž | 0 | 0 | 0 | 1 |
Target_c | I / O | 0 | 0 | 0 | 0 | X | X | X | X | X | X | 4M | 0 | 0 | 1 | 0 |
Target_b | I / O | 1 | 0 | 1 | 1 | X | X | X | X | X | X | 4M | 0 | 1 | 0 | 0 |
Target_a | I / O | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 64K | 1 | 0 | 0 | 0 |
STIã»ã°ã¡ã³ãã®ãã¹ã€ã³ãã©ã¹ãã©ã¯ãã£ã®æ§æã®æ©èœå³ãå³ã«ç€ºããŸãã 2ã
çŸåšã®ã¢ãã¬ã¹ãšã³ãã³ãã³ãŒãïŒã³ãã³ããã¢ãã¬ã¹ç©ºéã決å®ããïŒã«å¿ãããšã°ãŒãã¥ãŒã¿ã®éžæã¯ãã¢ãã¬ã¹ãã³ãŒã-ã¢ãã¬ã¹ãã³ãŒãã«ãã£ãŠå®è¡ãããŸãã ã¢ãã¬ã¹ãã³ãŒããŒã®æåã®åºåã®ãŠãããã¯ããšã°ãŒãã¥ãŒã¿ãŒAãžã®åŒã³åºãã2çªç®ã®åºåã®ãŠããã-ãšã°ãŒãã¥ãŒã¿ãŒBãžã®åŒã³åºããªã©ãéç¥ããŸãã ãã³ãŒããŒåºåã®ãã€ããªã³ãŒããè¡š1ã«ç€ºããŸãã
ã¢ãã¬ã¹ãã³ãŒããŒã®ã¢ãã¬ã¹ã¯ããµã³ãã©ãŒã®ä¿¡å·ãå¶åŸ¡ããŸããã¿ãŒã²ããAãã¿ãŒã²ããBãã¿ãŒã²ããCãã¿ãŒã²ããDã®FB1_ENãFB2_ENãFB3_ENãFB4_ENã¯ããããã ãããã®ä¿¡å·ã¯ããããè«çã²ãŒãIã«äŸçµŠãããèŠæ±ä¿¡å·S_EX_REQãéžæããããšã°ãŒãã¥ãŒã¿ãŒã«æž¡ãããããšãèš±å¯ããã¹ã€ããã³ã°ããŒããã«ããã¬ã¯ãµãŒïŒMUXïŒã«ãäŸçµŠãããŸãã
ãã«ããã¬ã¯ãµã¯ãããã©ãŒããŒã®åºåä¿¡å·ïŒS_EX_ACKããã³S_D_RDïŒãã€ãã·ãšãŒã¿ãŒã®å ¥åã«åãæ¿ããŸãã ããã«ãåæç¹ã§ãã€ãã·ãšãŒã¿ãŒã¯1ã€ã®ãšã°ãŒãã¥ãŒã¿ãŒïŒãã³ãŒããŒã«ãã£ãŠéžæãããïŒã®ã¿ããä¿¡å·ãåä¿¡ããå¿ èŠããããŸããããã§ãªãå Žåã¯ããã¹ãŠã®ãŠããããäŸçµŠããå¿ èŠããããŸãã æåŸã®èŠä»¶ã¯ããšã°ãŒãã¥ãŒã¿ãŒã«å±ããªãã¢ãã¬ã¹ãžã®ã€ãã·ãšãŒã¿ãŒã®ã¢ãã¬ã¹ããå ¥åS_EX_ACKã«ãŒããååšããããã«ã·ã¹ãã ãããªãŒãºãããªããšããäºå®ã«ãããã®ã§ãã ã»ãšãã©ã®ã·ã¹ãã ã«ååšããªããªãœãŒã¹ããããŒã¿ãèªã¿åããšããã¹ãŠã®ãŠãããã®çµã¿åãããè¿ãããŸãã
ãã³ãŒããšãã«ããã¬ã¯ãµã¯ãåãã¯ããã¯ãµã€ã¯ã«å ïŒé£æ¥ããç«ã¡äžãããšããžéïŒã§åäœããçµã¿åããè«çåè·¯ã§ãã
å³ 2. STIã»ã°ã¡ã³ãã®ãã¹ã€ã³ãã©ã¹ãã©ã¯ãã£ã®çµç¹ã®æ©èœå³
executor-Dã«ã¯8ãããSTIã€ã³ã¿ãŒãã§ã€ã¹ãè£ åãããŠãããããS_NBEãã€ãéžæå ¥åããªãããšã«æ³šæããŠãã ããã ãã®çµæãããã©ãŒããŒDã¯ããã®ããã©ãŒããŒãæ¥ç¶ãããŠããããŒã¿ãã¹ãã€ãã®ã¢ã¯ãã£ããã£ãèæ ®ããŠéžæãããŸãã æ©èœå³ãããããŒã¿ãã¹ã®æå°ãã€ãã䜿çšãããŠããããšãããããŸãããããã£ãŠãexecutor-Dã¯ãããŒã¿ã®æäžäœãã€ããã¢ã¯ãã£ããªå Žåã«ã®ã¿äœ¿çšã§ããŸããS_NBE[0] = "0"ã ãã®ãšã°ãŒãã¥ãŒã¿ã®åºåS_EX_ACKã®è«çã²ãŒãORã¯ãS_NBE [0] = "0"ã®æ¡ä»¶ã§ãã¬ãã£ä¿¡å·ããã«ããã¬ã¯ãµã«æž¡ããŸãã ããã§ãªãå Žåããã«ããã¬ã¯ãµã¯ãåçµããé²ãé«ã¬ãã«ãåãåããŸãã
32ãããã®Artist-Cã64ãããã®STIã»ã°ã¡ã³ãã«æ¥ç¶ããã«ã¯ãããŒã¿ãã¹ã®äžåå[31ïŒ0]ã䜿çšããŸãã ãããã®ããŒã¿ã©ã€ã³ãä»ããŠéä¿¡ãããã¢ãã¬ã¹ãªãã»ãã0ã1ã2ãããã³3ã®ãã€ãã¯ãã€ããŒãã«ä¿¡å·S_NBE [3ïŒ0]ã«å¯Ÿå¿ããŸãã ãã®å Žåããã€ãã€ããŒãã«ä¿¡å·ã¯FB3_S_EX_REQãšã°ãŒãã¥ãŒã¿ãŒã¢ã¯ãã£ããŒã·ã§ã³ä¿¡å·ã®åœ¢æã«é¢äžããŸãããããã¯ãããŒã¿ãã¹ã®äžååã«ã¢ã¯ã»ã¹ãããµã€ã¯ã«ïŒã¢ãã¬ã¹ãªãã»ãã4ã5ã6ãããã³7ãæã€ãã€ãïŒã32ããããšã°ãŒãã¥ãŒã¿ãŒCã€ã³ã¿ãŒãã§ã€ã¹ã§ç©ºã®ãµã€ã¯ã«ãåŒãèµ·ããããã§ãã 4ã€ã®äžäœãã€ããã¹ãŠãéã¢ã¯ãã£ãåãããŸãã STIè«è² æ¥è ã¯ããã®ãããªãµã€ã¯ã«ã«æ£ãã察å¿ããå¿ èŠããããŸãã
a
b
ã§
å³ 3.ãã«ããã¬ã¯ãµãŒã®è«çæ§æ
ããã©ãŒããŒã®åºåä¿¡å·ãã€ãã·ãšãŒã¿ãŒã®å ¥åã«åãæ¿ãããã«ããã¬ã¯ãµãŒã®æ§æãæ€èšããŠãã ããã æ£èŠãã«ããã¬ã¯ãµã¹ããŒã ã¯ãDNFïŒäºé 代æ°ã®é¢æ°è¡šçŸã®éžèšçæšæºåœ¢åŒïŒã®åçã«åºã¥ããŠæ§ç¯ãããŠããŸãã DNFããŒã¹ã®åè·¯ã¯ã2ã€ã®ã«ã¹ã±ãŒãã§æ§æãããŠããŸãã æåã®ã«ã¹ã±ãŒãã«ã¯ANDã²ãŒãïŒDNFåŒã®è«çç©ïŒãå«ãŸãã2çªç®ã®ã«ã¹ã±ãŒãã«ã¯ORçµåèŠçŽ ïŒDNFã®è«çåïŒãå«ãŸããŸãã 3å ¥åãã«ããã¬ã¯ãµã®ãã®ãããªåè·¯ãå³6ã«ç€ºããŸãã 3 aã DNFã«åºã¥ããã«ããã¬ã¯ãµãŒã®åäœåçã¯ãéžæãããå ¥åããã®ã¿æåã®ã¹ããŒãžã®ãŠããããæž¡ãããšã§ãã ãã«ããã¬ã¯ãµã®å ¥åãã©ããéžæãããŠããªãå Žåããã®ãããªåè·¯ã¯åºåã§äœã¬ãã«ãäžããS_EX_ACKä¿¡å·ã¹ã€ããã«é¢ããäžèšã®èŠä»¶ãæºãããŸããã
ãã«ããã¬ã¯ãµãç·šæããããã®2çªç®ã®ãªãã·ã§ã³ã¯ãå³2ã«ç€ºãããŠããŸãã 3ãbã ãã®ã¹ããŒã ã¯ãCNFïŒæ¥ç¶æšæºåœ¢ïŒã®åçã«åºã¥ããŠæ§ç¯ããã2ã€ã®ã¹ããŒãžã§æ§æãããŸããæåã®ã¹ããŒãžã«ã¯ãéžæãããå ¥åããã®ã¿è«çãŒããæž¡ãORã²ãŒããå«ãŸãã2çªç®ã®ã¹ããŒãžã«ã¯ãååã«åŸã£ãŠåäœããçµ±äžANDèŠçŽ ãå«ãŸããŸãïŒå°ãªããšã1ã€ã®ãŒãåºåãŒãã èš±å¯å ¥åã«ãã¹ãŠãŒããååšããå Žåããšã°ãŒãã¥ãŒã¿ãŒãéžæãããŠããªãå Žåããã®ãããªãã«ããã¬ã¯ãµãŒã¯åºåã§1ã€ãçæããã€ãã·ãšãŒã¿ãŒå ¥åã§ã®S_EX_ACKä¿¡å·ã®èŠä»¶ãæºããããšãããããŸãã
åçŽãªè«è² æ¥è -STIã®ãã¹ã€ã³ã¿ãŒãã§ã€ã¹ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãèšè¿°ãããšãã«äœ¿çšããããšãæšå¥šãããã®ã¯ãCNFããŒã¹ã®ãã«ããã¬ã¯ãµã§ãã
äžéšã®VLSIèŠçŽ ããŒã¹ããã³åæã®FPGAã¢ãŒããã¯ãã£ã§ã¯ãI / Oãããã¯ã ãã§ãªãã³ã¢ã§ã3ã€ã®åºåç¶æ ïŒ3å®å®ãããã¡ïŒãæã€èŠçŽ ã䜿çšã§ããŸãã å³3ã®äŸã®tristableãããã¡ãŒ å³ïŒã«ç€ºãããããã«ãå¶åŸ¡å ¥åïœã«ãŠããããããå Žåãä¿¡å·ïŒ©ïŒ®ïŒ¿ïœãåºåã«éä¿¡ããããã§ãªãå Žåãåºåã¯ç¬¬ïŒã®ç¶æ ããã«ããã tristableãããã¡ã«ãã£ãŠå¶åŸ¡ãããS_EX_ACKå ±æéä¿¡ãªã³ã¯ã«åºã¥ãã¹ã€ãããå³3ã«ç€ºããŸãã 3ãcã ãã«ã¢ããæµæã¯ããã¹ãŠã®ãããã¡ããªãã«ãªã£ãŠããïŒãšã°ãŒãã¥ãŒã¿ãéžæãããŠããªãïŒå Žåã«ãå ±æéä¿¡ã©ã€ã³ã®ä¿¡å·ã®å€ãèšå®ããŸãã ãã«ã¢ããæµæã¯ãæ£è«çã®è«çãŠãããã圢æããŸãã ãããã£ãŠãã¹ã€ããä¿¡å·S_EX_ACKã®èŠä»¶ã
å³2ã®åè·¯ã®ãã€ããªããžãã¯ã®èŠ³ç¹ãã泚æããŠãã ããã 3bããã³å³ 3ãã€ããŒãã«å ¥åEN_xã®ãŠãããã1ã€ä»¥äžã®äœçœ®ã«ããå Žåããã®å ¥åã®çµã¿åããã®ã»ããã§åäžã§ãã STIã¢ãŒãã£ã¹ãã¹ã€ããã§éžæã§ããã¢ãŒãã£ã¹ãã¯1人ã ãã§ãããŸãã¯ãã©ããéžæã§ããŸãããããã¯ãå³1ã®åè·¯ã®èŠä»¶ã«å¯Ÿå¿ããŠããŸãã 3ãcã å³ã«äŒŒãã¹ããŒã 3bã¯ãå³3cãšåæ§ã®RTLã¢ãã«ããå€ãã®HDLã·ã³ã»ãµã€ã¶ãŒã«ãã£ãŠèªåçã«åœ¢æãããŸãã
64ããããŸã§ã®ããã容éãè£ãããã©ãŒããŒCããã³Dãèªã¿åãããã®ãã¹ã©ã€ã³äžã®æªäœ¿çšã®é«äœãããããŒã¿ã¯ãããžã¿ã«ã¢ãŒã¹åè·¯ïŒGNDïŒãžã®æ°žç¶çãªæ¥ç¶ã«ãã£ãŠãŒãã«èšå®ãããŸãã
å³2ã®æ©èœå³ã®ãã1ã€ã®èå³æ·±ãç¹ã¯ãã¢ãŒãã£ã¹ãDã®ãã¹ã¢ãã¬ã¹ã«é¢é£ããŠããŸãã å Žåã«ãã£ãŠã¯ã以åã«éçºãããã©ã€ãã©ãªãŠããããšæ±çšæ§ãããŒã«ã«ã·ã¹ãã ãã¹ã«æ¥ç¶ããå¿ èŠããããŸãã ããšãã°ãé©åãªã¢ãã¬ã¹ç¯å²ãå¿ èŠãšããç¹å®ã®å®¹éã®ã¡ã¢ãªãããã¯ããŸãã¯å®å šãªã¢ãã¬ã¹åœ¢åŒçšã«èšèšãããã€ã³ã¿ãŒãã§ã€ã¹ããªããžã¯32ãããã§ãã çŸåšã®ã·ã¹ãã æ§æã®ãã®ãããã¯ãã¢ãã¬ã¹ã®å šç¯å²ã䜿çšããªãå ŽåãS_ADDRå ¥åã®æäžäœã®ã¢ã€ãã«ãããã«å®æ°ãé©çšããå¿ èŠããããŸãã ãã®äŸã§ã¯ãexecutor -Dã®æªäœ¿çšã®å ¥åS_ADDR [31:20]ã«ã¯ãŒãããããŸãã
ããã容éã®å°ããã¢ãŒãã£ã¹ããããã容éã®å€§ããã»ã°ã¡ã³ãã«æ¥ç¶ãããŠããå Žåããã®ã¢ãŒãã£ã¹ãã®ãªãœãŒã¹ã®ã¢ãã¬ã¹ãšæªäœ¿çšã®ã¢ãã¬ã¹ã亀äºã«äœ¿çšããå¹æãçŸããŸãã ããã¯ããã€ãã¢ãã¬ãã·ã³ã°ã®ç¹æ§ã«ãããã®ã§ãã ã¢ãã¬ã¹ãã000ãã§çµãããã€ãã¯ãåžžã«ã001ãããã[15ïŒ8]ã§çµããã¢ãã¬ã¹ã®ãã€ãã䜿çšããããªã©ã64ãããããŒã¿ãã¹ã®ããã[7ïŒ0]ã§éä¿¡ãããŸããäžäœãããã111ãããŒã¿è¡ã«ã¢ãã¬ã¹ãå«ãŸãããã€ãã䜿çšãããŸã[63:56]ã ãããã£ãŠãæªäœ¿çšã®ããŒã¿ãã¹ã©ã€ã³ã«å¯Ÿå¿ããã¢ãã¬ã¹ã¯ãæ®ãã®ã©ã€ã³ã§äœ¿çšå¯èœãªã¢ãŒãã£ã¹ããªãœãŒã¹ã®ã¢ãã¬ã¹ãšäº€äºã«ãªããŸãã
åè¿°ã«åºã¥ããŠãexecutor-CãªãœãŒã¹ã¯ã16é²è¡šçŸã0ã3ããã³8..Bã®æ°åã§çµããã¢ãã¬ã¹ã«é 眮ããããé£æ¥ãexecutor-CãªãœãŒã¹ã®éã«ã¯ãããŒã¿ã©ã€ã³çµç±ã§ã¢ã¯ã»ã¹ããã4ã€ã®æªäœ¿çšãã€ã[63 ïŒ32]ã
åæ§ã«ãã¢ãŒãã£ã¹ãDãªãœãŒã¹ã¯ã0hãš8hã§çµããã¢ãã¬ã¹ã§ã+ 8ãã€å¢å ããŸãã
ã¢ãŒãã£ã¹ãCãšDã®æ¥ç¶ã¯ãã¢ãã¬ã¹ãã¹ããããã1ããããš3ãããã·ããããããšã§å®è£ ãããããšã«æ³šæããŠãã ããã ã€ãŸããã¢ãŒãã£ã¹ãCã®32ãããããŒã¿ã¯ãŒãã®ã¢ãã¬ã¹ã¯STIã»ã°ã¡ã³ãã®64ãããããŒã¿ã¯ãŒãã®ã¢ãã¬ã¹ã«ãªããã¢ãŒãã£ã¹ãDã®ããªã¥ãŒã ã®ãã€ãã¢ãã¬ã¹ãSTIã»ã°ã¡ã³ãã®64ãããã¯ãŒãã®ã¢ãã¬ã¹ã«ãªããŸãã
STIã»ã°ã¡ã³ãã«ããŒã¿ãã¹ã®å®¹éãå°ãããšã°ãŒãã¥ãŒã¿ãŒã«æ¥ç¶ãããã®ãªãœãŒã¹ãã·ã¹ãã ïŒããã»ããµïŒã®ã¢ãã¬ã¹ç©ºéã«é£ç¶çãã€é£ç¶çã«é 眮ãããããã«ããã«ã¯ãè¿œå ã®æ©èœãŠãããã䜿çšããå¿ èŠããããŸã-ãã倧ããªããŒã¿å®¹éã®ã¢ã¯ã»ã¹ãµã€ã¯ã«ã2ã€ä»¥äžã«åå²ããããªããžäº€æè«è² æ¥è ã®ããŒã¿ã®å®¹éã§åŸªç°ããŸãã ãã®ãããªããªããžã®æ§æã¯ããã®èšäºã®ç¯å²å€ã§ãã
以äžã¯ãå³ã«ç€ºãSTIã»ã°ã¡ã³ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®èšè¿°äŸã§ãã 2ãVerilogã§ïŒ
`timescale 1ns / 1ps //////////////////////////////////////////////////////////////////////// // Engineer: FPGA-Mechanic // // Create Date: 09:38:35 03/03/2017 // Design Name: Argon SoC Proto // Module Name: STI_EXAMPLE // Project Name: Argon Otd.23 Projects // Target Devices: Any FPGA or ASIC // Tool versions: Xilinx 14.7 // Description: Test-purpose synthesizable STI module // //////////////////////////////////////////////////////////////////////// module STI_EXAMPLE( input CLK, input RST ); // Internal signals declaration: // STI-64: wire S_EX_REQ, wire [25:3] S_ADDR, wire [7:0] S_NBE, wire [2:0] S_CMD, wire [63:0] S_D_WR, wire S_EX_ACK, wire [63:0] S_D_RD, //------------------------------------------ // Initiator: STI_64b_Initiator INITR( .CLK(CLK), .RST(RST), .S_EX_REQ(S_EX_REQ), .S_ADDR(S_ADDR), .S_NBE(S_NBE), .S_CMD(S_CMD), .S_D_WR(S_D_WR), .S_EX_ACK(S_EX_ACK), .S_D_RD(S_D_RD) ); //------------------------------------------ // STI Bus Infrastructure: reg FB1_EN, FB2_EN, FB3_EN, FB4_EN; wire FB1_S_EX_REQ, FB2_S_EX_REQ, FB3_S_EX_REQ, FB4_S_EX_REQ; wire [63:0] FB1_S_D_RD, FB2_S_D_RD, FB3_S_D_RD, FB4_S_D_RD; wire FB1_S_EX_ACK, FB2_S_EX_ACK, FB3_S_EX_ACK, FB4_S_EX_ACK; always @ (S_ADDR[25:16], S_CMD) if((~S_CMD[2] & S_CMD[0]) | (S_CMD[2] & ~S_CMD[1] & S_CMD[0]) | &(S_CMD[2:1])) // Memory CMD: 0X1,101,11X case(S_ADDR[25:23]) 3'b100 : // 100XXXXXXX begin FB1_EN <= 1'b1; FB2_EN <= 1'b0; FB3_EN <= 1'b0; FB4_EN <= 1'b0; end 3'b000 : // 000XXXXXXX if(S_ADDR[22] == 1'b0) // 0000XXXXXX begin FB1_EN <= 1'b0; FB2_EN <= 1'b1; FB3_EN <= 1'b0; FB4_EN <= 1'b0; end else // No Resource begin FB1_EN <= 1'b0; FB2_EN <= 1'b0; FB3_EN <= 1'b0; FB4_EN <= 1'b0; end 3'b101 : // 101XXXXXXX if(S_ADDR[22]) // 1011XXXXXX begin FB1_EN <= 1'b0; FB2_EN <= 1'b0; FB3_EN <= 1'b1; FB4_EN <= 1'b0; end else if(S_ADDR[21:16] == 6'b001011) // 1010001011 begin FB1_EN <= 1'b0; FB2_EN <= 1'b0; FB3_EN <= 1'b0; FB4_EN <= 1'b1; end else // No Resource begin FB1_EN <= 1'b0; FB2_EN <= 1'b0; FB3_EN <= 1'b0; FB4_EN <= 1'b0; end default : // No Resource begin FB1_EN <= 1'b0; FB2_EN <= 1'b0; FB3_EN <= 1'b0; FB4_EN <= 1'b0; end endcase else // IO CMD: 0X0,100 case(S_ADDR[25:23]) 3'b100 : // 100XXXXXXX begin FB1_EN <= 1'b0; FB2_EN <= 1'b0; FB3_EN <= 1'b0; FB4_EN <= 1'b1; end 3'b000 : // 000XXXXXXX if(S_ADDR[22] == 1'b0) // 0000XXXXXX begin FB1_EN <= 1'b0; FB2_EN <= 1'b0; FB3_EN <= 1'b1; FB4_EN <= 1'b0; end else // No Resource begin FB1_EN <= 1'b0; FB2_EN <= 1'b0; FB3_EN <= 1'b0; FB4_EN <= 1'b0; end 3'b101 : // 101XXXXXXX if(S_ADDR[22]) // 1011XXXXXX begin FB1_EN <= 1'b0; FB2_EN <= 1'b1; FB3_EN <= 1'b0; FB4_EN <= 1'b0; end else if(S_ADDR[21:16] == 6'b001011) // 1010001011 begin FB1_EN <= 1'b1; FB2_EN <= 1'b0; FB3_EN <= 1'b0; FB4_EN <= 1'b0; end else // No Resource begin FB1_EN <= 1'b0; FB2_EN <= 1'b0; FB3_EN <= 1'b0; FB4_EN <= 1'b0; end default : // No Resource begin FB1_EN <= 1'b0; FB2_EN <= 1'b0; FB3_EN <= 1'b0; FB4_EN <= 1'b0; end endcase and (FB1_S_EX_REQ, FB1_EN, S_EX_REQ); and (FB2_S_EX_REQ, FB2_EN, S_EX_REQ); and (FB3_S_EX_REQ, FB3_EN, S_EX_REQ); and (FB4_S_EX_REQ, FB4_EN, S_EX_REQ, ~S_NBE[0]); // Acknowledge MUX: assign S_EX_ACK = (~FB1_EN | FB1_S_EX_ACK) & (~FB2_EN | FB2_S_EX_ACK) & (~FB3_EN | FB3_S_EX_ACK) & (~(FB4_EN) | S_NBE[0] | FB4_S_EX_ACK); // Read Data MUX: assign S_D_RD = (~{64{FB1_EN}} | FB1_S_D_RD) & (~{64{FB2_EN}} | FB2_S_D_RD) & (~{64{FB3_EN}} | FB3_S_D_RD) & (~{64{FB4_EN}} | FB4_S_D_RD); //------------------------------------------ // Target-A: STI_64b_Target_A TARGET_A( .CLK(CLK), .RST(RST), .S_EX_REQ(FB1_S_EX_REQ), .S_ADDR(S_ADDR[22:3]), .S_NBE(S_NBE), .S_CMD(S_CMD), .S_D_WR(S_D_WR), .S_EX_ACK(FB1_S_EX_ACK), .S_D_RD(FB1_S_D_RD) ); //------------------------------------------ // Target-B: STI_64b_Target_B TARGET_B( .CLK(CLK), .RST(RST), .S_EX_REQ(FB2_S_EX_REQ), .S_ADDR(S_ADDR[21:3]), .S_NBE(S_NBE), .S_CMD(S_CMD), .S_D_WR(S_D_WR), .S_EX_ACK(FB2_S_EX_ACK), .S_D_RD(FB2_S_D_RD) ); //------------------------------------------ // Target-C: STI_32b_Target_C TARGET_C( .CLK(CLK), .RST(RST), .S_EX_REQ(FB3_S_EX_REQ), .S_ADDR(S_ADDR[21:3]), .S_NBE(S_NBE[3:0]), .S_CMD(S_CMD), .S_D_WR(S_D_WR[31:0]), .S_EX_ACK(FB3_S_EX_ACK), .S_D_RD(FB3_S_D_RD[31:0]) ); assign FB3_S_D_RD[63:32] = {32{1'b0}}; //------------------------------------------ // Target-D: STI_8b_Target_D TARGET_D( .CLK(CLK), .RST(RST), .S_EX_REQ(FB4_S_EX_REQ), .S_ADDR({12'h000, S_ADDR[22:3]}), .S_CMD(S_CMD), .S_D_WR(S_D_WR[7:0]), .S_EX_ACK(FB4_S_EX_ACK), .S_D_RD(FB4_S_D_RD[7:0]) ); assign FB4_S_D_RD[63:8] = {56{1'b0}}; //------------------------------------------ //------------------------------------------ //------------------------------------------ //------------------------------------------ //------------------------------------------ endmodule
STIã»ã°ã¡ã³ãã€ã³ãã©ã¹ãã©ã¯ãã£èªäœã¯ããSTIãã¹ã€ã³ãã©ã¹ãã©ã¯ãã£ããšããã³ã¡ã³ãã§å¶éãããã³ãŒããããã¯ã§èª¬æãããŠããŸãã
STIã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšãããšãããŒã¿ãã¹å¹ ã®åºãã¢ãŒãã£ã¹ããããã深床ã®äœãã»ã°ã¡ã³ãã«æ¥ç¶ã§ããŸãã 64ãããã®ãšã°ãŒãã¥ãŒã¿ãŒã16ãããã®ããŒã¿ãã¹ãæã€ã»ã°ã¡ã³ãã«æ¥ç¶ããäŸãèããŠã¿ãŸãããã ãã®ãããªæ¥ç¶ã®æ©èœå³ãå³ã«ç€ºããŸãã 4ã
å³ 4. 64ãããã¢ãŒãã£ã¹ãã16ãããSTIã»ã°ã¡ã³ãã«æ¥ç¶ããŸã
ããé«ãããã深床ã®ãšã°ãŒãã¥ãŒã¿ãæ¥ç¶ããå Žåãã¢ãã¬ã¹ãã¹ã®ããããã·ããããå¿ èŠã¯ãããŸããã 代ããã«ããšã°ãŒãã¥ãŒã¿ã䜿çšããªãäžäœã¢ãã¬ã¹ãããã¯ãçŸåšã®ã¢ãã¬ã¹ã亀æãããããŒã¿ãã¹ã®äžéšãéžæããã¹ã€ããã³ã°ããŒããå¶åŸ¡ããŸãã åæã«ããšã°ãŒãã¥ãŒã¿ãŒã®ãªãœãŒã¹ã¯ãåãããŒã¿å¹ ã®ã»ã°ã¡ã³ãã«æ¥ç¶ãããšããšåãé åºã§ã¢ãã¬ã¹ç©ºéã«é 眮ãããŸãã
ã¹ã€ããã³ã°ããŒãã¯ãããã«ããã¬ã¯ãµïŒDMXïŒãS_D_WRã»ã°ã¡ã³ãã®ããŒã¿ãã¹ãã¢ãŒãã£ã¹ãæžã蟌ã¿ãã¹ã®å¯Ÿå¿ããçãããããã°ã«ãŒãã«è€è£œãããããã¡ãããã³ããŒã¿èªã¿åããã¹ã®ãã«ããã¬ã¯ãµïŒMXïŒã§è¡šãããŸãã
ããã«ããã¬ã¯ãµã¯ãSTIã»ã°ã¡ã³ãã®S_NBEãã€ãã®ã€ããŒãã«ä¿¡å·ããã¢ãã¬ã¹ã®æäžäœãããã«åºã¥ããŠããã©ãŒãã®å¯Ÿå¿ããã€ããŒãã«ãã€ãå ¥åã«æž¡ããŸãã ãã®äŸã§ã¯ãã¹ã€ããã³ã°ãå¶åŸ¡ããæäžäœã¢ãã¬ã¹ãããã¯S_ADDR [2ïŒ1]ã§ãã çŸåšã®S_ADDR [2ïŒ1]ã®çµã¿åããã§éžæãããŠããªãããã«ããã¬ã¯ãµã®åºåã§ã¯ã16ããããã¹äžã®ã¢ãã¬ã¹ãçŸåšã®ã¢ãã¬ã¹ãšäžèŽããªããã€ããžã®ã¢ã¯ã»ã¹ãçŠæ¢ããè«çãŠãããã圢æãããŸãã
å³ã®æ§æã«å¯Ÿå¿ããããã«ããã¬ã¯ãµã®æ©èœå³ å³4 5ã
å³ 5.ããã«ããã¬ã¯ãµã®æ©èœå³
ãã«ããã¬ã¯ãµã¯ãå¶åŸ¡ã®çµã¿åããïŒã¢ãã¬ã¹ã®æäžäœãããïŒã«å¿ããŠãå ¥åä¿¡å·ã®1ã€ãåºåã«åãæ¿ããæšæºçãªè«ççµã¿åããããŒãã§ãã ãããã£ãŠãS_ADDR [2ïŒ1] = 0hã®å Žåãä¿¡å·S_D_RD [15ïŒ0]ã¯ã¢ãŒãã£ã¹ãã®åºåS_D_RD [15ïŒ0]ã«éä¿¡ãããS_ADDR [2ïŒ1] = 1hã®å Žåãä¿¡å·S_D_RD [31:16]ãS_ADDR [2ïŒ2]ã®å ŽåïŒ1] = 2h-S_D_RD [47:32]ãS_ADDR [2ïŒ1] = 3h-S_D_RD [63:48]ã
16.32ããã³64ãããããã©ãŒããŒã®8ãããSTIã»ã°ã¡ã³ããžã®æ¥ç¶ã¯ããã®ã»ã°ã¡ã³ãã«ã¯S_NBEãã€ãéžæä¿¡å·ããªãããããããã«ç°ãªããŸãã ç¹å®ã®ãã€ããã¢ã¯ã»ã¹ãããªãå Žåã察å¿ãã亀æãµã€ã¯ã«ã¯8ãããã»ã°ã¡ã³ãã§åœ¢æãããŸããã
16ãããã¢ãŒãã£ã¹ãã8ãããã»ã°ã¡ã³ãã«æ¥ç¶ããäŸãå³1ã«ç€ºããŸãã 6ã
å³ 6. 16ãããã¢ãŒãã£ã¹ãã8ãããSTIã»ã°ã¡ã³ãã«æ¥ç¶ãã
16ããããšã°ãŒãã¥ãŒã¿ãŒã®S_NBEãã€ãã€ããŒãã«ä¿¡å·ã¯ããããã¡ãŒãšã€ã³ããŒã¿ãŒäžã«æ§ç¯ããã1ïŒ2ã¢ãã¬ã¹ãã³ãŒããŒã«ãã£ãŠçæãããŸãã æå°ïŒå¶æ°ïŒãã€ãã«ã¢ã¯ã»ã¹ããå Žåãã¢ãã¬ã¹ãããS_ADDR [0]ã«ã¯ããããã¡ãééããŠãšã°ãŒãã¥ãŒã¿S_NBE [0]ã®å ¥åã«éãããŒããå«ãŸããŸãã ãããã£ãŠãè¡[7ïŒ0]ã§ã®ããŒã¿äº€æã¯èš±å¯ãããŸãã åæã«ãããŒã¿ã©ã€ã³[15ïŒ8]ã®äº€æãçŠæ¢ãããŠããããå ¥åS_NBE [1]ã«åœ¢æãããŸãã ãšã°ãŒãã¥ãŒã¿ã®ã·ãã¢ïŒå¥æ°ïŒãã€ãã«ã¢ã¯ã»ã¹ãããšããã¢ãã¬ã¹ãããS_ADDR [0]ã«ã¯1ãå«ãŸããŸããããã¯ãã©ã€ã³[15ïŒ8]ã«æ²¿ã£ãŠäº€æãå®è¡ããããšå察ã®ç¶æ³ã«ãªããŸãã
ãã«ããã¬ã¯ãµãŒ-MXã¯ãã¢ãŒãã£ã¹ããªãŒãåºåã®2ãã€ãã®ããããã8ãããããŒã¿ãã¹S_D_RDã«åãæ¿ããŸããã¢ãã¬ã¹ãããS_ADDR [0]ããŒãã®å Žåãã¢ãŒãã£ã¹ãã®åºåããã®ããŒã¿[7ïŒ0]ã¯åºåS_D_RDã«éä¿¡ããããŠãããã1ã®å ŽåãããŒã¿[15ïŒ8]ã
èšé²çšã®ããŒã¿ã¯ãexecutorã®S_D_WRå ¥åã®äž¡æ¹ã®ãã€ãã«è€è£œãããŸãããS_ADDR [0]ãšS_NBE [1ïŒ0]ã«å¿ããŠ1ãã€ãã®ã¿ãæžã蟌ãŸããŸãã
32ãããã®ãšã°ãŒãã¥ãŒã¿ãŒã8ãããã®STIã»ã°ã¡ã³ãã«æ¥ç¶ãããŠããå Žåãã¢ãã¬ã¹ãã³ãŒããŒã¯2ïŒ4圢åŒïŒéåºåïŒã§ãããã¢ãã¬ã¹ãããS_ADDR [1ïŒ0]ãS_NBE [3ïŒ0]ã«å€æããŸãã ãã®å Žåã®ãã«ããã¬ã¯ãµã¯4ïŒ1ãã©ãŒãããã§ãã¢ãã¬ã¹ãããS_ADDR [1ïŒ0]ã«ãã£ãŠãå¶åŸ¡ãããŸãã 64ããããšã°ãŒãã¥ãŒã¿ãŒãæ¥ç¶ãããŠããå Žåã3ïŒ8ãã³ãŒããŒïŒå転åºåä»ãïŒã¯ãS_ADDR [2ïŒ0]ã¢ãã¬ã¹ã®ããããS_NBE [7ïŒ0]ãã€ãã€ããŒãã«ä¿¡å·ã«å€æããŸãã 8ïŒ1ãã«ããã¬ã¯ãµãŒã¯ãã¢ãã¬ã¹ã®æäžäœ3ãããã®çµã¿åããã«åŸã£ãŠããŒã¿èªã¿åããã¹äžã®ãã€ããåãæ¿ããŸãã
çµè«
ã·ã³ãã«ãªSTIãšã°ãŒãã¥ãŒã¿ãŒã®ã€ã³ã¿ãŒãã§ã€ã¹ã€ã³ã¿ãŒãã§ãŒã¹ã¯ãVerilogããã³VHDLèšèªã§ç°¡åã«èšè¿°ã§ãããã¹ã€ã³ãã©ã¹ãã©ã¯ãã£ã䜿çšãã1ã€ã®ã»ã°ã¡ã³ãã§ã€ãã·ãšãŒã¿ãŒãšSTIãšã°ãŒãã¥ãŒã¿ãŒãçµã¿åãããŸãã
æ¡ä»¶ä»ãif / caseæŒç®åã䜿çšããæœè±¡åã®åäœã¬ãã«ã§ã®ã¢ãã¬ã¹ãã³ãŒããŒã®èª¬æã¯ãããŒã«ä»£æ°æ³ã䜿çšããçµã¿åããåè·¯ã®æéã®ãããåæãåé¿ããŸãã
STI Agent Interaction Protocolã䜿çšãããšã1ã€ã®ãã¹ã»ã°ã¡ã³ãã§ã¢ãã¬ã¹ãšããŒã¿ãã¹ã®ãããå¹ ãç°ãªãããã©ãŒããŒã䜿çšã§ããŸãã
åç §è³æ
1. Borisenko N.V.ã³ã³ãã¥ãŒãã£ã³ã°ã³ã¢ãšVLSIãããã®åšèŸºãããã¯ãšã®çžäºäœçšã®ããã®åæã·ã¹ãã ã€ã³ã¿ãŒãã§ã€ã¹ã ãã³ã³ããŒãã³ããšãã¯ãããžãŒãNo. 10.2016ã
2. VHDLã䜿çšããRTLããŒããŠã§ã¢èšèšïŒå¹çã移æ€æ§ãããã³ã¹ã±ãŒã©ããªãã£ã®ããã®ã³ãŒãã£ã³ã°ã ãã³P.Chuã ãžã§ã³ã»ã¯ã€ãªãŒã»ã¢ã³ãã»ãµã³ãº 2006幎ã
3. Borisenko N.V.ããŸããŸãªããã°ã©ããã«ããžãã¯ãã¡ããªã«å®è£ ãããçµ±åãããäžé£ã®åæFIFOãããã¡ã¢ãã«ãç·šæããã¢ãããŒãã ããŒã1.ãã³ã³ããŒãã³ããšãã¯ãããžãŒã第12.2012ã
4. Borisenko N. V.æ å ±ã®ãœãŒã¹ãšã¬ã·ãŒããŒã®éã®ããŒã¿ãã¹ã«çµ±äžãããã€ã³ã¿ãŒãã§ã€ã¹ãæã€FIFOãããã¡ãŒãå«ããããã®ã¹ããŒã ã ãã³ã³ããŒãã³ããšãã¯ãããžãŒãNo. 2.2013ã
5. Borisenko N.V.ããã°ã©ããã«ããžãã¯ãããã®éã®æ±çšã¬ãžã¹ã¿ãŒäžã«æ§ç¯ããããçµ±åã€ã³ã¿ãŒãã§ãŒã¹ãåããåæFIFOãããã¡ãŒã®æ§æã ãã³ã³ããŒãã³ããšãã¯ãããžãŒãNo. 8.2016ã