Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- always @(posedge clk) begin
- if(rst) begin
- xpos <= 0;
- ypos <= 0;
- state <= DOWN;
- end
- else begin
- xpos <= xpos_nxt;
- ypos <= ypos_nxt;
- state <= state_nxt;
- end
- end
- always @* begin
- xpos_nxt = XPOS_INIT;
- case (state)
- DOWN: begin
- ypos_nxt = ypos + 1;
- if ( ypos >= 300) begin
- GO_UP = 1'b1;
- state_nxt = CHANGE_DIRECTION;
- end
- else begin
- GO_UP = 1'b0;
- state_nxt = DOWN;
- end
- end
- UP: begin
- ypos_nxt = ypos - 1;
- if ( ypos <= 1) begin
- state_nxt = CHANGE_DIRECTION;
- GO_UP = 1'b0;
- end
- else begin
- GO_UP = 1'b1;
- state_nxt = UP;
- end
- end
- CHANGE_DIRECTION: begin
- ypos_nxt = ypos;
- state_nxt = GO_UP ? UP : DOWN;
- GO_UP = 1'b0;
- end
- default: begin
- GO_UP = 1'b0;
- state_nxt = DOWN;
- end
- endcase
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement