VHDL 시계 질문

Oct 14 2020

VHDL에서 이러한 명령문의 차이점은 무엇입니까?

  1. if (clk'event 및 clk = '1') 다음
  2. rise_edge (clk)이면

동등합니까? 동일한 동작 (출력)을 생성합니까? 왜 하나가 다른 것에 비해 사용됩니까?

또한 하나는 다른 하나와 합성 할 수 있습니까? 합성 올바른 코딩에 어느 것이 더 낫습니까?

답변

3 DaveTweed Oct 14 2020 at 01:20

아니요, 정확히 동일하지는 않습니다. 첫 번째 변형

if (clk'event and clk='1') then

시계의 이전 상태가 실제로 '0'인 경우에만 올바르게 작동합니다. 이는 대부분의 경우 잘 작동하지만 이전 상태가 'U', 'W', 'X'또는 'Z'인 경우와 같은 비정상적인 경우는 포착하지 않습니다.

두 번째 변형은 rising_edge()1을 사용하는데 , 이는 이전 상태가 '0'또는 'L'이고 새 상태가 '1'또는 'H'인지 여부를 구체적으로 확인합니다.


1 Stack Overflow 에서 실제 정의를 볼 수 있습니다.