FIR II IP を生成する場合、クロック周波数を高く、サンプルレートを低く設定する事が出来ます。
その様な場合、FIR II IP は行う積和演算を TDM (時分割多重)化し、乗算器・加算器の計算リソースについてリソース・シェアリングを行って使用リソースを最適化(最小化)します。
上記の様な場合の注意点として、valid 信号(有効データ)は設定したサンプルレートを超えない様にしてください。
FIR II IP のユーザーガイド(v24.1, 2024.09.17) 4.8.3. FIR II IP Signals, Table 18. では、入力信号 ast_sink_valid の Description の下記の文でこの点に触れています。
"You must provide valid data at the specified sample rate. ”
最もシンプルな 1ch の FIR フィルタを構成する場合で、
クロックを 100MHz, サンプルレートを 10Msps の様にレートの比率を 10:1 にした場合の問題のない波形例は下記になります。
(正しい波形の例)
局所的なレートが 10Msps を超えない様に、2つの valid 信号(1 cycle の正のパルス)の間の valid = Low の期間は必ず 9 cycle 以上取らなければなりません。
違反すると、内部 state が異常となり、計算結果(出力)が異常となるリスクがあります。この異常は、一旦発生するとリセットをかけるまで継続し、また Error 等の信号では報告されません。
ユーザーは、エラー回避の為に、入力 valid 信号のレートを正確に違反しない様制御する必要があります。
この注意点はリセット解除と同時に適用されますので、前段の回路の設計の事情等で、リセット解除直後に一時的に設定より高いレートで valid 信号を与える事でも、違反となります。データ入力(値)の一時的なイレギュラーは出力にも一時的なイレギュラーとして現れ、時間経過とともに解消するという見方ができますが、valid 信号はデータ入力が有効値であることを示す制御信号としてとらえる必要があり、イレギュラーが許容されません。
下記のような波形("BAD" の場合)では、3か所の問題点があります。いずれか1つだけでも、それぞれ局所的には設定レートを超えている為、誤動作継続発生のリスクがあります
(問題のある波形の例、および正しい波形との比較)
(1)リセット直後に一時的に集中して valid データを入力するケース
(2)問題のない波形のパルスの間に追加パルスがある様なケース
(3)1パルスだけパルス位置がずれた様なケース
なお、ユーザーガイドの入力信号 ast_sink_valid の Description には下記の一文がありますので、設定よりサンプルレ―トを下げたりデータを一時停止することは、異常にはならずに許容されます。
"When ast_sink_valid is not asserted, the FIR processing stops until you re-assert the ast_sink_valid signal."
どうしても一時的にレートが上がる事に対応したい場合、IP 設定のサンプルレートをその一時的な高いレートに設定し、通常動作時は設定より低いサンプルレートで動作させる様にしてください。ただし、レート変更に対応して FIR フィルタの特性がどのように作用するかをシステム設計者が確認する必要があります。
この方法は、サンプルレートを高めることで、クロック周波数に近づく事になり、TDM のリソース節約効果が小さくなります。入力サンプルレートの上限と消費リソースのトレードオフとして検討して下さい。
また、複数 Channel の場合は、valid 信号の見かけ上、 valid = High が連続で現れることがあっても問題ない場合があります。個々の Channel に分解して、そのサンプルレートが設定した値を超えていなければ問題ありません。(いずれかの Channel が1つでも違反するとリスクが生じます。各 Channel の有効データ位置をそれぞれ確認してください。)