CE433 2022 Spring
Week 1
John Hitti

jdhitti@fortlewis.edu

Week 1

Introduction
In this week's project we will be learning the basics of Verilog using gvim as well as Vivado to sun simulations of the Verilog files.

Task 1

In this task we will be using gvim and Vivado to simulate the examples in sections 2.1, 2.2, and 3.3 that use structural modeling, dataflow modeling, and behavioral modeling to model the below example in Verilog.



2.1
The example, and a testbench to simulate the example, are coded in gvim.


The file is loaded into Vivado and a simulation is ran.


2.2
The example, and a testbench to simulate the example, are coded in gvim.


The file is loaded into Vivado and a simulation is ran.



2.3

The example, and a testbench to simulate the example, are coded in gvim.


The file is loaded into Vivado and a simulation is ran.


Task 2
In this task we were to simulate the difference between blocking (sequential) and non-blocking (concurrent) in behavioral modeling. A file demonstrating the difference between these behaviors is created and displayed below.


A simulation is then run in Vivado to show the results of the blocking and non-blocking operators.

Task 3
In this task we ran a simulation to show how timing and delay are used. A 20 ns delay is added using "#20" to one of our assign statements in the test 1 module. Our example and test bench are created in gvim.

They are then loaded into Vivado and a simulation was ran to verify the timings.




Task 4
In this task we took the same example from the last task but moved the 20 ns delay to the other assign statement. This is reflected in the simulation results and can be seen below where out1t is now shifted 20ns instead of out2t.



A hand drawn version of the simulation output is below.



Task 5
In this task we will use multiple modules at different hierarchies all inside one ".v" file to create one system from multiple modules. This is first coded in gvim as seen below. The test bench is on the left and the multiple modules using different hierarchies are on the right.

The files are then loaded into Vivado, and a simulation is ran, verifying the functionality of the modules.


Discussion

This project was an excellent introduction to Vivado and highlighted a lot of its functionalities while laying down some good groundwork for coding in this language. This project was also a great introduction to Vivado’s capabilities as a simulation program with the Vivado language.