чувствительность к регистру при использовании модуля 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.


person Timm    schedule 03.07.2016    source источник
comment
Это конфликт имен. Переименуйте либо общий, либо порт - в ядре IP. Поскольку адресная шина является адресной шиной, ее название является подходящим. Но дженерик — это ширина, так что его имя в любом случае неуместно и сбивает с толку. Поэтому я бы переименовал его в APB_ADDR_WIDTH.   -  person user_1818839    schedule 03.07.2016
comment
Значит, нет другого решения, кроме модификации IP-ядра?   -  person Timm    schedule 03.07.2016
comment
Вы можете вообще игнорировать дженерик. Насколько я понимаю, это лишнее. Получите его значение из атрибутов порта apb_addr и надейтесь, что тот, кто написал те части, которые вы хотите оставить в покое, правильно соблюдал общую схему и шину.   -  person user_1818839    schedule 03.07.2016


Ответы (1)


Если вы не можете изменить IP-ядро, другим вариантом является создание оболочки (в Verilog), которая создает экземпляр ядра, устанавливает параметр APB_ADDR и передает apb_addr и другие сигналы между ядром и вашим объектом VHDL.

person teadotjay    schedule 03.07.2016
comment
Согласованный; хотя и не элегантные, обертки являются фактом жизни в дизайне смешанного HDL. Вы можете попробовать определить параметр из командной строки, как в stackoverflow.com/questions/36423219/, но я предпочитаю хранить все в HDL, чтобы избежать проблем с переносимостью и несоответствием. - person teadotjay; 06.07.2016