Hi,
I have used memory mapped I/O and understand it from a programmer's perspective, but I am curious as to how it gets implemented in hardware. I basically want to know how physically(in hardware) this memory mapping takes place.
For example, when the processor sends out 0xf000 on the address lines(bus) as part of a read request, how does the correct peripheral know that a read request has been issued for that address. By searching the groups I found out that the peripherals are connected to the address bus and listen for certain addresses where they are supposed to be mapped and respond accordingly.
If I could get a clearer explanation of this or some references to look at that would be great. Also, since the peripheral has to listen for a specific address, is this address defined by the peripheral hardware manufacturer and is it sometimes selectable? In other words, can I choose to maybe map a peripheral to either 0xf000 or 0xa120 if the hardware was designed with this in mind?
Thanks.