0

VHDL を使用して、事前設定された時間枠内に来る可能性のある信号の一致チェックを FPGA に実装しようとしていますが、すでに何度も行われている非常に基本的なものを発明しようとしているのではないかと心配しています...

望ましいモジュール機能:

入力の 1 つに信号があったことを思い出し、事前設定された期間の後、これらの記憶された信号を同期として扱い、回路にさらに送信します。

例: 2 つの入力ポート (A、B) でリッスンし、少なくとも 1 つの 10 ns の長さの信号が入力で検出された場合、それを保存し、500 ns の期間で保存された信号をさらに送信してリセットします。

これまでのところ、私はこれを思いつきました:

入力の保存:

memory_A <= A when ( memory_A = '0' );
memory_B <= B when ( memory_B = '0' );

次に、それらをさらに送信してリセットする必要があります。500 ns 間隔で 10 ns の長いパルスを生成するモジュールがあるので、その出力を使用してプロセスをクロックします。

process(pulse)
  begin
     if(pulse'event and pulse='1') then
                                          -- generate output signals
        modified_output_A <= memory_A
        modified_output_B <= memory_B
                                          -- reset the storage
        memory_A <= '0'
        memory_B <= '0'
     end if;

  end process;

これをモジュールにラップします

入力: A、B およびパルス
出力: modified_A、modified_B。

今、私はロジックを適用できる同期A、B信号を取得しています(一致をチェックするなど)。

私の質問は次のとおりです。

  • これはうまくいきますか?

  • これは良い方法ですか?私が見ないかもしれない欠点やキャッチはありますか?

  • これが適切な方法ではない場合、どのように行うべきですか?

事前にすべてのフィードバック/ヘルプをお寄せいただきありがとうございます。

4

1 に答える 1

1

memory_Amemory_Bに複数のドライバーがあるようです。プロセスでのみ割り当てる必要があります。

また、クロック以外の信号でsignal ' eventを使用することが適切な設計手法であるかどうかもわかりません。合成ツールに依存する可能性があります。クロックプロセスを使用し、シフトレジスタによって立ち上がりエッジを取得します。それとも、レジスタ出力をクロックしないでください。

また、リセットとクロック信号がありません;)

于 2012-07-03T11:33:12.707 に答える