작성
·
146
1
안녕하세요 🙂
강의영상을 보고 latch를 쓰지않는 이유를 알고 싶어 latch와 glitch에 대해 찾아보았지만 원하는 만큼의 내용을 찾지 못하여 글을 쓰게 되었습니다.
=>clock gating시 조합회로, Flip-Flop을 사용하면 glitch nosie가 발생할수 있어 latch를 사용하여 Clock을 만들지만 일반적으로 latch를 사용할 경우 edge 상태가 아닌 level상태에서 데이터가 전달되어 많은 시간이 소요되고 glitch 발생시 timing이 어긋나기 때문에 사용하지 않으며 입력, 출력 등에 대해 기술하지 않는 조건이 있을 경우 이전 값을 유지하기 위해 latch가 만들어지므로 이점도 유의 하여야한다.
위 내용이 검색하여 알게 된 내용입니다. 그 외에도 디지털 회로 설계시 latch를 쓰지않는 이유가 있을까요?
답변 2
1
안녕하세요 🙂
다음 글을 참고해주세요. 디지털 회로설계에서 RTL 의 의미를 생각해보면 될 것 같아요.
Clock edge 에 동기화 해서 data 가 저장된다. 가 핵심 입니다.
Latch는 level-sensitive한 장치로, 클록 신호의 특정 레벨(높거나 낮음)에 따라 동작합니다. 이 때문에 클록 신호가 안정적이지 않을 때(예: 클록의 변화 구간에서) 데이터가 의도치 않게 변할 수 있으며, 이는 글리치(glitch)를 유발할 수 있습니다. 이러한 글리치가 발생하면 데이터의 안정성에 영향을 미치며, 타이밍에 민감한 회로에서는 큰 문제가 될 수 있습니다.
Latch는 클록의 엣지(edge)가 아닌 레벨(level)에서 동작하기 때문에, 데이터가 클록의 레벨이 유지되는 동안 언제든지 전달될 수 있습니다. 이는 클록이 높은 상태 또는 낮은 상태에서 얼마나 오랜 시간을 머무르는지에 따라 데이터 전달 타이밍이 달라질 수 있다는 것을 의미합니다. 이로 인해 타이밍 분석이 매우 복잡해지고, 원하는 타이밍 요구 사항을 만족시키기 어려울 수 있습니다. 반면, 플립플롭(Flip-Flop)은 클록의 엣지에서 동작하여 타이밍 예측이 훨씬 간단합니다.
Latch를 사용하는 회로는 타이밍 분석이 복잡할 뿐만 아니라, 메타스테이블리티(metastability) 문제에 더 취약합니다. 이 문제는 데이터가 불확실한 상태에 머무르는 것을 의미하며, 회로의 불안정성을 야기할 수 있습니다. 설계 과정에서 이러한 문제를 해결하기 위해 더 많은 검증 작업이 필요하고, 이는 설계 복잡성을 증가시킵니다.
질문에서 언급하신 것처럼 클록 게이팅(clock gating)과 같은 기술에서 조합 논리 회로와 플립플롭을 사용할 때 글리치 노이즈가 발생할 수 있습니다. 이를 피하기 위해 latch를 사용하는 경우도 있지만, latch 자체가 글리치에 취약하기 때문에 특별한 설계 기법이 요구됩니다. 이 역시 설계 복잡성을 높이는 원인이 됩니다.
Latch는 level-sensitive 특성으로 인해 제어 신호가 복잡해질 수 있습니다. 클록 신호 외에도 데이터 전송을 제어하는 추가 신호가 필요할 수 있으며, 이러한 신호가 제대로 설계되지 않으면 데이터 안정성이 보장되지 않을 수 있습니다.
Latch는 데이터가 바뀔 때마다 클록 신호의 변화에 민감하게 반응할 수 있기 때문에 불필요한 전력 소모가 발생할 수 있습니다. 특히 저전력 설계가 중요한 경우에는 이러한 전력 소모가 문제가 될 수 있습니다.
Latch를 사용하지 않는 이유는 주로 타이밍 클로저 문제, 글리치 및 메타스테이블리티에 대한 취약성, 설계의 복잡성 증가, 전력 소모 등이 있습니다. 이러한 이유로 현대의 디지털 회로 설계에서는 플립플롭(Flip-Flop)이 더 선호되며, 타이밍 제어가 필요할 때는 일반적으로 플립플롭을 사용하여 안정적인 클록 엣지 기반의 설계를 채택하는 경우가 많습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
tjrrjs88님께서는 HDL 강의를 듣다가 latch 사용을 피해야 하는 구체적인 이유와 더불어 디지털 회로 설계 시 latch 사용과 관련된 문제점에 대해 자세히 알고 싶어 하시는 것 같습니다.
Latch는 실제로 디지털 회로 설계에서 사용을 피해야 할 부품 중 하나입니다. 주요 이유 중 하나는 다음과 같습니다:
관련된 자세한 설명을 원하신다면, 아래의 링크에서 질문자님과 비슷한 문제를 가진 다른 학습자의 질문에 대한 설계독학맛비님의 답변을 찾아보시는 것을 추천드립니다.
이러한 답변들은 latch 생성을 방지하는 방법과, Verilog HDL에서의 의도치 않은 latch 생성 사례를 다루고 있으므로, 질문하신 내용과 관련된 좋은 정보를 제공할 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변 감사합니다~~