해결된 질문
작성
·
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_in
은 in
의 인버터를 통해 생성됩니다. 즉, not_in
은 in
의 반전된 값입니다. 그리고 out
은 not_in
의 반전된 값이므로, 최종적으로 out
은 in
의 값을 그대로 출력하게 됩니다. 이 경우, not_in
은 인버터 역할을 하고 있으며, out
은 in
의 값을 출력하는 구조입니다.
2. 두 번째 경우:
```verilog
wire not_in;
assign out = not_in;
assign not_in = in;
```
이 경우에는 not_in
이 in
의 값을 그대로 전달합니다. 따라서 out
은 not_in
의 값을 그대로 출력하게 되며, 이는 in
의 값과 동일합니다. 이 경우에는 인버터가 없고, 단순히 버퍼 역할을 하는 것입니다.
결론적으로, 첫 번째 경우는 인버터가 포함된 구조이고, 두 번째 경우는 버퍼 역할을 하는 구조입니다. 따라서 첫 번째 경우의 not_in
은 인버터로 볼 수 있지만, 두 번째 경우의 not_in
은 버퍼로 볼 수 있습니다.
그런데 실제로 인버터 2개를 취하면 이론적으로는 버퍼 역할을 한다고 생각이 들겠지만, 합성하는 툴에 따라서 그냥 원 신호 그대로 합성을 할 수도 있습니다.
왜냐하면 논리적으로 결과값이 같이 때문에 가장 gate 수가 적은 쪽으로 합성하려고 할 것이기 때문입니다. 이와같이 기능 단위에서만 합성하게 되면 그렇지만
나중에 타이밍적인 이슈 때문에 의도적으로 버퍼를 넣는 것이라면
PI라는 직무에서 합성을 할 때 버퍼를 추가적으로 넣는 작업을 해서 타이밍 이슈를 해결하게 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. 김동준님.
강의 내용 중에서 버퍼와 관련된 부분에 대해 질문해 주셨네요.
버퍼에 대해서 설명드리자면, 주어진 Verilog 코드에서의 인버터 배치는 회로의 실제 동작에 따라 크게 달라질 수 있습니다.
인버터 역할:
wire not_in; assign out = ~not_in; assign not_in = ~in;
의 경우, in
신호가 out
으로 거의 그대로 전달됩니다. 인버터가 두 번 연결되어 원 신호가 복원된다는 점에서 두 번째 인버터는 특정한 기능을 해준다기보다, 결과적으로 버퍼 효과처럼 작용할 수 있습니다.버퍼 역할:
wire not_in; assign out = not_in; assign not_in = in;
에서는 인버터가 없는 상황에서 신호가 전달됩니다. 이 경우, 전기적 특성을 고려한다면 인버터가 추가될 가능성이 있지만, 설계에 따라 추가로 고려해야 할 사항입니다.이와 관련된 내용으로는 디지털 회로의 인버터와 버퍼 구분과 관련된 기존 질문들이 있습니다. 실제 적용에서는 전자회로 설계 시 사용자의 목적에 따라 결정되어야 할 부분이므로, 실험과 설계 아이디어에 따라 적절히 조정될 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.