係数のリロード
内部データ係数は、入力address、write data、write enable、read dataおよびread valid
信号のMemory-Mappedインタフェースからアクセスされます。Avalon
Memory-Mapped(Avalon-MM)インタフェースは、メモリ・マップド・システムのマ スターとスレーブ・コンポーネント上のリード/ライト・インタフェースとして機能 します。メモリ・マップド・システムのコンポーネントは、マイクロプロセッサ、
メモリ、UART、タイマ、およびマスター・インタフェースとスレーブ・インタ フェースを接続するシステム・インタコネクト・ファブリックが含まれています。
Avalon-MMインタフェースは、単純な、固定サイクルのリード/ライト転送をサポー
トするSRAMからバースト転送が可能なパイプライン・インタフェースの複雑なま で、コンポーネントのさまざまなことを説明します。 Readモードでは、メモリ・
マップドの係数は、指定されたアドレス範囲を読み出されます。Writeモードでは、
刑すが指定されたアドレス範囲で書き込まれます。Read/Writeモードでは、係数が指 定されるアドレスの範囲で読み出しまたは書き込みできます。このインタフェース には、別のバス・クロックを使用することができます。係数のリロードのオプショ ンが無効になっている時、プロセッサが指定されるアドレス範囲をアクセスできな いで、係数データが読み出しまたは書き込みしません。
係数のリロードがフィルタの実行時にいつでも開始されます。ただし、予期しない 結果を避けるために、希望するすべての出力データを得られた後にのみ、係数をリ ロードする必要があります。複数の係数バンクを使用している場合、使用されてい ない係数バンクをリロードすることができ、また、係数のリロードが完了すると、
新しい係数セットに切り替えることができます。新しいデータに係数をリロードす る前に、coeff_in_areset信号をトグルする必要があります。新係数のデータは、
係数リロードの処理が成功したかどうかを確認するために係数リロードの後に読み 出されます。coeff_in_weをデアサートすることにより係数のリロードが終了すると き、新係数をリロードされるフィルタにすぐに挿入されます。
対称または抗対称フィルタは、少ない純粋な係数を持ち、少ないレジスタを使用し て、そして係数をリロードするためにより少ない書き込むの必要があります。例え ば、37タップのシンメトリカル・フィルタのために、最初の 19アドレスにのみ書き 込みしなければなりません。フィルタのアドレス空間の一部ではないため、全37の アドレスに書き込むときに、最後の18のアドレスは無視されます。同様に、最後の 18アドレスから読み出す係数のデータも無視されます。
複数の係数バンクが使用されたとき、すべての係数のアドレスはバンク番号に応じ て連続したオーダで配置されます。
次の例では、4係数バンクによる37タップのシンメトリカル/アンチ・シンメトリ カル・フィルタを示します。
アドレス 0–18:バンク0
アドレス19–37:バンク1
アドレス38–56:バンク2
アドレス57–75:バンク3
次の例では、2係数バンクによる37タップの非シンメトリカル/アンチ・シンメト リカル・フィルタを示します。
アドレス0–36:バンク0
アドレス37–73:バンク1
4‒20 第 4 章 : 機能の説明 係数のリロード
係数ビット幅のパラメータが16 ビット以下の場合、ライト・データ幅は16 ビット に固定されます。係数ビット幅のパラメータが16 ビットより大きい場合、ライト・
データ幅は32ビットに固定されます。
図 4–30 に、Read/Writeモードで係数リロードのタイミング図を示します。このコン
フィギュレーションでは、9の係数があります。 9クロック・サイクルのライト・サ イクルは、図 4–30に示すようにすべての係数データ・セットをリロードするために 実行されます。 ライト・サイクルを完了するには、coeff_in_we信号をアサートし、
新しい係数データと共にアドレス(ベース・アドレスから最大アドレスまで)を提 供します。次、新しい係数データが係数のアドレスに対するメモリにロードします。
coeff_in_we信号をアサートするとき、新しい係数データは、書き込みサイクル中に
読み出されます。coeff_out_valid信号がHighの時、リード・データが coeff_out_data上に使用可能です。
図 4–31 に、Writeモードで係数リロードのコンフィギュレーションのタイミング図
を示します。このモードでは、1の係数データがリロードされます。新しい係数デー タ(123)は、シングル・アドレス(7)にロードされます。
図 4‒30. Read または Write モードで係数リロードのタイミング図
clk coeff_in_areset coeff_in_address[11:0]
coeff_in_data[15:0]
coeff_in_we[0]
coeff_out_data[15:0]
coeff_out_valid[0]
-1 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
-1
0 -26 45
-1 45 -50 7 -121 -32 49 -1 108 124 -1
-25 13 80 127 80 0 -26 0 -50 7 -1 -32 49 -1 108 124 45
図 4‒31. Write モードで係数リロードのタイミング図
clk coeff_in_areset coeff_in_address[11:0]
coeff_in_data[15:0]
coeff_in_we[0]
-1 7
0 123
-1 0
第 4 章 : 機能の説明 4‒21 係数のリロード
図 4–32に、Readモードで係数リロードのコンフィギュレーションのタイミング図を 示します。 coeff_in_address が3のとき、そのアドレスにある係数データを読み出 します。また、係数データ80は、coeff_out_valid信号がHighになっているとき、
coeff_out_data 上に使用可能です。
図 4–33に、複数の係数バンクと書き込み可能な係数によるフィルタのタイミング図 を示します。これは、対称で、13タップのフィルタです。フィルタは、バンク0で 実行されている間、バンク1(アドレス7-13)の係数データがリロードされます。
係数のリロードが完了すると、バンク1はフィルタのインパルス応答を生成するた めに使用され、バンク1からの新しい係数データはフィルタ出力で観察することが できます。
図 4‒32. Read モードで係数リロードのタイミング図
clk coeff_in_areset coeff_in_address[11:0]
coeff_out_data[15:0]
coeff_out_valid[0]
-1 3
0 0 80
-1
図 4‒33. 複数の係数バンクのタイミング図
clk xin_v[0]
bankin_0[0]
xin_0[7:0]
coeff_in_data[15:0]
coeff_in_address[11:0]
coeff_in_we[0]
xout_v[0]
xout_0[19:0]
51 -14 -48 33 112 125 -10 -71 119 40 -105 -125 -114 0 1 0
-58 18 106 -34 119 112 105 -1 7 8 9 10 11 12 13
342 1530 3636 5490 6400 8064 11 16 20 20 23 28 30 26 16 12 -14 12 -22 -51 -27 -26 -13 5198 6612 0 -58 18 106 119 112 105 112 -1
6
0
-1
-13 -82 -34
4‒22 第 4 章 : 機能の説明