This week I worked on making the final presentation slides with Amelia. I also worked on integrating the PCB as part of the whole system with the Verilog team. I also fixed some of the soldering work on a LED that wasn’t working too well – the “i” on the lampboard – by desoldering it and moving to another pin on the shift register.. Finally, I continued working on the final report.
Category: Documentation
Proposal, Design Review, Final Project Documents
Team Status Report for 4/26
This week we started and finished the final presentation slides and Nancy gave an amazing presentation on Monday!
Tanisha also fixed the issue with the “i” on the lampboard by desoldering it and moving to another pin on the shift register.
Nancy and Amelia worked to fix the issues with the MAX 7-Segment glitching when trying to adjust the rotor settings. We realized this issue was due to lack of resistors on the buttons which left the input pin floating — giving us unpredictable and random signals, which caused the glitches. Nancy and Amelia fixed this by updating our RTL to change the rotor settings while the button was pressed rather than using a press and release FSM for the buttons.
In the next week, we need to finish the poster, make our video, and update our report.
Tests Run:
- Design rule check, verified design meets manufacturing requirements with 0 errors (PCB design)
- Electrical rule check, verified power and ground connections with 0 errors (PCB design)
- Continuity test on multimeter, ensure proper fabrication with 0 open circuits throughout board(PCB fab)
- Verified voltage levels at every connection for all LEDs, resistors and GPIO (rotary encoder, FPGA header, shift registers) (PCB fab)
- Validated 100% of traces by powering PCB and validating output voltage levels against schematic (e.g. LED on, logical high) (PCB fab)
- Peripheral unit tests: lamboard, light up random sequence of 50 letters (100% success)
- Peripheral unit tests: keyboard, continuously type for 2 min and ensure keyboard functionality (100% success) and lampboard functionality (100% success)
- Integrated user tests: test fully integrated product on 5 people, test and check encryption with online simulator (100% success on all 5 people for all encryptions)
Updates to Design:
- Moving from button press and release FSM to only changing settings on button press itself
- Remove microSD card functionality due to power constraints
Amelia’s Status Report for 4/26
Last Sunday, Tanisha and I started and finished the slides for the final presentation.
This week Nancy and I continued to work on trying to figure out the issue with the glitches when integrating the rotary encoder and the MAX 7-Segment display. We rewrote the code and FMSs multiple times when trying to figure out this issue. We had believed that the issue was with the MAX itself. However, one test we did isolated the PCB buttons and compared them to the functionality of the DE10 buttons. We realized that the PCB buttons were the issue and not the MAX. We realized that we had forgotten to add resistors to the buttons to prevent the input from floating which was exactly the behavior we were observing. Nancy and I realized that the only way the buttons could be functional was if they were continuously pressed because that is the only way to ensure the buttons are asserted low (buttons active low) and not at a weird floating value. To fix this, I changed the RTL so that you have to press the button for whatever setting you want to change while you rotate the rotary encoder. This ensures that we know what setting is being changed. Once I implemented this all the glitches on the MAX were gone. The glitches definitely were caused by the buttons being in a weird state. On Friday, I added a feature that blanked the MAX display when one setting was being changed in order to make it more readable. I also cleaned up some of the code. The RTL is pretty much complete now and we have implemented everything we had hoped to, excluding the button FSM which we fixed by holding down on the button when changing the rotors. I also started working on the poster due on Monday.
In the next week, we need to finish the poster, make our video, and update our report.
Tanisha’s Status Report for 4/19
This week I finished soldering our PCB and conducted PCB testing. I also started working on integration with the Verilog team.
I conducted extensive PCB testing throughout the week. I checked continuity for every connection on the board, checked each pin was supplying the appropriate power level, and power level at every connection and ensured it matches the schematic.
I also powered the PCB to ensure things were functioning and found all but one LED was working. I fixed this by trying to resolder the PCB, however in doing so I accidentally ruined a pad of the LED. However, I didn’t realise this at first so I worked on figuring out if the issue was with a dead LED, dead shift register, or a power issue.
By checking continuity and power outrages throughout the traces along the path of the power -> LED -> resistor -> ground, I was able to isolate the issue to be a lack of connection around the LED, hence realizing the pads were ruined. I solved this by incrementally soldering bare wire between the connections I wanted (power -> LED and LED -> resistor) till all connections were verified by both tests and finally the LED started working! The benefit of all of this means I am confident in the rest of my connections due to all of the debugging I did.
This is an example of skills I have learned over this past semester – trial and error by practicing my soldering and circuitry skills. I also learned more skills by asking other capstone groups for advice if they had encountered similar situations, I would say that was one of the most beneficial learning experiences I had. I also had practice outside of Capstone with TAing 18-349 where I had plenty of practice on laying out / fabricating and soldering PCBs.
The only task I have left for the PCB is fixing the rotary encoder as I laid the order of the pins out backwards on the schematic accidentally. I looked into a perf board solution to remedy this, but ultimately decided on adding another right angled header to try and change the direction of the encoder. I will also work on our final presentation and documentation for our final few submissions.
Team’s Status Report for 4/12
Two weeks ago we had our Interim Demo and received good feedback from this. We presented a working encryption scheme with inputs on the PS/2 keyboard and output displayed to the FPGA’s 7 segment display and using the FPGA switches as rotor dupes, a printout of our PCB with components laid out (since PCB was still being manufactured), and a presentation with our updated use case, design, and schedule. We felt that this Demo went well and based on feedback plan to update our final Demo to have 2 separate models – one with only the FPGA and one with both the FPGA and PCB to show off all the work we have done till now.
This past two weeks Amelia and Nancy worked hard on the rotary encoder RTL, wrote the entire SPI protocol for the MAX7219 7 segment display and integrated the encryption modules to work with all of the GPIO RTL they have written over the past few weeks and got everything working successfully!!
This week the PCB arrived (yay! see attached picture!) so Tanisha fabricated it and soldered all the SMD and PTH components on excluding the rotary encoder. Once that header arrives on Monday, she can solder it and the PCB fabrication will be complete. This week she will work on testing the PCB, completing her final report tasks and starting preparation for the final presentation.
For validation we will test our integrated system against results from each of our modular subsystems continuing on from our individual verification tests.
Meanwhile, the Verilog team will work on integrating the rotary encoder with the rest of the RTL and writing the RTL for the lampboard shift registers.
After the RTL is complete, the whole team will work on integrating the PCB with the RTL, carrying out user testing and planning the final demo set up. This all fits in to our planned schedule!
Amelia’s Status Report for 4/12
Last week (carnival week), I worked with Nancy to synthesize the RTL she had written for the rotary encoder. We debugged and synthesized that code and hooked it up on a breadboard to the GPIO pins of the DE10. After working through a few issues regarding the notches on the rotary encoder skipping to many letters when turning, we were able to successfully synthesize the rotary encoder logic on the DE10. We do, however, have one issue with the rotary encoder not wrapping around from Z to A, which we plan to fix next week — it works fine going from A to Z and backwards through the alphabet from Z to A, however, we have a skipping issue when jumping from Z to A directly.
Last Thursday (carnival Thursday), Nancy and I spent the entire day in 1305 working on the RTL for the MAX Seven-Segment Display. This involved writing a SPI protocol handler to replicate the Arduino code that the MAX7219 chip was designed to handle. However, we were unsuccessful. We tried again Monday of this week, and in a couple hours of debugging we were able to display “DEADBEEF” on the MAX Seven Segment!
Yesterday (Friday), Nancy and I reconfigured our encryption to take in user input from the FPGA for ring setting and rotor number (previously we only had this capability for rotor starting position which we demonstrated during our interim demo). By Friday night, we were able to configure each setting (rotor number, rotor starting, and ring position) on the FPGA and have these values displayed on the MAX Seven Segment. We tested our encryption for different configurations against the online Enigma simulator and everything worked great.
For verification, we tested the RTL for different ring positions, ring starting positions and rotor number – we verified this against the online Enigma simulator. We plan to user test this with team B4 – Connexus and have them try different configurations and verify with the online simulator that it performs as expected. For the rotary encoder we plan to test its functionality with users trying to use it at varying speeds and intensities to ensure it will hold up in a museum / classroom setting. Nancy and I have already verified for all edge cases (end of alphabet, highest and lowest rotor numbers, etc.) and the encryption worked as expected.
We accomplished our goal this week of writing the SPI handler for the MAX7219 chip and adding configurable for the rest of the encryption settings. Nancy and I only have a few more tasks left on the RTL side — integrating the rotary encoder with the rest of our RTL, writing the RTL for the lampboard shift registers, and finally, the microSD card. We are on track to complete all the RTL and hopefully will be done with everything by the end of next week. This should leave ample time for us to design nice housing for our PCB and finish up all the documentation.
Tanisha’s Status Report for 4/12
This past two weeks I worked on preparing for our interim demo, working on PCB manufacturing tasks and other odd items.
I ordered our stencil from OshStencil. I ran into a few issues with trying to resize our stencil as it was charging us for a lot of negative space even though I didn’t need those extra sq inches. However, I was able to order it and it arrived successfully.
Since our stencil hadn’t arrived for the earlier part of this week, I worked on writing encodings to our Micro SD cards and making sure everything was formatted correctly, and running storage tests. I pivoted from using H2testw to f3 testing so I would be able to check storage sizes as well as corrupt disks.
I also started working on our Final report – specifically the PCB section as that is solely my responsibility as well as updating the Ethics session of our paper based on our Ethics lecture notes and previous status reports.
On Friday the PCB arrived (yay!). I immediately fabricated the resistors in the Fab Lab in Techspark and on Saturday I hand soldered the LEDs, 7 segment display, shift registers, FPGA header and the SD card reader and its right angled header. This comprises the majority of our PTH components.
I ran into slight issues as I had planned to desolder the right angled headers that came with the rotary encoder for a clean look and to balance the center of gravity for our users. However, that was proving tricky and I didn’t want to mess with the rest of the board as we got the last 2 rotary encoders in stock and hence have no spares. Due to this, I tried to source right angled female headers on campus but ended up just ordering some. Once these arrive, I can solder the rotary encoder and with that the PCB fabrication would be complete. I have attached a picture of the current state of the PCB to this status report.
This week I plan to run more continuity tests (I did small modular testing as I soldered the PTH components), ensuring all parts are soldered on with sufficient connection and no shorts. For verification I will double check multimeter output against the design schematic and ensure all works as expected (grounds, vcc, shorts etc).
I also plan to work with our Verilog team to on integrating our PCB and FPGA successfully. This should leave plenty of time to have everything working successfully by the end of the semester.
Team Status Report for 3/29
This week the PCB team finished working on the PCB and sent it to order. The challenges we faced were dealing with Fusion 360 irregularities, double checking all our safety checks, and figuring out our ordering strategy. Since it would take a longer time than we anticipated we had to select the rush order option which ate up a portion of our safety chunk of our budget. However, since we have spent a longer time on the PCB than we anticipated, we are also more confident in its ability to work correctly and are still well within budget. A challenge we foresee would be on board PCB debugging but since we have mitigated everything we could on the pre-manufacturing end I am confident in our abilities to make this succeed. More challenges we had to deal with was just planning out spacing on the board to maximize aesthetics, cost, functionality and speed of delivery.
The Verilog team has been working consistently this whole week to integrate the encryptions with the interfacing of the PS/2 keyboard. They have successfully managed to get a user input from the keyboard, encrypt it and display this to the onboard 7-segment display on the FPGA!! This came with more than it’s fair share of challenges however – handling flashing break codes between encryptions, random letters being encrypted upon first key press, and debouncing algorithm complexity. This is all being done in preparation for our Interim Demo this upcoming week.
As a team we plan to present this working encryption input and output scheme alongside our PCB narrative and final design. We will discuss our use case briefly before moving on to talk about the challenges each of us faced throughout this process – something that has also been detailed through all our status reports. This would be the majority of our work for the upcoming week.
Our team also met with Professor Chang this week to discuss our design layout plans. Since we last spoke to her we had switched to an external keyboard as she recommended for user friendliness, however as we are now doing a PS/2 keyboard we were limited by the vintage offerings (and power considerations – see team status report 3/15). She approved of our PCB layout and user interface and advised us on possible enclosure ideas. We decided that could be a stretch goal for us after completing all of the functionality.
Tanisha’s Status Report for 3/22
This week I worked on further testing of the PCB in simulation. I worked on generating heat maps using the PCB thermal simulation software as part of Fusion 360. Simulating both external temperature sources and measuring the distribution as well as electronics cooling to determine if electrical bodies exceed maximum allowable temperature given natural air convention. This was based on supplied power consumption and thermal loads. The results were helpful to verify there were no hotspots with a surplus of heat anywhere hence complying with safety standards. I also updated our PCB to include a new SD card reader as we swapped our old one with a new one that includes a 3.3V breakout board as a mitigation technique we learned from the PS/2 keyboard. I am still waiting on the SD cards themselves to arrive but in the meantime I got started on looking into writing appropriate codes to these cards and how H2GTestW can be used exactly. I understood we can use it to generate tests for speed of writing to and reading from our SD card which will be helpful when integrating it with our PCB. Finally, I continued working on tracing the final PCB out with this design alongside Nancy.