DMA Address Register, lab4greenspun.com : LUSENET : ece342 : One Thread
Dear Sir, Regarding the DMA Address Register, the news group answer stated that the CPU writes base address to it. The base address has 23bits. If we ignore the first 3 bits, and use only the later 20 bits, we can have the address in the form $8xx00. However, the lab handout did not indicate the form of the base address we are going to be using. Can it be in the range of $9xx00 or $7xx00? Also, given the base address, are we suppose to increment or decrement from it to reach the desired $8xx00?
-- Ko-Hua Chu (email@example.com), February 18, 1999
From the lab handout:
DMA Address Register [ADDR_REG] (8 bits)
All DMA data transfers should end at memory location $8xx00, where xx is taken from this 8-bit register. Note that the least significant byte of this address is 0. This is done to ensure that all transfers are aligned to a word address. Also note that count can be used directly as part of the address.
Now for some clarifications...
In the above description, the xx in $8xx00 should be replaced with the value stored in ADDR_REG. To make your life easier, it is suggested that you replace the 00 with the current value of count.
So, if ADDR_REG contains $a5, and the current count is $01, then the address that you will transfer data to/from in memory would be $08a502. (Remember that count is the number of words, not bytes.)
It is likely to be easier to decrement the value in the count register every transfer until you are done. This is what was in mind when the lab was written.
-- Steven Caranci (firstname.lastname@example.org), February 18, 1999.