Bouncing is the likelihood of metals to come into contact with each other, when the contact is opened or closed, producing unwanted multiple signals. Debouncing is the method of making sure only one desired signal is produced based on a single opening or closing of a contact. I have proceeded with the next module, push button. Dr. Shawn said that it required a debouncer since the push button has the tendency to bounce. I find it interesting learning how debouncing works and how simple yet effective the method is to prevent bouncing. It only requires a counter that sets up the amount of sampling time to produce a signal in a stable state. It checks between two states, high (when pressed) and low (when released) of the push button.
I started with the design of a debouncer for the push button. I was stucked with it for a while when the test bench showed no outputs at the counter signal. My design was incorrect at incrementing the counter and also the two states in between. I made 16 bits design of a counter at first, but after I realize how deterministic test bench would take long lines of codes to specify each inputs, I changed it to 8 bits. Widths determine how long the sample time is so changing to 8 bits reduced the amount of time but I just needed to verify that it was working properly first. The test bench was finally verified when the push button state changes as soon as counter has maxed. I had to clarify a few things in the push button design with Dr. Shawn before I could finish it.
Few modules I worked on before took some time when there were errors at every stage, compiling errors, test bench incorrect, synthesis errors and even when generating the bit file. Therefore, when the push button design to be loaded onto the FPGA board finished, I was glad it synthesized smoothly and the bit programming file could be generated as well. I tested and the push button did work as I hoped. I was happy to carry on with the next module.
The next module I chose was the optical blocking sensor module. When an object cuts off the light between the sensors, it will make the LED light up as an indicator. I only had to make small modifications as it was about the same as the push button, only requiring to read inputs from the module. I was excited when it worked that I tested many times with a lot of objects. The sensor worked perfectly sensing every object that blocked the light. I cannot wait to design more fancy modules, hopefully I can make at least two modules in a week later.