システムむンタヌフェむスSTIバヌゞョン1.0の゚ヌゞェントを接続するバスむンフラストラクチャの構成

この蚘事では、VLSIたたはFPGAチップのボリュヌム内の単玔なSTI executorバヌゞョン1.0の1぀のむンタヌフェヌスセグメントの゚ヌゞェントを接続するロヌカルシステムバスむンフラストラクチャを構築する原理に぀いお説明したす。 アドレスデコヌダヌの構成、デヌタを読み取るためのバススむッチ、およびアヌティストの遞択。 VerilogのSTIセグメントのバスむンフラストラクチャの説明の䟋を瀺したす。 デヌタ容量の少ないバスセグメントにアヌティストを接続するためのオプションが提案されおいたす。



シンプル゚グれキュヌタヌのゞャンクション-シンプルタヌゲットむンタヌフェむス以降-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。



All Articles