해결된 질문
작성
·
99
·
수정됨
0
현재 SPI MASTER 부분을 공부하고 있습니다. 제가 인터넷에 찾아보며 공부한 바로는 SPI 통신은 동기적 통신을 사용한다고 하는데, 해당 코드 전체적으로 always @(posedge clock or negedge reset)을 사용하는 것을 보면 이는 비동기 방식을 사용하여서 이에 대해 궁금해서 여쭤보고 싶습니다!
답변 1
0
안녕하세요.
동기, 비동기의 기준은 데이터가 Clock에 맞게 동작하느냐, clock 없이 Data만 동작하는냐 입니다.
예를 들어, RS-232 (UART)는 Clock 없이 RX, TX 신호만 전달되기 때문에 비동기 방식이라고 합니다.
이에 반해서, I2C나 SPI 통신은 Clock에 동기되어 데이터가 전송되기 때문에 동기 방식입니다.
강의에 구현된 SPI 통신은 Clock에 맞추어 데이터를 전송하는 방식으로 구현되었기 때문에 동기 방식입니다.
질문하신 always @(posedge clock or negedge reset)은 reset 신호가 동기, 비동기 중에 어떻게 동작하는지에 대한 내용입니다. always @(posedge clock or negedge reset)은 reset 신호가 clock에 무관하게 동작하기 때문에 비동기로 동작합니다.
reset을 동기로 구동하려면, 아래와 같이 구현하면 됩니다.
always @(posedge clock) begin
if(~reset)
xilinx의 문서를 보면 reset을 동기신호로 구현하는 것을 추천한다고 되어 있습니다만, 저의 경험상 reset은 동기, 비동기가 크게 차이가 나지는 않습니다. 저는 오래전부터 습관적으로 reset을 비동기로 사용하였습니다. xilinx 문서대로 reset을 동기신호로 사용하는 것도 좋은 방법이라 생각합니다.
감사합니다~
답변 감사합니다