私はvhdlモジュールに取り組んでいます。
6クロックサイクルの入力値を合計してから、しきい値に達したかどうかに応じて出力をハイまたはローに設定したいと思います。
私が抱えている問題は、最後のクロックサイクルで、合計値に最終的な入力値が追加されていないことです。クロックの立ち上がりエッジで出力をハイにする必要があります。
コードは次のとおりです。
architecture Behavioral of inputCounter is
signal totalBitWidth : integer := 6;
-- This signal is specified by the user to determine the majority value
-- for the output.
signal majorityValue : integer := 4;
signal Sum : integer := 0;
process(clk, input)
variable clkCount : integer := 0;
begin
if input = '1' then
Sum <= Sum + 1;
else
Sum <= Sum + 0;
end if;
clkCount := clkCount + 1;
if clkCount >= (totalBitWidth) then
-- Determine if the majoritySum variable has met the
-- threshold for a 1 value
if Sum >= majorityValue then
output <= '1';
else
output <= '0';
end if;
if Sum = totalBitWidth Or Sum = 0 then
countError <= '0';
else
countError <= '1';
end if;
-- Reset the clock counter, sum value and majority vector
clkCount := 0;
Sum <= 0;
-- Set the bit counter high to alert other midules that a new bit
-- has been received
bitReady <= '1';
end process;
end behavioral;
さらに情報が必要な場合は、私に知らせてください。助けてくれてありがとう。
更新:私は合計整数をいじっていましたが、アーキテクチャの全体的な信号ではなく、プロセスでそれを変数に変更しました。これはうまくいったようです。しかし、ISimとISEプロジェクトナビゲーターを使用しているため、プロセスから変数を追跡できません。