Simulating FPGA design without having the actual hardware
The standard Xilinx ISE Webpack (the free version that you can download from xilinx.com) includes a simulator called iSim. It's not a great simulator, but is fully functional and the price is right.
Although I haven't used the Altera tools, it would surprise me if a simulator was not included.
But... You need to know what a simulator can and cannot do. For starters, it cannot simulate an FPGA running at full speed. In fact, they are quite slow. Depending on the complexity of the FPGA being simulated, it would not surprise me to see it take 1 minute to simulate 1 ms of "simulated time". If you want to simulate an hour of "simulated time", it would require 1000 hour of real time.
Also, a simulated FPGA cannot communicate directly with things like your USB port. The simulated FPGA does communicate with a "testbench". The testbench is a chunk of VHDL or Verilog code that feeds the inputs of the FPGA (or parts of the FPGA) and verifies the output of your FPGA. You can do some fairly complex things in a testbench, like use floating point numbers, read and write files, and run logic that is impossible to synthesize.
The Xilinx tools can't interface in real-time as far as I know, neither can ModelSim (used by Actel's Libero IDE)
I don't know about open source simulators, there are some rather exotic projects out there so it's possible there is something that could do this.
However, this may be you an answer you didn't ask for (I'll delete it if it's not helpful), but I would consider building your own FPGA board to do this or at least get started along the way towards it. I etched my first FPGA board and though it was very simple (the board not the process ;-) ), it taught me an awful lot quite quickly.
Pros:
- Cheap
- Jump right in at the deep end and learn all you need to know about the hardware considerations. Forces you to read most of the datasheets first, and write your own starter code, which IMHO is often better than the plug and play dev board approach to learning.
- Only put on the board what you need to.
- Get's you further towards your goal of a real working design with possibly the same effort/research as the figuring out how to simulate it all in real-time would.
Cons:
- Still need to buy a programmer, although cheap versions of the Xilinx/Altera programmers can be found on eBay.
- If PCB/signal integrity design and issues are not something you wish to focus on, then you may not be interested in much of the knowledge to be gained by doing it this way.
I understand the etching your own board is probably unnecessary, I only did it because I had the FPGAs there, was impatient and didn't want to wait 2 weeks for a PCB to arrive. There are extremely cheap deals out here for 2-layer boards, which would do to at least run your design (possibly at lower speeds than eventually desired - normally the minimum layer count for a high-speed FPGA design would be 4, but these are much more expensive)
Anyway, Spirit Circuits does a completely free 2-layer "bare bones" PCB deal (one a month, one design, no mask or silkscreen) which comes in handy for a one off design.
Also, for proper 2 and 4 layer cheap prototype boards, ITead and Seed Studio go as low as $10 for 10 boards (or possibly 5 at that price) services.
I don't know of any simulator that will directly interface to signals arriving on a USB port (or other hardware).
At least in theory, it would be possible to write some software that would take signals arriving on a port, and translate those into a testbench file that a simulator could process. Unfortunately, I don't know of any existing software to do this, and writing it yourself would be decidedly non-trivial.