Got a new toaster coming up, with rather more demanding design requirements.
Total flexibility is not a requirement, but robustness is, in particular regarding operating temperature range.
So, I'm looking at putting all the logic in an FPGA, using some little synthesizable processor core, and losing the general-purpose microcontroller (which is only rated -40 to +85°C, and is one more component that needs to go through the review process).
Since the logic is actually a fair bit simpler, it would probably be possible to stuff a MicroBlaze core into the same model of Spartan 3E I'm using now... but that gets into annoying node-locked licenses for the development tools (and the eternal "what do you do if that particular computer dies" problem).
So, look around... the project has a short fuse, so whatever part we use has to be available quickly, not some special-order item with a many-month lead time once you figure out the secret handshake to be allowed to order it in the first place.
A quick search turns up the Actel (I've been meaning to play with their parts) M1A3P1000 in stock at Mouser in mil-temp (-55 to +125°C). Downsides: the pin count (208 PQFP) is a bit light, though maybe OK for this application; on-chip RAM is also light, and off-chip RAM eats into the pin count; only one PLL on chip; and not only is the development software node-locked, but the license requires annual renewal. Still... it might work, and it seems to meet the needs of Extreme Toasting. Also, it's flash-based, so there's less worry about configuration bits getting randomly flipped.
Or, if we can indeed get away with a mere -40 to +100°C operating rating... Altera seems to have a lot more I-temp parts immediately available than does Xilinx, in various generations of the Cyclone family. Plenty of logic, PLLs on chip, decent amount of RAM, various package options... and! Altera's proprietary processor core (NIOS II) apparently comes bundled with the free-download version of Quartus II, which is now available for Linux!
So, I've got the Quartus download going. Will try installing it, get a handle on how it works... and, I guess, order an eval board from Digi-Key, just to have some hardware to play with.
For future purposes, I'd really like to have my own 16-bit processor core handy. Requirements: smallish, supported by GCC, and unencumbered by patents. For "small", it's hard to beat the DG Nova architecture (original implementation: roughly 1200 TTL gates, spread over a 15" square board), but programming is only slightly less arcane than the PDP-8, and GCC doesn't support it. A PDP-11 clone seems most promising; I'd intended to implement one, years ago, as a learning project, but never got very far with it, mainly because (if memory serves) I was having a terrible time getting the instruction decoder to fit into the constraints of VHDL; since I'm using Verilog these days, that might be less of a problem.
And, if I had my own CPU core, I could add features like parity checking on the registers. Just, y'know, in case of bits getting flipped. If the core is small enough, there could even be two running in lockstep, with consistency checking.
Ah, well. Time to wake up and start the weekend. Which is filled with chores and errands and getting up to speed on the requirements for the new toaster, for which we need to have a slide show together in time for Armistice Day.
Update: Hey, Actel's toolset is available for Linux now, too! Officially for Dead Rat, but I'll see if it plays nice with Debian-stable.
Update 2: Alas, Libero and Lenny don't seem to get along; I get a bunch of what appear to be library-related error messages, and a segfault. Oh, well: time to grab the current Windows version.
Update 3: Went through the rigamarole of installing Libero 9.0 on Windows. Still with the 1-year, node-locked license. And the licensing silliness requires that the program be started on the actual hard-wired Windows console, not from an rdesktop session. Annoying.
It also looks like the ordinary, run-of-the-mill parts don't allow using part of the configuration memory as application ROM; maybe I'll have the opportunity, next week, to pester the Actel sales types about this. It appears that the part I have in mind for the project at hand does allow configuring in a block of ROM, but I have other application ideas that involve smaller parts and that also need to store code and/or tables, and I was kinda hoping I could stuff everything on one little FPGA instead of having an AVR on the side.