代码之家  ›  专栏  ›  技术社区  ›  Seung Jin Lee

连接到多个驱动程序或同步描述错误的问题

  •  1
  • Seung Jin Lee  · 技术社区  · 7 年前

    我只想让我的观点(SQ_X2,SQ_Y2)在2D平面上移动(在TFT-LCD中)。 以下是我代码的一部分。

    如果我按下PSW(按钮开关),点在x或y方向移动5。有一个问题,当我在一个进程语句中合并以下代码时,会出现一个错误“那个糟糕的同步描述”。 但为了避免这个问题,我声明了4个进程语句,还有一个错误是信号SQ\u X2或SQ\u Y2连接了多个驱动器。 我现在进退两难。。请帮帮我,我要买一个披萨

    PROCESS (PSW(3))
    BEGIN
        IF (rising_edge(PSW(3))) then
            SQ_Y2 <= SQ_Y2 - std_logic_vector(to_unsigned(5,10));
        END IF;
    END PROCESS;
    
    PROCESS (PSW(2))
    BEGIN
        IF (rising_edge(PSW(2))) then
            SQ_Y2 <= SQ_Y2 + std_logic_vector(to_unsigned(5,10));
        END IF;
    END PROCESS;
    
    PROCESS (PSW(1))
    BEGIN
        IF (rising_edge(PSW(1))) then
            SQ_X2 <= SQ_X2 - std_logic_vector(to_unsigned(5,10));
        END IF;
    END PROCESS;
    
    PROCESS (PSW(0))
    BEGIN
        IF (rising_edge(PSW(0))) then
            SQ_X2 <= SQ_X2 + std_logic_vector(to_unsigned(5,10));
        END IF;
    END PROCESS;
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   DLnd    7 年前

    您不能在多个进程中分配一个信号(更准确地说,有一些方法可以做到这一点,但您不想在这里这样做)。此外,一个进程只能包含一个 if rising_edge() then 声明,因为不可能合成对多个上升沿作出反应的硬件。。。

    您需要做的是学习同步设计,在系统中添加时钟,并在一个过程中完成所有工作。你可能想看看 this tutorial