2017-05-12 4 views
0

screenshot for the simulationステートマシン

withouthカウンタをインクリメントにおけるクロック・サイクルの不要な遅延私は0からs_saxis_tlastがハイになった時に開始する簡単なカウンタ(v_bincount)を実行しようとしています。 s_saxis_tuser_inが高いときにカウントを開始します。 v_bincountは信号ではなく共有変数であっても、0から始まりますが、カウンタの値はもう1クロックサイクル間0のままです。

p_count: process(clk) 
begin 
    if (rising_edge (clk)) then 
    if (s_saxis_tvalid_in = '1')and (s_saxis_tready_out = '1') then 
     if(s_saxis_tuser_in ='1') then 
      v_bincount1 := 0; 
      v_idcount1 := 0; 
     else 
      if (s_saxis_tlast_in = '0') then 
       v_bincount1 := v_bincount1 + 1; 

      else 
       v_bincount1 := 0; 
       v_idcount1 := v_idcount1 + 1; 
      end if; 
     end if; 
    else 
     v_bincount1 := 0; 
     v_idcount1 := 0; 
    end if; 

    end if; 
end process p_count; 
+0

品質を向上させるために、画像の種類を.pngまたは.gifとして保存することをお勧めします。 –

+0

完全なコードを入力してください。 – JHBonarius

答えて

1

シミュレーションはあなたが想定するものです。 tuser_inの下端では、クロックエッジではまだ '1'です。

ではなく、ここに共有変数を使用することをお勧めします。

p_count_r : process(clk) 
begin     
    if (rising_edge (clk)) then 
    s_bin_count_r <= s_bin_count; 
    s_id_count_r <= s_id_count; 
    end if; 
end process p_count_r; 

コンビナトリアルプロセスの右側にs_bin_count_rを使用します。その代わり、ご要望に応じて値をインクリメントして、登録などに値を代入するためのプロセスをクロック駆動信号との組合せカウンターを持っています。

+0

リプレイをありがとう。私は提供されたソリューションを試してみます。 – user3094049

関連する問題