VHDL 시계 질문
Oct 14 2020
VHDL에서 이러한 명령문의 차이점은 무엇입니까?
- if (clk'event 및 clk = '1') 다음
- 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 에서 실제 정의를 볼 수 있습니다.