인프런 커뮤니티 질문&답변
질문있습니다. D플립플롭과 reset실습에서 8:00분경 async_rst부분에서 always@구문에 posedge clk이 들어간 이유가 특별히 있을까요??
작성
·
241
답변 1
0
안녕하세요 :)
D F/F 은 clock 동기화로 저장되는 로직입니다.
그럼으로, D F/F 을 만들기 위해서 clock 을 사용하였습니다.
async (비동기) reset 을 만들기 위해서 always 문 안에 reset 을 별도 기술하였구요.
혹시나 제 답변에서 이해가 안되는 부분이 있다면 자세히 남겨주시면 답변드릴께요.
즐공하세요 :)
안녕하세요 :)
Q1. 만약 이벤트 발생리스트에 clk이 없이 async_reset_X만 있는 경우에는
case 2~4 에서 async_reset_X 엣지로 발생되는 이벤트로 인해 r_ff_async_reset 값이 변경이 되도록 D 부분에 값을 넣어준 상태에서 다음 async_reset_x 신호가 들어와서 이벤트가 발생이 되어야만 실제 출력 Q부분에 반영이 되는 문제가 발생하니깐
이벤트 리스트에 clk도 포함했다라고 이해하면 될까요?
A1. clock 이 없다는 전제라면 이는 F/F이 아닙니다. Clock 과 무관한게 동작하므로 combinational logic 입니다. :)
Q2. async_reset_X를 clk로 보고 한클력(async_reset_x가 두번째 발생할때 D(Q)가 변경되어 출력되므로) 딜레이 되어서 latch처럼 동작을 하게 되나요?
A2. 질문자님께서 원하시는 상태가 clock 이 없이 저장을 위하는 거라면, latch 가 됩니다.
이게 꼭 중요한 개념은 아닐거같은데 궁금하긴 하네요..
Clock 이 없는 디지털 로직은 없다를 알계되시면 좋을 것 같아요. 나쁜 질문은 없죠 ㅎ
즐공입니다. :)
추가로 더 적어드리면, 현재 질문하신 코드에서 clock 을 뺀 로직은 현업에서 본적이 없습니다.
latch라고 답변을 드리긴 했으나 디지털 로직 설계시 latch 의 사용을 금하고 있어요.
즉, 궁금하신 부분에 대한 답변일 뿐이구요.
적어도 제 강의에서는 질문주신 코드에 clock을 빼서 사용하시는 것은 비 추천 드립니다. :)





만약 이벤트 발생리스트에 clk이 없이 async_reset_X만 있는 경우에는
case 2~4 에서 async_reset_X 엣지로 발생되는 이벤트로 인해 r_ff_async_reset 값이 변경이 되도록 D 부분에 값을 넣어준 상태에서 다음 async_reset_x 신호가 들어와서 이벤트가 발생이 되어야만 실제 출력 Q부분에 반영이 되는 문제가 발생하니깐
이벤트 리스트에 clk도 포함했다라고 이해하면 될까요?
이벤트 리스트에 clk이 추가가 안되었다면
async_reset_X를 clk로 보고 한클력(async_reset_x가 두번째 발생할때 D(Q)가 변경되어 출력되므로) 딜레이 되어서 latch처럼 동작을 하게 되나요?
이게 꼭 중요한 개념은 아닐거같은데 궁금하긴 하네요..