In my professional life, I sometimes need to create timing diagrams for protocols: UART, SPI, etc. However, I can't find any good programs available. What programs can be recommended for this and what is the experience using them?
A quick web search turns up Drawtiming. Never used it, but it looks like it would work very well for brief examples of a few dozen clock cycles.
If you want to do your drawings in an Office-like toolset, try OpenOffice.org, specifically the Draw program. If you want to generate the best graphics (And don't mind if it takes a while), try Inkscape as suggested by digikata. Professional datasheets will probably be best served by the tikz-timing package an as suggested by jluciani, or the older (but less complex) timing.sty, both with (La)TeX (Try Lyx for a shorter learning curve, if you're new to TeX. Be warned that it's a steep curve no matter what, but it's worth it!)
You could also try simulating in GTKWave (or any other circuit simulator with a logic analyzer):
but that's oriented more towards simulation of Verilog/VHDL/schematics, rather than just drawing waveforms.
The tool that I have bookmarked is -- http://www.timingtool.com/menu/tour/ttmain.php I have not tried it or taken a close look.
If you are using TeX and friends there is a timing package for the tikz picture environment (check CTAN). Sometimes with the TeX tools you can find wrapper scripts or GUIs that can create standalone images.
The documentation on the tikz-timing package is at http://www.tug.org/texmf-dist/doc/latex/tikz-timing/tikz-timing.pdf
Microsoft Excel is the poor man's 2D CAD program, and has worked well for me. Highlight all cells, then drag the row and column borders until the pixel count matches - this gives you square cells. Then use the Drawing toolbar to add lines and shapes. The snap to grid option should be turned on too.
Edit to add some additional explanation, for the downvoters in comments below:
Blockquote Microsoft Excel is neither a CAD program (It's a spreadsheet)..
MS Excel has a lot of features, including a decent drawing package. If you use and explore the software, you'll find things you never thought you would. For instance, would you say that Excel is a programming interface and UI for data acquisition hardware, or a reporting front-end for databases? Answer is that it can be used for these, and I know this from personally implementing these kinds of apps. Just like I've personally implemented Excel to make 2D drawings, of waveforms and more (cables, floorplans, etc).
...nor a program for a poor man ...
This is meant in the sense of a colloquialism: definition here. And I'd be astounded if someone who was making waveform drawings in their professional life did not have a copy of Office provided by their employer.
When drawing as you suggest in Excel, you cannot visualize edge transitions other than vertical lines...
Sorry to be blunt, but that's flat wrong. Here is a more detailed explanation that you can try yourself. Starting as I described above, consider the square ABCD, with coordinates starting clockwise from the upper left hand corner of the square. If you were to draw a line through points DABC in sequence, you'd have the first half of a square wave. However if you draw a line through DB, you have a 45 degree rising angle. The snap to grid option snaps to the points of the grid, but doesn't enforce angular restrictions. Obviously this can be extended to make other angles by choosing other coordinates - using aa 2x2 grid of cells as your base gives more angular choices, and so on. For example, I've used this to draw trapezoidal waveforms and slope controlled self-clocking Manchester signals - not just 50% duty cycle clock ticks.
Note also that you aren't limited to straight lines - curves are dirt-simple. Copy-paste (CTRL-C, CTRL-V) and the ability to rotate and group objects make more complex shapes easy. Another example from my experience: If you can draw a single hemisphere you can turn that into the double-helix of a shielded twisted pair on a cable schematic in no time flat (almost literally: I took a hand-wavy concept through to a PDF copy of a drawing, in 45 minutes, including the time spend submitting online requests for quote to cable vendors). For waveforms, the same things could make a sine wave or an amplitude-modulated signal.
If you need something really complex, turn the snap to grid option off, draw your thingie, then turn snap back on and drag the thingie into place. Don't forget that you can resize drawn objects too.
TimingEditor looks easy to use, and produces decent SVG files.
The first suggestion I saw here was Inkscape. A drawing program! So I thought, why not Excel, you can draw with that as well? Appears that somebody indeed suggested that! And that 7 people found this a useful suggestion! I think I have to lay down for a minute.
The reason that there exists so much different software is that every task has its own requirements, and each software tries to answer the demands for a particular task. If you're using Excel to draw timing diagrams you may think "see, this works too", but in reality it will do less than pencil and paper would. At least with the pencil you can handle the most basic function of timing designers: signal dependencies.
Anyway, now I have this load off my mind, I would suggest to have a look at TimingDesigner, though I'm not quite familiar with the latest version. By no means cheap, and I wouldn't have suggested it if it wasn't for professional use.
I do a lot of this stuff using PostScript, moveto, lineto, lineto, moveto, etc. From there you can turn it into just about anything: JPEG, PNG, etc., or embed it directly into a PostScript document then that can become a PDF.
SVG is likely another format/language you can use as well. It is free, open, and converts to anything.
TimeGen is less than $100 US (Lite), $500 (Pro). I haven't used it.
I've been looking around for something last couple of days and tried a number of the suggestions here, none of which worked satisfactorily (or in some cases at all) for me, or wouldn't draw the timing arrows.
I eventually found this:
Which I can recommend. It's reasonably intuitive and there are decent video tutorials on the web site. Runs on Windows and on Linux under Wine.
Two tools I have used are:
Visio always works good for me, and was one of the primary means of documentation for both FPGA (timing and block) and system diagrams at one of my places of employment.
The nicest thing about visio is you can generate templates, and shapes that allow you to create uniform timing diagrams.