我只是想让我的观点(SQ_X2,SQ_Y2)在2D平面上移动(在TFT-LCD中)。 以下是我的代码的一部分。
如果我按下PSW(按钮开关),并且点在x或y中移动5。并且有问题,当我在一个流程语句中合并下面的代码时,会出现错误"那个错误的同步描述"。 但为了避免这个问题,我声明了4个Process语句,还有另一个错误,即Signal SQ_X2或SQ_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;
答案 0 :(得分:1)
您无法在多个进程中分配一个信号(更准确地说,您可以通过多种方式执行此操作,但您不希望在此处执行此操作)。此外,一个进程只能包含一个if rising_edge() then
语句,因为无法合成对多个上升沿做出反应的硬件......
您需要做的是了解同步设计,为系统添加时钟并在一个过程中完成所有操作。您可能需要查看this tutorial,尤其是顺序逻辑设计部分。