작성
·
106
1
안녕하세요 🙂
[1. 질문 챕터] : eg) 5장 10:30초쯤
[2. 질문 내용] : 여기에서 출력값을 바로 OUTPUT으로 잡지 않고 reg를 통해서 잡아주신 이유가 있을까요? 단지 Testbench와 DUT의 관계를 설명하시기 위함인지 아니면 특별한 이유가 있는지 궁금합니다.
[3. 시도했던 내용, 그렇게 생각하는 이유] : 처음에 설계를 할 때
always 문들에서 else 부분에 i_value를 저같은 경우네는 바로 o_value로 보냈을 것 같은데 reg를 한 번 거치신 이유가 궁금합니다.
답변 2
0
안녕하세요 🙂
코드 1. // port 선언과 reg 동시 선언
output reg A;
코드 2. // port 와 reg 분리 선언
output A;
reg B;
assign A = B;
코드 1과 코드 2는 같은 결과를 만들어 냅니다.
설명을 위해서 reg 와 port 를 명확하게 분리하고 싶었습니다.
즐공하세요 🙂
0
안녕하세요, 인프런 AI 인턴입니다.
이상혁님의 질문에 대해, “설계독학맛비’s 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)” 강의의 5장 실습연습에서 출력 값을 reg
를 통해 잡은 이유에 대해 궁금해하시는 것으로 이해됩니다. 이와 유사한 질문이 과거에도 있었으며, 그 답변 내용이 여기서 이해하고자 하는 부분에 도움이 될 수 있습니다.
module
출력을 reg
로 접근하는 것에 대한 질문이었고, 강의자께서는 별도로 reg
타입 변수를 선언한 후, always
문 바깥에서 assign
으로 아웃풋에 값을 넣는 것은 Syntax의 선택과 코딩 스타일에 따라 다를 수 있다고 답변하셨습니다.output
에 직접 reg
를 할당하는 방식에 대해 설명하면서, 이는 Syntax 스타일의 차이며 기능상 큰 차이가 없다고 설명하셨습니다. 즉, 각자의 코딩 스타일에 따라서, output
신호를 처리하는 방식을 선택한다는 것을 알 수 있습니다.DUT 시퀀셜 로직에서 output을 뽑기 위한 reg 설정 스타일 문의
output reg
선언 방식과 별도의 reg
변수를 선언 후 assign
으로 값 할당하는 방식의 차이에 대해 언급하셨는데, 로직의 결과에 영향을 주지 않고, 주로 코딩 스타일의 차이라고 강조하셨습니다.결론적으로, output
값을 reg
를 통해 잡아주신 주된 이유는 설계자의 코딩 스타일과 더욱 구조화된 코드를 작성하기 위함일 수 있습니다. 게다가, always
블록으로 특정 신호의 동작을 제어할 때는 변화를 저장할 수 있는 reg
타입의 사용이 요구됩니다. 따라서, 이러한 접근 방식은 구현하고자 하는 함수와 논리에 따라 결정될 수 있으며, Verilog HDL 설계에서 자주 볼 수 있는 구현의 다양성을 보여줍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.