如果没有vhdl中的同步错误,我该如何做这样的事情?

时间:2014-12-09 23:16:34

标签: vhdl

如果没有vhdl中的同步错误,我该如何做这样的事情?

process (shift_button)
  variable x : STD_LOGIC;
begin
  x := '0';
  if falling_edge(shift_button) then
    x := '1';
  end if;
  shift_button_let_go <= x;
end process; 

1 个答案:

答案 0 :(得分:0)

我首先会阅读Xilinx支持文章,了解您遇到的错误: http://www.xilinx.com/support/answers/14047.html

它基本上表明XST在制作同步设计元素时需要一定的模板(注意falling_edge()将使用VHDL&#39;事件属性)。我猜测XST并不像你在shift_button_let_go的上升边缘如何定义shift_button

您提到shift_button_let_go变低后,您希望shift_button在一个时钟周期内变为高电平。如果是这种情况,那么你会希望在这个过程中使用你的时钟。灵敏度列表而不是shift_button

process (clk)
begin
  if rising_edge(clk) then
    shift_button_d <= shift_button;
    if (shift_button_d = '1' and shift_button = '0') then -- Falling edge detect
      shift_button_let_go <= '1';
   else 
      shift_button_let_go <= '0';
  end if;
end process; 

注意如果shift_buttonclk不同步且在多个clk周期内保持稳定,则此逻辑可能会遇到元稳定性问题。