2

過去数日間、一連のデータの処理をトリガーして結果を送信できるようにするプロジェクト用の VHDL を少し記述する方法を探していました。私が使用しているデバイスは、FPGA が送信する完全な最初のセットを同時に提供しながら、2 番目のデータ セットの収集を開始することができます。これをパイプライン経由で利用したいのですが、成功していません。

コレクションをトリガーするには、特定のシグナル セットを特定の順序で送信する必要があります。数クロック サイクルと FPGA からの信号の後、完全なセットがデバイスの複数のポートに出力されます。私の目標は、プロセス全体が単純な入力パルスによって開始され、最初のパルスからの割り当てがまだ発生している間に 2 番目のパルスが発生する可能性があることです。最初の信号セットを送信し、その後信号を送信してデータを出力すると同時に、2番目のコレクションの最初の信号セットを送信する方法はありますか?

ここに私が意味するものの写真があります。

タイミング図(クリック可能)

ご覧のとおり、統合 1 からのデータは、2 番目と 3 番目の統合段階で送信されます。load_pulse は、データを に出力するように要求する信号でありDATA、積分 2 の 2 番目の信号セットが送信されている間に発生する可能性があります。

簡単なプロセスで可能かどうかを確認するために作成したテスト VHDL を次に示します。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity test is
    port(
        x : in STD_LOGIC;
        y : out STD_LOGIC := '0';
        z : out STD_LOGIC := '0'
    );
end test;

architecture test_behav of test is
begin

    process(x) is
    begin

        y <= '0', '1' after 10 NS, '0' after 20 ns;
        z <= '0', '1' after 30 NS, '0' after 40 ns;

    end process;
end test_behav;

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity testbench is
end testbench;

architecture testbench_behav of testbench is

    component test is
        port(
            x : in STD_LOGIC;
            y : out STD_LOGIC;
            z : out STD_LOGIC
        );
    end component test;

    signal x : STD_LOGIC := '0';
    signal y : STD_LOGIC := '0';
    signal z : STD_LOGIC := '0';

begin

    testo: component test
        port map(
            x => x,
            y => y,
            z => z
        );

    x <= '1' after 25 ns;

end testbench_behav;

この例では、シグナル割り当てがまだ実行されている間にプロセスをトリガーします。ここでの結果は、元の信号の割り当てが中断され、次のように新しい信号の割り当てが完了したx <= '1' after 25 nsことです。

コードのシミュレーション(クリック可能)

あなたが私に説明したり、私に説明を指摘したりできる、これを達成する方法はありますか、それとも別のアプローチを取る必要がありますか?

ありがとう

4

0 に答える 0