Tx 메모리 Free Size가 0로 읽히는 문제

안녕하세요, 담당자님:

W5300 사용자로 FPGA 기반으로 드라이버를 구성하였습니다. 현재 Socket 0를
사용하여 MACRAW 프로토콜로 통신하며 전송명령이 있을 때 마다(테스트는 1ms
주기로) 1024바이트를 원격지로 전송하고 있습니다.

문제는 전송이 잘 되다가 중간에 교착상태에 빠져 버립니다. 예를 들면 1000회
전송을 명령하면 200번 정도는 정상으로 전송되다가 어느 순간 교착상태에 빠집니다.
디버깅 결과 해당번지인 TX_FREE_SIZE가 한번 0으로 읽히기 시작하면 계속 0으로
읽혀, 조건(TX_FREE_SIZE > PACKET_LEN)이 충족되지 않아 무한루프로 돌아가고
있습니다.

제 질문은 어떤 때 이러한 현상이 일어날 수 있을까요? 또한 이렇게 동작할 때 초기화
외에 교착상태를 빠져나오기 위한 어떤 좋은 방법이 있는지요? 답변 부탁 드립니다.

감사합니다.

안녕하세요 고객님.

TX memory free size가 0이라면 메모리에 저장된 데이터를 정상적으로 send하지 못한 것으로 판단됩니다.

Send 명령어를 내린후 Sn_IR(SENDOK)=1을 확인한 후 다음 send명령어를 내려서 메모리에 쌓여있는 데이터를

정상적으로 보낸 후 보내려는 데이터를 메모리에 입력 해보시기 바랍니다.

감사합니다.

안녕하세요, 담당자님:

예, 답변 감사합니다. 문제가 해결되었습니다.

FPGA로 코딩한 W5300 드라이버라 그런지 전송명령을 내리는 신호가 불안정하여
발생한 문제로 판단합니다. 로직 자체에는 문제가 없었던 것 같고 FPGA 클럭과
Ethernet 드라이버 클럭(80MHz 사용)이 이종 클럭이라 해당 명령신호를 조건문
내에서 직접 사용하지 않고 80MHz Ethernet 드라이버 클럭으로 Latch를 한 후
사용해야 했었는데 그렇지 않아서 발생한 문제네요.

답변 감사드리며 추후에도 많은 도움 부탁 드립니다.