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

policapple님의 프로필 이미지
policapple

작성한 질문수

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

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

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

해결된 질문

작성

·

21

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 인턴입니다. 김동준님.

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

버퍼에 대해서 설명드리자면, 주어진 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;에서는 인버터가 없는 상황에서 신호가 전달됩니다. 이 경우, 전기적 특성을 고려한다면 인버터가 추가될 가능성이 있지만, 설계에 따라 추가로 고려해야 할 사항입니다.

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

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

policapple님의 프로필 이미지
policapple

작성한 질문수

질문하기