我知道如何在 VHDL 中使用变量以及我可以用它做什么,但我不知道它在硬件中到底是什么?
硬件中的信号和变量有什么区别,变量的值存储在哪里?它是电线还是取决于我的代码?
根据“QuantumRipple”评论,我扩展了这个问题:
我用ISE(Xilinx综合工具)合成了以下简单的代码,并将变量(var)合成为D触发器??
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY test IS
port(
clk : in std_logic;
input : in std_logic;
output : out std_logic
);
END test;
ARCHITECTURE Behavioral OF test IS
BEGIN
PROCESS(clk)
VARIABLE var : std_logic;
BEGIN
IF clk'event AND clk = '1' THEN
var := input;
END IF;
output <= var;
END PROCESS;
END Behavioral;
Run Code Online (Sandbox Code Playgroud)
感谢您的评论和回答...
我想计算数组元素的总和。阵列的元素在每个时钟上升沿(按顺序)分配。我不想在下一个时钟上升沿得到元素的总和,所以总和的设计必须是组合的。我可以在没有任何错误的情况下获得正确的仿真结果,但是我的代码没有在 ISE(Xilinx 合成工具)中合成。我正在研究 Spartan3。
我的代码:
always @* begin
sum = 0;
for (i=0; i<K; i=i+1)
sum = sum + shiftReg[i];
end
Run Code Online (Sandbox Code Playgroud)
错误:
Xst:902 - 始终阻止敏感列表中出现意外的 shiftReg 事件。
我搜索了解决方案。一种方法是添加shiftReg敏感列表中的所有元素,但在我的项目中,元素的数量是K(K是一个参数)。