Which interface are you using? PIO (parallel interface) or the custom interface logic (parallel bus logic interface)?
Basically if you use either of them then you talk to a memory addresses and it goes out to the interface. If you want direct writing to the headers use the PIO, if you want to do some more compilcated design that you want to create an address space for all the external signals for example then you would want to use the custom interface logic.
Could you explain how these signals are going to be used (such as data words or one bit signals, etc.....) because that would probably dictate the best means to go about designing your system. Since you are using NIOS I then to talk directly to address spaces be sure to declare them as volatile.
ie. volatile int *imanaddress = (volatile int*) 0x4554;
The PIO gives you function calls to talk to the interface (if I remember correctly) but for the custom interface logic you just talk directly to pointers (they way I like it too
http://forum.niosforum.com/work2/style_emoticons/<#EMO_DIR#>/smile.gif ) With NIOS I by declaring volatile pointers it not only will not be optimized out of your code by the compiler, but it also bypasses the data cache (if you are using data cache).
to read and write your code would look something like this (using the C style and confusing pointer reference/dereferencing syntax):
read: imaninteger = *imanaddress; \\ imaninteger <- [imanaddress]
write *imanaddress = 1234; \\ [imanaddress] <- 1234
Cheers