280 likes | 372 Views
Chapter6.3 〜6. 5. 6311626 加藤 駿. 6.3 STREAM AND SIGNAL INTERFACES. Stream and Signal Protocols. ストリームとシグナルのハードウェアインタフェースを 生成する際に ImpulseC コンパイラが明確に定義した プロトコルを使用する. Stream and Signal Protocols. Stream and Signal Protocols. ストリームは 1 本のデータラインとコントロールラインに よって構成されている.
E N D
Chapter6.3〜6.5 6311626 加藤 駿
Stream and Signal Protocols • ストリームとシグナルのハードウェアインタフェースを 生成する際にImpulseCコンパイラが明確に定義した プロトコルを使用する
Stream and Signal Protocols • ストリームは1本のデータラインとコントロールラインに よって構成されている
Stream and Signal Protocols • rdy信号により制御されているストリームのライン --ストリームが演算中にストリームが読み込みまたは書き込みの準備が出来ていることの指示の生成をrdyラインの上で行う • ハンドシェイク制御を許可するための外部から制御されるen信号のストリームのライン
Stream and Signal Protocols • co-signal-close関数で用いられるeos信号のライン --ストリームの終端を示す • アプリケーションのプログラマによって幅が定義された データライン
Stream and Signal Protocols rdyがactive システムに接続されたプロセスがデータラインよりストリームからの読み書きを行う en信号を出力
Stream and Signal Protocols • シグナルもストリームと同様に動作する • シグナルはeosラインを持たない • メッセージを送信するための異なった通信規則に従う コントロールラインをもつ • シグナルの書き込み処理はブロックされない
Stream and Signal Protocols • HW-HW間のインタフェースではproducerとconsumerの プロセスはストリームとシグナルのインタフェースを共有する
Streams used in Write Mode • 書き込みモードの場合にストリームインタフェィスは 以下のポートと対応する信号を伴って生成される (co_stream_openO_WRONLYの使用)
Streams used in Read Mode • 読み込みモードの場合にストリームインタフェィスは 以下のポートと対応する信号を伴って生成される (co_stream_open O_RDONLYの使用)
Signals used in Post(Write) Mode • 送信モードの場合にシグナルインタフェィス は以下のポートと対応する信号を伴って生成される (co_signal_postの使用)
Signals used in Wait(Read) Mode • 待ちモードの場合にシグナルインタフェィス は以下のポートと対応する信号を伴って生成される (co_signal_waitの使用)
生成されたストリームインタフェースとその伝達プロトコルを生成されたストリームインタフェースとその伝達プロトコルを 理解するのに最も簡単な方法はテストベンチの シミュレーション内でそれらを調査することである
このループは以下のプロトコルに従う 1.the_enコントロールラインをlow(‘0’の値)にセットする. 2.the_rdyラインがhighになるのを待つ. 3.ストリームの入力のthe_dataラインに値を入力する. 4. the_enコントロールラインをhigh(‘1’の値)にセットする. これはストリームに値を読ませるように指示する. 次のクロックエッジの際にストリームは値を読む. 5.クロック境界後にthe_enにlowをセットする(1に戻る)
ソフトウェアシミュレーション中では完璧に動作してもソフトウェアシミュレーション中では完璧に動作しても 実機のハードウェアでは失敗することがある • 生成されたHDLをデバッグするのは気落ちしてしまうかもしれないが,思ったほど悪くない
制御フローやサイクルごとの同期について解析するのにハードウェアジェネレータが各プロセスを別々のステートマシンに分けると便利制御フローやサイクルごとの同期について解析するのにハードウェアジェネレータが各プロセスを別々のステートマシンに分けると便利 • 以下のように低レベルHDLファイルで宣言される
b0で定義されたブロック • b1,b2で定義されたブロック • FIRフィルターの初期化処理の部分を表す • FIRフィルターのキールーチンとなる実際にデータストリーム を処理する内部コードのループをあらわす
マシンを動作させるクロックロジックを含む b0s0 は以下のようになる
生成されたHDL内のコメントはどのブロックや演算のサイクルに関連付けられたかを特定するのに役立つ生成されたHDL内のコメントはどのブロックや演算のサイクルに関連付けられたかを特定するのに役立つ • 例えば下の同時積和演算はブロック1,ステージ1に • 関連付けられている
Cからコンパイルを行なった後のこの段階でのCからコンパイルを行なった後のこの段階での ハードウェアシミュレーションの目標は サイクルごとの正確な動作を確認することである • この種のデバッグは特定の問題のエリアに集中するものであるので設計の1クロックのみをみていくものである • Impulse Cのデザインフローは3つのサイクル精度のハードウェアシミュレーションを動作させる手法がある
1.生成されたHDLがHDLのテストベンチと組み合わせて1.生成されたHDLがHDLのテストベンチと組み合わせて 従来のHDLシミュレーターで用いることができる 2.生成されたHDLは正確なサイクルのCのモデルから 変換されたもので,このモデルはuntimedなCとリンク しているためCのデバッガからふるまいを観測できる. • 利点はハードウェアシミュレーションが提供する多くの デバッギングと視覚的な機能が利用できること • 利点はC言語でテストベンチが使用可能であるということ
3.合成された設計はFPGAのネットリストレベルでシミュレーションすることができる.3.合成された設計はFPGAのネットリストレベルでシミュレーションすることができる. タイミングの調整により最高の動作速度を出すのに 効果的な方法である. が • シミュレーションに時間がかかり,合成された設計を • 元のCのコードにフィードバックすることが大変難しい.