Чувствительность к регистру при использовании модуля Verilog в VHDL
Во время смешивания VDHL и Verilog я столкнулся с проблемой чувствительности к регистру.
Параметр "APB_ADDR" записывается в верхнем регистре, а провод "apb_addr" - в нижнем. Поскольку Verilog чувствителен к регистру, он может различаться для двух выражений.
module verilog_module #(
...
parameter APB_ADDR = 32,
...
) (
...
input wire [APB_ADDR-1:0] apb_addr,
input wire apb_sel,
input wire apb_enable,
input wire apb_write
....
);
Теперь я хочу создать экземпляр модуля в VDHL:
inst0: entity work.verilog_module
GENERIC MAP (
APB_ADDR => APB_ADDR_WIDTH
)
PORT MAP(
...
apb_addr => apb_addr,
...
);
Синтез не удается. Общий "apb_addr" не знаю. VHDL не имеет чувствительности к регистру.
Как я могу получить доступ к универсальному APB_ADDR? Я не хочу менять IP-ядро, написанное на Verilog.
1 ответ
Решение
Если вы не можете изменить ядро IP, другой вариант - создать оболочку (в Verilog), которая создает ядро, устанавливает параметр APB_ADDR и передает apb_addr и другие сигналы между ядром и вашим объектом VHDL.