【发布时间】:2021-04-30 20:44:40
【问题描述】:
我正在尝试做一个 8 种状态的 3 位运行 LED。当输入 x 为 1 时,LED 将向前移动,当 x 为 0 时,LED 将向后移动。具有以下条件。
我已经尝试了几个小时,但我不知道它有什么问题。我现在正在学习 vhdl,所以请放轻松。它说是语法错误,但我不知道在哪里
library IEEE;
use IEEE.std_logic_1164.all;
entity Quiz10 is
port(
x : in std_logic;
output : out std_logic_vector(6 downto 0)
);
end Quiz10;
architecture arch1 of Quiz10 is
signal digit : integer range 0 to 9 := 0;
begin
process (x,digit)
begin
if x = '1' then
digit <=digit+1;
elsif x = '0' then
digit <=digit-1;
elsif (digit>=9)
digit<=0;
end if;
end process;
output <="1111110" when digit = 0 else
"0110000" when digit = 1 else
"1101101" when digit = 2 else
"1111001" when digit = 3 else
"0110011" when digit = 4 else
"1011011" when digit = 5 else
"1011111" when digit = 6 else
"1110000" when digit = 7 else
"1111111" when digit = 8 else
"1111011" when digit = 9 else
"0000000";
-- Your VHDL code defining the model goes here
end arch1;
【问题讨论】:
-
您没有描述错误。如果您尝试直接在演示板上实现此功能,则 x 应用作时钟并在边缘进行评估。在综合之后,增量反转数字的二进制表示的至少一个元素,提供反转和(逻辑元素)延迟,门控振荡器。提供minimal reproducible example。
-
它说错误是语法错误,它正在处理函数中
-
您的
elseif丢失了then -
实际的错误消息,它应该有一个行号,并且可能在该行上有一个字符位置。在问题中。
标签: if-statement signals vhdl