2

vhdl コードにクロックがありますが、使用しません。プロセスは、1 つのコンポーネントが終了して出力を取得するときのハンドシェイクに依存するだけです。この出力は、FSM の感度リストにあり、FSM への入力になります。次のコンポーネントとその出力はもちろん、FSM の感度リストにも含まれています (コンポーネントがいつ計算を終了するかを知るため)... などです。この方法は間違っていますか?シミュレーションでも配線後のシミュレーションでも機能しますが、次のような警告が表示されます。および警告: CLK に対して I の違反を Low に保持します。

この警告は重要ではありませんか、それともクロックに依存しないため、私のコードは私の fpga を損傷しますか?

4

3 に答える 3

4

表示される警告はタイミング違反です。これは、デザインが内部プリミティブに必要なタイミング制限に従っていないことをツールが検出したためです。

たとえば、ルックアップ テーブル (FPGA 内の主要なビルディング ブロックの 1 つ) への入力は、出力が安定するまで特定の時間保持する必要があります。これは、タイミング全体がコンポーネント自体のレイテンシと遅延のみに依存し、完全に非同期で切り替える場合、保証するのが非常に困難です。

実際のデザイン (大部分はそのサイズと複雑さ) によっては、FPGA 内に配置すると、デバッグが非常に困難なエラーが多数発生することになると推測できます。時計を使えば、はるかに楽な時間を過ごせるでしょう。これにより、信号がいつどこに到着するかを明確に把握でき、内部ツールを使用してタイミングを確認できます。また、他のデバイスとのインターフェースがはるかに簡単になり、システムがノイズの多い入力の影響を受けにくくなります。

というわけで、時計を使いましょう。(おそらく) そうしなくても FPGA にダメージを与えることはありませんが、クロックがあれば多くのトラブルを回避できます。

于 2013-03-21T07:44:56.787 に答える
3

必ず時計を使用してください。また、デザイン全体で 1 つのクロックのみです。これが最も簡単な方法です。ツールはこの設計スタイルを非常によくサポートしています。特に入力が遅く、同じクロックに同期している場合は、1 つのタイミング制約で済むことがよくあります。

この方法で設計する経験を積んだら、これ以外に移動できますが、クロックドメインと非同期信号をまたぐことの落とし穴を学びながら、より多くの分析、タイミング制約、潜在的に反復を構築する準備ができています。

于 2013-03-21T16:34:51.923 に答える
3

コードはクロックに依存しないため、おそらく FPGA に損傷を与えることはありません。ただし、合成では常に登録済み (クロック付き) ロジックを使用する必要があります。クロックを使用しないと、タイミング/遅延/配線/ファンアウト/... のためにデザインを制御できなくなります。これにより、合成時に FSM が「不思議な」動作をするようになります (たとえシミュレーションで機能したとしても)。Google の助けを借りて、FSM の優れた実装スタイルの例をたくさん見つけることができます ( MooreまたはMealy FSM を検索してください) 。

于 2013-03-21T07:46:41.710 に答える