{"id":246,"date":"2020-04-04T19:31:56","date_gmt":"2020-04-04T19:31:56","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/?p=246"},"modified":"2020-04-04T19:31:56","modified_gmt":"2020-04-04T19:31:56","slug":"jonathans-status-report-for-saturday-apr-4","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/2020\/04\/04\/jonathans-status-report-for-saturday-apr-4\/","title":{"rendered":"Jonathan\u2019s Status Report for Saturday, Apr. 4"},"content":{"rendered":"<p>This week I mainly worked on updating the FPGA firmware and computer network driver.\u00a0 Boards arrived yesterday, but I haven&#8217;t had time to begin populating them.<\/p>\n<p>Last week, the final components of the network driver for the FPGA were completed, this week I was able to get microphone data from a pair of microphones back from it, do very basic processing, and read it into a logfile.\u00a0 This seemed to work relatively well:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-247\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-content\/uploads\/sites\/92\/2020\/04\/earlyBF-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-content\/uploads\/sites\/92\/2020\/04\/earlyBF-300x225.jpg 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-content\/uploads\/sites\/92\/2020\/04\/earlyBF-768x576.jpg 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-content\/uploads\/sites\/92\/2020\/04\/earlyBF-1024x768.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>source aligned at 90 degrees to the pair of elements (white line peaks near 90 degrees, as it should)<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-248\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-content\/uploads\/sites\/92\/2020\/04\/earlyBF_2-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-content\/uploads\/sites\/92\/2020\/04\/earlyBF_2-300x225.jpg 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-content\/uploads\/sites\/92\/2020\/04\/earlyBF_2-768x576.jpg 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-content\/uploads\/sites\/92\/2020\/04\/earlyBF_2-1024x768.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>source aligned at 0 degrees to the pair of elements (white line has a minimum near 90 degrees, again as it should)<\/p>\n<p>However, these early tests did not reveal a problem in the network driver.\u00a0 Initially, the only data transmitted was the PDM signal, which varies essentially randomly over time, so as long as some data is getting through, so it is very difficult to see any problems in the data without processing it first.\u00a0 Several days later when testing some of the processing algorithms (see team and Sarahs updates), it quickly became apparent that something in the pipeline was not working.\u00a0 After checking that the code for reading logfiles worked, I tried graphing an FFT of the audio signal from one microphone.\u00a0 It should have had a single,\u00a0 very strong peak at 5KHz, but instead, had peaks and noise all over the spectrum:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-249\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-content\/uploads\/sites\/92\/2020\/04\/FastFourierFail-300x165.png\" alt=\"\" width=\"300\" height=\"165\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-content\/uploads\/sites\/92\/2020\/04\/FastFourierFail-300x165.png 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-content\/uploads\/sites\/92\/2020\/04\/FastFourierFail-768x423.png 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-content\/uploads\/sites\/92\/2020\/04\/FastFourierFail-1024x563.png 1024w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-content\/uploads\/sites\/92\/2020\/04\/FastFourierFail.png 1363w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>I eventually replaced some of the unused microphone data channels with timestamps, and tracked the problem down to the network driver dropping almost 40% of the packets.\u00a0 While Wireshark verified that the computer was able to receive them just fine, there was some problem in the java network libraries I had been using.\u00a0 I&#8217;ve started working on a driver written in C using the standard network libraries, but haven&#8217;t had time to complete it yet.<\/p>\n<p>Part of the solution may be to decrease the frequency of packets by increasing their size.\u00a0 While the ethernet standard essentially arbitrarily limits the size of packets to be under 1500 bytes, most network hardware also supports &#8220;jumbo frames&#8221; of up to 9000 bytes.\u00a0 According\u00a0 to this : https:\/\/www.google.com\/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=6&amp;ved=2ahUKEwjrx8zAvM_oAhUvhXIEHcBHDmYQFjAFegQIBxAB&amp;url=https%3A%2F%2Farxiv.org%2Fpdf%2F1706.00333&amp;usg=AOvVaw1OaEu0ozlfTlaN1ZTfb-IW\u00a0\u00a0\u00a0\u00a0 paper, increasing the packet size above about 2000 bytes should substantially lower the error rate.\u00a0 So far I&#8217;ve been able to get the packet size up to 2400 bytes using jumbo frames, but I have not finished the network driver in order to test it.<\/p>\n<p>Next week I mainly plan to focus on hardware, and possibly finish the network driver.\u00a0 As a stop-gap, I&#8217;ve been able to capture data using wireshark and write a short program to translate those files to the logfile format we&#8217;ve been using.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week I mainly worked on updating the FPGA firmware and computer network driver.\u00a0 Boards arrived yesterday, but I haven&#8217;t had time to begin populating them. Last week, the final components of the network driver for the FPGA were completed, this week I was able to get microphone data from a pair of microphones back &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/2020\/04\/04\/jonathans-status-report-for-saturday-apr-4\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Jonathan\u2019s Status Report for Saturday, Apr. 4&#8221;<\/span><\/a><\/p>\n","protected":false},"author":279,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5,3],"tags":[6,7],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-json\/wp\/v2\/posts\/246"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-json\/wp\/v2\/users\/279"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-json\/wp\/v2\/comments?post=246"}],"version-history":[{"count":1,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-json\/wp\/v2\/posts\/246\/revisions"}],"predecessor-version":[{"id":250,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-json\/wp\/v2\/posts\/246\/revisions\/250"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-json\/wp\/v2\/media?parent=246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-json\/wp\/v2\/categories?post=246"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s20-teame0\/wp-json\/wp\/v2\/tags?post=246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}