{"id":211,"date":"2020-04-18T21:57:53","date_gmt":"2020-04-19T02:57:53","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/?p=211"},"modified":"2020-04-18T21:57:53","modified_gmt":"2020-04-19T02:57:53","slug":"altons-status-update-for-april-18","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/2020\/04\/18\/altons-status-update-for-april-18\/","title":{"rendered":"Alton&#8217;s Status Update for April 18"},"content":{"rendered":"<p><strong>Integration<\/strong><\/p>\n<p>The first controller is completely finished and functional! Here&#8217;s a video with a simple hardware testbench:<\/p>\n<p><a href=\"https:\/\/drive.google.com\/open?id=1-t26AU67HpFWBi-JgGNCc6vKCYnEx1PV\">https:\/\/drive.google.com\/open?id=1-t26AU67HpFWBi-JgGNCc6vKCYnEx1PV<\/a><\/p>\n<p>Soldering the pullup resistors in was a bit more of a pain than anticipated. I should have left more room between the connector and the side of the box for perfboard real estate. I could have also soldered in wires and had the resistors somewhere else, but that would have been a hassle as well so I just opted for cramming everything in right next to the connector.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-212\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-content\/uploads\/sites\/91\/2020\/04\/controller_wiring-1024x578.jpg\" alt=\"\" width=\"750\" height=\"423\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-content\/uploads\/sites\/91\/2020\/04\/controller_wiring-1024x578.jpg 1024w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-content\/uploads\/sites\/91\/2020\/04\/controller_wiring-300x169.jpg 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-content\/uploads\/sites\/91\/2020\/04\/controller_wiring-768x434.jpg 768w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-213\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-content\/uploads\/sites\/91\/2020\/04\/controller_wiring_detail-1024x381.jpg\" alt=\"\" width=\"750\" height=\"279\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-content\/uploads\/sites\/91\/2020\/04\/controller_wiring_detail-1024x381.jpg 1024w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-content\/uploads\/sites\/91\/2020\/04\/controller_wiring_detail-300x112.jpg 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-content\/uploads\/sites\/91\/2020\/04\/controller_wiring_detail-768x285.jpg 768w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>VGA cables came in today, so I was finally able to try playing the game with the controller. Up until now all of our gameplay testing has been Deanyone using the switches and keys on the FPGA board. We discovered some issues with crosstalk and edge detection on button presses: when pressing or releasing a button, the signals for other buttons will randomly go high for a short period. I wrote a hardware testbench to try and see how long these bursts appeared for so we could filter them out. In my testing I found that waiting for a signal to remain high for at least 10 cycles of the 50 MHz clock filtered out all crosstalk. Since this is a completely imperceptible amount of time for a human (1\/5 of a microsecond) and still allows us to achieve our goal of frame-perfect inputs, we&#8217;re going to set the threshold even higher at 100 cycles (2 microseconds) just to be safe.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Integration The first controller is completely finished and functional! Here&#8217;s a video with a simple hardware testbench: https:\/\/drive.google.com\/open?id=1-t26AU67HpFWBi-JgGNCc6vKCYnEx1PV Soldering the pullup resistors in was a bit more of a pain than anticipated. I should have left more room between the<\/p>\n","protected":false},"author":276,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[7,4],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-json\/wp\/v2\/posts\/211"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-json\/wp\/v2\/users\/276"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-json\/wp\/v2\/comments?post=211"}],"version-history":[{"count":2,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-json\/wp\/v2\/posts\/211\/revisions"}],"predecessor-version":[{"id":215,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-json\/wp\/v2\/posts\/211\/revisions\/215"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-json\/wp\/v2\/media?parent=211"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-json\/wp\/v2\/categories?post=211"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teamc1\/wp-json\/wp\/v2\/tags?post=211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}