VHDL - 注册按钮
VHDL - Register for Push Button
我正在尝试在 VHDL 中创建一个简单的按钮,该按钮在输入开关或 pb 使用时钟和进程从 0 变为 1 再变为 0 后打开。但是,我的代码似乎给了我未定义的输出。这是我目前所拥有的。
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
Entity captureInput is port
(
CLK : in std_logic := '0';
RESET_n : in std_logic := '0';
buttonState : in std_logic := '0';
buttonOut : out std_logic := '0'
);
end Entity;
ARCHITECTURE one of captureInput is
signal lastButtonState: std_logic := '0';
signal btnState : std_logic := '0';
BEGIN
process (CLK, RESET_n) is
begin
if (RESET_n = '0') then
lastButtonState <= '0';
elsif (rising_edge(CLK)) then
if (buttonState ='0' and lastButtonState = '1') then
btnState <= '1';
end if;
lastButtonState <= buttonState;
end if;
end process;
buttonOut <= btnState
end;
尝试在寄存器的重置分支中初始化 btnState,并在某些情况下使用 else 语句将 btnState
设置回 0。我敢打赌,您未定义的输出来自这样一个事实,即您没有在 if 条件之外的任何其他地方定义 btnState
。最好不要依赖声明的初始值:综合工具会忽略它,一些模拟器也会忽略它。另外,请记住,if
的时钟主体将为每个在其中分配一个值的信号生成一个寄存器,并且该信号将在进程中保留最后分配给它们的值。
您还缺少顶部的 Library ieee;
语句和 buttonOut <= btnState
后的分号。
读取按钮确实需要去抖动器。
请看:
VHDLWhiz generate statement
或
我正在尝试在 VHDL 中创建一个简单的按钮,该按钮在输入开关或 pb 使用时钟和进程从 0 变为 1 再变为 0 后打开。但是,我的代码似乎给了我未定义的输出。这是我目前所拥有的。
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
Entity captureInput is port
(
CLK : in std_logic := '0';
RESET_n : in std_logic := '0';
buttonState : in std_logic := '0';
buttonOut : out std_logic := '0'
);
end Entity;
ARCHITECTURE one of captureInput is
signal lastButtonState: std_logic := '0';
signal btnState : std_logic := '0';
BEGIN
process (CLK, RESET_n) is
begin
if (RESET_n = '0') then
lastButtonState <= '0';
elsif (rising_edge(CLK)) then
if (buttonState ='0' and lastButtonState = '1') then
btnState <= '1';
end if;
lastButtonState <= buttonState;
end if;
end process;
buttonOut <= btnState
end;
尝试在寄存器的重置分支中初始化 btnState,并在某些情况下使用 else 语句将 btnState
设置回 0。我敢打赌,您未定义的输出来自这样一个事实,即您没有在 if 条件之外的任何其他地方定义 btnState
。最好不要依赖声明的初始值:综合工具会忽略它,一些模拟器也会忽略它。另外,请记住,if
的时钟主体将为每个在其中分配一个值的信号生成一个寄存器,并且该信号将在进程中保留最后分配给它们的值。
您还缺少顶部的 Library ieee;
语句和 buttonOut <= btnState
后的分号。
读取按钮确实需要去抖动器。
请看: VHDLWhiz generate statement
或