I'm reading a textbook chapter on A simple Processor Design with VHDL for FPGA What i don't understand is some of the defines he makes in a package to make the description of the processor simpler. The snippet i'm having trouble with is here http://pastebin.com/qBV04SdP I do not understand "IMEMArray" type and its purpose The text book says "The subtype IMem_array is used in an implementation as the type of the instruction memory" But isn't the type "instruction_array" a type for ROM. So wouldn't "IMemArray" be a array of several memories?
constant IMem_addr_width : positive := 12; constant IMem_size : positive := 2**IMem_addr_width; subtype IMem_addr is unsigned(IMem_addr_width - 1 downto 0); subtype instruction is unsigned(17 downto 0); type instruction_array is array (natural range <>) of instruction; subtype IMem_array is instruction_array(0 to IMem_size - 1);
> But isn't the type "instruction_array" a type for ROM. Yes. > So wouldn't "IMemArray" be a array of several memories? Yes. So the title of the book should be: "A obscured Processor Design with..." ;-) Duke
Okay :) Thanks, I don't think he actually uses it anywhere so should be fine.
Your interpretation is not correct. instruction_array is an array type with unspecified size. IMem_array is just a subtype where the size of the array is specified.
Ok. You are are right. I usually have only one instruction memory array. And this is usually (or unfortunately?) not unconstrained :-) So I'm not very familiar with the unconstrained array construct. Duke
Andreas Schwarz thanks that's clears it up then.