我目前正在尝试使用VHDL来设计一个交通灯控制器,我正在Altera EPM240T100C5上编程,它有一个自定义扩展板来显示交通灯。由于板上最慢的时钟设置仍然比我想的要快,所以我需要写一个分频器,我也是这样做的:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
entity clockdivider is
port
(
clkin : in std_logic;
dividedclk : out std_logic
);
end clockdivider;
architecture divider of clockdivider is
signal J : std_logic;
signal K : std_logic;
begin
J <= '1';
K <= '1';
process(clkin)
variable tempdividedclk : std_logic;
begin
if (rising_edge(clkin)) then
tempdividedclk := (NOT(tempdividedclk) AND J) OR (tempdividedclk AND (NOT(K)));
end if;
dividedclk <= '0';
dividedclk <= tempdividedclk;
end process;
END divider;这在板上运行很好,但是在模拟器(ModelSim)中,“分离的the”输出从来没有初始化到任何东西。我想知道有没有人知道为什么?
发布于 2014-04-10 19:29:56
在模拟开始时,将"tempdividedclk“初始化为"unitialized”。当时钟边缘出现时,tempdividedclk将被分配给(不是(U )和1)或(U和0),这是“未定义的”。若要正确模拟,必须通过重置或仅在模拟级别初始化tempdividedclk。它可以在硅上找到,因为"U“状态要么是1,要么是0。
https://stackoverflow.com/questions/22997110
复制相似问题