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. | ||