我对 VHDL 和 XILINX ISE 非常陌生。我将 13.2 版用于 Xilinx ISE。
我想用以下输入设计一个非常简单的计数器:
- 方向
- 数数
计数输入将分配给一个按钮,我希望计数器在按下按钮时根据方向输入向上或向下计数。在此之前,我已经编写了一个示例 VHDL。它有一个时钟输入,它根据时钟输入进行计数。现在我希望它在我按下按钮时计数,而不是同步计数。
这是我的 VHDL 代码(请告诉我我的代码是否存在逻辑缺陷或任何其他缺陷):
entity counter is
Port ( COUNT_EN : in STD_LOGIC;
DIRECTION : in STD_LOGIC;
COUNT_OUT : out STD_LOGIC_VECTOR (3 downto 0));
end counter;
architecture Behavioral of counter is
signal count_int : std_logic_vector(3 downto 0) := "0000";
begin
process
begin
if COUNT_EN='1' then
if DIRECTION='1' then
count_int <= count_int + 1;
else
count_int <= count_int - 1;
end if;
end if;
end process;
COUNT_OUT <= count_int;
end Behavioral;
我使用 Spartan xc3s500e 并相应地放置了输入。下面是我的 .ucf 文件:
#Created by Constraints Editor (xc3s500e-fg320-5) - 2013/03/18
NET "COUNT_EN" LOC = K17;
NET "COUNT_OUT[0]" LOC = F12;
NET "COUNT_OUT[1]" LOC = E12;
NET "COUNT_OUT[2]" LOC = E11;
NET "COUNT_OUT[3]" LOC = F11;
NET "DIRECTION" LOC = L13;
#Created by Constraints Editor (xc3s500e-fg320-5) - 2013/03/18
NET "COUNT_EN" CLOCK_DEDICATED_ROUTE = FALSE;
我需要更改最后一行,因为我收到了错误:
This will not allow the use of the fast path between the IO and the Clock...
消除此错误后,我对设备进行了编程。但是输出(LED)表现得很疯狂。它们有时静止几秒钟,有时只是快速闪烁。我无法弄清楚我的错误在哪里。我将不胜感激,非常感谢一些初学者教程(我找到的链接将我定向到 xilinx 的文档,对于初学者来说它们似乎相当复杂)。