R
Rafal Pietrak
Guest
Hi All!
Have started to learn VHDL quite recently and by now I'm building my first
'packaged' designs.... still in tutorial mode if I may say so.
.... and here comes a challenge (for me .
To focus on something concrete, let's say I build a microcontroller;
components are: ALU, register-file, some dedicated I/O pins, RAM, ROM and
external memory access controller.
I have all those components in separate files and appropriate Package file
to make a sort of library out of them.
Now the only way I've learned to create the whole design is to create an
encapsulating entity referring (instantiating) and interconnecting my
components. That's what I've found as examples my textbook and in the
internet.
The problem is, that according to those examples, the encapsulating entity
defines the whole design I/O list. But a design like this microcontroller,
have majority of its I/O pins coming from external memory access
subsystem... which in some instantiations (different target FPGA) may even
be missing at all.
My question is: what is the appropriate VHDL construct, that allows the
designer have his/her master entity ports (instantiated by synthesize
tools as device I/O pins) PROVIDED by *generated* instance of some other
modules within that entity? Like: one variant has 16-bit wide RAM port
provided by, say: SRAM.vhd; while another variant will have 128-bit wide
SDRAM provided by quite a different SDRAM.vhd module.
Is this possible at all?
-R
Have started to learn VHDL quite recently and by now I'm building my first
'packaged' designs.... still in tutorial mode if I may say so.
.... and here comes a challenge (for me .
To focus on something concrete, let's say I build a microcontroller;
components are: ALU, register-file, some dedicated I/O pins, RAM, ROM and
external memory access controller.
I have all those components in separate files and appropriate Package file
to make a sort of library out of them.
Now the only way I've learned to create the whole design is to create an
encapsulating entity referring (instantiating) and interconnecting my
components. That's what I've found as examples my textbook and in the
internet.
The problem is, that according to those examples, the encapsulating entity
defines the whole design I/O list. But a design like this microcontroller,
have majority of its I/O pins coming from external memory access
subsystem... which in some instantiations (different target FPGA) may even
be missing at all.
My question is: what is the appropriate VHDL construct, that allows the
designer have his/her master entity ports (instantiated by synthesize
tools as device I/O pins) PROVIDED by *generated* instance of some other
modules within that entity? Like: one variant has 16-bit wide RAM port
provided by, say: SRAM.vhd; while another variant will have 128-bit wide
SDRAM provided by quite a different SDRAM.vhd module.
Is this possible at all?
-R