How to do memory mapping using address ranges?
for eg. I have 16bit address bus => 65536 locations => 64k memory
[7:0] memory [65535:0]
8bit data bus => 0 to 1024 bytes
[7:0] data [1024:0]
so from 65536 locations, 1025 occupied by data.
and I need to accommodate other registers like control reg, status reg, header reg, crc reg, pktlen reg etc. of 1 byte each within this memory.
So total 1031 bytes in use.
So, How can i define this all stuff in verilog?
In reply to Mittal Maru:
Just trying to understand your question.
You have 64k memory (locations 0-65535)
Out of which 1k is data (0-1023?1024?)
Then there is 8 bytes of other registers, which results in total 1031 bytes of storage used out of 64k, is that correct?
Typically the address map file is a bunch of defines or parameters which has hardcoded locations of various registers. The input addr is compared against these values and the appropriate location is written to/read.
You might be able to find examples online.
In reply to prang:
Just trying to understand your question.
You have 64k memory (locations 0-65535)
Out of which 1k is data (0-1023?1024?)
Then there is 8 bytes of other registers, which results in total 1031 bytes of storage used out of 64k, is that correct?
Typically the address map file is a bunch of defines or parameters which has hardcoded locations of various registers. The input addr is compared against these values and the appropriate location is written to/read.
You might be able to find examples online.
Yes, It is correct.
What do you mean by hardcoded locations ?