0

私は VHDL の初心者で、ターミナルにログインする必要があります。たとえば、パスワード 7010 を修正しました。automat の機能のみを実装する必要があります。キーを押した回数を保持し、毎回インクリメントされる1つの信号を定義したいと思います。

しかし、あるプロセスでシグナルを初期化すると、他のプロセスでその値をインクリメントできないため、シグナルを初期化してインクリメントする方法がわかりません。その信号を初期化しないと、コードが機能せず、その理由がわかりません。たとえば、その信号を「0000」にしないと、doSomething は実行されません。しかし、私はdoSomethingでその価値を高める必要があります.私の悪い英語のためにSry。

if(mySignal = "0000")
    doSomething
4

1 に答える 1

1

あなたがやろうとしていることは、クラスの割り当てのように聞こえます。

問題を分解します。

必要なもののブロック図を描く

合成可能なVHDLでは、信号が高Zにならない限り、複数のドライバーは許可されていません。
しかし、シグナルのコピーを取り、それを別のプロセスで使用することを止めるものは何もありません。

カウンターや大きさのある信号には符号なしタイプを使用すると、作業がはるかに楽になります

doSomething:process(clk,mySignal
begin
    if rising_Edge(clk) then
        if mySignal = "0000" then
            count<=count+1;
        end if;
    end if;
end process;
于 2012-05-03T22:29:00.107 に答える