chapter6.3 〜6. 5
DESCRIPTION
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 本のデータラインとコントロールラインに よって構成されている. - PowerPoint PPT PresentationTRANSCRIPT
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 本のデータラインとコントロールラインに
よって構成されている
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_open O_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 の使用 )
6.4 USING HDL SIMULATION TO UNDERSTANDING STREAM PROTOCOLS
生成されたストリームインタフェースとその伝達プロトコルを
理解するのに最も簡単な方法はテストベンチの シミュレーション内でそれらを調査することである
このループは以下のプロトコルに従う1.the_en コントロールラインを low(‘0’ の値 ) にセットする .
2.the_rdy ラインが high になるのを待つ .
3. ストリームの入力の the_data ラインに値を入力する .
4. the_en コントロールラインを high(‘1’ の値 ) にセットする .
これはストリームに値を読ませるように指示する . 次のクロックエッジの際にストリームは値を読む .
5. クロック境界後に the_en に low をセットする (1 に戻る )
6.5 DEBAUGGING THE GENERATED HARDWARE
ソフトウェアシミュレーション中では完璧に動作しても
実機のハードウェアでは失敗することがある
生成された HDL をデバッグするのは気落ちしてしまうかもしれないが , 思ったほど悪くない
制御フローやサイクルごとの同期について解析するのにハードウェアジェネレータが各プロセスを別々のステートマシンに分けると便利
以下のように低レベル HDL ファイルで宣言される
b0 で定義されたブロック
b1,b2 で定義されたブロック
FIR フィルターの初期化処理の部分を表す
FIR フィルターのキールーチンとなる実際にデータストリーム を処理する内部コードのループをあらわす
マシンを動作させるクロックロジックを含む b0s0 は以下のようになる
生成された HDL 内のコメントはどのブロックや演算のサイクルに関連付けられたかを特定するのに役立つ
例えば下の同時積和演算はブロック 1, ステージ 1 に 関連付けられている
C からコンパイルを行なった後のこの段階での ハードウェアシミュレーションの目標は サイクルごとの正確な動作を確認することである
この種のデバッグは特定の問題のエリアに集中するものであるので設計の 1 クロックのみをみていくものである
Impulse C のデザインフローは 3 つのサイクル精度のハードウェアシミュレーションを動作させる手法がある
1. 生成された HDL が HDL のテストベンチと組み合わせて
従来の HDL シミュレーターで用いることができる
2. 生成された HDL は正確なサイクルの C のモデルから 変換されたもので , このモデルは untimed な C とリン
ク しているため C のデバッガからふるまいを観測できる .
利点は C 言語でテストベンチが使用可能であるということ
利点はハードウェアシミュレーションが提供する多くの デバッギングと視覚的な機能が利用できること
3. 合成された設計は FPGA のネットリストレベルでシミュレーションすることができる .
タイミングの調整により最高の動作速度を出すのに 効果的な方法である . が シミュレーションに時間がかかり , 合成された設計を 元の C のコードにフィードバックすることが大変難しい .