This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
labs:pong_part_1 [2019/11/10 09:12] jgoeders [Exercise #4 - Line Drawer] |
labs:pong_part_1 [2019/11/15 10:30] (current) jgoeders [Exercise #2 - BallDrawer SystemVerilog Module] |
||
---|---|---|---|
Line 51: | Line 51: | ||
* The state machine should wait for the ''start'' signal before starting to draw a ball. | * The state machine should wait for the ''start'' signal before starting to draw a ball. | ||
* For each pixel that needs to be drawn, the state machine should output an (x,y) coordinate using the ''x_out'' and ''y_out'' outputs, and assert the ''draw'' signal to indicate that a valid pixel is being output. | * For each pixel that needs to be drawn, the state machine should output an (x,y) coordinate using the ''x_out'' and ''y_out'' outputs, and assert the ''draw'' signal to indicate that a valid pixel is being output. | ||
- | * The ''done'' signal should be asserted after the ball is done being drawn (or on the last pixel). | + | * The ''done'' signal should be asserted for exactly 1 cycle after the ball is done being drawn (or during the last pixel). |
* The state machine should wait for the ''start'' signal to go low before allowing another ball to be drawn. | * The state machine should wait for the ''start'' signal to go low before allowing another ball to be drawn. | ||
Line 93: | Line 93: | ||
add_force clk {0 0} {1 5ns} -repeat_every 10ns | add_force clk {0 0} {1 5ns} -repeat_every 10ns | ||
add_force reset 1 | add_force reset 1 | ||
+ | add_force start 0 | ||
run 10ns | run 10ns | ||
add_force reset 0 | add_force reset 0 | ||
Line 159: | Line 160: | ||
{{:labs:lab_pong:line_drawing_waveform.png|}} | {{:labs:lab_pong:line_drawing_waveform.png|}} | ||
- | Simulate your ''VLineDrawer'' module to ensure it is working correctly. You can probably re-use the TCL above, but make sure to set the ''height'' input. | + | Simulate your ''VLineDrawer'' module to ensure it is working correctly. You can probably re-use the TCL above with minimal changes. Make sure to set the ''height'' input, and test drawing two lines of different height. |
+ | |||
+ | <color #ed1c24>Paste your TCL simulation file in your lab report.</color> | ||
Modify the top-level from the last exercise to draw a vertical line instead of a ball. | Modify the top-level from the last exercise to draw a vertical line instead of a ball. | ||
Line 166: | Line 169: | ||
** Exercise #4 Pass-off:** Show the TA your ''VLineDrawer'' module and the line drawing correctly on the monitor. | ** Exercise #4 Pass-off:** Show the TA your ''VLineDrawer'' module and the line drawing correctly on the monitor. | ||
- | <color red>Submit your final lab report on Learning Suite.</color> | + | ---- |
+ | |||
+ | ==== Final Pass-Off === | ||
+ | |||
+ | <color red>Submit your final lab report on Learning Suite. Submit the SystemVerilog code of your two modules.</color> | ||
+ | There is no personal exploration for this lab. |