인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

policapple님의 프로필 이미지

작성한 질문수

디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기

모든 디지털 시스템은 순차적으로 구성됩니다! Sequential Logic과 응용 Verilog 문법 익히기

buffer에 관하여 질문드립니다.

해결된 질문

작성

·

107

0

안녕하세요 삼코치님. 강의 중 궁금한 점이 있어 질문드립니다.

 

해당 강의에서 주어졌듯이

wire not_in;

 

assign out=~not_in;

assign not_in=~in;

 

의 경우 중간에 인버터가 들어가게 되는데 이를 버퍼라고 할 수 있는건가요?

 

wire not_in;

 

assign out= not_in;

assign not_in=in;

 

으로 했을 때 그림대로 라면 낫 인버터가 아니라 그냥 인버터가 들어간다고 생각되어서 질문드립니다!

답변 2

1

회로설계 멘토 삼코치님의 프로필 이미지

1. 첫 번째 경우:

```verilog

wire not_in;

assign out = ~not_in;

assign not_in = ~in;

```

여기서 not_inin의 인버터를 통해 생성됩니다. 즉, not_inin의 반전된 값입니다. 그리고 outnot_in의 반전된 값이므로, 최종적으로 outin의 값을 그대로 출력하게 됩니다. 이 경우, not_in은 인버터 역할을 하고 있으며, outin의 값을 출력하는 구조입니다.

2. 두 번째 경우:

```verilog

wire not_in;

assign out = not_in;

assign not_in = in;

```

이 경우에는 not_inin의 값을 그대로 전달합니다. 따라서 outnot_in의 값을 그대로 출력하게 되며, 이는 in의 값과 동일합니다. 이 경우에는 인버터가 없고, 단순히 버퍼 역할을 하는 것입니다.

결론적으로, 첫 번째 경우는 인버터가 포함된 구조이고, 두 번째 경우는 버퍼 역할을 하는 구조입니다. 따라서 첫 번째 경우의 not_in은 인버터로 볼 수 있지만, 두 번째 경우의 not_in은 버퍼로 볼 수 있습니다.

그런데 실제로 인버터 2개를 취하면 이론적으로는 버퍼 역할을 한다고 생각이 들겠지만, 합성하는 툴에 따라서 그냥 원 신호 그대로 합성을 할 수도 있습니다.

왜냐하면 논리적으로 결과값이 같이 때문에 가장 gate 수가 적은 쪽으로 합성하려고 할 것이기 때문입니다. 이와같이 기능 단위에서만 합성하게 되면 그렇지만
나중에 타이밍적인 이슈 때문에 의도적으로 버퍼를 넣는 것이라면
PI라는 직무에서 합성을 할 때 버퍼를 추가적으로 넣는 작업을 해서 타이밍 이슈를 해결하게 됩니다.

 

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 김동준님.

강의 내용 중에서 버퍼와 관련된 부분에 대해 질문해 주셨네요.

버퍼에 대해서 설명드리자면, 주어진 Verilog 코드에서의 인버터 배치는 회로의 실제 동작에 따라 크게 달라질 수 있습니다.

인버터와 버퍼 구별

  1. 인버터 역할:

    • 첫 번째 코드 스니펫에서는 두 개의 인버터가 직렬로 연결되어 있습니다. 이는 신호를 두 번 반전시켜 원래의 신호로 되돌립니다.
    • 즉, wire not_in; assign out = ~not_in; assign not_in = ~in;의 경우, in 신호가 out으로 거의 그대로 전달됩니다. 인버터가 두 번 연결되어 원 신호가 복원된다는 점에서 두 번째 인버터는 특정한 기능을 해준다기보다, 결과적으로 버퍼 효과처럼 작용할 수 있습니다.
  2. 버퍼 역할:

    • 일반적으로 버퍼는 신호를 전달하면서 전기적 특성을 강화하거나, 노이즈를 줄이기 위한 목적으로 사용됩니다.
    • 두 번째 코드 스니펫, wire not_in; assign out = not_in; assign not_in = in;에서는 인버터가 없는 상황에서 신호가 전달됩니다. 이 경우, 전기적 특성을 고려한다면 인버터가 추가될 가능성이 있지만, 설계에 따라 추가로 고려해야 할 사항입니다.

이와 관련된 내용으로는 디지털 회로의 인버터와 버퍼 구분과 관련된 기존 질문들이 있습니다. 실제 적용에서는 전자회로 설계 시 사용자의 목적에 따라 결정되어야 할 부분이므로, 실험과 설계 아이디어에 따라 적절히 조정될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.