CE 433 Spring 2022
Basics Tutorial
Taylor Nakai
tsnakai@fortlewis.edu

Introduction:
In this homework we were given the tasks to review vim basics and review verilog basics. To review vim basics, we needed to download vim and look over the different commands that vim has to offer. Reviewing verilog basics, we learned about structural modeling, dataflow modeling, behavioral modeling, blocking (sequential) and non-blocking (concurrent) in behavioral modeling, timing and delay in modeling, and hierarchical module representation. mvim and vivado were used to complete these tasks.

Task 1:
In the first task, we were introduced to the three modeling methods: structural modeling, dataflow modeling, and behavioral modeling. These three methods were used to model the example schematic shown in Figure 1. Using the structural modeling method, we modeled the example and showed the results shown in Figure 2. Using the dataflow modeling method, we modeled the example and showed the results shown in Figure 3. Using the behavioral modeling method, we modeled the example and showed the results shown in Figure 4.


Figure 1. Example schematic that will be used to model.


Figure 2. Structural modeling of example schematic with vivado simulation.


Figure 3. Dataflow modeling of example schematic with vivado simulation.


Figure 4. Behavioral modeling of example schematic with vivado simulation.

Task 2:
In the second task, we learned about the blocking (sequential) and non-blocking (concurrent) in behavioral modeling. An example to show how blocking and non-blocking works is shown in Figure 5. We can see the difference in how y[0] - y[2] are affected compared to y[3] - y[5]. We also learned that it is strongly suggested that blocking should be used in combinational circuits while non-blocking should be used in sequential circuits.

le
Figure 5. Behavioral modeling of blocking and non-blocking with vivado simulation.

Task 3:
In the third task, we learned about the timing and delay in modeling. To give a good representation of timing and delay we ran the example given as shown in Figure 6.


Figure 6. Timing and delay example given with vivado simulation.

Task 4:
In the fourth task, we expanded learning about the timing and delay in modeling. We modified task 3 so that the 20 ns delay was moved to the line above instead and we were asked to hand draw the timing diagram. The timing diagram is shown in Figure 7. The simulation results of the example are shown in Figure 8 and match the hand drawn timing diagram.


Figure 7. Hand drawn timing diagram.


Figure 8.
Timing and delay example given with vivado simulation showing the same results as the hand drawn diagram.

Task 5:
In the fifth task, we learned about hierarchical module representation. We were given an example where multiple modules were included in one '.v' file and we were able to create a testbench for it. The simulation results are shown in Figure 9, which verifies the logic.


Figure 9. First system example with vivado simulation results.

Discussion:
By completing this homwork, we were able to get a better understanding of the three modeling methods, blocking and non-blocking in behavioral modeling, timing and delay, and hierarchical module representation. This homework allowed me to develop my skills using verilog, vim, and vivado. I am able to see the value of learning these skills as I can see myself applying them in the industry. Overall, this homework was really helpful and look forward to the rest.
....................................................................