私は通常C#/ Javaプログラマであり、ハードウェア記述の周りに頭を抱えています。VHDL:時間ステップ/状態と並行性を理解するのに役立つ
私は値をロードするレジスタを持っています。その後、コンパレータはレジスタの出力を値 '16'と比較します。値がそれ以下であればState_0に行き、それより大きければState_3に行きます。
私は、私のstatetableプロセスと同時に実行する 'controlsignals'プロセスを持っています。私の制御信号の場合、私はそう、私はState_2にいるとき、高へのレジスタを有効に設定する必要があることを知っている:
controlsignals: PROCESS (Tstep_Q)
BEGIN
.... initialisation ...
CASE Tstep_Q IS
.... other states ....
WHEN T2 => --define signals in time step T2
enRegister = '1';
私の状態テーブルの場合:
statetable: PROCESS (Tstep_Q, regOutput)
BEGIN
CASE Tstep_Q IS
.... other states ....
WHEN T2 =>
IF ((regOutput - 16) > 0)
THEN Tstep_D <= T3;
ELSE Tstep_D <= T0;
END IF;
近く私のコードの最後に、私が持っている:
fsmflipflops: PROCESS (Clock)
BEGIN
IF Clock'EVENT AND Clock = '1' THEN
Tstep_Q <= Tstep_D;
END IF;
END PROCESS;
reg: regn PORT MAP (somevalue, enReg, Clock, regOutput);
私の状態テーブル以来
と私の制御信号が同時ブロックであり、私の混乱がある...私が最初のように、私の次の状態を決定するためにレジスタを有効にして、コンパレータを実行します私は私が欲しい実行する回路(regatautputに敏感なので)?それとも、コンパレータを持っているT2の後に新しい状態を作る方が安全でしょうか?前もって感謝します。コンパレータの
宣言や指定されたクロックレート、またはあなたのコードの対象となる対象を表示していません。これらはすべて、クロックの立ち上がりエッジからTstep_Qまでのどれくらいのサイクルで、Regoutputの遅延が16を引いて結果の符号をテストし、Tstep_Dの設定値をTstep_Dセットアップに選択するかに左右されます。クロックレート、ターゲット実装プラットフォーム、幅を知らなければ、ターゲットプラットフォームに対する試作合成で意見を得ることができます。遅延パスのどの部分がクロック期間全体を別の状態にしていますか? – user1155120