Chapter6.3〜6.5

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で定義されたブロック
FIRフィルターの初期化処理の部分を表す

b1,b2で定義されたブロック
FIRフィルターのキールーチンとなる実際にデータストリーム
を処理する内部コードのループをあらわす

マシンを動作させるクロックロジックを含む b0s0
は以下のようになる

生成されたHDL内のコメントはどのブロックや演算のサ
イクルに関連付けられたかを特定するのに役立つ

例えば下の同時積和演算はブロック1,ステージ1に
関連付けられている

Cからコンパイルを行なった後のこの段階での
ハードウェアシミュレーションの目標は
サイクルごとの正確な動作を確認することである

この種のデバッグは特定の問題のエリアに集中するも
のであるので設計の1クロックのみをみていくものである

Impulse Cのデザインフローは3つのサイクル精度のハー
ドウェアシミュレーションを動作させる手法がある
1.生成されたHDLがHDLのテストベンチと組み合わせて
従来のHDLシミュレーターで用いることができる
利点はハードウェアシミュレーションが提供する多くの
デバッギングと視覚的な機能が利用できること
2.生成されたHDLは正確なサイクルのCのモデルから
変換されたもので,このモデルはuntimedなCとリンク
しているためCのデバッガからふるまいを観測できる.
利点はC言語でテストベンチが使用可能であるということ
3.合成された設計はFPGAのネットリストレベルでシミュレー
ションすることができる.
タイミングの調整により最高の動作速度を出すのに
効果的な方法である.
が
シミュレーションに時間がかかり,合成された設計を
元のCのコードにフィードバックすることが大変難しい.