인프런 커뮤니티 질문&답변

이원일님의 프로필 이미지
이원일

작성한 질문수

설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)

11장 카운터 실습 코드에 대한 질문입니다.

작성

·

251

1

 

화면 캡처 2023-06-27 222449.png

코드를 보면 카운터에는 else if 쪽에 cnt < 100으로 100 이전까지 1씩 증가하도록 하였고 always 카운터에서는 cnt_always == 100-1로 설계하셨는데 왜 cnt_always = 99으로 적지않고 저렇게 적으셨나요? 간혹 저렇게 9를 10-1로 적거나 연산을 넣어서 표기하는 경우를 본것같은데 왜 그렇게 하는지 궁금합니다.

답변 1

0

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

안녕하세요 :)

  1. cnt < 100 은 100이 넘어가면, 더 이상 counting 을 하지 않습니다.

  2. cnt_always == 100-1; // 99 와 같죠.
    이거는 0으로 초기화를 통해서 다시 counting 을 합니다. clock 이 인가되는 한 계속 counting 을 하죠.
    그래서 "always" 라는 surfix 를 붙였어요.

결론 : 교육용 코드이고요.

counting value 를 초기화를 해야 계속 counting 이 된다를 보여드리고 싶었어요. (그 이상 그 이하의 이유는 없습니다.)

======================================

image합성기 입장에서는 (100-1) 이나, 99 이나 같은 결과로 인지합니다. (상수이기 때문에)

간혹 멍청한? 합성기는 100-1 을 minus 로직을 넣는 경우가 있을 수 있습니다,, 만 (제가 현업에서 사용하는 상용 tool 에서는 본적은 없습니다.)

100 - 1 이면, 100개를 counting 하려고 하는구나 라는 설계자가 (제 입장) 인지하기 쉽게 하기 위함입니다. (이 또한 그 이상 그 이하의 이유는 없습니다.)

결론 : 코드를 인지하시기 편한 방법을 쓰시면 됩니다.

즐공하세요 :)

이원일님의 프로필 이미지
이원일

작성한 질문수

질문하기