当前位置: 代码迷 >> 嵌入开发 >> VHDL有关问题:一个进程中不可同时对时钟上下沿敏感,那这写不算同时吗
  详细解决方案

VHDL有关问题:一个进程中不可同时对时钟上下沿敏感,那这写不算同时吗

热度:527   发布时间:2016-04-25 08:42:27.0
VHDL问题:一个进程中不可同时对时钟上下沿敏感,那这写不算同时吗?
PROCESS(Clock)
...
  IF rising_edge(Clock) THEN
    ...
  END IF;
  IF falling_edge(Clock) THEN
    ...
  END IF;
END PROCESS;

VHDL

------解决方案--------------------
PROCESS(Clock)
...
  IF rising_edge(Clock) THEN
    ...
  END IF;
  IF falling_edge(Clock) THEN
    ...
  END IF;
END PROCESS;
相当于
PROCESS(Clock)
...
  IF rising_edge(Clock) THEN
    ...
  END IF;
END PROCESS;

PROCESS(Clock)
...
  IF falling_edge(Clock) THEN
    ...
  END IF;
END PROCESS;
------解决方案--------------------
楼上正解。两个if语句虽然在同一进程,但毫无关系,相当于两个进程。
同时对上升沿和下降沿敏感是指:if (rising_edge(Clock) and  falling_edge(Clock)) then
个人觉得PROCESS(Clock)
...
  IF rising_edge(Clock) THEN
  ELSE
      IF falling_edge(Clock) THEN
      ...
      END IF;
  END IF;
END PROCESS;
应该也是可行的,未亲测。
------解决方案--------------------
VHDL不像FIRMWARE编程语言,编译通过就可以运行。它是硬件数字电路的实现。写代码要考虑硬件是一个什么电路。用什么触发器实现,还要考虑信号的SET UP TIME, HOLD TIME等等等等。。