我在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;
答案 0 :(得分:1)
过程敏感度列表中缺少信号<?php
if(isset($_POST["option"])){
$option = $_POST["option"];
switch($option){
case 0:
date_default_timezone_set ("America/Chicago");
$time = time();
echo(date("Y;m;d;H;i;s", $time));
}
}
else{
echo "No option set!";
}
。当您综合FPGA的代码时,通常会通过警告来指示。
进程只执行/恢复:
因此,您的流程仅在KEY(0)
更改时执行,但在您在模拟器中强制更改CLOCK_50
时则不会执行。因此,您必须将代码更改为:
KEY(0)
进行此更改后,模拟输出如下,其中10 MHz时钟应用于PROCESS (KEY(0))
:
进一步评论:
正如您在我的模拟屏幕截图中看到的,信号KEY(0)
和LEDR(9)
具有未定义的(&#39; U&#39;)值。发生这种情况是因为您忘记在架构中分配它们。这也应该通过综合来表示。合成器通常只分配“0”和“0”。 (逻辑低)到输出,可以通过以下方式明确实现:
LEDR(8)
其他输入信号在我的模拟中有一个未定义的值,因为它们是未使用的输入,我没有应用任何波形。