I’m working on a programming question.
You are going to create a simple video game using the LEDs and push buttons to simulate saving
prisoners of war (POWs).
The games will go as follows:
– To start the game, press RESET. Three or Four random LEDs should be lit indicating the
positions of the POWs. However, there is also a blinking LED at a random position
representing your position.
– As you press the left button or the right button, your position, represented by the blinking
cursor, moves.
– Move towards one of the POWs. Once you have reached them, press the center button. This
rescues the POW and the corresponding the LED no longer stays lit after the cursor is moved.
– When all the POWs are saved (3 or 4 on the initial randomization), the game is over.
You must make the RGB LEDs turn red while the game is going on and turn green when you
have won. When reset is pressed, the game should reset.
Your Part
- To store the POW position(s), create an 16-bit flip flop module.
– The declaration should be as follows: pow_position (pos,clk,rst ,init,d);
➢ pos is 16 bit output
➢ init and d are 16 bit inputs
– One every clock, load _init if rst is pressed and load d otherwise
➢ init should be provided from random2
– YOU MUST USE THE ALWAYS BLOCK WITH NO ASSIGN STATEMENTS
OR INSTANTIATIONS
- To store your position, create an 16-bit shift register module.
– The declaration should be as follows: position_shifter(pos,clk,rst,sr,sl);
– On every clock, it should initialize to POS[15:0]= 16’b0….00000001 when rst is high
and otherwise it should right shift when shift_right is high and left when shift_left is high
– You need to make sure you don’t accidentally move off the board Right or Left
– YOU MUST USE THE ALWAYS BLOCK WITH NO ASSIGN STATEMENTS
OR INSTANTIATIONS
- To create the LED display:
– AND each of the 16 bits from the position register with the output of the pulser to create
a blinking indicator. Then XOR this result with the output of the POW position flipflop.
– The pulser will have a duty cycle less than 50% so that the cursor is shown as short blinks
of light when not over a POW and the inverse when over a POW.
– YOU CAN USE WHATEVER YOU LIKE TO ACHIEVE THIS. (Hint: a clock
divider wouldn’t be a bad idea)
- You need to figure out what to provide to the d input of the pow position flip flop (
- You need to figure out to create the effect of clearing some bits if the cursor position is the
same as a POW position
- Use a NOR (of the LED outputs) to figure out when the game is over
- Remember to set the RGB LEDs correctly.
POW Position 16-bit flip flop module:
Declaration: pow_position (pos,clk,rst ,init,d);
Inputs: [15:0]init(from random2) and [15:0]d(where does this come from?), Outputs: [15:0]pos(where does this go to?)
One every clock, load _init if rst is pressed and load d otherwise
YOUR Position 16-bit shift register module:
Declaration: position_shifter(pos,clk,rst,sr,sl);
Every clock, it should initialize POS[15:0]=16’b0000000000000001 when rst is high
Otherwise, shift when shift_right(where does this come from?) is high and left when shift_left(where does this come from?) is high
LED Display:
AND each of the 16 bits from the position register with output of the pulser to create a blinking indicator.
XOR this result with the output of the POW position flipflop.
Pulser: has duty cycle less then 50% so that the cursor is shown as short blinks of light when not over a POW and inverse when over a
POW.
Clear Bits: create the effect of clearing some bits if the cursor position is the same as a POW position
Game Over: use a NOR to figure out when game is over, create some indication
Requirements: well detailled | .doc file | .doc file