The USB driver crashes when reading occasionally. This happens frequently enough to prevent us from transmitting large files. We are not sure why this happens yet. We plan to look into this bug and hopefully find what is happening. If we do not figure it out, we will try to have the code try to reload the USB Device repeatedly if it happens. Updates to fpga code seems to stop this from happening. We can now send large files without this ever happening.
The software sometimes goes into a deadlock when both receiver and transmitter has data on its TX buffer. The timing and acknowledgements is hard to get right, but we may make some assumptions to make this work.
Design Changes
No design changes this week
Updated Schedule
We are on schedule to finish the final deliverables (poster, report, and video). We still need to run our system stress test which will be done soon.
Progress
We have nearly completed our poster, which only needs a final review before submission.
Unit Tests
Laser Speed Test
Use FPGA to transmit set signal over lasers. Measure the receiver inputs into the FPGA using an oscilloscope
Results: Measured clean 6.25Mbps with proper focus
Findings: The fall time was much slower than the rise time, especially when the receiver was getting too much focus (up to 120ns). This made it important that the focus is adjustable and set correctly, and slower transmission speed more desirable than faster.
Power Test
Measured power draw with all components on.
Results: 0.223A draw from 9V power supply
The USB-PD can support up to 9V for 3A, which easily passes our criteria.
Ambient Light Test
Laser transmission tested in multiple rooms, to ensure that most room settings are fine for transmission.
Results: The laser worked similarly and properly under all room conditions.
USB Speed Test
Ensure that USB can transmit to our PCB that would meet the use-case transmission requirement
Findings: The baud rate set at 7 Mbps is working, which passes the test.
Angular Error Test
At 1m, measure the largest laser focus that transmits properly.
Results: Calculating the angle of error based on the target size, we found that the angular error can be +/- 0.13 degrees in minor direction, and +/- 0.32 degrees in major direction.
Findings: The focus that would make this system work had a much smaller target than we originally anticipated, since the receivers produced much less current than calculated based on the datasheet. We lowered our use-case requirements to adjust for this. In addition, we added handshaking between each packet to make sure that packets aren’t continuously transmitted even when the aim is off.
Error Correction Test
Tested Hamming code error by injecting 1-bit and 2-bit errors.
Results: The test passed, with the software correcting 1-bit errors and reporting that there were errors for 2-bit errors.
FPGA Communication Test
Had the transmitter FPGA receive data over USB, send it to the receiver, and the receiver checks for the start sequence and begins to write the data into the FTDI chip after receiving a full 1kB. Timed this using counters in FPGA. Not use lasers, and communicate by connecting receiver/transmitter FPGA via jumper cables.
Results: For a given transmission speed (6.25Mbps), data sent 97 percent of the time, with other 3 being taken up by FPGA processing (6.06Mbps of throughput), that will be even more amortized if more packets are sent. Pass requirements.
Integration Testing
Device Speed Test (without USB)
Time the FPGA transmission of usable data from the moment it arrives at the FTDI chip to the moment the receiver FPGA attempts to write to it.
Results: 2.21 Mbps of usable data observed at 4.47 Mbps of transmission. This is after taking away the overhead put on from UART (8 data bits / 10 bits), Hamming (11 data bits / 16 bits), and protocol overhead (packet starter and packet tag).
System Speed Test (with USB)
Timed transmission of one packet to another using a laptop
Results: Observed ~2 Mbps of usable data, meeting the adjusted 1 Mbps required.
File Send Test
From close distance, send a small (< 128kB) file from one device to another.
Results: Packets delivered properly and reconstructed!
System Stress Test
Put full system together, and send one large file (19MB) to the other at a distance of 1m.