I'm two weeks away from completing my first college digital logic design course, and apparently there isn't going to be a final project--just a tedious final exam.
So as any curious student would do, I looked into what FPGAs actually are and what I was being spoon-fed in class. And I've decided to complete a simple FPGA project. I'm using a Basys2 Spartan-3E FPGA, and I'm familiar with digital logic and using ISE to push logic gates around, but I don't know VHDL/Verilog (I'm sure I could pick it up easily).
Does anyone have any project ideas for a beginner? I've done a lot of lab demonstrations, but nothing too fancy.
I found Pong Chu's "FPGA Prototyping By Verilog Examples: Xilinx Spartan-3 Version" to be a very helpful book. It's meant for a different Spartan-3 board from the one you mentioned, but should still be helpful.
There is also a VHDL edition if you would rather go that route
You have VGA on that by the look of it. Video always makes for interest in my experience :)
Here's a plan you might want to try (no framebuffer required):
Get a pure colour VGA screen displaying
display a horizontal fade from black to solid colour
Now fade vertically from black to red and horizontally from black to green
3a. (make a more interesting algorithmically specified background you can render in real-time)
create a simple sprite engine which will overlay a small arbitrary shape at an arbitrary location - you could use 1 BRAM for the sprite data
show a few different sprites (1 BRAM each)
create some update logic to make the sprites bounce around (and off each other) - add collision detection to the sprite logic.
create a "paddle" sprite that you can control with the switches, use it to stop the sprites going off the screen
Add some scoring mechanism
I think that should all fit in a 250E. (The VGA clock is slow in FPGA terms, so you can multiply up by 4-8x with the DCM which will allow one sprite engine to multiplex over more than one sprite instance)
One of the first things to do is just download (from vendor or an enthusiast site) and build a skeleton project that hooks the inputs to the outputs - this can be extremely frustrating to get working until you have some experience.
Then you can start putting logic in between - state machines for contrived examples as you had in class, or more complicated ones such as the video generators others are recommending. More complicated blocks such as simple DIY processors, etc...
When I took my VHDL course, I made a microprocessor with ALU with a few instructions, memory communication and microinstruction sequencer. It takes longer time than you would think it will take, specially if you want to make it robust.