vhdl 其中一个process求纠错 关于按下按键检测上升沿并且计数
p2:process(btn4,btn5,btn6,clr)beginifbtn4='1'andbtn4'last_value='0'theniftmpb4=4xorcl...
p2:process(btn4,btn5,btn6,clr)
begin
if btn4='1'and btn4'last_value= '0' then
if tmpb4=4 xor clr='1'then
tmpb4<=0;
else
tmpb4<=tmpb4+1;
end if;
elsif btn4='0' then
if btn6'event and btn6='1' then
if tmphl=4 xor clr='1' then
tmphl<=0;
else
tmphl<=tmphl+1;
end if;
elsif btn5'event and btn5='1' then
if tmphl=0 xor clr='1' then
tmphl<=4;
else
tmphl<=tmphl-1;
end if;
end if;
end if;
end process;
clr是清空的意思 展开
begin
if btn4='1'and btn4'last_value= '0' then
if tmpb4=4 xor clr='1'then
tmpb4<=0;
else
tmpb4<=tmpb4+1;
end if;
elsif btn4='0' then
if btn6'event and btn6='1' then
if tmphl=4 xor clr='1' then
tmphl<=0;
else
tmphl<=tmphl+1;
end if;
elsif btn5'event and btn5='1' then
if tmphl=0 xor clr='1' then
tmphl<=4;
else
tmphl<=tmphl-1;
end if;
end if;
end if;
end process;
clr是清空的意思 展开
1个回答
展开全部
你在进程体中检测了多个信号的边沿,这是VHDL所不允许的。
应当引入一个时钟信号输入端clock,只让clock和clr信号作为进程的敏感信号。然后在每一个clock的上升沿有效时,分别检测btn4~btn6:用btn4='1'and btn4'last_value= '0'来判断btn4的上升边沿,用btn5='1'and btn5'last_value= '0'来判断btn4的上升边沿,用btn6='1'and btn6'last_value= '0'来判断btn4的上升边沿。
应当引入一个时钟信号输入端clock,只让clock和clr信号作为进程的敏感信号。然后在每一个clock的上升沿有效时,分别检测btn4~btn6:用btn4='1'and btn4'last_value= '0'来判断btn4的上升边沿,用btn5='1'and btn5'last_value= '0'来判断btn4的上升边沿,用btn6='1'and btn6'last_value= '0'来判断btn4的上升边沿。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询