Vhdl 当控制信号改变时,计数器不增加
我用VHDL实现了一个简单的计数器0到255的设计。它在FPGA板上按预期工作,但当我在Modelsim中模拟它时,当我强制更改Vhdl 当控制信号改变时,计数器不增加,vhdl,modelsim,Vhdl,Modelsim,我用VHDL实现了一个简单的计数器0到255的设计。它在FPGA板上按预期工作,但当我在Modelsim中模拟它时,当我强制更改键(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 DOWN
键(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;
IEEE库;
使用ieee.std_logic_1164.all;
使用ieee.numeric_std.all;
实体过程测试是
港口(
时钟50:在标准逻辑中;
键:标准逻辑向量(3到0);
LEDR:OUT标准逻辑向量(9到0)
);
结束过程试验;
PROC_测试的主要架构是
信号计数器:0到255的整数范围;
开始
LEDR(7向下至0)过程灵敏度列表中缺少信号键(0)
。当您为FPGA合成代码时,这通常由警告指示
进程仅执行/恢复:
- 一旦模拟启动后
- 每当灵敏度列表中的一个信号改变时
因此,您的过程仅在CLOCK_50
发生更改时执行,而不是在模拟器中强制更改键(0)
时执行。因此,您必须将代码更改为:
PROCESS (KEY(0))
进行此更改后,模拟输出如下所示,10 MHz时钟应用于键(0)
:
进一步说明:
正如您在我的模拟屏幕截图中看到的,信号LEDR(9)
和LEDR(8)
具有未定义的('U')值。这是因为您忘记在体系结构中分配它们。这也应该通过合成来说明。合成器通常只将“0”(逻辑低)分配给输出,这可以通过以下方式明确实现:
LEDR(9 downto 8) <= "00";
LEDR(从9到8)我美化了你的代码并改进了你的文本,希望一切正常。只需在浏览器中重新加载页面或单击问题上方的通知即可。谢谢,我看不到您所做的更改。