Approaching the end of the project, I spent this week doing a lot of debugging for integration. We saw issues with duplicated garbage, inconsistent game end behavior, data transmission only displaying one way, and packets sometimes getting stuck and no longer being received. A number of these issues turned out to be exceptionally difficult to isolate – some only appear with other parts of the system integrated, and crosstalk between wires appears to be a recurring issue.

 

Nevertheless, I made a few last-minute design changes this week:

  • Doubled the size of handshake packets, dedicating a full 4 bits each to PID and sequence number for better reliability
  • The sender now looks at the sequence number of handshaking packets and discards duplicates
  • Upon losing a multiplayer game, the networking stack now remains in the GAME_LOST state for a set number of cycles after receiving an ACK to ensure the game end signal is properly sent, as we ran into issues with an in-flight ACK arriving before the other board could receive the game end packet

 

I also fiddled with the number of cycles before timeout, and the delay after receiving a packet and before sending an ACK in reply. Currently networking data is properly sent and interpreted between both boards with the game logic integrated if we separate each wire with a ground. Garbage integration is inconsistent for reasons we haven’t been able to properly isolate – sent garbage lines are sometimes being duplicated, and it doesn’t appear to be a signal or timing issue. Garbage could still be fixed in time for the demo, but as it stands we simply may not have the IO available to run grounds between everything with all components integrated.

Eric’s Status Update for May 2

Leave a Reply

Your email address will not be published. Required fields are marked *