The keyboard can be done simply using a PS/2 keyboard - it's just serial, and there's plenty of tutorials out there for it.
Storing data can be done simply on an SD card - there is a shield out there already to do that.
As for the video - that's considerably harder. If you want the Arduino to generate a PAL video signal for instance then you have your work cut out for you. Yes, it is possible, and someone has created an Arduino "pong" game, but it's very chunky graphics and only black and white.
For VGA you will require some form of interface to do the work for you. Sparkfun used to sell the Picaso video card that could be made to work with the Arduino, but alas that has been discontinued and there are no plans as yet for a replacement.
TBH your best bet would be to use something like a Wyse terminal and communicate with the Arduino completely using serial. Much simpler than messing with video signals and such.
Good questions. I have been researching this topic myself recently, and will try to provide some brief answers here.
what exactly is TMDS vs LDVS?
LVDS (low-voltage differential signaling) is simply an electrical specification for a differential signaling interface, while TMDS (transition-minimized differential signaling) is both an electrical specification AND a specific 8b/10b encoding scheme. Unfortunately, the electrical specifications are not directly compatible, although there are various ways to "adapt" one to the other under certain circumstances.
Electrically, LVDS uses totem-pole drivers and differential termination (100-120Ω), while TMDS uses CML (current-mode logic) open-collector drivers and individual 50Ω terminations to +3.3V. The Spartan-3E IOBs do not directly support CML.
Then there's the question of TMDS coding. The Spartan-3E IOBs have support for DDR, with data rates up to 628 Mb/s, but no dedicated high-speed SERDES logic. You would have to do the TMDS encoding and decoding in the FPGA fabric, using the DDR support in the IOBs to get the final bitstreams. This would limit you to pixel rates of 62.8 Mp/s or less.
In a practical sense, I am wondering if I can simply wire an HDMI breakout board directly to the input pins of my FPGA, configure those pins to the LVDS IO standard and expect it to work
No, not on the input side, at least not without some effort to terminate the TMDS properly and then AC-couple it with proper bias to the LVDS receivers on the FPGA (all of this while maintaining an accurate 100Ω differential impedance). Note that the sample projects you link to are all output-only examples. Driving DVI/HDMI from an LVDS output seems to be much more forgiving; they don't seem to have added any bias or termination resistors to their PCBs.
Your best bet would be to use external DVI/HDMI input and output chips, and make the connection to the FPGA via their parallel buses. I have used Analog Devices parts in the past.
Best Answer
No, not directly. Arduinos just don't have the horsepower to do such a task. For this project, I would recommend using a Raspberry Pi. Take a look at this awesome blog post by Joonas Pihlajamaa on using a Raspberry Pi as a Arduino HDMI shield.