Even though you don't need it, you should add a single address bit to your interface. Also, I don't know how wide you made your data bus but you probably ought to make it 32-bits even though you are only using 16. Otherwise, the Avalon bus will execute two reads to your module every time the NIOS does a read.
Try adding the address and see what that does.
Now on top of this, the rules change a little bit when you are doing a tristate slave.
Also, from the Avalon Interface Specifications document:
--- Quote Start ---
5.1.1. address Behavior
For Avalon-MM tristate slaves, the address signal represents a byte
address. The address signal can be shared among multiple off-chip
devices which have differing data widths. If the Avalon-MM tristate slave
port data width is greater than one byte, it is necessary to correctly map
the address signals from the system interconnect fabric to the address
lines on the slave peripheral.
--- Quote End ---
You should read the document if you haven't already:
http://www.altera.com/literature/manual/mnl_avalon_spec.pdf Jake