VHDL时钟分频器在板上工作但在仿真中失败

The*_*ral 0 clock vhdl simulate intel-fpga divider

我目前正在尝试使用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;
Run Code Online (Sandbox Code Playgroud)

这在主板上运行良好,但在模拟器(ModelSim)中,"divideclk"输出无法初始化为任何东西.我想知道是否有人知道为什么?

Mic*_*ëlG 5

在模拟开始时,"tempdividedclk"被初始化为"unitialized".当出现时钟边沿时,tempdividedclk将被分配给(不是(U)和1)或(U和0),这是"未定义".要正确模拟,必须通过复位或仅在模拟级别初始化tempdividedclk.它可以在硅上找到,因为"U"状态将是1或0.

  • 在此过程中,对于tempdivideclk的变量声明,可以提供默认值"0"或"1".`变量tempdividedclk:std_logic:='0';` (3认同)