控制信号变化时计数器不递增
Counter is not incremented when controlling signal changes
我用 VHDL 实现了一个简单的计数器 0 到 255 设计。它在FPGA板上按预期工作,但是当我在Modelsim中模拟它时,当我强制key(0)
更改时计数器不添加。有什么想法吗?
library IEEE;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
ENTITY PROC_TEST IS
PORT(
CLOCK_50: IN STD_LOGIC;
KEY: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
LEDR: OUT STD_LOGIC_VECTOR(9 DOWNTO 0)
);
END PROC_TEST;
ARCHITECTURE MAIN OF PROC_TEST IS
SIGNAL COUNTER: INTEGER RANGE 0 TO 255;
BEGIN
LEDR(7 DOWNTO 0)<= STD_LOGIC_VECTOR (TO_UNSIGNED(COUNTER,8));
PROCESS (CLOCK_50)
BEGIN
IF (KEY(0)'EVENT AND KEY(0) = '0')THEN
COUNTER<=COUNTER + 1;
END IF;
END PROCESS;
END MAIN;
进程敏感度列表中缺少信号 KEY(0)
。当您为 FPGA 综合代码时,通常会出现警告。
只有一个进程executes/resumes:
- 模拟启动后,
- 每当敏感列表中的信号之一发生变化时。
因此,您的进程仅在 CLOCK_50
发生变化时执行,而不是在您在模拟器中强制对 KEY(0)
进行更改时执行。因此,您必须将代码更改为:
PROCESS (KEY(0))
进行此更改后,仿真输出如下,将 10 MHz 时钟应用于 KEY(0)
:
进一步说明:
如您在我的模拟屏幕截图中所见,信号 LEDR(9)
和 LEDR(8)
具有未定义的 ('U') 值。发生这种情况是因为您忘记在架构中分配它们。这也应该通过合成来表示。通常,合成器只是将“0”(逻辑低电平)分配给输出,这可以通过以下方式明确实现:
LEDR(9 downto 8) <= "00";
其他输入信号在我的模拟中具有未定义的值,因为这些是未使用的输入并且我没有对其应用任何波形。
我用 VHDL 实现了一个简单的计数器 0 到 255 设计。它在FPGA板上按预期工作,但是当我在Modelsim中模拟它时,当我强制key(0)
更改时计数器不添加。有什么想法吗?
library IEEE;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
ENTITY PROC_TEST IS
PORT(
CLOCK_50: IN STD_LOGIC;
KEY: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
LEDR: OUT STD_LOGIC_VECTOR(9 DOWNTO 0)
);
END PROC_TEST;
ARCHITECTURE MAIN OF PROC_TEST IS
SIGNAL COUNTER: INTEGER RANGE 0 TO 255;
BEGIN
LEDR(7 DOWNTO 0)<= STD_LOGIC_VECTOR (TO_UNSIGNED(COUNTER,8));
PROCESS (CLOCK_50)
BEGIN
IF (KEY(0)'EVENT AND KEY(0) = '0')THEN
COUNTER<=COUNTER + 1;
END IF;
END PROCESS;
END MAIN;
进程敏感度列表中缺少信号 KEY(0)
。当您为 FPGA 综合代码时,通常会出现警告。
只有一个进程executes/resumes:
- 模拟启动后,
- 每当敏感列表中的信号之一发生变化时。
因此,您的进程仅在 CLOCK_50
发生变化时执行,而不是在您在模拟器中强制对 KEY(0)
进行更改时执行。因此,您必须将代码更改为:
PROCESS (KEY(0))
进行此更改后,仿真输出如下,将 10 MHz 时钟应用于 KEY(0)
:
进一步说明:
如您在我的模拟屏幕截图中所见,信号 LEDR(9)
和 LEDR(8)
具有未定义的 ('U') 值。发生这种情况是因为您忘记在架构中分配它们。这也应该通过合成来表示。通常,合成器只是将“0”(逻辑低电平)分配给输出,这可以通过以下方式明确实现:
LEDR(9 downto 8) <= "00";
其他输入信号在我的模拟中具有未定义的值,因为这些是未使用的输入并且我没有对其应用任何波形。