我正在开发一个 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 Project navigator,我无法从流程中跟踪变量。